diff options
Diffstat (limited to 'tests/manual/qnetworkinformation')
-rw-r--r-- | tests/manual/qnetworkinformation/CMakeLists.txt | 8 | ||||
-rw-r--r-- | tests/manual/qnetworkinformation/mainwindow.h | 76 | ||||
-rw-r--r-- | tests/manual/qnetworkinformation/tst_qnetworkinformation.cpp | 122 |
3 files changed, 117 insertions, 89 deletions
diff --git a/tests/manual/qnetworkinformation/CMakeLists.txt b/tests/manual/qnetworkinformation/CMakeLists.txt index 899d0aa876..3456c350a2 100644 --- a/tests/manual/qnetworkinformation/CMakeLists.txt +++ b/tests/manual/qnetworkinformation/CMakeLists.txt @@ -1,14 +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 - PUBLIC_LIBRARIES + 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 ca28018d41..5b7d55c7ce 100644 --- a/tests/manual/qnetworkinformation/tst_qnetworkinformation.cpp +++ b/tests/manual/qnetworkinformation/tst_qnetworkinformation.cpp @@ -1,87 +1,16 @@ -/**************************************************************************** -** -** 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$ -** -****************************************************************************/ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #ifdef MOBILE -#include <QtWidgets/qapplication.h> -#include <QtWidgets/qmainwindow.h> -#include <QtWidgets/qlabel.h> -#include <QtCore/qmetaobject.h> +# include "mainwindow.h" +# include <QtWidgets/qapplication.h> #else -#include <QtCore/qcoreapplication.h> +# include <QtCore/qcoreapplication.h> #endif + #include <QtCore/qdebug.h> #include <QtNetwork/qnetworkinformation.h> -#ifdef MOBILE -template<typename QEnum> -QString enumToString (const QEnum value) -{ - return QString::fromUtf8(QMetaEnum::fromType<QEnum>().valueToKey(int(value))); -} - -class MainWindow : public QMainWindow -{ - Q_OBJECT -public: - MainWindow() : QMainWindow(nullptr) - { - label = new QLabel(this); - label->setText("hello"); - setCentralWidget(label); - } - - void updateReachability(QNetworkInformation::Reachability newValue) - { - reachability = newValue; - updateText(); - } - - void updateCaptiveState(bool newValue) - { - captive = newValue; - updateText(); - } - -private: - void updateText() - { - QString str = - QLatin1String("Reachability: %1\nBehind captive portal: %2") - .arg(enumToString(reachability), QStringView(captive ? u"true" : u"false")); - label->setText(str); - } - - QLabel *label; - QNetworkInformation::Reachability reachability; - bool captive; -}; -#endif - int main(int argc, char **argv) { #ifdef MOBILE @@ -92,37 +21,56 @@ int main(int argc, char **argv) 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, - [&](QNetworkInformation::Reachability newStatus) { + [](QNetworkInformation::Reachability newStatus) { qDebug() << "Updated:" << newStatus; -#ifdef MOBILE - window.updateReachability(newStatus); -#endif }); 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 - window.updateCaptiveState(status); + // 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 "tst_qnetworkinformation.moc" +# include "moc_mainwindow.cpp" #endif |