diff options
Diffstat (limited to 'tests/manual/qnetworkinformation')
-rw-r--r-- | tests/manual/qnetworkinformation/CMakeLists.txt | 12 | ||||
-rw-r--r-- | tests/manual/qnetworkinformation/mainwindow.h | 76 | ||||
-rw-r--r-- | tests/manual/qnetworkinformation/tst_qnetworkinformation.cpp | 80 |
3 files changed, 135 insertions, 33 deletions
diff --git a/tests/manual/qnetworkinformation/CMakeLists.txt b/tests/manual/qnetworkinformation/CMakeLists.txt index 964d48c93f..3456c350a2 100644 --- a/tests/manual/qnetworkinformation/CMakeLists.txt +++ b/tests/manual/qnetworkinformation/CMakeLists.txt @@ -1,8 +1,18 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause qt_internal_add_manual_test(qnetworkinformation SOURCES tst_qnetworkinformation.cpp - PUBLIC_LIBRARIES + LIBRARIES Qt::Network Qt::Test ) + +qt_internal_extend_target(qnetworkinformation CONDITION ANDROID OR UIKIT + SOURCES + mainwindow.h + LIBRARIES + Qt::Widgets + DEFINES + MOBILE) diff --git a/tests/manual/qnetworkinformation/mainwindow.h b/tests/manual/qnetworkinformation/mainwindow.h new file mode 100644 index 0000000000..822511a5f9 --- /dev/null +++ b/tests/manual/qnetworkinformation/mainwindow.h @@ -0,0 +1,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 diff --git a/tests/manual/qnetworkinformation/tst_qnetworkinformation.cpp b/tests/manual/qnetworkinformation/tst_qnetworkinformation.cpp index 953ae132bf..5b7d55c7ce 100644 --- a/tests/manual/qnetworkinformation/tst_qnetworkinformation.cpp +++ b/tests/manual/qnetworkinformation/tst_qnetworkinformation.cpp @@ -1,46 +1,35 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtCore/qcoreapplication.h> +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +#ifdef MOBILE +# include "mainwindow.h" +# include <QtWidgets/qapplication.h> +#else +# include <QtCore/qcoreapplication.h> +#endif + #include <QtCore/qdebug.h> #include <QtNetwork/qnetworkinformation.h> int main(int argc, char **argv) { +#ifdef MOBILE + QApplication app(argc, argv); + MainWindow window; + window.show(); +#else QCoreApplication app(argc, argv); +#endif - if (!QNetworkInformation::load(QNetworkInformation::Feature::Reachability)) { + // Use the platform-default: + if (!QNetworkInformation::loadDefaultBackend()) { qWarning("Failed to load any backend"); qDebug() << "Backends available:" << QNetworkInformation::availableBackends().join(", "); return -1; } QNetworkInformation *info = QNetworkInformation::instance(); qDebug() << "Backend loaded:" << info->backendName(); + qDebug() << "Supports:" << info->supportedFeatures(); qDebug() << "Now you can make changes to the current network connection. Qt should see the " "changes and notify about it."; QObject::connect(info, &QNetworkInformation::reachabilityChanged, @@ -49,12 +38,39 @@ int main(int argc, char **argv) }); QObject::connect(info, &QNetworkInformation::isBehindCaptivePortalChanged, - [](bool status) { - qDebug() << "Updated, behind captive portal:" << status; + [](bool status) { qDebug() << "Updated, behind captive portal:" << status; }); + + QObject::connect(info, &QNetworkInformation::transportMediumChanged, + [](QNetworkInformation::TransportMedium newMedium) { + qDebug() << "Updated, current transport medium:" << newMedium; }); + QObject::connect(info, &QNetworkInformation::isMeteredChanged, + [](bool metered) { + qDebug() << "Updated, metered:" << metered; + }); + +#ifdef MOBILE + // Some extra connections to update the window if we're on mobile + QObject::connect(info, &QNetworkInformation::reachabilityChanged, &window, + &MainWindow::updateReachability); + QObject::connect(info, &QNetworkInformation::isBehindCaptivePortalChanged, &window, + &MainWindow::updateCaptiveState); + QObject::connect(info, &QNetworkInformation::transportMediumChanged, &window, + &MainWindow::updateTransportMedium); + QObject::connect(info, &QNetworkInformation::isMeteredChanged, &window, + &MainWindow::updateMetered); +#endif + qDebug() << "Initial reachability:" << info->reachability(); qDebug() << "Behind captive portal:" << info->isBehindCaptivePortal(); + qDebug() << "Transport medium:" << info->transportMedium(); + qDebug() << "Is metered:" << info->isMetered(); return app.exec(); } + +// Include the moc output of the MainWindow from here +#ifdef MOBILE +# include "moc_mainwindow.cpp" +#endif |