Ubuntu Connectivity Qt API  1.0
Networking Status

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<NetworkingStatus> ns(new NetworkingStatus());

Networking Status

Status

The status of the system networking can be accessed through the ubuntu::connectivity::NetworkingStatus::status property:

// normal getter
if (ns->status() == NetworkingStatus::Online)
qDebug() << "We are online.";
// Subscribe to system networking changes
QObject::connect(ns.data(),
&NetworkingStatus::statusChanged,
[](NetworkingStatus::Status value)
{
switch(value) {
case NetworkingStatus::Offline:
qDebug() << "System networking status changed to: Offline";
break;
case NetworkingStatus::Connecting:
qDebug() << "System networking status changed to: Connecting";
break;
case NetworkingStatus::Online:
qDebug() << "System networking status changed to: Online";
break;
}
});

Limitations

The limitations can be accessed through the ubuntu::connectivity::NetworkingStatus::limitations property:

// normal getter
if (ns->limitations().isEmpty())
qDebug() << "No limitations";
// Subscribe to limitation changes
QObject::connect(ns.data(),
&NetworkingStatus::limitationsChanged,
[&ns](){
if (ns->limitations().isEmpty()) {
qDebug() << "No limitations.";
return;
}
qDebug() << "Limitations:";
if (ns->limitations().contains(NetworkingStatus::Limitations::Bandwith)) {
qDebug() << " - Bandwith";
}
});

The complete example (found in examples/example_networking_status.cpp):

/*
* Copyright © 2014 Canonical Ltd.
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Authors:
* Antti Kaijanmäki <antti.kaijanmaki@canonical.com>
*/
#include <QCoreApplication>
#include <QScopedPointer>
#include <QDebug>
int
main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QScopedPointer<NetworkingStatus> ns(new NetworkingStatus());
// normal getter
if (ns->status() == NetworkingStatus::Online)
qDebug() << "We are online.";
// Subscribe to system networking changes
QObject::connect(ns.data(),
&NetworkingStatus::statusChanged,
[](NetworkingStatus::Status value)
{
switch(value) {
case NetworkingStatus::Offline:
qDebug() << "System networking status changed to: Offline";
break;
case NetworkingStatus::Connecting:
qDebug() << "System networking status changed to: Connecting";
break;
case NetworkingStatus::Online:
qDebug() << "System networking status changed to: Online";
break;
}
});
// normal getter
if (ns->limitations().isEmpty())
qDebug() << "No limitations";
// Subscribe to limitation changes
QObject::connect(ns.data(),
&NetworkingStatus::limitationsChanged,
[&ns](){
if (ns->limitations().isEmpty()) {
qDebug() << "No limitations.";
return;
}
qDebug() << "Limitations:";
if (ns->limitations().contains(NetworkingStatus::Limitations::Bandwith)) {
qDebug() << " - Bandwith";
}
});
app.exec();
return 0;
}