summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2011-09-20 16:13:34 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2011-09-20 16:13:34 (GMT)
commit6f43e483846ab0d7311ca698e9cc5b547710f9da (patch)
tree89cd3bc9b854e3a557d6e84035daf33204324ae0
parent2d1063d31626559ee2539ac2c4a6c2cdda0d224b (diff)
parent94a18b734a67ee59bc3ac48012c48d06d1362e8b (diff)
downloadQt-6f43e483846ab0d7311ca698e9cc5b547710f9da.zip
Qt-6f43e483846ab0d7311ca698e9cc5b547710f9da.tar.gz
Qt-6f43e483846ab0d7311ca698e9cc5b547710f9da.tar.bz2
Merge branch 'master' of git://scm.dev.nokia.troll.no/qt/qt-symbian-team
* 'master' of git://scm.dev.nokia.troll.no/qt/qt-symbian-team: symbian: Implement QNetworkConfiguration::purpose()
-rw-r--r--src/plugins/bearer/symbian/symbianengine.cpp52
-rw-r--r--src/plugins/bearer/symbian/symbianengine.h1
2 files changed, 52 insertions, 1 deletions
diff --git a/src/plugins/bearer/symbian/symbianengine.cpp b/src/plugins/bearer/symbian/symbianengine.cpp
index fdfe94a..ee80297 100644
--- a/src/plugins/bearer/symbian/symbianengine.cpp
+++ b/src/plugins/bearer/symbian/symbianengine.cpp
@@ -329,7 +329,27 @@ void SymbianEngine::updateConfigurationsL()
cpPriv->connectionId = 0;
cpPriv->state = QNetworkConfiguration::Defined;
cpPriv->type = QNetworkConfiguration::ServiceNetwork;
- cpPriv->purpose = QNetworkConfiguration::UnknownPurpose;
+
+ // determine purpose of this SNAP
+ TUint32 purpose = CMManager::ESnapPurposeUnknown;
+ TRAP_IGNORE(purpose = destination.MetadataL(CMManager::ESnapMetadataPurpose));
+ switch (purpose) {
+ case CMManager::ESnapPurposeInternet:
+ cpPriv->purpose = QNetworkConfiguration::PublicPurpose;
+ break;
+ case CMManager::ESnapPurposeIntranet:
+ cpPriv->purpose = QNetworkConfiguration::PrivatePurpose;
+ break;
+ case CMManager::ESnapPurposeMMS:
+ case CMManager::ESnapPurposeOperator:
+ cpPriv->purpose = QNetworkConfiguration::ServiceSpecificPurpose;
+ break;
+ case CMManager::ESnapPurposeUnknown:
+ default:
+ cpPriv->purpose = QNetworkConfiguration::UnknownPurpose;
+ break;
+ }
+
cpPriv->roamingSupported = false;
QNetworkConfigurationPrivatePointer ptr(cpPriv);
@@ -482,9 +502,39 @@ void SymbianEngine::updateConfigurationsL()
#ifdef SNAP_FUNCTIONALITY_AVAILABLE
updateStatesToSnaps();
+ updatePurposeToIaps();
#endif
}
+//copy purpose from SNAP to child IAPs, unless child is contained in more than one SNAP with conflicting purposes.
+void SymbianEngine::updatePurposeToIaps()
+{
+ QMutexLocker lock(&mutex);
+ QHash<QString,int> purposes;
+ foreach (QNetworkConfigurationPrivatePointer snap, snapConfigurations.values()) {
+ QMutexLocker snaplock(&snap->mutex);
+ foreach (QNetworkConfigurationPrivatePointer iap, snap->serviceNetworkMembers.values()) {
+ QMutexLocker iaplock(&iap->mutex);
+ QString id = iap->id;
+ if (purposes.contains(id) && purposes.value(id) != snap->purpose)
+ purposes[id] = -1; //conflict detected
+ else
+ purposes[id] = snap->purpose;
+ }
+ }
+
+ for (QHash<QString,int>::const_iterator it = purposes.constBegin(); it != purposes.constEnd(); ++it) {
+ if (accessPointConfigurations.contains(it.key())) {
+ QNetworkConfigurationPrivatePointer iap = accessPointConfigurations.value(it.key());
+ QMutexLocker iaplock(&iap->mutex);
+ int purpose = it.value();
+ if (purpose == -1) //resolve conflicts as unknown
+ purpose = QNetworkConfiguration::UnknownPurpose;
+ iap->purpose = (QNetworkConfiguration::Purpose)purpose;
+ }
+ }
+}
+
#ifdef SNAP_FUNCTIONALITY_AVAILABLE
SymbianNetworkConfigurationPrivate *SymbianEngine::configFromConnectionMethodL(
RCmConnectionMethod& connectionMethod)
diff --git a/src/plugins/bearer/symbian/symbianengine.h b/src/plugins/bearer/symbian/symbianengine.h
index a205c97..b75f27e 100644
--- a/src/plugins/bearer/symbian/symbianengine.h
+++ b/src/plugins/bearer/symbian/symbianengine.h
@@ -155,6 +155,7 @@ public Q_SLOTS:
private:
void updateStatesToSnaps();
+ void updatePurposeToIaps();
bool changeConfigurationStateTo(QNetworkConfigurationPrivatePointer ptr,
QNetworkConfiguration::StateFlags newState);
bool changeConfigurationStateAtMinTo(QNetworkConfigurationPrivatePointer ptr,