--- a/appinstaller/AppMngr2/GSSettingsPlugin/src/appmngr2gssettingsplugin.cpp Thu Oct 14 14:11:30 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,490 +0,0 @@
-/*
-* Copyright (c) 2003-2009 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: AppMngr2 Settings plug-in for GS (General Settings)
-*
-*/
-
-
-#include "appmngr2gssettingsplugin.h" // CAppMngrGSSettingsPlugin
-#include "appmngr2gssettingscontainer.h" // CAppMngr2GSSettingsContainer
-#include "appmngr2.hrh" // KAppMngr2AppUidValue
-#include <gsprivatepluginproviderids.h> // KGSPluginProviderInternal
-#include <appmngr2debugutils.h> // FLOG macros
-#include <appmngr2driveutils.h> // TAppMngr2DriveUtils
-#include <aknradiobuttonsettingpage.h> // CAknRadioButtonSettingPage
-#include <akntextsettingpage.h> // CAknTextSettingPage
-#include <SWInstallerInternalCRKeys.h> // KCRUidSWInstallerSettings
-#include <centralrepository.h> // CRepository
-#include <StringLoader.h> // StringLoader
-#include <akntitle.h> // CAknTitlePane
-#include <aknnotewrappers.h> // CAknInformationNote
-#include <hlplch.h> // HlpLauncher
-#include <featmgr.h> // FeatureManager
-#include <csxhelp/am.hlp.hrh> // Help IDs
-#include <appmngr2gssettingspluginrsc.rsg> // Resource IDs
-#include <appmngr2.mbg> // Bitmap IDs
-
-_LIT( KAppMngr2GsSettingsPluginResourceFileName, "appmngr2gssettingspluginrsc.rsc" );
-_LIT( KAppMngr2IconFileNameMif, "appmngr2.mif" );
-_LIT( KDriveZ, "z:" );
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::NewL()
-// ---------------------------------------------------------------------------
-//
-CAppMngr2GSSettingsPlugin* CAppMngr2GSSettingsPlugin::NewL( TAny* /*aInitParams*/ )
- {
- CAppMngr2GSSettingsPlugin* self = new( ELeave ) CAppMngr2GSSettingsPlugin;
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::~CAppMngr2GSSettingsPlugin()
-// ---------------------------------------------------------------------------
-//
-CAppMngr2GSSettingsPlugin::~CAppMngr2GSSettingsPlugin()
- {
- if( iContainer )
- {
- AppUi()->RemoveFromViewStack( *this, iContainer );
- delete iContainer;
- iContainer = NULL;
- }
- iResources.Close();
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::GetCaptionL()
-// ---------------------------------------------------------------------------
-//
-void CAppMngr2GSSettingsPlugin::GetCaptionL( TDes& aCaption ) const
- {
- // the resource file is already opened.
- HBufC* result = StringLoader::LoadL( R_SET_FOLDER_APPLICATION_MANAGER );
- aCaption.Copy( *result );
- delete result;
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::CreateIconL()
-// ---------------------------------------------------------------------------
-//
-CGulIcon* CAppMngr2GSSettingsPlugin::CreateIconL( const TUid aIconType )
- {
- HBufC* iconFilePath = HBufC::NewLC( KDriveZ().Length() +
- KDC_APP_BITMAP_DIR().Length() + KAppMngr2IconFileNameMif().Length() );
- TPtr ptr = iconFilePath->Des();
- ptr.Append( KDriveZ );
- ptr.Append( KDC_APP_BITMAP_DIR );
- ptr.Append( KAppMngr2IconFileNameMif );
-
- CGulIcon* icon;
- TInt iconId = EMbmAppmngr2Qgn_prop_cp_inst_settings;
- TInt maskId = EMbmAppmngr2Qgn_prop_cp_inst_settings_mask;
- if( aIconType == KGSIconTypeLbxItem )
- {
- icon = AknsUtils::CreateGulIconL( AknsUtils::SkinInstance(),
- KAknsIIDQgnPropCpInstSettings, *iconFilePath,
- iconId, maskId );
- }
- else
- {
- icon = CGSPluginInterface::CreateIconL( aIconType );
- }
-
- CleanupStack::PopAndDestroy( iconFilePath );
- return icon;
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::PluginProviderCategory()
-// ---------------------------------------------------------------------------
-//
-TInt CAppMngr2GSSettingsPlugin::PluginProviderCategory() const
- {
- return KGSPluginProviderInternal;
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::Id()
-// ---------------------------------------------------------------------------
-//
-TUid CAppMngr2GSSettingsPlugin::Id() const
- {
- return KAppMngr2GSSettingsUid;
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::HandleCommandL()
-// ---------------------------------------------------------------------------
-//
-void CAppMngr2GSSettingsPlugin::HandleCommandL( TInt aCommand )
- {
- switch ( aCommand )
- {
- case EAppMngr2CmdChange:
- case EAknSoftkeyChange:
- {
- HandleListBoxSelectionL();
- break;
- }
- case EAknSoftkeyBack:
- {
- AppUi()->ActivateLocalViewL( iPrevViewId.iViewUid );
- break;
- }
- case EAknSoftkeyExit:
- {
- static_cast<MEikCommandObserver*>( AppUi() )->ProcessCommandL( EAknCmdExit );
- break;
- }
- case EAknCmdHelp:
- case EEikCmdHelpContents:
- {
- if( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
- {
- CArrayFix<TCoeHelpContext>* contexts =
- new( ELeave ) CArrayFixFlat<TCoeHelpContext>( 1 );
- CleanupStack::PushL( contexts );
- TCoeHelpContext context;
- context.iMajor = KAppMngr2AppUid;
- context.iContext = KAM_HLP_GENERAL_SETTINGS;
- contexts->AppendL( context );
- CleanupStack::Pop( contexts );
- HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(), contexts );
- }
- break;
- }
- default:
- {
- AppUi()->HandleCommandL( aCommand );
- break;
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::HandleViewRectChange()
-// ---------------------------------------------------------------------------
-//
-void CAppMngr2GSSettingsPlugin::HandleViewRectChange()
- {
- if( iContainer )
- {
- iContainer->SetRect( ClientRect() );
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::DynInitMenuPaneL()
-// ---------------------------------------------------------------------------
-//
-void CAppMngr2GSSettingsPlugin::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
- {
- switch( aResourceId )
- {
- case R_APPMNGR2_SETTINGS_MENU:
- if( !FeatureManager::FeatureSupported( KFeatureIdHelp ) )
- {
- aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue );
- }
- break;
- default:
- break;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::HandleListBoxEventL()
-// ---------------------------------------------------------------------------
-//
-void CAppMngr2GSSettingsPlugin::HandleListBoxEventL( CEikListBox* /*aListBox*/,
- TListBoxEvent aEventType )
- {
- switch ( aEventType )
- {
- case EEventEnterKeyPressed:
- case EEventItemSingleClicked:
- HandleListBoxSelectionL();
- break;
- default:
- break;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::DoActivateL()
-// ---------------------------------------------------------------------------
-//
-void CAppMngr2GSSettingsPlugin::DoActivateL( const TVwsViewId& aPrevViewId,
- TUid /*aCustomMessageId*/, const TDesC8& /*aCustomMessage*/ )
- {
- iPrevViewId = aPrevViewId;
- if( iContainer )
- {
- AppUi()->RemoveFromViewStack( *this, iContainer );
- delete iContainer;
- iContainer = NULL;
- }
- HBufC* jamSetTitle = StringLoader::LoadLC( R_AM_INSTALLATION_SETTINGS_TITLE );
- CEikStatusPane* statusPane = StatusPane();
- CAknTitlePane* titlePane;
- titlePane = ( CAknTitlePane* ) statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) );
- titlePane->SetTextL( jamSetTitle->Des() );
- CleanupStack::PopAndDestroy( jamSetTitle );
- jamSetTitle = NULL;
-
- iContainer = CAppMngr2GSSettingsContainer::NewL( ClientRect() );
- iContainer->SetMopParent( this );
- iContainer->MakeVisible( ETrue );
- iContainer->SetRect( ClientRect() );
- iContainer->ActivateL();
- AppUi()->AddToStackL( *this, iContainer );
- iContainer->ListBox()->SetListBoxObserver( this );
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::DoDeactivate()
-// ---------------------------------------------------------------------------
-//
-void CAppMngr2GSSettingsPlugin::DoDeactivate()
- {
- if( iContainer )
- {
- iContainer->MakeVisible( EFalse );
- AppUi()->RemoveFromViewStack( *this, iContainer );
- delete iContainer;
- iContainer = NULL;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::HandleForegroundEventL()
-// ---------------------------------------------------------------------------
-//
-void CAppMngr2GSSettingsPlugin::HandleForegroundEventL( TBool aForeground )
- {
- if( aForeground )
- {
- iContainer->UpdateListBoxContentL();
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::CAppMngr2GSSettingsPlugin()
-// ---------------------------------------------------------------------------
-//
-CAppMngr2GSSettingsPlugin::CAppMngr2GSSettingsPlugin() : iResources( *CCoeEnv::Static() )
- {
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::ConstructL()
-// ---------------------------------------------------------------------------
-//
-void CAppMngr2GSSettingsPlugin::ConstructL()
- {
- TFileName* fileName = TAppMngr2DriveUtils::NearestResourceFileLC(
- KAppMngr2GsSettingsPluginResourceFileName, iCoeEnv->FsSession() );
-
- iResources.OpenL( *fileName );
- BaseConstructL( R_APPMNGR2_SETTINGS_VIEW );
-
- CleanupStack::PopAndDestroy( fileName );
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::HandleListBoxSelectionL()
-// ---------------------------------------------------------------------------
-//
-void CAppMngr2GSSettingsPlugin::HandleListBoxSelectionL()
- {
- TInt currentIndex = iContainer->ListBox()->CurrentItemIndex();
- ShowSettingPageL( currentIndex );
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::ShowSettingPageL()
-// ---------------------------------------------------------------------------
-//
-void CAppMngr2GSSettingsPlugin::ShowSettingPageL( TInt aSettingIndex )
- {
- FLOG( "CAppMngr2GSSettingsPlugin: ShowSettingPageL( %d )", aSettingIndex );
-
- // Variation flag may be used to hide "allow untrusted" option
- TInt hideAllowUntrusted = 1;
- CRepository* variationDB = CRepository::NewLC( KCRUidSWInstallerLV );
- variationDB->Get( KSWInstallerHideUntrustedIns, hideAllowUntrusted );
- CleanupStack::PopAndDestroy( variationDB );
- if( hideAllowUntrusted )
- {
- // Increase the setting index so that allow untrusted is not taken into account
- aSettingIndex++;
- }
-
- if( aSettingIndex == EAppMngr2SettingOcsp || aSettingIndex == EAppMngr2SettingOcspUrl )
- {
- if( !FeatureManager::FeatureSupported( KFeatureIdOCSP ) )
- {
- // If OCSP feature is not supported, it's not allowed to change values
- HBufC* p = StringLoader::LoadLC( R_AM_NOTE_LOCKED_SETTIGS );
- CAknInformationNote* note = new ( ELeave ) CAknInformationNote( ETrue );
- note->ExecuteLD( p->Des() );
- CleanupStack::PopAndDestroy( p );
- return;
- }
- }
-
- HBufC* urlTextStr = HBufC::NewLC( NCentralRepositoryConstants::KMaxUnicodeStringLength );
- TPtr urlText( urlTextStr->Des() );
- urlText.Zero();
- TInt newIndex = 0;
-
- if( aSettingIndex == EAppMngr2SettingSwInstall || aSettingIndex == EAppMngr2SettingOcsp )
- {
- CRepository* repDB = CRepository::NewLC( KCRUidSWInstallerSettings );
- CAknSettingPage* dlg = NULL;
- CDesCArrayFlat* itemArray = NULL;
-
- if( aSettingIndex == EAppMngr2SettingSwInstall )
- {
- // Install software
- itemArray = iCoeEnv->ReadDesC16ArrayResourceL(
- R_APPMNGR2_ALLOW_UNTRUSTED_VALUE_ARRAY );
- repDB->Get( KSWInstallerAllowUntrusted, newIndex );
- if( newIndex )
- {
- newIndex = 1;
- }
- dlg = new ( ELeave ) CAknRadioButtonSettingPage(
- R_APPMNGR2_SET_PAGE_ALLOW_UNTRUSTED,
- newIndex, itemArray );
- }
- else
- {
- // OCSP check
- repDB->Get( KSWInstallerOcspProcedure, newIndex );
- newIndex = MapOCSPIndex( newIndex );
- itemArray = iCoeEnv->ReadDesC16ArrayResourceL(
- R_APPMNGR2_OCSP_CHECK_VALUE_ARRAY );
- dlg = new ( ELeave ) CAknRadioButtonSettingPage(
- R_APPMNGR2_OCSP_CHECK_PAGE, newIndex, itemArray );
- }
- CleanupStack::PopAndDestroy( repDB );
- CleanupStack::PushL( itemArray );
-
- if( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
- {
- SetPermissionL( aSettingIndex, newIndex, urlText );
- }
- CleanupStack::PopAndDestroy( itemArray );
- }
- else if( aSettingIndex == EAppMngr2SettingOcspUrl )
- {
- CRepository* repDB = CRepository::NewLC( KCRUidSWInstallerSettings );
- repDB->Get( KSWInstallerOcspDefaultURL, urlText );
- CAknTextSettingPage* textDlg = new ( ELeave ) CAknTextSettingPage(
- R_APPMNGR2_OCSP_URL_SETTING_PAGE, urlText,
- CAknTextSettingPage::EZeroLengthAllowed );
- CleanupStack::PushL( textDlg );
- textDlg->ConstructL();
- textDlg->TextControl()->SetTextLimit( KAppMngr2MaxOcspUrlLength );
-
- CleanupStack::Pop( textDlg );
- CleanupStack::PopAndDestroy( repDB );
-
- if( textDlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
- {
- // Remove spaces from URL text
- for( TInt pos = urlText.Length() - 1; pos >= 0; --pos ) {
- if( TChar( urlText[pos] ).IsSpace() ) {
- urlText.Delete( pos, 1 );
- }
- }
- SetPermissionL( aSettingIndex, newIndex, urlText );
- }
- }
- else
- {
- ASSERT( EFalse );
- }
-
- CleanupStack::PopAndDestroy( urlTextStr );
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::SetPermissionL()
-// ---------------------------------------------------------------------------
-//
-void CAppMngr2GSSettingsPlugin::SetPermissionL( TInt aSettingIndex,
- TInt aNewValueIndex,
- TPtrC16 aUrlText )
- {
- FLOG( "CAppMngr2GSSettingsPlugin::SetPermissionL( %d, %d, %S )",
- aSettingIndex, aNewValueIndex, &aUrlText );
-
- // Write the setting value to Central repository
- CRepository* repDB = CRepository::NewLC( KCRUidSWInstallerSettings );
- switch( aSettingIndex )
- {
- case EAppMngr2SettingSwInstall:
- repDB->Set( KSWInstallerAllowUntrusted, aNewValueIndex );
- break;
- case EAppMngr2SettingOcsp:
- aNewValueIndex = MapOCSPIndex( aNewValueIndex );
- repDB->Set( KSWInstallerOcspProcedure, aNewValueIndex );
- break;
- case EAppMngr2SettingOcspUrl:
- repDB->Set( KSWInstallerOcspDefaultURL, aUrlText );
- break;
- default:
- ASSERT( EFalse );
- break;
- }
- CleanupStack::PopAndDestroy( repDB );
-
- iContainer->UpdateListBoxContentL();
- }
-
-// ---------------------------------------------------------------------------
-// CAppMngr2GSSettingsPlugin::MapOCSPIndex()
-// ---------------------------------------------------------------------------
-//
-TInt CAppMngr2GSSettingsPlugin::MapOCSPIndex( TInt aValue )
- {
- TInt result = 0;
-
- switch( aValue )
- {
- case ESWInstallerOcspProcedureOff:
- result = EAppMngr2OcspCheckValueArrayOff;
- break;
- case ESWInstallerOcspProcedureOn:
- result = EAppMngr2OcspCheckValueArrayOn;
- break;
- case ESWInstallerOcspProcedureMust:
- result = EAppMngr2OcspCheckValueArrayMustPass;
- break;
- default:
- break;
- }
-
- return result;
- }
-