File: example_networking_status.cpp

package info (click to toggle)
lomiri-indicator-network 1.1.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,164 kB
  • sloc: cpp: 23,705; xml: 2,868; python: 652; ansic: 224; sh: 54; makefile: 21
file content (88 lines) | stat: -rw-r--r-- 2,465 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/*
 * 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>

//! [include]
#include <connectivityqt/connectivity.h>
using namespace connectivityqt;
//! [include]

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);

    //! [create networkingstatus]
    QScopedPointer<Connectivity> ns(new Connectivity());
    //! [create networkingstatus]

    //! [status]
    // 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];
    });
    //! [status]

    qDebug() << "System networking status: " + STATUS_MAP[ns->status()];

    //! [limitations]
    // 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::Bandwidth))
        {
            qDebug() << "    - Bandwidth";
        }
    });
    //! [limitations]

    app.exec();

    return 0;
}