From 11d2524bc4ee1f16d28163dfe6b5a62eda2fd8a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= Date: Mon, 20 Sep 2021 20:04:24 +0200 Subject: Refactor QNetworkInformation manual test To make it a little cleaner Task-number: QTBUG-91023 Change-Id: Ib99cc722b47835d13707beeeea35573729e4b032 Reviewed-by: Alex Blasche Reviewed-by: Edward Welbourne --- tests/manual/qnetworkinformation/CMakeLists.txt | 2 + tests/manual/qnetworkinformation/mainwindow.h | 84 ++++++++++++++++++++++ .../tst_qnetworkinformation.cpp | 74 ++++--------------- 3 files changed, 101 insertions(+), 59 deletions(-) create mode 100644 tests/manual/qnetworkinformation/mainwindow.h (limited to 'tests') diff --git a/tests/manual/qnetworkinformation/CMakeLists.txt b/tests/manual/qnetworkinformation/CMakeLists.txt index 899d0aa876..0c0bdbb627 100644 --- a/tests/manual/qnetworkinformation/CMakeLists.txt +++ b/tests/manual/qnetworkinformation/CMakeLists.txt @@ -8,6 +8,8 @@ qt_internal_add_manual_test(qnetworkinformation ) qt_internal_extend_target(qnetworkinformation CONDITION ANDROID OR UIKIT + SOURCES + mainwindow.h PUBLIC_LIBRARIES Qt::Widgets DEFINES diff --git a/tests/manual/qnetworkinformation/mainwindow.h b/tests/manual/qnetworkinformation/mainwindow.h new file mode 100644 index 0000000000..0b01272d1d --- /dev/null +++ b/tests/manual/qnetworkinformation/mainwindow.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** 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$ +** +****************************************************************************/ + +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include + +#include + +template +QString enumToString(const QEnum value) +{ + return QString::fromUtf8(QMetaEnum::fromType().valueToKey(int(value))); +} + +class MainWindow : public QMainWindow +{ + Q_OBJECT + + using Reachability = QNetworkInformation::Reachability; + +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(); + } + +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 *const label = new QLabel(this); + Reachability reachability = Reachability::Unknown; + bool captive = false; +}; + +#endif diff --git a/tests/manual/qnetworkinformation/tst_qnetworkinformation.cpp b/tests/manual/qnetworkinformation/tst_qnetworkinformation.cpp index ca28018d41..0dbea35bc1 100644 --- a/tests/manual/qnetworkinformation/tst_qnetworkinformation.cpp +++ b/tests/manual/qnetworkinformation/tst_qnetworkinformation.cpp @@ -27,61 +27,15 @@ ****************************************************************************/ #ifdef MOBILE -#include -#include -#include -#include +# include "mainwindow.h" +# include #else -#include +# include #endif + #include #include -#ifdef MOBILE -template -QString enumToString (const QEnum value) -{ - return QString::fromUtf8(QMetaEnum::fromType().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,7 +46,8 @@ int main(int argc, char **argv) QCoreApplication app(argc, argv); #endif - if (!QNetworkInformation::load(QNetworkInformation::Feature::Reachability)) { + if (!QNetworkInformation::load(QNetworkInformation::Feature::Reachability + | QNetworkInformation::Feature::CaptivePortal)) { qWarning("Failed to load any backend"); qDebug() << "Backends available:" << QNetworkInformation::availableBackends().join(", "); return -1; @@ -104,18 +59,18 @@ int main(int argc, char **argv) QObject::connect(info, &QNetworkInformation::reachabilityChanged, [&](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; }); + #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); #endif - }); qDebug() << "Initial reachability:" << info->reachability(); qDebug() << "Behind captive portal:" << info->isBehindCaptivePortal(); @@ -123,6 +78,7 @@ int main(int argc, char **argv) return app.exec(); } +// Include the moc output of the MainWindow from here #ifdef MOBILE -#include "tst_qnetworkinformation.moc" +# include "moc_mainwindow.cpp" #endif -- cgit v1.2.3