Applications needing to access the overall system networking status must access the ubuntu::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:
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 ubuntu::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 ubuntu::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::Bandwith))
{
qDebug() << " - Bandwith";
}
});
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);
{
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() << " - Bandwith";
}
});
app.exec();
return 0;
}