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:
QScopedPointer<Connectivity> ns(new Connectivity());
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,
[](Connectivity::Status value)
{
qDebug() << "System networking status changed to: " + STATUS_MAP[value];
});
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 {
};
int
main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QScopedPointer<Connectivity> ns(new Connectivity());
{
qDebug() << "We are online.";
}
QObject::connect(ns.data(),
{
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(),
[&ns](){
if (ns->limitations().isEmpty())
{
qDebug() << "No limitations.";
return;
}
qDebug() << "Limitations:";
{
qDebug() << " - Bandwidth";
}
});
app.exec();
return 0;
}
void limitationsUpdated(const QVector< connectivityqt::Connectivity::Limitations > &)
void statusUpdated(connectivityqt::Connectivity::Status value)
Status
enum for networking status
Definition: connectivity.h:74