locationsystemui/locationsysui/locpsysettings/locpsysettingsui/src/locpsysettingsview.cpp
branchRCL_3
changeset 44 2b4ea9893b66
parent 42 02ba3f1733c6
child 45 6b6920c56e2f
--- a/locationsystemui/locationsysui/locpsysettings/locpsysettingsui/src/locpsysettingsview.cpp	Thu Aug 19 10:20:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,526 +0,0 @@
-/*
-* Copyright (c) 2002 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:  Postioning Method Settings view class methods.
-*
-*/
-
-
-// System Include
-#include  <aknViewAppUi.h>					// AknViewAppUi
-#include  <featmgr.h> 						// FeatureManager
-#include  <eikmenup.h>						// Menu pane
-#include  <eikmenub.h>						// Menu Bar
-#include  <locpsysettingsuiview.rsg>		// Resource File
-#include  <avkon.rsg>
-#include  <avkon.hrh>
-#include  <hlplch.h>						// Help
-#include <AknQueryDialog.h>             // For Confirmation query
-
-// User Includes
-#include  "locpsysettingsview.h"
-#include  "locpsysettingscontainer.h" 
-#include  "locpsysettingsui.hrh"
-#include  "locpsyappdebug.h"
-#include  "locpsyeng.h"
-#include  "locpsyinfo.h"
-#include  "locpsysettings.h"
-#include  "locpsyconfigclientimpl.h"
-#include  "locpsycommandhandler.h"
-#include  "locpsysettingsuiuid.hrh"
-
-// ================= MEMBER FUNCTIONS =======================
-
-// -----------------------------------------------------------------------------
-// CLocPsySettingsView::CLocPsySettingsView
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-CLocPsySettingsView::CLocPsySettingsView( MLocPsyCommandHandler& 	aCommandHandler ):
-    iCommandHandler( aCommandHandler )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CLocPsySettingsView::~CLocPsySettingsView
-// -----------------------------------------------------------------------------
-CLocPsySettingsView::~CLocPsySettingsView()
-    {
-    if ( iContainer )
-        {
-        AppUi()->RemoveFromViewStack( *this, iContainer );
-        }
-
-    delete iContainer;
-    
-    FeatureManager::UnInitializeLib();
-    
-    // Delete the Postioning Method Settings Engine
-	delete iLocationEngine;
-	
-    // Close the Handle to the RPostionServer
-    iPositionServer.Close();
-    }
-    
-// -----------------------------------------------------------------------------
-// CLocPsySettingsView::NewLC
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-CLocPsySettingsView* CLocPsySettingsView::NewL( MLocPsyCommandHandler& 	aCommandHandler )
-    {
-    CLocPsySettingsView* self = CLocPsySettingsView::NewLC( aCommandHandler );
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CLocPsySettingsView::NewLC
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-CLocPsySettingsView* CLocPsySettingsView::NewLC( MLocPsyCommandHandler& aCommandHandler )
-    {
-    CLocPsySettingsView* self = new (ELeave) CLocPsySettingsView( aCommandHandler );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CLocPsySettingsView::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-void CLocPsySettingsView::ConstructL()
-    {
-    FeatureManager::InitializeLibL();
-    BaseConstructL( R_LOCATION_HOME_VIEW );
-    
-    // Create the Postioning Method Settings Engine
-	iLocationEngine = CLocPsyEng::NewL();
-	
-    // Open a handle to the RPostionServer. This is required to determine
-    // whether a PSY is currently enabled or disabled
-    User::LeaveIfError( iPositionServer.Connect());
-	
-    }
-
-// -----------------------------------------------------------------------------
-// TUid CLocPsySettingsView::Id
-// -----------------------------------------------------------------------------
-TUid CLocPsySettingsView::Id() const
-    {
-    return TUid::Uid( LOCPSYSETTINGSUI_UID3 );
-    }
-
-// -----------------------------------------------------------------------------
-// CLocPsySettingsView::HandleCommandL
-// -----------------------------------------------------------------------------
-void CLocPsySettingsView::HandleCommandL(TInt aCommand)
-    {
-    MLocPsySettings* psySettings = iLocationEngine->SettingsModel();
-        
-    TInt listIndex = iContainer->SelectedRow();
-    
-    switch ( aCommand )
-        {
-        case ELocCmdEnablePsy:
-			{
-			TRAPD( err, psySettings->EnablePsyL( listIndex ));
-        	if ( err == KErrNone )
-        		{
-				iContainer->HandleMarkCommandL( EAknCmdMark );
-        		}
-			break;
-			}
-        case ELocCmdDisablePsy:
-			{
-			
-            TBool popUpConfirmation = EFalse;
-            
-            // Obtain the PSY specific information
-            CLocPsyInfo* info = NULL;
-            TRAPD( error, info = psySettings->GetPsyL( listIndex ));
-            if( error )
-                {
-                // Unable to obtain PSY info. Don't continue with the operation
-                break;
-                }
-            
-            // Obtain the module status
-            TPositionModuleStatus moduleStatus;
-            error = iPositionServer.GetModuleStatus( moduleStatus,
-                                                     info->PsyId());
-             if( error )
-                {
-                // Unable to obtain module status. Don't continue with the operation
-                break;
-                }                                               
-
-            // Set the  popUpConfirmation flag if the PSY is being used
-            if( TPositionModuleStatus::EDeviceActive == moduleStatus.DeviceStatus() ||
-                TPositionModuleStatus::EDeviceReady == moduleStatus.DeviceStatus() ||
-                TPositionModuleStatus::EDeviceInitialising == moduleStatus.DeviceStatus() || 
-                TPositionModuleStatus::EDeviceStandBy == moduleStatus.DeviceStatus())
-                {
-                popUpConfirmation = ETrue;
-                }
-                
-            
-            if( popUpConfirmation )
-                {
-                // The user should not be allowed to disable a PSY that is currently
-                //being used. Hence, a confirmation dialog is popped up
-                iConfirmationQuery = CAknQueryDialog::NewL();
-            	TBool result = 
-            	    iConfirmationQuery->ExecuteLD( R_PSYDISABLE_CONFIG_QUERY );
-                iConfirmationQuery = NULL;            	    
-                if( !result )
-                    {
-                    break;
-                    } 
-                }      
-            
-			TRAPD( err, psySettings->DisablePsyL( listIndex ));
-        	if ( err == KErrNone )
-        		{
-				iContainer->HandleMarkCommandL( EAknCmdUnmark );
-        		}
-			break;
-			}
-        case ELocCmdConfigurePsy:
-        	{
-			psySettings->ConfigurePsyL( listIndex, *this );
-        	break;
-        	}
-        case EAknCmdHelp:
-        	{
-           	HlpLauncher::LaunchHelpApplicationL( CEikonEnv::Static()->WsSession(),
-           										   AppUi()->AppHelpContextL());
-        	break;	
-        	}
-        case EAknSoftkeyBack:
-        	{
-        	iCommandHandler.HandleCommandL( EAknSoftkeyBack );
-        	break;
-        	}
-        case EAknSoftkeyExit:
-            {
-            AppUi()->HandleCommandL( EEikCmdExit );
-            break;
-            } 
-        case ELocCmdNone:
-        	{
-        	break;
-        	}
-        default: // EAknCmdHelp or other cmd
-            {
-            AppUi()->HandleCommandL( aCommand );
-            break;
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CLocPsySettingsView::ProcessCommandL
-// -----------------------------------------------------------------------------
-void CLocPsySettingsView::ProcessCommandL( TInt aCommand )
-    {
-    MenuBar()->SetContextMenuTitleResourceId(R_LOCATION_CONTEXT_MENUBAR_HOME_VIEW);
-    // Close popup menu if open
-    MenuBar()->StopDisplayingMenuBar();
-    // Call base class
-    CAknView::ProcessCommandL( aCommand );
-    }
-
-// -----------------------------------------------------------------------------
-// CLocPsySettingsView::DynInitMenuPaneL
-// -----------------------------------------------------------------------------
-void CLocPsySettingsView::DynInitMenuPaneL( TInt          aResourceId, 
-                                            CEikMenuPane* aMenuPane )
-    {
-    if ( aResourceId == R_LOCATION_APP_MENU )
-        {
-        User::LeaveIfNull( aMenuPane );
-        //Handle Help Fature
-        HandleHelpFeature( *aMenuPane );
-        //Context sensitive menu items
-        }
-    else if ( aResourceId == R_LOCATION_HOME_VIEW_MENU )
-    	{
-        MLocPsySettings* psySettings = iLocationEngine->SettingsModel();
-        
-        TInt listIndex = iContainer->SelectedRow();
-        if( listIndex >= 0 )
-        	{
-        	TBool isPsyEnabled = psySettings->IsPsyEnabled( listIndex ); 
-
-        	//Enable is present only if the current selected PSY is disabled.
-        	aMenuPane->SetItemDimmed( ELocCmdEnablePsy,isPsyEnabled );
-
-        	//Disable is present only if the current selected PSY is enabled
-        	aMenuPane->SetItemDimmed( ELocCmdDisablePsy,!isPsyEnabled );
-        
-        	// Method setting is present only if the current selected PSY 
-        	//is configurable.
-			aMenuPane->SetItemDimmed( ELocCmdConfigurePsy, 
-								      !psySettings->IsPsyConfigurable( listIndex ));
-        	}
-        else   
-        	{
-
-        	//Disable the menu items when there are no PSYS installed
-        	aMenuPane->SetItemDimmed( ELocCmdEnablePsy, ETrue );
-        	aMenuPane->SetItemDimmed( ELocCmdDisablePsy, ETrue );
-			aMenuPane->SetItemDimmed( ELocCmdConfigurePsy, ETrue );
-        	}
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CLocPsySettingsView::NotifyL
-// -----------------------------------------------------------------------------
-void CLocPsySettingsView::NotifyL()
-    {
-    MLocPsySettings* psySettings = iLocationEngine->SettingsModel();
-    
-    if(!psySettings)
-    	return;
-    	
-    // Disable the Middle soft Key if there are no PSYs
-    if( psySettings && !psySettings->PSYCount())
-        {
-        Cba()->SetCommandSetL( R_LOCATION_OPTIONS_EMPTY_BACK );
-        }
-    else
-        {
-        MenuBar()->SetContextMenuTitleResourceId(R_LOCATION_CONTEXT_MENUBAR_HOME_VIEW);	
-        Cba()->SetCommandSetL( R_LOCATION_OPTIONS_SELECTION_BACK );   
-        } 
-     
-    // If the confirmation query is currently being displayed then check whether 
-    // its valid to continue to display the query. If not then dismiss the 
-    // query    
-    if( iConfirmationQuery )
-        {
-        if( !iContainer )
-            {
-            // The is no container. There is nothing to update. Just return
-            return;
-            }
-        TInt listIndex = iContainer->SelectedRow();
-                  
-        // Obtain the PSY specific information
-        CLocPsyInfo* info = NULL;
-        TRAPD( error, info = psySettings->GetPsyL( listIndex ));
-        if( !error )
-            {
-            // Obtain the module status
-            TPositionModuleStatus moduleStatus;
-            error = iPositionServer.GetModuleStatus( moduleStatus,
-                                                     info->PsyId());
-             if( !error )
-                {
-                if( TPositionModuleStatus::EDeviceDisabled == moduleStatus.DeviceStatus() ||
-                    TPositionModuleStatus::EDeviceInactive == moduleStatus.DeviceStatus())
-                    {
-                    // If the PSY for which the confirmation query is being displayed 
-                    // is currently disabled then the query needs to be dismissed
-                    delete iConfirmationQuery;
-                    iConfirmationQuery = NULL;
-                    }
-                }                                               
-
-            
-            }    
-        }
-    	
-    // Settings view implements the MLocEngObserver observer interface
-    // which contains this leavable method.
-    if ( iContainer )
-        {
-    	LOCAPPDEBUG("CLocPsySettingsView::NotifyL() container update called");
-        iContainer->UpdateL();
-        }
-    }
-
-// -----------------------------------------------------------------------------
-//  CLocPsySettingsView::NotifyError
-// -----------------------------------------------------------------------------
-void CLocPsySettingsView::NotifyError( TInt aErrorCode )
-    {
-    LOCAPPDEBUG("CLocPsySettingsView::NotifyError() called");
-    if ( aErrorCode != KErrNone )
-        {
-        CCoeEnv::Static()->HandleError( aErrorCode );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-//  CLocPsySettingsView::ProcessKeyEventL
-// -----------------------------------------------------------------------------
-TBool CLocPsySettingsView::ProcessKeyEventL( const TKeyEvent& aKeyEvent, 
-									  TEventCode aType )
-	{
-    MLocPsySettings* psySettings = iLocationEngine->SettingsModel();
-    
-    if(!psySettings)
-    	return EKeyWasNotConsumed;
-    	
-	if( psySettings && !psySettings->PSYCount())
-		{
-		return EKeyWasNotConsumed;
-	  }
-	TInt listIndex = iContainer->SelectedRow();   
-
-	// Popup the Menu when OK Selection key is pressed
-    if ( aType == EEventKey && aKeyEvent.iCode == EKeyOK )
-    	{
-        //Check if the current positioning method is configurable or not
-        //If yes then launch the context specific value 
-        //else toggle status of the current positioning method (changes for single click)
-        if(!psySettings->IsPsyConfigurable( listIndex ))
-            {
-            if(!psySettings->IsPsyEnabled( listIndex ))
-                {
-                //Enable
-               HandleCommandL(ELocCmdEnablePsy);
-                }
-            else
-                {
-                //disable
-                HandleCommandL(ELocCmdDisablePsy);
-                }
-            }
-        else
-            {
-            MenuBar()->TryDisplayContextMenuBarL();
-            }
-    	return EKeyWasConsumed;
-    	}
-    return EKeyWasNotConsumed;
-	}
-
-// -----------------------------------------------------------------------------
-//  CLocPsySettingsView::HandleServerAppExit
-// -----------------------------------------------------------------------------
-void CLocPsySettingsView::HandleServerAppExit(TInt /*aReason*/)
-	{
-    MLocPsySettings* psySettings = iLocationEngine->SettingsModel();
-
-	/* Once the application exits the application handle in the Engine has to 
-	 * be closed. Also this callback is triggered when the PSY configuration UI 
-	 * is running but it has to be closed for some reason. For example, if 
-	 * the PSY for which the configuration UI is running, is uninstalled then
-	 * the configuration application has to be closed.
-	 */
-    psySettings->ClosePsyConfigurationApp();
-	}
-
-// -----------------------------------------------------------------------------
-// CLocPsySettingsView::HandleScreenSizeChange
-// -----------------------------------------------------------------------------
-//
-void CLocPsySettingsView::HandleScreenSizeChange() 
-	{
-	if( iContainer )
-		{
-		iContainer->SetRect( ClientRect());		
-		}
-	}
-            	
-// -----------------------------------------------------------------------------
-// CLocPsySettingsView::DoActivateL
-// -----------------------------------------------------------------------------
-void CLocPsySettingsView::DoActivateL(
-   const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/,
-   const TDesC8& /*aCustomMessage*/ )
-    {
-    LOCAPPDEBUG("CLocPsySettingsView::DoActivateL() called");
-    if ( !iContainer )
-        {
-    	iLocationEngine->CreateModelL( ELocPsySettings );
-    	MLocPsySettings* psySettings = iLocationEngine->SettingsModel();
-    	psySettings->SetObserver(*this);
-        iContainer = CLocPsySettingsContainer::NewL( this,
-        						 					 this, 
-        						 					 this, 
-        						 					 psySettings, 
-        						 					 ClientRect());
-        AppUi()->AddToStackL( *this, iContainer );
-        } 
-        
-	MLocPsySettings* psySettings = iLocationEngine->SettingsModel();
-    // Disable the Middle soft Key if there are no PSYs
-    if( psySettings && !psySettings->PSYCount())
-        {
-        Cba()->SetCommandSetL( R_LOCATION_OPTIONS_EMPTY_BACK );
-        }
-    else
-        {
-        MenuBar()->SetContextMenuTitleResourceId(R_LOCATION_CONTEXT_MENUBAR_HOME_VIEW );
-        Cba()->SetCommandSetL( R_LOCATION_OPTIONS_SELECTION_BACK );   
-        } 
-   }
-
-// -----------------------------------------------------------------------------
-// CLocPsySettingsView::DoDeactivate
-// -----------------------------------------------------------------------------
-void CLocPsySettingsView::DoDeactivate()
-	{
-    iLocationEngine->SettingsModel()->RemoveModelObserver();
-    iLocationEngine->RemoveModel( ELocPsySettings );
-    if ( iContainer )
-    	{
-        AppUi()->RemoveFromViewStack( *this, iContainer );
-        }
-    delete iContainer;
-    iContainer = NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// CLocPsySettingsView::ActivateLocalViewL
-// -----------------------------------------------------------------------------
-void CLocPsySettingsView::ActivateLocalViewL( TUid aViewId,
-    TUid aCustomMessageId, const TDesC8& aCustomMessage )
-    {
-    CAknViewAppUi* appui = AppUi();
-    appui->ActivateLocalViewL(aViewId, aCustomMessageId, aCustomMessage);
-    }
-
-// -----------------------------------------------------------------------------
-// CLocPsySettingsView::ActivateLocalViewL
-// -----------------------------------------------------------------------------
-void CLocPsySettingsView::ActivateLocalViewL( TUid aViewId )
-    {
-    TBuf8<1> customMessage;
-    customMessage.Zero();
-    // Custom message Id value contains view id of caller
-    ActivateLocalViewL( aViewId, Id(), customMessage );
-    }
-
-
-
-// -----------------------------------------------------------------------------
-// CLocPsySettingsView::HandleHelpFeature
-// -----------------------------------------------------------------------------
-void CLocPsySettingsView::HandleHelpFeature( CEikMenuPane& aMenuPane ) const
-    {
-    if ( FeatureManager::FeatureSupported( KFeatureIdHelp ))
-        {
-        aMenuPane.SetItemDimmed( EAknCmdHelp, EFalse );
-        }
-    else
-        {
-        aMenuPane.SetItemDimmed( EAknCmdHelp, ETrue );
-        }
-    }