connectivity-api
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<Connectivity> ns(new Connectivity());

Networking Status

Status

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

// normal getter
if (ns->status() == Connectivity::Status::Online)
{
qDebug() << "We are online.";
}
// Subscribe to system networking changes
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:

// normal getter
if (ns->limitations().isEmpty())
qDebug() << "No limitations";
// Subscribe to limitation changes
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):

/*
* 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>
using namespace connectivityqt;
static const QMap<Connectivity::Status, QString> STATUS_MAP {
};
int
main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QScopedPointer<Connectivity> ns(new Connectivity());
// normal getter
if (ns->status() == Connectivity::Status::Online)
{
qDebug() << "We are online.";
}
// Subscribe to system networking changes
QObject::connect(ns.data(),
{
qDebug() << "System networking status changed to: " + STATUS_MAP[value];
});
qDebug() << "System networking status: " + STATUS_MAP[ns->status()];
// normal getter
if (ns->limitations().isEmpty())
qDebug() << "No limitations";
// Subscribe to limitation changes
QObject::connect(ns.data(),
[&ns](){
if (ns->limitations().isEmpty())
{
qDebug() << "No limitations.";
return;
}
qDebug() << "Limitations:";
if (ns->limitations().contains(Connectivity::Limitations::Bandwith))
{
qDebug() << " - Bandwith";
}
});
app.exec();
return 0;
}