| Line | Source Code | Coverage |
|---|
| 1 | /**************************************************************************** | - |
| 2 | ** | - |
| 3 | ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). | - |
| 4 | ** Contact: http://www.qt-project.org/legal | - |
| 5 | ** | - |
| 6 | ** This file is part of the QtNetwork module of the Qt Toolkit. | - |
| 7 | ** | - |
| 8 | ** $QT_BEGIN_LICENSE:LGPL$ | - |
| 9 | ** Commercial License Usage | - |
| 10 | ** Licensees holding valid commercial Qt licenses may use this file in | - |
| 11 | ** accordance with the commercial license agreement provided with the | - |
| 12 | ** Software or, alternatively, in accordance with the terms contained in | - |
| 13 | ** a written agreement between you and Digia. For licensing terms and | - |
| 14 | ** conditions see http://qt.digia.com/licensing. For further information | - |
| 15 | ** use the contact form at http://qt.digia.com/contact-us. | - |
| 16 | ** | - |
| 17 | ** GNU Lesser General Public License Usage | - |
| 18 | ** Alternatively, this file may be used under the terms of the GNU Lesser | - |
| 19 | ** General Public License version 2.1 as published by the Free Software | - |
| 20 | ** Foundation and appearing in the file LICENSE.LGPL included in the | - |
| 21 | ** packaging of this file. Please review the following information to | - |
| 22 | ** ensure the GNU Lesser General Public License version 2.1 requirements | - |
| 23 | ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | - |
| 24 | ** | - |
| 25 | ** In addition, as a special exception, Digia gives you certain additional | - |
| 26 | ** rights. These rights are described in the Digia Qt LGPL Exception | - |
| 27 | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | - |
| 28 | ** | - |
| 29 | ** GNU General Public License Usage | - |
| 30 | ** Alternatively, this file may be used under the terms of the GNU | - |
| 31 | ** General Public License version 3.0 as published by the Free Software | - |
| 32 | ** Foundation and appearing in the file LICENSE.GPL included in the | - |
| 33 | ** packaging of this file. Please review the following information to | - |
| 34 | ** ensure the GNU General Public License version 3.0 requirements will be | - |
| 35 | ** met: http://www.gnu.org/copyleft/gpl.html. | - |
| 36 | ** | - |
| 37 | ** | - |
| 38 | ** $QT_END_LICENSE$ | - |
| 39 | ** | - |
| 40 | ****************************************************************************/ | - |
| 41 | | - |
| 42 | #include "qnetworkconfiguration.h" | - |
| 43 | #include "qnetworkconfiguration_p.h" | - |
| 44 | | - |
| 45 | QT_BEGIN_NAMESPACE | - |
| 46 | | - |
| 47 | /*! | - |
| 48 | \class QNetworkConfiguration | - |
| 49 | | - |
| 50 | \brief The QNetworkConfiguration class provides an abstraction of one or more access point configurations. | - |
| 51 | | - |
| 52 | \since 4.7 | - |
| 53 | | - |
| 54 | \inmodule QtNetwork | - |
| 55 | \ingroup network | - |
| 56 | \ingroup shared | - |
| 57 | | - |
| 58 | QNetworkConfiguration encapsulates a single access point or service network. | - |
| 59 | In most cases a single access point configuration can be mapped to one network | - |
| 60 | interface. However a single network interface may not always map to only one | - |
| 61 | access point configuration. Multiple configurations for the same | - |
| 62 | network device may enable multiple access points. An example | - |
| 63 | device that could exhibit such a configuration might be a | - |
| 64 | Smartphone which allows the user to manage multiple WLAN | - |
| 65 | configurations while the device itself has only one WLAN network device. | - |
| 66 | | - |
| 67 | The QNetworkConfiguration also supports the concept of service networks. | - |
| 68 | This concept allows the grouping of multiple access point configurations | - |
| 69 | into one entity. Such a group is called service network and can be | - |
| 70 | beneficial in cases whereby a network session to a | - |
| 71 | particular destination network is required (e.g. a company network). | - |
| 72 | When using a service network the user doesn't usually care which one of the | - |
| 73 | connectivity options is chosen (e.g. corporate WLAN or VPN via GPRS) | - |
| 74 | as long as he can reach the company's target server. Depending | - |
| 75 | on the current position and time some of the access points that make | - |
| 76 | up the service network may not even be available. Furthermore | - |
| 77 | automated access point roaming can be enabled which enables the device | - |
| 78 | to change the network interface configuration dynamically while maintaining | - |
| 79 | the applications connection to the target network. It allows adaption | - |
| 80 | to the changing environment and may enable optimization with regards to | - |
| 81 | cost, speed or other network parameters. | - |
| 82 | | - |
| 83 | Special configurations of type UserChoice provide a placeholder configuration which is | - |
| 84 | resolved to an actual network configuration by the platform when a | - |
| 85 | \l {QNetworkSession}{session} is \l {QNetworkSession::open()}{opened}. Not all platforms | - |
| 86 | support the concept of a user choice configuration. | - |
| 87 | | - |
| 88 | \section1 Configuration states | - |
| 89 | | - |
| 90 | The list of available configurations can be obtained via | - |
| 91 | QNetworkConfigurationManager::allConfigurations(). A configuration can have | - |
| 92 | multiple states. The \l Defined configuration state indicates that the configuration | - |
| 93 | is stored on the device. However the configuration is not yet ready to be activated | - |
| 94 | as e.g. a WLAN may not be available at the current time. | - |
| 95 | | - |
| 96 | The \l Discovered state implies that the configuration is \l Defined and | - |
| 97 | the outside conditions are such that the configuration can be used immediately | - |
| 98 | to open a new network session. An example of such an outside condition may be | - |
| 99 | that the Ethernet cable is actually connected to the device or that the WLAN | - |
| 100 | with the specified SSID is in range. | - |
| 101 | | - |
| 102 | The \l Active state implies that the configuration is \l Discovered. A configuration | - |
| 103 | in this state is currently being used by an application. The underlying network | - |
| 104 | interface has a valid IP configuration and can transfer IP packets between the | - |
| 105 | device and the target network. | - |
| 106 | | - |
| 107 | The \l Undefined state indicates that the system has knowledge of possible target | - |
| 108 | networks but cannot actually use that knowledge to connect to it. An example | - |
| 109 | for such a state could be an encrypted WLAN that has been discovered | - |
| 110 | but the user hasn't actually saved a configuration including the required password | - |
| 111 | which would allow the device to connect to it. | - |
| 112 | | - |
| 113 | Depending on the type of configuration some states are transient in nature. A GPRS/UMTS | - |
| 114 | connection may almost always be \l Discovered if the GSM/UMTS network is available. | - |
| 115 | However if the GSM/UMTS network looses the connection the associated configuration may change its state | - |
| 116 | from \l Discovered to \l Defined as well. A similar use case might be triggered by | - |
| 117 | WLAN availability. QNetworkConfigurationManager::updateConfigurations() can be used to | - |
| 118 | manually trigger updates of states. Note that some platforms do not require such updates | - |
| 119 | as they implicitly change the state once it has been discovered. If the state of a | - |
| 120 | configuration changes all related QNetworkConfiguration instances change their state automatically. | - |
| 121 | | - |
| 122 | \sa QNetworkSession, QNetworkConfigurationManager | - |
| 123 | */ | - |
| 124 | | - |
| 125 | /*! | - |
| 126 | \enum QNetworkConfiguration::Type | - |
| 127 | | - |
| 128 | This enum describes the type of configuration. | - |
| 129 | | - |
| 130 | \value InternetAccessPoint The configuration specifies the details for a single access point. | - |
| 131 | Note that configurations of type InternetAccessPoint may be part | - |
| 132 | of other QNetworkConfigurations of type ServiceNetwork. | - |
| 133 | \value ServiceNetwork The configuration is based on a group of QNetworkConfigurations of | - |
| 134 | type InternetAccessPoint. All group members can reach the same | - |
| 135 | target network. This type of configuration is a mandatory | - |
| 136 | requirement for roaming enabled network sessions. On some | - |
| 137 | platforms this form of configuration may also be called Service | - |
| 138 | Network Access Point (SNAP). | - |
| 139 | \value UserChoice The configuration is a placeholder which will be resolved to an | - |
| 140 | actual configuration by the platform when a session is opened. Depending | - |
| 141 | on the platform the selection may generate a popup dialog asking the user | - |
| 142 | for his preferred choice. | - |
| 143 | \value Invalid The configuration is invalid. | - |
| 144 | */ | - |
| 145 | | - |
| 146 | /*! | - |
| 147 | \enum QNetworkConfiguration::StateFlag | - |
| 148 | | - |
| 149 | Specifies the configuration states. | - |
| 150 | | - |
| 151 | \value Undefined This state is used for transient configurations such as newly discovered | - |
| 152 | WLANs for which the user has not actually created a configuration yet. | - |
| 153 | \value Defined Defined configurations are known to the system but are not immediately | - |
| 154 | usable (e.g. a configured WLAN is not within range or the Ethernet cable | - |
| 155 | is currently not plugged into the machine). | - |
| 156 | \value Discovered A discovered configuration can be immediately used to create a new | - |
| 157 | QNetworkSession. An example of a discovered configuration could be a WLAN | - |
| 158 | which is within in range. If the device moves out of range the discovered | - |
| 159 | flag is dropped. A second example is a GPRS configuration which generally | - |
| 160 | remains discovered for as long as the device has network coverage. A | - |
| 161 | configuration that has this state is also in state | - |
| 162 | QNetworkConfiguration::Defined. If the configuration is a service network | - |
| 163 | this flag is set if at least one of the underlying access points | - |
| 164 | configurations has the Discovered state. | - |
| 165 | \value Active The configuration is currently used by an open network session | - |
| 166 | (see \l QNetworkSession::isOpen()). However this does not mean that the | - |
| 167 | current process is the entity that created the open session. It merely | - |
| 168 | indicates that if a new QNetworkSession were to be constructed based on | - |
| 169 | this configuration \l QNetworkSession::state() would return | - |
| 170 | \l QNetworkSession::Connected. This state implies the | - |
| 171 | QNetworkConfiguration::Discovered state. | - |
| 172 | */ | - |
| 173 | | - |
| 174 | /*! | - |
| 175 | \enum QNetworkConfiguration::Purpose | - |
| 176 | | - |
| 177 | Specifies the purpose of the configuration. | - |
| 178 | | - |
| 179 | \value UnknownPurpose The configuration doesn't specify any purpose. This is the default value. | - |
| 180 | \value PublicPurpose The configuration can be used for general purpose internet access. | - |
| 181 | \value PrivatePurpose The configuration is suitable to access a private network such as an office Intranet. | - |
| 182 | \value ServiceSpecificPurpose The configuration can be used for operator specific services (e.g. | - |
| 183 | receiving MMS messages or content streaming). | - |
| 184 | */ | - |
| 185 | | - |
| 186 | /*! | - |
| 187 | \enum QNetworkConfiguration::BearerType | - |
| 188 | | - |
| 189 | Specifies the type of bearer used by a configuration. | - |
| 190 | | - |
| 191 | \value BearerUnknown The type of bearer is unknown or unspecified. The bearerTypeName() | - |
| 192 | function may return additional information. | - |
| 193 | \value BearerEthernet The configuration is for an Ethernet interfaces. | - |
| 194 | \value BearerWLAN The configuration is for a Wireless LAN interface. | - |
| 195 | \value Bearer2G The configuration is for a CSD, GPRS, HSCSD, EDGE or cdmaOne interface. | - |
| 196 | \value BearerCDMA2000 The configuration is for CDMA interface. | - |
| 197 | \value BearerWCDMA The configuration is for W-CDMA/UMTS interface. | - |
| 198 | \value BearerHSPA The configuration is for High Speed Packet Access (HSPA) interface. | - |
| 199 | \value BearerBluetooth The configuration is for a Bluetooth interface. | - |
| 200 | \value BearerWiMAX The configuration is for a WiMAX interface. | - |
| 201 | */ | - |
| 202 | | - |
| 203 | /*! | - |
| 204 | Constructs an invalid configuration object. | - |
| 205 | | - |
| 206 | \sa isValid() | - |
| 207 | */ | - |
| 208 | QNetworkConfiguration::QNetworkConfiguration() | - |
| 209 | : d(0) | - |
| 210 | { | - |
| 211 | } executed: }Execution Count:3347 | 3347 |
| 212 | | - |
| 213 | /*! | - |
| 214 | Creates a copy of the QNetworkConfiguration object contained in \a other. | - |
| 215 | */ | - |
| 216 | QNetworkConfiguration::QNetworkConfiguration(const QNetworkConfiguration &other) | - |
| 217 | : d(other.d) | - |
| 218 | { | - |
| 219 | } executed: }Execution Count:260 | 260 |
| 220 | | - |
| 221 | /*! | - |
| 222 | Frees the resources associated with the QNetworkConfiguration object. | - |
| 223 | */ | - |
| 224 | QNetworkConfiguration::~QNetworkConfiguration() | - |
| 225 | { | - |
| 226 | } | - |
| 227 | | - |
| 228 | /*! | - |
| 229 | Copies the content of the QNetworkConfiguration object contained in \a other into this one. | - |
| 230 | */ | - |
| 231 | QNetworkConfiguration &QNetworkConfiguration::operator=(const QNetworkConfiguration &other) | - |
| 232 | { | - |
| 233 | d = other.d; executed (the execution status of this line is deduced): d = other.d; | - |
| 234 | return *this; executed: return *this;Execution Count:193 | 193 |
| 235 | } | - |
| 236 | | - |
| 237 | /*! | - |
| 238 | \fn void QNetworkConfiguration::swap(QNetworkConfiguration &other) | - |
| 239 | \since 5.0 | - |
| 240 | | - |
| 241 | Swaps this network configuration with \a other. This function is | - |
| 242 | very fast and never fails. | - |
| 243 | */ | - |
| 244 | | - |
| 245 | /*! | - |
| 246 | Returns true, if this configuration is the same as the \a other | - |
| 247 | configuration given; otherwise returns false. | - |
| 248 | */ | - |
| 249 | bool QNetworkConfiguration::operator==(const QNetworkConfiguration &other) const | - |
| 250 | { | - |
| 251 | return (d == other.d); executed: return (d == other.d);Execution Count:73 | 73 |
| 252 | } | - |
| 253 | | - |
| 254 | /*! | - |
| 255 | \fn bool QNetworkConfiguration::operator!=(const QNetworkConfiguration &other) const | - |
| 256 | | - |
| 257 | Returns true if this configuration is not the same as the \a other | - |
| 258 | configuration given; otherwise returns false. | - |
| 259 | */ | - |
| 260 | | - |
| 261 | /*! | - |
| 262 | Returns the user visible name of this configuration. | - |
| 263 | | - |
| 264 | The name may either be the name of the underlying access point or the | - |
| 265 | name for service network that this configuration represents. | - |
| 266 | */ | - |
| 267 | QString QNetworkConfiguration::name() const | - |
| 268 | { | - |
| 269 | if (!d) evaluated: !d| yes Evaluation Count:6 | yes Evaluation Count:51 |
| 6-51 |
| 270 | return QString(); executed: return QString();Execution Count:6 | 6 |
| 271 | | - |
| 272 | QMutexLocker locker(&d->mutex); executed (the execution status of this line is deduced): QMutexLocker locker(&d->mutex); | - |
| 273 | return d->name; executed: return d->name;Execution Count:51 | 51 |
| 274 | } | - |
| 275 | | - |
| 276 | /*! | - |
| 277 | Returns the unique and platform specific identifier for this network configuration; | - |
| 278 | otherwise an empty string. | - |
| 279 | */ | - |
| 280 | QString QNetworkConfiguration::identifier() const | - |
| 281 | { | - |
| 282 | if (!d) evaluated: !d| yes Evaluation Count:2 | yes Evaluation Count:299 |
| 2-299 |
| 283 | return QString(); executed: return QString();Execution Count:2 | 2 |
| 284 | | - |
| 285 | QMutexLocker locker(&d->mutex); executed (the execution status of this line is deduced): QMutexLocker locker(&d->mutex); | - |
| 286 | return d->id; executed: return d->id;Execution Count:299 | 299 |
| 287 | } | - |
| 288 | | - |
| 289 | /*! | - |
| 290 | Returns the type of the configuration. | - |
| 291 | | - |
| 292 | A configuration can represent a single access point configuration or | - |
| 293 | a set of access point configurations. Such a set is called service network. | - |
| 294 | A configuration that is based on a service network can potentially support | - |
| 295 | roaming of network sessions. | - |
| 296 | */ | - |
| 297 | QNetworkConfiguration::Type QNetworkConfiguration::type() const | - |
| 298 | { | - |
| 299 | if (!d) evaluated: !d| yes Evaluation Count:7 | yes Evaluation Count:99 |
| 7-99 |
| 300 | return QNetworkConfiguration::Invalid; executed: return QNetworkConfiguration::Invalid;Execution Count:7 | 7 |
| 301 | | - |
| 302 | QMutexLocker locker(&d->mutex); executed (the execution status of this line is deduced): QMutexLocker locker(&d->mutex); | - |
| 303 | return d->type; executed: return d->type;Execution Count:99 | 99 |
| 304 | } | - |
| 305 | | - |
| 306 | /*! | - |
| 307 | Returns true if this QNetworkConfiguration object is valid. | - |
| 308 | A configuration may become invalid if the user deletes the configuration or | - |
| 309 | the configuration was default-constructed. | - |
| 310 | | - |
| 311 | The addition and removal of configurations can be monitored via the | - |
| 312 | QNetworkConfigurationManager. | - |
| 313 | | - |
| 314 | \sa QNetworkConfigurationManager | - |
| 315 | */ | - |
| 316 | bool QNetworkConfiguration::isValid() const | - |
| 317 | { | - |
| 318 | if (!d) evaluated: !d| yes Evaluation Count:100 | yes Evaluation Count:131 |
| 100-131 |
| 319 | return false; executed: return false;Execution Count:100 | 100 |
| 320 | | - |
| 321 | QMutexLocker locker(&d->mutex); executed (the execution status of this line is deduced): QMutexLocker locker(&d->mutex); | - |
| 322 | return d->isValid; executed: return d->isValid;Execution Count:131 | 131 |
| 323 | } | - |
| 324 | | - |
| 325 | /*! | - |
| 326 | Returns the current state of the configuration. | - |
| 327 | */ | - |
| 328 | QNetworkConfiguration::StateFlags QNetworkConfiguration::state() const | - |
| 329 | { | - |
| 330 | if (!d) evaluated: !d| yes Evaluation Count:11 | yes Evaluation Count:161 |
| 11-161 |
| 331 | return QNetworkConfiguration::Undefined; executed: return QNetworkConfiguration::Undefined;Execution Count:11 | 11 |
| 332 | | - |
| 333 | QMutexLocker locker(&d->mutex); executed (the execution status of this line is deduced): QMutexLocker locker(&d->mutex); | - |
| 334 | return d->state; executed: return d->state;Execution Count:161 | 161 |
| 335 | } | - |
| 336 | | - |
| 337 | /*! | - |
| 338 | Returns the purpose of this configuration. | - |
| 339 | | - |
| 340 | The purpose field may be used to programmatically determine the | - |
| 341 | purpose of a configuration. Such information is usually part of the | - |
| 342 | access point or service network meta data. | - |
| 343 | */ | - |
| 344 | QNetworkConfiguration::Purpose QNetworkConfiguration::purpose() const | - |
| 345 | { | - |
| 346 | if (!d) evaluated: !d| yes Evaluation Count:4 | yes Evaluation Count:26 |
| 4-26 |
| 347 | return QNetworkConfiguration::UnknownPurpose; executed: return QNetworkConfiguration::UnknownPurpose;Execution Count:4 | 4 |
| 348 | | - |
| 349 | QMutexLocker locker(&d->mutex); executed (the execution status of this line is deduced): QMutexLocker locker(&d->mutex); | - |
| 350 | return d->purpose; executed: return d->purpose;Execution Count:26 | 26 |
| 351 | } | - |
| 352 | | - |
| 353 | /*! | - |
| 354 | Returns true if this configuration supports roaming; otherwise false. | - |
| 355 | */ | - |
| 356 | bool QNetworkConfiguration::isRoamingAvailable() const | - |
| 357 | { | - |
| 358 | if (!d) evaluated: !d| yes Evaluation Count:2 | yes Evaluation Count:18 |
| 2-18 |
| 359 | return false; executed: return false;Execution Count:2 | 2 |
| 360 | | - |
| 361 | QMutexLocker locker(&d->mutex); executed (the execution status of this line is deduced): QMutexLocker locker(&d->mutex); | - |
| 362 | return d->roamingSupported; executed: return d->roamingSupported;Execution Count:18 | 18 |
| 363 | } | - |
| 364 | | - |
| 365 | /*! | - |
| 366 | Returns all sub configurations of this network configuration in priority order. The first sub | - |
| 367 | configuration in the list has the highest priority. | - |
| 368 | | - |
| 369 | Only network configurations of type \l ServiceNetwork can have children. Otherwise this | - |
| 370 | function returns an empty list. | - |
| 371 | */ | - |
| 372 | QList<QNetworkConfiguration> QNetworkConfiguration::children() const | - |
| 373 | { | - |
| 374 | QList<QNetworkConfiguration> results; never executed (the execution status of this line is deduced): QList<QNetworkConfiguration> results; | - |
| 375 | | - |
| 376 | if (!d) | 0 |
| 377 | return results; never executed: return results; | 0 |
| 378 | | - |
| 379 | QMutexLocker locker(&d->mutex); never executed (the execution status of this line is deduced): QMutexLocker locker(&d->mutex); | - |
| 380 | | - |
| 381 | if (d->type != QNetworkConfiguration::ServiceNetwork || !d->isValid) never evaluated: d->type != QNetworkConfiguration::ServiceNetwork never evaluated: !d->isValid | 0 |
| 382 | return results; never executed: return results; | 0 |
| 383 | | - |
| 384 | QMutableMapIterator<unsigned int, QNetworkConfigurationPrivatePointer> i(d->serviceNetworkMembers); never executed (the execution status of this line is deduced): QMutableMapIterator<unsigned int, QNetworkConfigurationPrivatePointer> i(d->serviceNetworkMembers); | - |
| 385 | while (i.hasNext()) { never evaluated: i.hasNext() | 0 |
| 386 | i.next(); never executed (the execution status of this line is deduced): i.next(); | - |
| 387 | | - |
| 388 | QNetworkConfigurationPrivatePointer p = i.value(); never executed (the execution status of this line is deduced): QNetworkConfigurationPrivatePointer p = i.value(); | - |
| 389 | | - |
| 390 | //if we have an invalid member get rid of it -> was deleted earlier on | - |
| 391 | { | - |
| 392 | QMutexLocker childLocker(&p->mutex); never executed (the execution status of this line is deduced): QMutexLocker childLocker(&p->mutex); | - |
| 393 | | - |
| 394 | if (!p->isValid) { never evaluated: !p->isValid | 0 |
| 395 | i.remove(); never executed (the execution status of this line is deduced): i.remove(); | - |
| 396 | continue; never executed: continue; | 0 |
| 397 | } | - |
| 398 | } | - |
| 399 | | - |
| 400 | QNetworkConfiguration item; never executed (the execution status of this line is deduced): QNetworkConfiguration item; | - |
| 401 | item.d = p; never executed (the execution status of this line is deduced): item.d = p; | - |
| 402 | results << item; never executed (the execution status of this line is deduced): results << item; | - |
| 403 | } | 0 |
| 404 | | - |
| 405 | return results; never executed: return results; | 0 |
| 406 | } | - |
| 407 | | - |
| 408 | /*! | - |
| 409 | Returns the type of bearer used by this network configuration. | - |
| 410 | | - |
| 411 | If the bearer type is \l {QNetworkConfiguration::BearerUnknown}{unknown} the bearerTypeName() | - |
| 412 | function can be used to retrieve a textural type name for the bearer. | - |
| 413 | | - |
| 414 | An invalid network configuration always returns the BearerUnknown value. | - |
| 415 | */ | - |
| 416 | QNetworkConfiguration::BearerType QNetworkConfiguration::bearerType() const | - |
| 417 | { | - |
| 418 | if (!isValid()) partially evaluated: !isValid()| no Evaluation Count:0 | yes Evaluation Count:10 |
| 0-10 |
| 419 | return BearerUnknown; never executed: return BearerUnknown; | 0 |
| 420 | | - |
| 421 | QMutexLocker locker(&d->mutex); executed (the execution status of this line is deduced): QMutexLocker locker(&d->mutex); | - |
| 422 | | - |
| 423 | return d->bearerType; executed: return d->bearerType;Execution Count:10 | 10 |
| 424 | } | - |
| 425 | | - |
| 426 | /*! | - |
| 427 | Returns the type of bearer used by this network configuration as a string. | - |
| 428 | | - |
| 429 | The string is not translated and therefore can not be shown to the user. The subsequent table | - |
| 430 | shows the fixed mappings between BearerType and the bearer type name for known types. If the | - |
| 431 | BearerType is unknown this function may return additional information if it is available; | - |
| 432 | otherwise an empty string will be returned. | - |
| 433 | | - |
| 434 | \table | - |
| 435 | \header | - |
| 436 | \li BearerType | - |
| 437 | \li Value | - |
| 438 | \row | - |
| 439 | \li BearerUnknown | - |
| 440 | \li | - |
| 441 | \li The session is based on an unknown or unspecified bearer type. The value of the | - |
| 442 | string returned describes the bearer type. | - |
| 443 | \row | - |
| 444 | \li BearerEthernet | - |
| 445 | \li Ethernet | - |
| 446 | \row | - |
| 447 | \li BearerWLAN | - |
| 448 | \li WLAN | - |
| 449 | \row | - |
| 450 | \li Bearer2G | - |
| 451 | \li 2G | - |
| 452 | \row | - |
| 453 | \li BearerCDMA2000 | - |
| 454 | \li CDMA2000 | - |
| 455 | \row | - |
| 456 | \li BearerWCDMA | - |
| 457 | \li WCDMA | - |
| 458 | \row | - |
| 459 | \li BearerHSPA | - |
| 460 | \li HSPA | - |
| 461 | \row | - |
| 462 | \li BearerBluetooth | - |
| 463 | \li Bluetooth | - |
| 464 | \row | - |
| 465 | \li BearerWiMAX | - |
| 466 | \li WiMAX | - |
| 467 | \endtable | - |
| 468 | | - |
| 469 | This function returns an empty string if this is an invalid configuration, a network | - |
| 470 | configuration of type \l QNetworkConfiguration::ServiceNetwork or | - |
| 471 | \l QNetworkConfiguration::UserChoice. | - |
| 472 | | - |
| 473 | \sa bearerType() | - |
| 474 | */ | - |
| 475 | QString QNetworkConfiguration::bearerTypeName() const | - |
| 476 | { | - |
| 477 | if (!isValid()) evaluated: !isValid()| yes Evaluation Count:1 | yes Evaluation Count:4 |
| 1-4 |
| 478 | return QString(); executed: return QString();Execution Count:1 | 1 |
| 479 | | - |
| 480 | QMutexLocker locker(&d->mutex); executed (the execution status of this line is deduced): QMutexLocker locker(&d->mutex); | - |
| 481 | | - |
| 482 | if (d->type == QNetworkConfiguration::ServiceNetwork || partially evaluated: d->type == QNetworkConfiguration::ServiceNetwork| no Evaluation Count:0 | yes Evaluation Count:4 |
| 0-4 |
| 483 | d->type == QNetworkConfiguration::UserChoice) partially evaluated: d->type == QNetworkConfiguration::UserChoice| no Evaluation Count:0 | yes Evaluation Count:4 |
| 0-4 |
| 484 | return QString(); never executed: return QString(); | 0 |
| 485 | | - |
| 486 | switch (d->bearerType) { | - |
| 487 | case BearerEthernet: | - |
| 488 | return QStringLiteral("Ethernet"); executed: return QString::fromUtf8("" "Ethernet" "", sizeof("Ethernet") - 1);Execution Count:4 | 4 |
| 489 | case BearerWLAN: | - |
| 490 | return QStringLiteral("WLAN"); never executed: return QString::fromUtf8("" "WLAN" "", sizeof("WLAN") - 1); | 0 |
| 491 | case Bearer2G: | - |
| 492 | return QStringLiteral("2G"); never executed: return QString::fromUtf8("" "2G" "", sizeof("2G") - 1); | 0 |
| 493 | case BearerCDMA2000: | - |
| 494 | return QStringLiteral("CDMA2000"); never executed: return QString::fromUtf8("" "CDMA2000" "", sizeof("CDMA2000") - 1); | 0 |
| 495 | case BearerWCDMA: | - |
| 496 | return QStringLiteral("WCDMA"); never executed: return QString::fromUtf8("" "WCDMA" "", sizeof("WCDMA") - 1); | 0 |
| 497 | case BearerHSPA: | - |
| 498 | return QStringLiteral("HSPA"); never executed: return QString::fromUtf8("" "HSPA" "", sizeof("HSPA") - 1); | 0 |
| 499 | case BearerBluetooth: | - |
| 500 | return QStringLiteral("Bluetooth"); never executed: return QString::fromUtf8("" "Bluetooth" "", sizeof("Bluetooth") - 1); | 0 |
| 501 | case BearerWiMAX: | - |
| 502 | return QStringLiteral("WiMAX"); never executed: return QString::fromUtf8("" "WiMAX" "", sizeof("WiMAX") - 1); | 0 |
| 503 | case BearerUnknown: | - |
| 504 | break; | 0 |
| 505 | } | - |
| 506 | return QStringLiteral("Unknown"); never executed: return QString::fromUtf8("" "Unknown" "", sizeof("Unknown") - 1); | 0 |
| 507 | } | - |
| 508 | | - |
| 509 | QT_END_NAMESPACE | - |
| 510 | | - |
| | |