From bab821d3f1e9771db015a038f2c581ae2cb03a05 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 5 Aug 2018 00:11:41 +0200 Subject: [PATCH] Ref T295, QNetworkConfiguration as string --- src/blackmisc/network/networkutils.cpp | 59 +++++++++++++++++++++++++- src/blackmisc/network/networkutils.h | 13 ++++++ 2 files changed, 70 insertions(+), 2 deletions(-) diff --git a/src/blackmisc/network/networkutils.cpp b/src/blackmisc/network/networkutils.cpp index 2a28caff1..931f9f262 100644 --- a/src/blackmisc/network/networkutils.cpp +++ b/src/blackmisc/network/networkutils.cpp @@ -416,14 +416,69 @@ namespace BlackMisc const QNetworkConfiguration c = am->configuration(); static const QMetaEnum enumAccessible = QMetaEnum::fromType(); - const QString msg = QString("Accessible: %1 (%2) bearer: %3 %4").arg( + const QString msg = QString("Accessible: %1 (%2) config: %3").arg( boolToYesNo(accessible), enumAccessible.valueToKey(am->networkAccessible()), - c.bearerTypeName(), c.identifier()); + networkConfigurationToString(c)); msgs.push_back(CStatusMessage(cats, accessible ? CStatusMessage::SeverityInfo : CStatusMessage::SeverityError, msg)); } return msgs; } + + QString CNetworkUtils::networkConfigurationToString(const QNetworkConfiguration &configuration) + { + static const QString s("%1 %2 valid: %3 %4 %5"); + const QString stateFlagsStr = networkStatesToString(configuration.state()); + return s.arg(configuration.name(), configuration.identifier(), boolToYesNo(configuration.isValid()), stateFlagsStr, networkTypeToString(configuration.type())); + } + + const QString &CNetworkUtils::networkTypeToString(QNetworkConfiguration::Type type) + { + static const QString iap("InternetAccessPoint"); + static const QString sn("ServiceNetwork"); + static const QString i("Invalid"); + static const QString uc("UserChoice"); + + switch (type) + { + case QNetworkConfiguration::InternetAccessPoint: return iap; + case QNetworkConfiguration::ServiceNetwork: return sn; + case QNetworkConfiguration::UserChoice: return uc; + default: + case QNetworkConfiguration::Invalid: break; + } + + return i; + } + + const QString &CNetworkUtils::networkStateToString(QNetworkConfiguration::StateFlag state) + { + static const QString disco("Discovered"); + static const QString a("Active"); + static const QString u("Undefined"); + static const QString d("Defined"); + + switch (state) + { + case QNetworkConfiguration::Defined: return d; + case QNetworkConfiguration::Active: return a; + case QNetworkConfiguration::Discovered: return disco; + default: + case QNetworkConfiguration::Undefined: break; + } + + return u; + } + + QString CNetworkUtils::networkStatesToString(QNetworkConfiguration::StateFlags states) + { + QStringList statesSl; + if (states.testFlag(QNetworkConfiguration::Active)) { statesSl << networkStateToString(QNetworkConfiguration::Active); } + if (states.testFlag(QNetworkConfiguration::Discovered)) { statesSl << networkStateToString(QNetworkConfiguration::Discovered); } + if (states.testFlag(QNetworkConfiguration::Defined)) { statesSl << networkStateToString(QNetworkConfiguration::Defined); } + if (states.testFlag(QNetworkConfiguration::Undefined)) { statesSl << networkStateToString(QNetworkConfiguration::Undefined); } + return statesSl.join(", "); + } } // namespace } // namespace diff --git a/src/blackmisc/network/networkutils.h b/src/blackmisc/network/networkutils.h index e96ea7457..eb56f939b 100644 --- a/src/blackmisc/network/networkutils.h +++ b/src/blackmisc/network/networkutils.h @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -159,6 +160,18 @@ namespace BlackMisc //! \remark that can take a moment to complete, as it checks network static BlackMisc::CStatusMessageList createNetworkReport(const CUrl &url, const QNetworkAccessManager *am = nullptr); + //! Configuration as string + static QString networkConfigurationToString(const QNetworkConfiguration &configuration); + + //! Type to string + static const QString &networkTypeToString(QNetworkConfiguration::Type type); + + //! State to string + static const QString &networkStateToString(QNetworkConfiguration::StateFlag state); + + //! States to string + static QString networkStatesToString(QNetworkConfiguration::StateFlags states); + private: //! Hidden constructor CNetworkUtils() {}