diff -r 23553eb4e470 -r bdac6c462392 gssettingsuis/Gs/GSNetworkPlugin/Src/PSMNetworkPlugin.cpp --- 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