locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingsuiengine.cpp
branchRCL_3
changeset 12 f3bd2a0973b9
parent 0 667063e416a2
--- a/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingsuiengine.cpp	Fri Feb 19 23:14:27 2010 +0200
+++ b/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingsuiengine.cpp	Fri Mar 12 15:44:22 2010 +0200
@@ -68,7 +68,8 @@
 	iConversionBufferPtr( NULL, 0 ),
 	iSettingsBufferPtr( NULL, 0),
 	iCurrentSlpId( -1 ),
-	iEditorObserver( NULL )
+	iEditorObserver( NULL ),
+	iTempAP(-1)
 	{
 	// No implementation
 	}
@@ -235,22 +236,31 @@
     // left over value from the previous access
     iSettingsBufferPtr.Zero();
     
-    // Obtain the Server address value from the SUPL settings
-    // API. If the value is set then it has to be shown to the user
-    // as the existing value when he tries to configure the UI
-    TRAP_IGNORE( iSUPLSettingsAdapter->GetIapNameL( iCurrentSlpId, iSettingsBufferPtr ) );
-    	
     // Obtain the UID for the selected Access point so that the configurator
     // can be highlighted
     TUint32 highlightUid( 0 );
- 
-    TRAPD( error, highlightUid = ConvertIAPNameToIdL( iSettingsBufferPtr ) ); 
     
-    if( error == KErrNotFound )
-    	{
-    	highlightUid = 0;
-    	}
-   
+    // if AP value is NULL, or zero, no temp AP, all previous changes have been frozen.
+    TInt32 tempAP = GetTempAPValue();
+    if ( tempAP == -1)
+        {
+        // Obtain the Server address value from the SUPL settings
+        // API. If the value is set then it has to be shown to the user
+        // as the existing value when he tries to configure the UI
+        TRAP_IGNORE( iSUPLSettingsAdapter->GetIapNameL( iCurrentSlpId, iSettingsBufferPtr ) );
+     
+        TRAPD( error, highlightUid = ConvertIAPNameToIdL( iSettingsBufferPtr ) ); 
+        
+        if( error == KErrNotFound )
+            {
+            highlightUid = 0;
+            }
+        }
+    else
+        {
+        highlightUid = tempAP;
+        }
+
  	CCmApplicationSettingsUi* apHandler =  CCmApplicationSettingsUi::NewLC();
  	
  	iDialogActive = ETrue;
@@ -267,7 +277,7 @@
 
 	// Run CCmApplicationSettingsUi dialog only for Access points (Connection methods)
 	// selectionUid contains UID to be highlighted, on return it will contain UID of selected CM
-    TRAP( error, ret = 
+    TRAPD( error, ret = 
     	apHandler->RunApplicationSettingsL( 
     			selectionUid , CMManager::EShowConnectionMethods, filter 
     ) ); // | CMManager::EShowAlwaysAsk
@@ -283,7 +293,8 @@
     CleanupStack::PopAndDestroy( apHandler );   
     
     if( ret )
-        {            
+        {
+        SetTempAPValue(selectionUid.iId);
         RCmManager cmManager;
 		cmManager.OpenLC();
 	
@@ -986,5 +997,23 @@
 	{
 	iSUPLSettingsAdapter->RemoveSessionObserver( );
 	}
-	
+
+// ---------------------------------------------------------------------------
+// void CLocSUPLSettingsUiEngine::GetTempAPValue
+// ---------------------------------------------------------------------------
+// 
+TUint32 CLocSUPLSettingsUiEngine::GetTempAPValue()
+    {
+    return iTempAP;
+    }
+
+// ---------------------------------------------------------------------------
+// void CLocSUPLSettingsUiEngine::SetTempAPValue
+// ---------------------------------------------------------------------------
+// 
+void CLocSUPLSettingsUiEngine::SetTempAPValue( TUint32 aAccessPoint)
+    {
+    iTempAP = aAccessPoint;
+    }
+
 // End of File