gssettingsuis/Gs/GSNetworkPlugin/Src/PSMNetworkPlugin.cpp
branchRCL_3
changeset 16 bdac6c462392
parent 0 8c5d936e5675
--- a/gssettingsuis/Gs/GSNetworkPlugin/Src/PSMNetworkPlugin.cpp	Mon Mar 15 12:41:46 2010 +0200
+++ b/gssettingsuis/Gs/GSNetworkPlugin/Src/PSMNetworkPlugin.cpp	Wed Mar 31 22:01:53 2010 +0300
@@ -53,6 +53,11 @@
     __GSLOGSTRING( "[GS]-->[CPSMNetworkPlugin::ConstructL]" );
     
     iModel = CGSNetworkPluginModel::NewL( NULL,NULL );
+    iPsmRepository = CRepository::NewL( KCRUidPowerSaveMode );
+    // Read from CenRep so iPsmMode gets correct init value
+    TInt psmMode;
+    iPsmRepository->Get( KPsmCurrentMode, psmMode );
+    iPsmMode = ( TPsmsrvMode )psmMode;
     
     __GSLOGSTRING( "[GS]<--[CPSMNetworkPlugin::ConstructL]" );
     }
@@ -84,6 +89,8 @@
     __GSLOGSTRING( "[CPSMNetworkPlugin::~CPSMNetworkPlugin]" );
     delete iModel;
     iModel = NULL;
+    delete iPsmRepository;
+    iPsmRepository = NULL;
 	}
 
 // ---------------------------------------------------------
@@ -130,9 +137,10 @@
 //
 void CPSMNetworkPlugin::DoModeChangeL( const TInt aMode )
     {
+	TPsmsrvMode newMode = ( TPsmsrvMode )aMode;
     if ( !IsPhoneOfflineL() && 
          FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ) &&
-         iModel->IsNetworkModeVisible() )
+         iModel->IsNetworkModeVisible() && IsChangeNetworkMode ( iPsmMode, newMode ) )
         {
         RConfigInfoArray infoArray;
     
@@ -141,7 +149,7 @@
         info1.iConfigType = EConfigTypeInt;
         info1.iIntValue = iModel->GetNetworkMode();
         infoArray.Append( info1 );
-    
+        
         __GSLOGSTRING1( "[CPSMNetworkPlugin::NotifyModeChangeL] Switching to mode:%d", aMode );
     
         __GSLOGSTRING1( "[CPSMNetworkPlugin::NotifyModeChangeL]: oldValue info1: %d", infoArray[0].iIntValue );
@@ -161,6 +169,26 @@
         }
     }
 
+// ----------------------------------------------------------------------------------
+// CPSMNetworkPlugin::IsChangeNetworkMode
+// ----------------------------------------------------------------------------------
+//
+TBool CPSMNetworkPlugin::IsChangeNetworkMode( TPsmsrvMode& aOldMode, TPsmsrvMode aNewMode )
+	{
+	TPsmsrvMode oldMode = aOldMode;
+	aOldMode = aNewMode;
+	if ( ( oldMode == EPsmsrvModeNormal && aNewMode == EPsmsrvPartialMode )
+			|| ( oldMode == EPsmsrvModePowerSave && aNewMode
+					== EPsmsrvPartialMode ) )
+		{
+		return EFalse;
+		}
+	else
+		{
+		return ETrue;
+		}
+	}
+
 //End of File