Applications needing to access the overall system networking status must access the lomiri::connectivity::NetworkingStatus class. The class has properties for the networking status and connection limitations of the system networking.
Accessing the networking status from confined applications requires the connectivity policy group.
Setup
Manager is accessed by including the appropriate header:
Definition connectivity.cpp:37
and then creating an instance of the NetworkingStatus:
Definition connectivity.h:41
Networking Status
Status
The status of the system networking can be accessed through the lomiri::connectivity::NetworkingStatus::status property:
if (ns->status() == Connectivity::Status::Online)
{
qDebug() << "We are online.";
}
QObject::connect(ns.data(),
&Connectivity::statusUpdated,
{
qDebug() << "System networking status changed to: " + STATUS_MAP[value];
});
Status
enum for networking status
Definition connectivity.h:74
Limitations
The limitations can be accessed through the lomiri::connectivity::NetworkingStatus::limitations property:
if (ns->limitations().isEmpty())
qDebug() << "No limitations";
QObject::connect(ns.data(),
&Connectivity::limitationsUpdated,
[&ns](){
if (ns->limitations().isEmpty())
{
qDebug() << "No limitations.";
return;
}
qDebug() << "Limitations:";
if (ns->limitations().contains(Connectivity::Limitations::Bandwidth))
{
qDebug() << " - Bandwidth";
}
});
The complete example (found in examples/example_networking_status.cpp):
#include <QCoreApplication>
#include <QScopedPointer>
#include <QDebug>
static const QMap<Connectivity::Status, QString> STATUS_MAP {
{Connectivity::Status::Offline, "Offline"},
{Connectivity::Status::Connecting, "Connecting"},
{Connectivity::Status::Online, "Online"},
};
int
main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
if (ns->status() == Connectivity::Status::Online)
{
qDebug() << "We are online.";
}
QObject::connect(ns.data(),
&Connectivity::statusUpdated,
{
qDebug() << "System networking status changed to: " + STATUS_MAP[value];
});
qDebug() << "System networking status: " + STATUS_MAP[ns->status()];
if (ns->limitations().isEmpty())
qDebug() << "No limitations";
QObject::connect(ns.data(),
&Connectivity::limitationsUpdated,
[&ns](){
if (ns->limitations().isEmpty())
{
qDebug() << "No limitations.";
return;
}
qDebug() << "Limitations:";
if (ns->limitations().contains(Connectivity::Limitations::Bandwidth))
{
qDebug() << " - Bandwidth";
}
});
app.exec();
return 0;
}