summaryrefslogtreecommitdiffstats
path: root/tests/manual/qnetworkinformation/mainwindow.h
blob: 822511a5f9d1bf214d0c36c38e5a3507a37c0356 (plain)
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
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtWidgets/qmainwindow.h>
#include <QtWidgets/qlabel.h>
#include <QtCore/qmetaobject.h>

#include <QtNetwork/qnetworkinformation.h>

template<typename QEnum>
QString enumToString(const QEnum value)
{
    return QString::fromUtf8(QMetaEnum::fromType<QEnum>().valueToKey(int(value)));
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

    using Reachability = QNetworkInformation::Reachability;
    using TransportMedium = QNetworkInformation::TransportMedium;

public:
    MainWindow() : QMainWindow(nullptr)
    {
        label->setText("hello");
        setCentralWidget(label);
    }

public slots:
    void updateReachability(Reachability newValue)
    {
        reachability = newValue;
        updateText();
    }

    void updateCaptiveState(bool newValue)
    {
        captive = newValue;
        updateText();
    }

    void updateTransportMedium(TransportMedium newValue)
    {
        transportMedium = newValue;
        updateText();
    }

    void updateMetered(bool newValue)
    {
        metered = newValue;
        updateText();
    }

private:
    void updateText()
    {
        QString str =
                QLatin1String("Reachability: %1\nBehind captive portal: %2\nTransport medium: %3"
                              "\nMetered: %4")
                        .arg(enumToString(reachability), captive ? u"true" : u"false",
                             enumToString(transportMedium), metered ? u"true" : u"false");
        label->setText(str);
    }

    QLabel *const label = new QLabel(this);
    Reachability reachability = Reachability::Unknown;
    TransportMedium transportMedium = TransportMedium::Unknown;
    bool captive = false;
    bool metered = false;
};

#endif