diff options
author | Mårten Nordheim <marten.nordheim@qt.io> | 2021-10-25 20:23:24 +0200 |
---|---|---|
committer | Mårten Nordheim <marten.nordheim@qt.io> | 2021-11-04 12:02:25 +0100 |
commit | bd52c1bba6f5a0b7e820596e566146b5cf8a4ee7 (patch) | |
tree | 728aa2010288daee21336992428d57e306f22282 /tests/manual | |
parent | 2148e1f0e6026ad7a87c7eec0362d1250c1f09e9 (diff) |
QNI: Add API to check if connection is metered
This may be a useful factor in deciding whether or not you should
perform communications over the network which are not purely essential.
For example, if you have a logging mechanism you can delay uploading
them until you are no longer on a metered network.
Task-number: QTBUG-91024
Change-Id: I19d32f031a3893512dc440914133678004987fb1
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'tests/manual')
-rw-r--r-- | tests/manual/qnetworkinformation/mainwindow.h | 12 | ||||
-rw-r--r-- | tests/manual/qnetworkinformation/tst_qnetworkinformation.cpp | 8 |
2 files changed, 18 insertions, 2 deletions
diff --git a/tests/manual/qnetworkinformation/mainwindow.h b/tests/manual/qnetworkinformation/mainwindow.h index 4ecc721b81..0426bc3714 100644 --- a/tests/manual/qnetworkinformation/mainwindow.h +++ b/tests/manual/qnetworkinformation/mainwindow.h @@ -74,13 +74,20 @@ public slots: updateText(); } + void updateMetered(bool newValue) + { + metered = newValue; + updateText(); + } + private: void updateText() { QString str = - QLatin1String("Reachability: %1\nBehind captive portal: %2\nTransport medium: %3") + QLatin1String("Reachability: %1\nBehind captive portal: %2\nTransport medium: %3" + "\nMetered: %4") .arg(enumToString(reachability), QStringView(captive ? u"true" : u"false"), - enumToString(transportMedium)); + enumToString(transportMedium), metered ? u"true" : u"false"); label->setText(str); } @@ -88,6 +95,7 @@ private: 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 8cac940874..fc34a36c3c 100644 --- a/tests/manual/qnetworkinformation/tst_qnetworkinformation.cpp +++ b/tests/manual/qnetworkinformation/tst_qnetworkinformation.cpp @@ -70,6 +70,11 @@ int main(int argc, char **argv) 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, @@ -78,11 +83,14 @@ int main(int argc, char **argv) &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(); } |