QNetworkConfiguration: add public member bearerTypeFamily()

... to let the user know whether he is on e.g. Wifi, 2G, 3G or 4G.
In most cases, this is what the user wants to know anyhow, while
e.g. BearerEVDO or BearerCDMA2000 go into too much detail.

Task-number: QTBUG-31828
Change-Id: I244a4473feb40e106cbc08e09afdee07d4ecc8d7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lorn Potter <lorn.potter@jollamobile.com>
bb10
Peter Hartmann 2013-06-26 17:37:48 +02:00 committed by The Qt Project
parent be35b70ca1
commit c1ddaf4d21
3 changed files with 95 additions and 3 deletions

View File

@ -41,10 +41,10 @@
#include "qnetworkconfiguration.h"
#include "qnetworkconfiguration_p.h"
#include <QDebug>
#ifdef Q_OS_BLACKBERRY
#include "private/qcore_unix_p.h" // qt_safe_open
#include <QDebug>
#include <sys/pps.h>
#endif // Q_OS_BLACKBERRY
@ -199,6 +199,8 @@ QT_BEGIN_NAMESPACE
\value BearerEthernet The configuration is for an Ethernet interfaces.
\value BearerWLAN The configuration is for a Wireless LAN interface.
\value Bearer2G The configuration is for a CSD, GPRS, HSCSD, EDGE or cdmaOne interface.
\value Bearer3G The configuration is for a 3G interface.
\value Bearer4G The configuration is for a 4G interface.
\value BearerCDMA2000 The configuration is for CDMA interface.
\value BearerWCDMA The configuration is for W-CDMA/UMTS interface.
\value BearerHSPA The configuration is for High Speed Packet Access (HSPA) interface.
@ -491,6 +493,8 @@ QList<QNetworkConfiguration> QNetworkConfiguration::children() const
function can be used to retrieve a textural type name for the bearer.
An invalid network configuration always returns the BearerUnknown value.
\sa bearerTypeName(), bearerTypeFamily()
*/
QNetworkConfiguration::BearerType QNetworkConfiguration::bearerType() const
{
@ -514,6 +518,58 @@ QNetworkConfiguration::BearerType QNetworkConfiguration::bearerType() const
return d->bearerType;
}
/*!
\since 5.2
Returns the bearer type family used by this network configuration.
The following table lists how bearerType() values map to
bearerTypeFamily() values:
\table
\header
\li bearer type
\li bearer type family
\row
\li BearerUnknown, Bearer2G, BearerEthernet, BearerWLAN,
BearerBluetooth
\li (same type)
\row
\li BearerCDMA2000, BearerEVDO, BearerWCDMA, BearerHSPA, Bearer3G
\li Bearer3G
\row
\li BearerWiMAX, BearerLTE, Bearer4G
\li Bearer4G
\endtable
An invalid network configuration always returns the BearerUnknown value.
\sa bearerType(), bearerTypeName()
*/
QNetworkConfiguration::BearerType QNetworkConfiguration::bearerTypeFamily() const
{
QNetworkConfiguration::BearerType type = bearerType();
switch (type) {
case QNetworkConfiguration::BearerUnknown: // fallthrough
case QNetworkConfiguration::Bearer2G: // fallthrough
case QNetworkConfiguration::BearerEthernet: // fallthrough
case QNetworkConfiguration::BearerWLAN: // fallthrough
case QNetworkConfiguration::BearerBluetooth:
return type;
case QNetworkConfiguration::BearerCDMA2000: // fallthrough
case QNetworkConfiguration::BearerEVDO: // fallthrough
case QNetworkConfiguration::BearerWCDMA: // fallthrough
case QNetworkConfiguration::BearerHSPA: // fallthrough
case QNetworkConfiguration::Bearer3G:
return QNetworkConfiguration::Bearer3G;
case QNetworkConfiguration::BearerWiMAX: // fallthrough
case QNetworkConfiguration::BearerLTE: // fallthrough
case QNetworkConfiguration::Bearer4G:
return QNetworkConfiguration::Bearer4G;
default:
qWarning() << "unknown bearer type" << type;
return QNetworkConfiguration::BearerUnknown;
}
}
/*!
Returns the type of bearer used by this network configuration as a string.
@ -540,6 +596,12 @@ QNetworkConfiguration::BearerType QNetworkConfiguration::bearerType() const
\row
\li Bearer2G
\li 2G
\row
\li Bearer3G
\li 3G
\row
\li Bearer4G
\li 4G
\row
\li BearerCDMA2000
\li CDMA2000
@ -567,7 +629,7 @@ QNetworkConfiguration::BearerType QNetworkConfiguration::bearerType() const
configuration of type \l QNetworkConfiguration::ServiceNetwork or
\l QNetworkConfiguration::UserChoice.
\sa bearerType()
\sa bearerType(), bearerTypeFamily()
*/
QString QNetworkConfiguration::bearerTypeName() const
{
@ -601,6 +663,10 @@ QString QNetworkConfiguration::bearerTypeName() const
}
#endif // Q_OS_BLACKBERRY
return QStringLiteral("2G");
case Bearer3G:
return QStringLiteral("3G");
case Bearer4G:
return QStringLiteral("4G");
case BearerCDMA2000:
return QStringLiteral("CDMA2000");
case BearerWCDMA:

View File

@ -99,7 +99,9 @@ public:
BearerBluetooth,
BearerWiMAX,
BearerEVDO,
BearerLTE
BearerLTE,
Bearer3G,
Bearer4G
};
StateFlags state() const;
@ -107,6 +109,7 @@ public:
Purpose purpose() const;
BearerType bearerType() const;
BearerType bearerTypeFamily() const;
QString bearerTypeName() const;
QString identifier() const;

View File

@ -51,6 +51,7 @@ class tst_qnetworkconfiguration : public QObject
private slots:
void bearerType();
void bearerTypeFamily();
};
void tst_qnetworkconfiguration::bearerType()
@ -111,6 +112,28 @@ void tst_qnetworkconfiguration::bearerType()
}
}
void tst_qnetworkconfiguration::bearerTypeFamily()
{
QNetworkConfigurationManager m;
foreach (const QNetworkConfiguration &config,
m.allConfigurations(QNetworkConfiguration::Active)) {
QString family;
switch (config.bearerTypeFamily()) {
case QNetworkConfiguration::Bearer3G:
family = QLatin1String("Bearer3G");
break;
case QNetworkConfiguration::Bearer4G:
family = QLatin1String("Bearer4G");
break;
default:
family = config.bearerTypeName();
}
qDebug() << config.name() << "has bearer type"
<< config.bearerTypeName() << "of bearer type family"
<< family;
}
}
QTEST_MAIN(tst_qnetworkconfiguration)
#include "main.moc"