locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingsuiengine.cpp
branchRCL_3
changeset 55 ea98413ce11f
parent 49 10852b179f64
--- a/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingsuiengine.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingsuiengine.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -51,6 +51,7 @@
 #include "locsuplservereditor.h"
 #include "locsuplsessioneditor.h"
 #include "locsupldebug.h"
+#include "locsettingsuiclient.h"   // For the Launch parameter values
 
 // Constants
 const TInt KMaxBufferLength 		= 0x100;
@@ -63,9 +64,13 @@
 //
 CLocSUPLSettingsUiEngine::CLocSUPLSettingsUiEngine( 
                             MLocSUPLSettingsUiEngObserver&      aObserver )
-	: 	iObserver( aObserver ),
+	: CActive( EPriorityStandard ), 
+	iObserver( aObserver ),
 	iConversionBufferPtr( NULL, 0 ),
-	iEditorDlg(NULL),
+	iSettingsBufferPtr( NULL, 0 ),
+	iConnectionMgmtQuery( NULL ),
+	iCurrentSlpId( -1 ),
+	iEditorObserver( NULL ),
 	iTempAP(-1)
 	{
 	// No implementation
@@ -79,7 +84,15 @@
 CLocSUPLSettingsUiEngine::~CLocSUPLSettingsUiEngine()	
     {
 	DEBUG( + CLocSUPLSettingsUiEngine::~CLocSUPLSettingsUiEngine );	
+    Cancel(); 
     
+    // Delete the Confirmation query
+    delete iConfirmQuery;
+    iConfirmQuery = NULL;
+    
+    // Delete the ConnectionMgmt query
+    delete iConnectionMgmtQuery;
+    iConnectionMgmtQuery = NULL;
     
 	delete iSUPLSettingsAdapter;
 	iSUPLSettingsAdapter = NULL;	
@@ -88,6 +101,8 @@
 	delete iConversionBuffer;
 	iConversionBuffer = NULL;
 	
+	delete iSettingsBuffer;
+	iSettingsBuffer = NULL;
 	
 	// Delete the Error handling utilities
 	delete iTextResolver;
@@ -142,12 +157,15 @@
     iConversionBuffer = HBufC16::NewL( KMaxBufferLength );
     iConversionBufferPtr.Set( iConversionBuffer->Des() );
     
+    iSettingsBuffer = HBufC::NewL( KMaxBufferLength );
+    iSettingsBufferPtr.Set( iSettingsBuffer->Des());
     
     iTextResolver = CTextResolver::NewL( *( CCoeEnv::Static() ) );
     
     // Create the SUPL Settings API adapter. 
     iSUPLSettingsAdapter = CLocSUPLSettingsAdapter::NewL( *this ); 
     
+    CActiveScheduler::Add( this );
 	DEBUG( - CLocSUPLSettingsUiEngine::ConstructL );	
      
 	}
@@ -165,8 +183,244 @@
 	DEBUG( - CLocSUPLSettingsUiEngine::Initalize );	
     }
             
+void CLocSUPLSettingsUiEngine::SelectConnectionL()
+    {
+	DEBUG( + CLocSUPLSettingsUiEngine::SelectConnectionL );	
+    if( iDialogActive || IsActive() || iConfirmQuery || iConnectionMgmtQuery )
+        {
+        User::Leave( KErrInUse );
+        }
+    
+    // set the Launch type
+    iLaunchParams = ELocSUPLIAPSelection;
+        
+    // In the case of a framework launching SUPL UI, the user is ignorant 
+    // of the action. Hence, a confirmation dialog is popped up to intimate
+    // the user that he needs to configure SUPL settings.
+    
+    iConfirmQuery = CAknGlobalConfirmationQuery::NewL();
 
+    CAknSDData* secondaryData = CAknSDData::NewL( KCatUidLocationSuplSettingsUi,
+                                                  ECmdSuplSettingsMissing,
+                                                  KNullDesC8 );
+ 
+    // Send the Confirmation query information to the Secondary display
+    // The ownership of 'secondaryData' is taken up by the Global confirmation query
+    iConfirmQuery->SetSecondaryDisplayData( secondaryData );
+     
+    // Load the SUPL IAP confirmation query prompt text from the resource file
+	HBufC* promptText = StringLoader::LoadL( R_LOC_SUPL_IAP_QUERY );
+		
+	// Display the Confirmation query.  
+    iConfirmQuery->ShowConfirmationQueryL( iStatus,
+                                           *promptText,
+                                           R_AVKON_SOFTKEYS_YES_NO__YES,
+                                           R_QGN_NOTE_QUERY_ANIM );
+                                               
+    SetActive();  
+    delete promptText; //    
+    promptText = NULL;
+	DEBUG( - CLocSUPLSettingsUiEngine::SelectConnectionL );	
+    }
 
+// ---------------------------------------------------------------------------
+// void CLocSUPLSettingsUiEngine::LaunchApConfiguratorL
+// Launches the Access Point Configurator dialog
+//
+// ---------------------------------------------------------------------------
+//
+void CLocSUPLSettingsUiEngine::LaunchApConfiguratorL( TInt64 aSlpId, 
+		MSuplServerEditorObserver* aEditorObserver )
+    {     
+	DEBUG( + CLocSUPLSettingsUiEngine::LaunchApConfiguratorL );	
+	iCurrentSlpId =  aSlpId;
+	iEditorObserver = aEditorObserver;
+
+    if( iDialogActive )
+        {
+        User::Leave( KErrInUse );
+        }
+        
+    // Zeroing the Temporary buffers so that it doesn't contain any
+    // left over value from the previous access
+    iSettingsBufferPtr.Zero();
+    
+    // Obtain the UID for the selected Access point so that the configurator
+    // can be highlighted
+    TUint32 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;
+        }
+    
+ 	iConnectionMgmtQuery =  CCmApplicationSettingsUi::NewL();
+ 	
+ 	iDialogActive = ETrue;
+    TBool ret = EFalse;
+    TCmSettingSelection selectionUid;
+    selectionUid.iId = highlightUid;
+    selectionUid.iResult = CMManager::EConnectionMethod ;
+    TBearerFilterArray filter;
+	CleanupClosePushL( filter );
+	
+	// Need access points for bearer type CSD and Packet data only
+	filter.AppendL( KUidCSDBearerType );
+	filter.AppendL( KUidPacketDataBearerType );
+
+	// Run CCmApplicationSettingsUi dialog only for Access points (Connection methods)
+	// selectionUid contains UID to be highlighted, on return it will contain UID of selected CM
+    TRAPD( error, ret = 
+    	iConnectionMgmtQuery->RunApplicationSettingsL( 
+    			selectionUid , CMManager::EShowConnectionMethods, filter 
+    ) ); // | CMManager::EShowAlwaysAsk
+    
+    iDialogActive = EFalse;  
+    if( error == CMManager::KErrConnectionNotFound )
+        {
+        // No AP defined, Show Note                
+        TRAP_IGNORE( ShowNoteL(); )
+        //User::Leave( error );    
+        }   
+    CleanupStack::PopAndDestroy( &filter );   
+    delete iConnectionMgmtQuery;
+    iConnectionMgmtQuery = NULL;  
+    
+    if( ret )
+        {
+        SetTempAPValue(selectionUid.iId);
+        RCmManager cmManager;
+		cmManager.OpenLC();
+	
+		RArray< TUint32 > cmArray;
+		HBufC* cmName = NULL;
+		RCmConnectionMethod method;
+		// Get all the CMs into cmArray
+		cmManager.ConnectionMethodL( cmArray, ETrue, EFalse );
+		CleanupClosePushL( cmArray );
+		
+		// Get name of selected CM
+		TInt count = cmArray.Count();
+		for ( TInt i = 0; i < count; i++ )
+		    {
+		    if (selectionUid.iId == cmArray[i] )
+		    	{
+		    	method = cmManager.ConnectionMethodL( cmArray[i] );
+		    	CleanupClosePushL( method );
+		    	cmName = method.GetStringAttributeL( CMManager::ECmName );
+		    	CleanupStack::PushL( cmName );
+		    	iSettingsBufferPtr.Copy( cmName->Des() );
+		    	CleanupStack::PopAndDestroy( cmName );
+		    	CleanupStack::PopAndDestroy( &method );
+		    	break;
+		    	}		    
+		    }
+		CleanupStack::PopAndDestroy( &cmArray );    
+    	CleanupStack::PopAndDestroy( &cmManager );          	
+
+		if( iEditorObserver )
+	       	{
+	       	iEditorObserver->UpdateIapL( iSettingsBufferPtr );		       	
+	       	}
+        }
+           
+	DEBUG( - CLocSUPLSettingsUiEngine::LaunchApConfiguratorL );	
+    }  
+
+// ---------------------------------------------------------------------------
+// void CLocSUPLSettingsUiEngine::LaunchSuplUsageConfiguratorL
+// Launches the SUPL Usage Configurator
+//
+// ---------------------------------------------------------------------------    
+//
+void CLocSUPLSettingsUiEngine::LaunchSuplUsageConfiguratorL()
+    {
+	DEBUG( + CLocSUPLSettingsUiEngine::LaunchSuplUsageConfiguratorL );	
+    if( iDialogActive )
+        {
+        User::Leave( KErrInUse );
+        }
+        
+    // Allocate the descriptor array for Text settings for System
+    // of measurement
+    CDesCArrayFlat* items = new( ELeave ) CDesCArrayFlat( KNoofUsageSettings );
+    CleanupStack::PushL( items );
+
+    // Allocate all the Settings usage string
+    
+    // Append the radio-button list items
+    items->AppendL( iSUPLSettingsAdapter->Automatic() );
+    items->AppendL( iSUPLSettingsAdapter->AutomaticAtHome() );
+    items->AppendL( iSUPLSettingsAdapter->AlwaysAsk() );
+    items->AppendL( iSUPLSettingsAdapter->Disable() );
+      
+    // Obtain the current value for SUPL settings usage
+    // This would be used for setting the default value for 
+    // the text settings page               
+    TInt currentSettings = iSUPLSettingsAdapter->GetSuplUsageIndex();
+        
+    CAknRadioButtonSettingPage* dlg = 
+                        new ( ELeave )CAknRadioButtonSettingPage( R_LOC_SUPLUSAGE_SETTINGS,
+                                                                  currentSettings, 
+                                                                  items );
+    // Settings Outstanding flag is marked True to enable dismissal incase
+    // of a Cancel event                                                                  
+    iDialogActive = ETrue;                                                                  
+    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
+        {
+        CLocSUPLSettingsAdapter::TLocSuplUsage newValue = 
+                    static_cast<CLocSUPLSettingsAdapter::TLocSuplUsage>( currentSettings );
+                    
+        iSUPLSettingsAdapter->SetSuplUsageL( newValue );
+        }
+    
+    iDialogActive = EFalse;           
+    
+    // Free the items resource
+    CleanupStack::PopAndDestroy( items );   
+	DEBUG( - CLocSUPLSettingsUiEngine::LaunchSuplUsageConfiguratorL );	
+    }
+
+// ---------------------------------------------------------------------------
+// void CLocSUPLSettingsUiEngine::LaunchIAPDialogL
+// Launches the IAP Dialog
+//
+// ---------------------------------------------------------------------------    
+//
+void CLocSUPLSettingsUiEngine::LaunchIAPDialogL( )
+    {
+	DEBUG( + CLocSUPLSettingsUiEngine::LaunchIAPDialogL );	
+    if( iDialogActive || IsActive() || iConfirmQuery || iConnectionMgmtQuery )
+        {
+        User::Leave( KErrInUse );
+        }
+    
+    // set the Launch type
+    iLaunchParams = ELocSuplIAPDialog;
+     
+    // Self complete
+    SetActive();
+    TRequestStatus* status = &iStatus;
+    User::RequestComplete(status, KErrNone);
+        
+	DEBUG( - CLocSUPLSettingsUiEngine::LaunchIAPDialogL );	
+    }
     
 // ---------------------------------------------------------------------------
 // void CLocSUPLSettingsUiEngine::Close
@@ -176,14 +430,59 @@
 void CLocSUPLSettingsUiEngine::Close()
     {
 	DEBUG( + CLocSUPLSettingsUiEngine::Close );	
+    Cancel();   
     
     // Cancel the Initalization request. This call Cancels if there is an 
     // outstanding request. If not, does nothing
     iSUPLSettingsAdapter->CancelInitialize();
      
+    // If any of the dialogs are active then issue a cancel event on the 
+    // dialogs
+    if( iDialogActive )
+        {
+        TKeyEvent   keyEvent;
+        keyEvent.iCode          = EKeyCBA2;
+        keyEvent.iScanCode      = EStdKeyDevice1;         
+        keyEvent.iModifiers     = EAllModifiers;
+        keyEvent.iRepeats       = 0;
+        CCoeEnv* cCoeEnv = CCoeEnv::Static();
+        
+        // Simulate a Cancel event on the running dialogs. The Simulated event
+        // is for the Left Soft Key.
+        // Ignore the error incase of a leave
+        
+        TRAP_IGNORE( cCoeEnv->SimulateKeyEventL( keyEvent, EEventKey ) );
+        }      
 	DEBUG( - CLocSUPLSettingsUiEngine::Close );	
     }
 
+// ---------------------------------------------------------------------------
+// TPtr16 CLocSUPLSettingsAdapter::GetSuplUsage
+// ---------------------------------------------------------------------------
+//  
+TPtr16 CLocSUPLSettingsUiEngine::GetSuplUsageL()
+    {
+	DEBUG( + CLocSUPLSettingsUiEngine::GetSuplUsageL );	
+    // Zeroing the Temporary buffers so that it doesn't contain any
+    // left over value from the previous access
+    iSettingsBufferPtr.Zero();
+    iConversionBufferPtr.Zero();
+    
+    // Obtain the Settings values from the SUPL settings API
+    iSUPLSettingsAdapter->GetSuplUsageL( iSettingsBufferPtr );
+    iConversionBufferPtr.Copy( iSettingsBufferPtr );
+	DEBUG( - CLocSUPLSettingsUiEngine::GetSuplUsageL );	
+    return iConversionBufferPtr;
+    }
+    
+// ---------------------------------------------------------------------------
+// TInt CLocSUPLSettingsAdapter::GetSuplUsage
+// ---------------------------------------------------------------------------
+//
+TInt CLocSUPLSettingsUiEngine::GetSuplUsage()
+    {
+    return iSUPLSettingsAdapter->GetSuplUsage();
+    }
             				
 // ---------------------------------------------------------------------------
 // void CLocSUPLSettingsUiEngine::HandleSuplSettingsChangeL
@@ -201,6 +500,92 @@
     }
                                        
 // ---------------------------------------------------------------------------
+// void CLocSUPLSettingsUiEngine::RunL()
+//
+// ---------------------------------------------------------------------------
+//
+void CLocSUPLSettingsUiEngine::RunL()
+    {    
+	DEBUG( + CLocSUPLSettingsUiEngine::RunL );	
+    // If the Confirmation query is present then we have to Pop up the 
+    // IAP Selection dialog based on User Action
+    if( iConfirmQuery && iLaunchParams == ELocSUPLIAPSelection )
+        {        
+        // Incase there has been a response from the User then the Key pressed
+        // is present in the iStatus variable 
+        if( EAknSoftkeyYes == iStatus.Int() )
+            {
+	        iObserver.HandleSettingsEventL( 
+	                MLocSUPLSettingsUiEngObserver::EIAPSelectionComplete );                       
+            }
+        else
+            {
+            iObserver.HandleSettingsEventL( 
+                    MLocSUPLSettingsUiEngObserver::EIAPSelectionCancelled );
+            }
+        
+        // Destroy the IAP confirmation query handle    
+        delete iConfirmQuery;
+        iConfirmQuery = NULL;
+        }
+    else if( iLaunchParams == ELocSuplIAPDialog )    // Launch IAP Dialog
+        {
+        // Launch Access Point dialog to get the access point
+        TRAPD(err, LaunchApConfiguratorL(KErrNotFound, NULL) );
+        
+        // Update the Access points for all the Slp whose AP is missing.
+        if( KErrNone == err )
+            TRAP(err, UpdateMissingIAPL( iSettingsBufferPtr ) );
+            
+        // Incase of any errors.
+        if( KErrNone == err )
+            {
+	        iObserver.HandleSettingsEventL( 
+	                MLocSUPLSettingsUiEngObserver::EIAPSelectionComplete );                       
+            }
+        else
+            {
+            iObserver.HandleSettingsEventL( 
+                    MLocSUPLSettingsUiEngObserver::EIAPSelectionCancelled );
+            }
+        }
+     else
+        {
+          iObserver.HandleSettingsEventL( 
+                      MLocSUPLSettingsUiEngObserver::EIAPSelectionCancelled );
+        }
+        
+	DEBUG( - CLocSUPLSettingsUiEngine::RunL );	
+    }
+
+// ---------------------------------------------------------------------------
+// void CLocSUPLSettingsUiEngine::DoCancel()
+//
+// ---------------------------------------------------------------------------
+//    
+void CLocSUPLSettingsUiEngine::DoCancel()    
+    {
+	DEBUG( + CLocSUPLSettingsUiEngine::DoCancel );	
+    if( iConfirmQuery )
+        {
+        // If the confirmation query is running Cancel the query
+        iConfirmQuery->CancelConfirmationQuery();
+        
+        delete iConfirmQuery;
+        iConfirmQuery = NULL;
+        
+        }
+        
+    if( iConnectionMgmtQuery )
+        {
+        delete iConnectionMgmtQuery;
+        iConnectionMgmtQuery = NULL;
+        }
+        
+	DEBUG( - CLocSUPLSettingsUiEngine::DoCancel );	
+    }
+    
+// ---------------------------------------------------------------------------
 // void CLocSUPLSettingsUiEngine::GenerateHslpAddressFromImsi()
 //
 // ---------------------------------------------------------------------------
@@ -212,6 +597,56 @@
 	DEBUG( - CLocSUPLSettingsUiEngine::DoCancel );	
     }
 
+// ---------------------------------------------------------------------------
+// void CLocSUPLSettingsUiEngine::UpdateMissingIAPL()
+// Updates Access point for ALL SLPs which do not have AP defined.
+// 
+// ---------------------------------------------------------------------------
+//
+void CLocSUPLSettingsUiEngine::UpdateMissingIAPL(const TDesC& aAccessPoint )
+    {
+    // return if there is no access point in aAccessPoint
+    if( aAccessPoint.Length() <=0 )
+        return;
+        
+    RPointerArray<CServerParams> serverParamValues;
+    CleanupClosePushL( serverParamValues );
+    
+    GetAllSlpL( serverParamValues );
+    
+    HBufC* hslpAddr = HBufC::NewLC( KMaxHSLPAddrLen );    
+    HBufC* iapName 	= HBufC::NewLC( KMaxIAPLen );
+    TInt64 slpId;
+    TBool enabledFlag, simChangeFlag, usageInHomeNwFlag, editFlag;    
+    
+    TInt count = serverParamValues.Count();
+    for( TInt i=0; i<count; i++ )
+	    {
+	    // Zero the buffer contents
+	    hslpAddr->Des().Zero();
+	    iapName->Des().Zero();
+        
+	    // Get Server detils
+        TInt errParams = serverParamValues[i]->Get(
+        							slpId, 
+        							hslpAddr->Des(), 
+        							iapName->Des(), 
+        							enabledFlag, 
+        							simChangeFlag, 
+        							usageInHomeNwFlag, 
+        							editFlag
+        						);
+        				
+        // Update IAP name if it is not present.		
+        if( errParams == KErrNone && iapName->Length() <= 0 )
+            {
+            SetIapNameL( slpId, aAccessPoint );
+            }
+	    }
+    
+    CleanupStack::PopAndDestroy(2); // hslpAddr, iapName
+    CleanupStack::PopAndDestroy( &serverParamValues ); // serverParamValues
+    }
 
 // ---------------------------------------------------------------------------
 // TUint CLocSUPLSettingsUiEngine::ConvertIAPNameToIdL()
@@ -289,6 +724,33 @@
 	DEBUG( - CLocSUPLSettingsUiEngine::DisplayErrorL );	
     }
     
+// ---------------------------------------------------------------------------
+// void CLocSUPLSettingsUiEngine::ShowNoteL()
+// Displays No access point defined note
+//
+// @param None
+// ---------------------------------------------------------------------------
+//
+TInt CLocSUPLSettingsUiEngine::ShowNoteL()
+    {
+	DEBUG( + CLocSUPLSettingsUiEngine::ShowNoteL );	
+    // Show Info Note "No Access Points Defined"       
+    HBufC* tmp = StringLoader::LoadL( R_LOC_NO_AP_DEFINED );
+    CleanupStack::PushL( tmp );    
+    CAknNoteDialog* dlg =
+        new ( ELeave ) CAknNoteDialog
+                (
+                 REINTERPRET_CAST( CEikDialog**, &dlg ),
+                 CAknNoteDialog::ENoTone,
+                 CAknNoteDialog::EShortTimeout
+                );
+    dlg->PrepareLC( R_GENERAL_NOTE );  
+    dlg->SetTextL( *tmp );
+    TInt retval = dlg->RunLD();
+    CleanupStack::PopAndDestroy( tmp );  // temp    
+	DEBUG( - CLocSUPLSettingsUiEngine::ShowNoteL );	
+    return retval;
+    }
 
 // ---------------------------------------------------------------------------
 // void CLocSUPLSettingsUiEngine::EditServerL()
@@ -300,43 +762,21 @@
 //
 void CLocSUPLSettingsUiEngine::EditServerL( TBool iIsEditable, TInt64 aSlpId )
     {
-    DEBUG( + CLocSUPLSettingsUiEngine::EditServerL );
-    if (iEditorDlg)
-        {
-        delete iEditorDlg;
-        iEditorDlg = NULL;
-        }
-    iEditorDlg = CLocSUPLServerEditor::NewL(iIsEditable, *this, aSlpId);
-    if (aSlpId > 0)
+	DEBUG( + CLocSUPLSettingsUiEngine::EditServerL );		
+	if( iEditorDlg )
+		{		
+		delete iEditorDlg;
+		iEditorDlg = NULL;
+		}
+    iEditorDlg = CLocSUPLServerEditor::NewL( iIsEditable, *this, aSlpId );
+    TInt error = iEditorDlg->ExecuteLD();
+    if ( EEikCmdExit == error )
         {
-        CServerParams *params = CServerParams::NewL();
-        CleanupStack::PushL(params);
-        GetSlpInfoFromIdL(aSlpId, params);
-
-        HBufC* hslpAddr = HBufC::NewLC(KMaxHSLPAddrLen);
-        HBufC* iapName = HBufC::NewLC(KMaxIAPLen);
-        TInt64 slpId;
-        TBool enabledFlag, simChangeFlag, usageInHomeNwFlag, editFlag;
-
-        TInt errParams = params->Get(slpId, hslpAddr->Des(), iapName->Des(),
-                enabledFlag, simChangeFlag, usageInHomeNwFlag, editFlag);
-        if (iapName->Length() > 0)
-            {
-            iEditorDlg->SetAccessPointEnabled(ETrue);
-            }
-
-        CleanupStack::PopAndDestroy(3, params);
-        }
+        ( ( CAknViewAppUi* ) CEikonEnv::Static()->EikAppUi())->HandleCommandL( EEikCmdExit );
+        }        
+    iEditorDlg = NULL;                     	
     
-    TInt error = iEditorDlg->ExecuteLD();
-    if (EEikCmdExit == error)
-        {
-        ((CAknViewAppUi*) CEikonEnv::Static()->EikAppUi())->HandleCommandL(
-                EEikCmdExit);
-        }
-    iEditorDlg = NULL;
-
-    DEBUG( - CLocSUPLSettingsUiEngine::EditServerL );
+	DEBUG( - CLocSUPLSettingsUiEngine::EditServerL );	
     }
     
 // ---------------------------------------------------------------------------