locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettings.cpp
branchRCL_3
changeset 44 2b4ea9893b66
parent 42 02ba3f1733c6
child 45 6b6920c56e2f
--- a/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettings.cpp	Thu Aug 19 10:20:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,641 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  SUPL Settings UI implementation.
-*
-*/
-
-
-// System Include
-#include <aknViewAppUi.h>
-#include <barsread.h> 		        // For TResourceReader
-#include <bautils.h>    
-#include <AknQueryDialog.h>         // For list query dialog
-#include <StringLoader.h>
-#include <locsuplsettingsui.rsg>
-#include <featmgr.h> 						// FeatureManager
-
-// User Includes
-#include "locsuplsettings.hrh"
-#include "locsuplsettings.h"
-#include "locsettingsuiobserver.h"
-#include "locsuplsettingsview.h"
-#include "locsuplsettingsuiengine.h"
-#include "locsuplsettingslbmodel.h"
-#include "locsettingsuiclient.h"   // For the Launch parameter values
-
-#include "locsuplserverview.h"
-#include "locsuplserverlbmodel.h"
-#include "locsuplsessionview.h"
-#include "locsuplsessionlbmodel.h"
-#include "locsupldebug.h"
-
-
-CLocSUPLAO* CLocSUPLAO::NewL( 
-        MLocSettingsUiObserver&     aSettingsUiObserver,
-        CLocSUPLSettingsUiEngine&   aSettingsEngine,
-        TInt                        aLaunchParams  )
-    {
-    CLocSUPLAO* self = new (ELeave) CLocSUPLAO( aSettingsUiObserver,
-                                                aSettingsEngine,
-                                                aLaunchParams );
-    return self;
-    }
-
-CLocSUPLAO::~CLocSUPLAO()
-    {
-    DoCancel();
-    }
-
-CLocSUPLAO::CLocSUPLAO( MLocSettingsUiObserver&     aSettingsUiObserver,
-                        CLocSUPLSettingsUiEngine&   aSettingsEngine,
-                        TInt                        aLaunchParams  )
-: CActive( EPriorityStandard ),
- iSettingsUiObserver( aSettingsUiObserver ),
- iSettingsEngine( aSettingsEngine ),
- iLaunchParams( aLaunchParams )
-    {
-    CActiveScheduler::Add(this);
-    }
-        
-void CLocSUPLAO::RunL()
-    {
-    iSettingsEngine.OpenSessionL( iLaunchParams );
-    iSettingsUiObserver.SettingClosed( KErrNone );
-    }
-        
-void CLocSUPLAO::DoCancel()
-    {
-    }
-
-void CLocSUPLAO::CompleteRequest()
-    {
-    if( !IsActive())
-        {
-        TRequestStatus* status = &iStatus;
-        User::RequestComplete( status, KErrNone );
-        SetActive();
-        }
-    }
-// ---------------------------------------------------------------------------
-// CLocSUPLSettings::CLocSUPLSettings
-// C++ default constructor.
-// ---------------------------------------------------------------------------
-//
-CLocSUPLSettings::CLocSUPLSettings( MLocSettingsUiObserver&	aSettingsUiObserver,
-					   		    	CAknViewAppUi&			aAppUi )
-	: CLocSettingsUi( aSettingsUiObserver, aAppUi ),
-	iResourceLoader( *CCoeEnv::Static() ),
-	iLaunchOutStanding( EFalse )
-	{
-	}
-
-// ---------------------------------------------------------------------------
-// CLocSUPLSettings::~CLocSUPLSettings
-// Destructor.
-// ---------------------------------------------------------------------------	
-//
-CLocSUPLSettings::~CLocSUPLSettings()	
-	{
-	DEBUG( + CLocSUPLSettings::~CLocSUPLSettings );
-	
-	delete iLaunchAO;
-	iLaunchAO = NULL;
-	
-	delete iSettingsEngine;
-	iSettingsEngine = NULL;
-	
-	// Close the Resource loader
-	iResourceLoader.Close();
-
-    FeatureManager::UnInitializeLib();  		
-	DEBUG( - CLocSUPLSettings::~CLocSUPLSettings );
-	}
-
-// ---------------------------------------------------------------------------
-// CLocSUPLSettings* CLocSUPLSettings::NewL
-// Symbian OS two-phased constructor
-// 
-// @return CLocSUPLSettings* Reference to the Settings UI object
-// ---------------------------------------------------------------------------	
-//
-CLocSUPLSettings* CLocSUPLSettings::NewL( TAny* aParam )
-	{
-	DEBUG( + CLocSUPLSettings::NewL );
-	CLocSettingsUiParams* 	param = 
-	                reinterpret_cast<CLocSettingsUiParams *>( aParam );
-	MLocSettingsUiObserver& observer = param->SettingsUiObserver();
-	CAknViewAppUi& 		 appUi = param->AppUi();
-	CLocSUPLSettings* self = new ( ELeave )CLocSUPLSettings( observer,
-													         appUi );
-	CleanupStack::PushL( self );
-	self->ConstructL();
-	CleanupStack::Pop( self );
-	DEBUG( - CLocSUPLSettings::NewL );
-	return self; 
-	}
-
-// ---------------------------------------------------------------------------
-// void CLocSUPLSettings::ConstructL
-// Second phase constructor.
-// ---------------------------------------------------------------------------	
-//
-void CLocSUPLSettings::ConstructL()
-	{
-	DEBUG( + CLocSUPLSettings::ConstructL );
-	// Feature manager required for SUPL Feature flag checking and 
-	// Help feature check
-    FeatureManager::InitializeLibL();
-
- 	// Feature flag check provided for Product profile bits specific variation
- 	// If the SUPL feature flag is not defined then the SUPL Settings UI
- 	// would not be supported
- 	if ( !FeatureManager::FeatureSupported( KFeatureIdSuplFramework ) )
-        {
-        User::Leave( KErrNotSupported );
-        }
-       
-	// Open the Resource file for the plugin. The resource file is not 
-	// explicity opened by system. Hence, the opening and closind if tied
-	// down to the time when the DLL is active
-	OpenLocalizedResourceFileL( KSUPLUiResFileName, 
-							    iResourceLoader );
-	
-	// Create the SUPL Settings UI Engine
-	iSettingsEngine = CLocSUPLSettingsUiEngine::NewL( *this );
-	
-    // Create the SUPL Settings UI View
-	iSettingsView = CLocSUPLSettingsView::NewL( *iSettingsEngine,
-	                                    *this );
-	// Transferring the view's control to AppUi. The settings Ui no longer
-	// has any control to the view handle
-	iAppUi.AddViewL( iSettingsView );
-	
-	// Obtaining the View Id for reference
-	iSettingsViewId = iSettingsView->Id();
-							    
-    // Create the SUPL Settings UI View
-	iServerView = CLocSUPLServerView::NewL( *iSettingsEngine,
-	                                    *this );
-	
-	
-	// Transferring the view's control to AppUi. The settings Ui no longer
-	// has any control to the view handle
-	iAppUi.AddViewL( iServerView );
-	
-	// Obtaining the View Id for reference
-	iServerViewId = iServerView->Id();
-	
-	// Create the SUPL Session UI View
-	iSessionView = CLocSUPLSessionView::NewL( *iSettingsEngine,
-	                                    *this );
-	
-	
-	// Transferring the view's control to AppUi. The sessions Ui no longer
-	// has any control to the view handle
-	iAppUi.AddViewL( iSessionView );
-	
-	// Obtaining the View Id for reference
-	iSessionViewId = iSessionView->Id();
-	
-	DEBUG( - CLocSUPLSettings::ConstructL );
-	}
-
-// ---------------------------------------------------------------------------
-// void CLocSUPLSettings::LaunchL
-// Inherited from CSettingsUi
-// Launches the Settings UI
-//
-// @param aUiLaunchParams	Flags that define specific configuration of
-//							if the Settings UI, that the user of the API
-//							wants to launch. If more than one functionality
-//                          is requested then the various combinations
-//                          are to be ORed.
-// ---------------------------------------------------------------------------	
-//
-void CLocSUPLSettings::LaunchL( TInt		aUiLaunchParams )
-	{
-	DEBUG( + CLocSUPLSettings::LaunchL );
-	// If there is any outstanding request on this UI then leave immediately
-	if( iLaunchOutStanding )
-	    {
-	    User::Leave( KErrInUse );
-	    }
-    
-    iLaunchOutStanding = ETrue;
-    
-    // Set the Param type
-    iLaunchParamType = ELaunchParamInt;
-    
-    iLaunchParams = aUiLaunchParams;
-    
-    // Initalize the Engine. Only after the initialization is complete can we 
-    // modify the Setting contents. Hence, the actual launching would be 
-    // deferred to the initialization period.
-    iSettingsEngine->Initalize();
-	DEBUG( - CLocSUPLSettings::LaunchL );
-	}
-
-// ---------------------------------------------------------------------------
-// void CLocSUPLSettings::LaunchL
-// Inherited from CSettingsUi
-// Launches the Settings UI
-//
-// @param aUiLaunchParams   Flags that define specific configuration of
-//                          if the Settings UI, that the user of the API
-//                          wants to launch. If more than one functionality
-//                          is requested then the various combinations
-//                          are to be ORed.
-// ---------------------------------------------------------------------------  
-//
-void CLocSUPLSettings::LaunchL( const TDesC&      aUiLaunchParams )
-    {
-    DEBUG( + CLocSUPLSettings::LaunchL );
-    // If there is any outstanding request on this UI then leave immediately
-    if( iLaunchOutStanding )
-        {
-        User::Leave( KErrInUse );
-        }
-    
-    iLaunchOutStanding = ETrue;
-    
-    // Set the Param type
-    iLaunchParamType = ELaunchParamString;
-    
-    // Read the Param from the Descriptor
-    // Currently this reads the SUPL triggering Session id.
-    TLex16 input( aUiLaunchParams );
-    User::LeaveIfError( input.Val(iLaunchParams) );
-    
-    // Initalize the Engine. Only after the initialization is complete can we 
-    // modify the Setting contents. Hence, the actual launching would be 
-    // deferred to the initialization period.
-    iSettingsEngine->Initalize();
-    DEBUG( - CLocSUPLSettings::LaunchL );
-    }
-
-// ---------------------------------------------------------------------------
-// void CLocSUPLSettings::Close
-// Inherited from CSettingsUi
-// Closes the running Settings UI prematurely. The UI can be closed 
-// permanently or could be temporarily suspended and relaunched. Incase of 
-// tenporary suspension it is left to the implementation to decide to
-// either store its current state or discard the same
-//
-// @param aResume  Boolean variable to indicate whether the UI is being 
-//				   temporarily suspended or completely shut down. In case
-// 				   it is temporarily suspended then its the UIs responsibility
-//				   to store its internal state
-// ---------------------------------------------------------------------------	
-//
-void CLocSUPLSettings::Close()
-	{
-	DEBUG( + CLocSUPLSettings::Close );
-    // Reset the flag for an outstanding launch request 
-	iLaunchOutStanding = EFalse;
-	
-	// Reset the settings View
-	iSettingsView->Reset();
-	
-	// Hand over the close event to the Engine
-	iSettingsEngine->Close();
-	DEBUG( - CLocSUPLSettings::Close );
-	}
-
-// ---------------------------------------------------------------------------
-// void CLocSUPLSettings::GetCaptionL
-// Inherited from CSettingsUi
-// Method for getting caption of this plugin. This should be the 
-// localized name of the settings view to be shown in parent view.
-//
-// @param aCaption pointer to Caption variable
-// ---------------------------------------------------------------------------
-//
-void CLocSUPLSettings::GetCaptionL( TDes& aCaption ) const
-	{
-	// Load the SUPL setting caption from the resource file and hand it back
-	// to the callee. It is assuemed here that the calling function has 
-	// allocated enough memory for the aCaption string. If not the fucntion
-	// would leave
-	HBufC* caption = StringLoader::LoadL( R_SUPLSETTINGS_CAPTION );
-    aCaption.Copy( *caption );
-    delete caption;
-	}
-
-// ---------------------------------------------------------------------------
-// TInt CLocSUPLSettings::GetPriority
-// Inherited from CSettingsUi
-// Returns the priority of the UI module. 
-// 
-// @return Priority of the Settings UI
-// ---------------------------------------------------------------------------
-//
-TInt CLocSUPLSettings::GetPriority()
-	{
-	// As defined by the Location System UI UI specification, the SUPL settings
-	// plug-in should be inserted at the second level
-	const TInt KSUPLPluginPriority = 0x00000002;
-	return KSUPLPluginPriority;
-	}
-
-// ---------------------------------------------------------------------------
-// TBool CLocSUPLSettings::IsVisible
-// Inherited from CSettingsUi
-// Accessor Function for determine whether the UI presence 
-// should be shown to the user or should be hidden
-//
-// @return ETrue  If the presence of the UI be shown to the usr
-//	   EFalse If the UI should funtion as a non visible UI
-// ---------------------------------------------------------------------------
-//
-TBool CLocSUPLSettings::IsVisible()
-	{
-	return ETrue;	
-	}
-
-// ---------------------------------------------------------------------------
-// void CLocSUPLSettings::HandleSettingsEventL
-// ---------------------------------------------------------------------------
-//
-void CLocSUPLSettings::HandleSettingsEventL( TSettingsEventType    aEvent )
-    {
-	DEBUG1( + CLocSUPLSettings::HandleSettingsEventL aEvent=%d, aEvent );
-    switch( aEvent )
-        {
-        case EExitEvent:            
-            {
-            // Reset the flag for an outstanding launch request 
-	        iLaunchOutStanding = EFalse;
-	        
-	        iAppUi.HandleCommandL( EEikCmdExit );
-            break;    
-            }
-        case EEngineInitialized:
-        case EEngineInitializeFailed:
-            {
-            // Launch the SUPL UI
-            TRAPD( error, LaunchSUPLUiL() );
-            if( error && iLaunchOutStanding )
-                {
-                iLaunchOutStanding = EFalse;
-                // The UI is intended to be closed. Pass the event 
-		    	// to the observer
-			    iSettingsUiObserver.SettingClosed( error );               
-                }
-            break;    
-            }
-        case ESUPLSettingsChange:
-            {
-            // There is a change in Settings. Update the views
-            iSettingsView->UpdateView();
-            iServerView->UpdateView();
-            iSessionView->UpdateView();
-            break;    
-            }
-        case EIAPSelectionComplete:
-            {
-            if( iLaunchOutStanding )
-                {
-                iLaunchOutStanding = EFalse;
-                // The UI is intended to be closed. Pass the event 
-		    	// to the observer
-			    iSettingsUiObserver.SettingClosed( KErrNone );
-                }
-            break;
-            }
-        case EIAPSelectionCancelled:
-            {
-            if( iLaunchOutStanding )
-                {
-                iLaunchOutStanding = EFalse;
-                // The UI is intended to be closed. Pass the event 
-		    	// to the observer
-			    iSettingsUiObserver.SettingClosed( KErrAbort );
-                }    
-            break;
-            }
-        default:
-            {
-            break;    
-            }
-        }       
-	DEBUG( - CLocSUPLSettings::HandleSettingsEventL );
-    }
-
-// ---------------------------------------------------------------------------
-// void CLocSUPLSettings::HandleScreenSizeChange
-// Inherited from MLocSUPLSettingsEventHandler
-// 
-// ---------------------------------------------------------------------------
-//
-void CLocSUPLSettings::HandleScreenSizeChange()
-    {
-    iSettingsView->HandleScreenSizeChange();
-    }
-    
-// ---------------------------------------------------------------------------
-// void CLocSUPLSettings::HandleCommandL
-// Inherited from MLocSUPLSettingsEventHandler
-// Handles commands from the views
-// 
-// @param  aCommand Command ID
-// ---------------------------------------------------------------------------
-//
-void CLocSUPLSettings::HandleCommandL( TInt aCommand )
-	{
-	DEBUG1( + CLocSUPLSettings::HandleCommandL aCommand=%d, aCommand );
-	switch ( aCommand )
-		{		
-
-		case MLocSUPLSettingsEventHandler::ELaunchViewComplete:
-		    {
-		    if ( iLaunchParamType == ELaunchParamString )
-		        {
-	            delete iLaunchAO;
-	            iLaunchAO = NULL;
-	            
-	            iLaunchAO = CLocSUPLAO::NewL( iSettingsUiObserver,
-	                                          *iSettingsEngine,                                          
-	                                          iLaunchParams );
-	                        
-	            iLaunchAO->CompleteRequest();		        
-		        }
-		    break;
-		    }
-		// Handle any plug-in specific internal commands here
-		case EAknSoftkeyBack:
-			{			
-			// Reset the flag for an outstanding launch request 
-	        iLaunchOutStanding = EFalse;
-	    
-			// The UI is intended to be closed. Pass the event 
-			// to the observer
-			iSettingsUiObserver.SettingClosed( KErrNone );		
-			break;
-			}
-		case EAknCmdExit:
-		case EEikCmdExit:
-		    {		    
-		    // Reset the flag for an outstanding launch request 
-	        iLaunchOutStanding = EFalse;
-	        
-	        iAppUi.HandleCommandL( aCommand );
-	        break;  
-		    }
-		default:
-			{
-			// Un-handled commands are to be passed to the 
-			// App UI
-			iAppUi.HandleCommandL( aCommand );
-			break;	
-			}
-		}		
-	DEBUG( - CLocSUPLSettings::HandleSettingsEventL );
-	}
-	
-// ---------------------------------------------------------------------------
-// void CLocSUPLSettings::LaunchSUPLUiL
-// Launches the SUPL UI
-//
-// ---------------------------------------------------------------------------	
-//
-void CLocSUPLSettings::LaunchSUPLUiL()
-    {
-	DEBUG( + CLocSUPLSettings::LaunchSUPLUiL );
-    // Launch the UI
-    // The Launch paramters should be of type TLocSUPLSettingsParams
-	// This is an internal agreement between the Settings Ui plug-in and the 
-	// user of the plug-in. If the paramter is of any other type, then the 
-	// behaviour is undefined for the pluging will still take it as 
-	// TLocSUPLSettingsParams type
-	
-	// Additionaly the Launch param can be a String type, which currently
-	// holds the session id.
-	// If String paramater contains any other info, then it Leaves with
-	// KErrNotSupported. This is basically used for Launching the SUPL
-	// Triggering Session details. 
-	
-	switch( iLaunchParamType )
-	    {
-	    case ELaunchParamInt:
-	        {
-	        // If the User has requested for the default behaviour, the SUPL Settings
-	        // default view is popped up.       
-	        if( ELocSUPLDefault == iLaunchParams )
-	            {
-	            // Activate the actual SUPL configuration view
-	            iAppUi.ActivateLocalViewL( iSettingsViewId );
-	            }
-	        else if ( ELocSuplSettingsPage == iLaunchParams )
-	            {
-	            iSettingsView->StartedFromAppServer();
-	            // Activate the actual SUPL configuration view
-	            iAppUi.ActivateLocalViewL( iSettingsViewId );               
-	            }
-	        else if( ELocSUPLIAPSelection == iLaunchParams )
-	            {    
-	            // Check if the User intended to Launch IAP Selection 
-	            iSettingsEngine->SelectConnectionL();
-	            }
-	        else
-	            {
-	            // The falg was not supported
-	            User::Leave( KErrNotSupported );   
-	            }  
-	        break;
-	        }
-        case ELaunchParamString:
-            {
-			// For the Title pane to be visible in View Architecture, we need
-			// to activate atleast one view which sets iIsReadyToDraw flag.
-			// So we activate the Session view.
-			iAppUi.ActivateLocalViewL( iSessionViewId );    
-            break;
-            }
-	    }        
- 	DEBUG( - CLocSUPLSettings::LaunchSUPLUiL );
-   }
-        	
-// ---------------------------------------------------------------------------
-// void CLocSUPLSettings::OpenLocalizedResourceFileL
-// Opens the nearest localized resourcefile using aResourceLoader. 
-// aResourceLoader should be opened only once before closing it. 
-// Otherwise it will raise a panic. Therefore it is better to have 
-// multiple resource loaders.
-// 
-// @param aResourceFileName Drive and name of resource file in format 
-//                          <path>:<rsc_file_name>
-// @param aResourceLoader Resource loader for the resource. The loader 
-//                        must not be opened allready or it will raise 
-//                        a panic. It is caller's responsibility to 
-//                        close the resource loader after using the 
-//                        resource.
-// ---------------------------------------------------------------------------	
-//
-void CLocSUPLSettings::OpenLocalizedResourceFileL( 
-                                		const TDesC&    		aResourceFileName, 
-   									  	RConeResourceLoader& 	aResourceLoader )
-    {
-	DEBUG( + CLocSUPLSettings::OpenLocalizedResourceFileL );
-    RFs fsSession;
-    User::LeaveIfError( fsSession.Connect());
-    
-    // Add the RFs session to the CleanupStack
-    CleanupClosePushL( fsSession );
-    
-	TFileName* tmpName = new( ELeave ) TFileName;
-    CleanupStack::PushL( tmpName );
-    
-    // Append the Resource Files Directory
-    tmpName->Append( KDC_RESOURCE_FILES_DIR );
-    
-    // Append the Ressource File Name
-    tmpName->Append( aResourceFileName );
-    
-    
-    // Obtain the drive where the DLL is installed
-    TFileName* dllDrive = new ( ELeave ) TFileName;
-    CleanupStack::PushL( dllDrive );
-    Dll::FileName( *dllDrive );
-    
-    // Obtain the Complete path for the Resource File
-    TParse parse;
-	User::LeaveIfError( parse.Set( *dllDrive, NULL, NULL ) );
-    User::LeaveIfError( parse.Set( parse.Drive(), tmpName, NULL ) );
-	TFileName* fileName = new ( ELeave ) TFileName;
-	CleanupStack::PushL( fileName );
-	fileName->Append( parse.FullName() );
-    
-    // Get language of resource file
-    BaflUtils::NearestLanguageFile( fsSession, *fileName );
-        
-    // Open resource file    
-    TRAPD( error , aResourceLoader.OpenL( *fileName ) );
-    if( KErrNone != error ) 
-        {
-        User::Leave( error );
-        }
-    
-    // Pop all the fields
-    CleanupStack::PopAndDestroy( fileName );
-    CleanupStack::PopAndDestroy( dllDrive );
-    CleanupStack::PopAndDestroy( tmpName );
-   
-    CleanupStack::Pop(); // fsSession
-               
-    //If leave occurs before this, close is called automatically when the thread exits.
-    fsSession.Close();
-	DEBUG( - CLocSUPLSettings::OpenLocalizedResourceFileL );   
-    }
-
-// End of File