diff -r 8bda91a87a00 -r 8ee96d21d9bf gssettingsuis/Gs/GSCallBarringPlugin/Src/GSCellularCallBarringView.cpp --- a/gssettingsuis/Gs/GSCallBarringPlugin/Src/GSCellularCallBarringView.cpp Thu Aug 19 10:12:30 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,575 +0,0 @@ -/* -* Copyright (c) 2002-2005 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: View for the Barring folder -* -*/ - - -// INCLUDE FILES -#include "GSCellularCallBarringView.h" //for CGSSettListBarringView -#include "GSCellularCallBarringContainer.h"//for CGSBaseContainer -#include "GSPhoneSettingConstants.h" //for constant values -#include "GSCallBarringPlugin.h" //for plugin UID -#include "GsLogger.h" -#include "LocalViewIds.h" //for KTellBarringViewId - -#include -#include -#include // For HlpLauncher -#include -#include -#include //for resource IDs -#include //for extended error codes -#include //for StringLoader -#include //for CPsetContainer -#include //for CPsuiContainer -#include //for menu bar -#include -#include -#include -#include -#if defined(__VOIP) && defined(RD_VOIP_REL_2_2) -#include -#endif // __VOIP && RD_VOIP_REL_2_2 - -// ========================= MEMBER FUNCTIONS ================================ -// --------------------------------------------------------------------------- -// -// C++ constructor. -// -// --------------------------------------------------------------------------- -CGSSettListBarringView::CGSSettListBarringView() - { - } - -// --------------------------------------------------------------------------- -// -// Symbian OS two-phased constructor (second phase) -// -// --------------------------------------------------------------------------- -void CGSSettListBarringView::ConstructL() - { - __GSLOGSTRING("[GS]--> CGSSettListBarringView::ConstructL"); - BaseConstructL( R_GS_BARRING_VIEW ); - - iSettings = CPsetContainer::NewL(); - iObsContainer = CPsuiContainer::NewL(); - iCbObserver = iObsContainer->CreateCBObsL(); - iBarring = iSettings->CreateCBObjectL( *iCbObserver ); - iRockerPress = EFalse; - iContextMenuInitialized = EFalse; - __GSLOGSTRING("[GS] <--CGSSettListBarringView::ConstructL"); - } - - -// --------------------------------------------------------------------------- -// CGSSettListBarringView::NewL() -// Symbian OS two-phased constructor -// -// --------------------------------------------------------------------------- -CGSSettListBarringView* CGSSettListBarringView::NewL() - { - CGSSettListBarringView* self = NewLC(); - CleanupStack::Pop( self ); - return self; - } - - -// --------------------------------------------------------------------------- -// -// Symbian OS two-phased constructor (first phase) -// -// --------------------------------------------------------------------------- -CGSSettListBarringView* CGSSettListBarringView::NewLC() - { - __GSLOGSTRING("[GS]--> CGSSettListBarringView::NewLC"); - CGSSettListBarringView* self = new ( ELeave ) CGSSettListBarringView; - CleanupStack::PushL( self ); - self->ConstructL(); - - __GSLOGSTRING("[GS] <--CGSSettListBarringView::NewLC"); - return self; - } - -// --------------------------------------------------------------------------- -// -// C++ destructor -// -// --------------------------------------------------------------------------- -CGSSettListBarringView::~CGSSettListBarringView() - { - delete iBarring; - delete iSettings; - delete iObsContainer; - delete iCbObserver; - iRockerPress = EFalse; - - } - -// --------------------------------------------------------------------------- -// -// Returns Id of the Barring view. -// -// --------------------------------------------------------------------------- -TUid CGSSettListBarringView::Id() const - { - return KCallBarringViewId; - } - -// --------------------------------------------------------------------------- -// -// Handles other than list box events. -// -// --------------------------------------------------------------------------- -void CGSSettListBarringView::HandleCommandL( TInt aCommand ) - { - __GSLOGSTRING("[GS]--> CGSSettListBarringView::HandleCommandL"); - iRockerPress = EFalse; - - TCallBarringSetting barringSetting; - iCurrentItem = iContainer->iListBox->CurrentItemIndex(); - SetBarringType( - aCommand, - barringSetting, - static_cast (iCurrentItem) ); -#if defined(__VOIP) && defined(RD_VOIP_REL_2_2) - CSPSettings* spSettings = CSPSettings::NewL(); - TBool showVoipFeatures( EFalse ); - if ( spSettings->IsFeatureSupported( ESupportVoIPFeature ) && - spSettings->IsFeatureSupported( ESupportVoIPSSFeature ) ) - { - showVoipFeatures = ETrue; - } -#endif // __VOIP && RD_VOIP_REL_2_2 - - switch ( aCommand ) - { - case EGSCmdAppChange: - iRockerPress = EFalse; - HandleListBoxEventL( iContainer->iListBox, EEventEnterKeyPressed ); - break; - case EAknSoftkeyBack: -#if defined(__VOIP) && defined(RD_VOIP_REL_2_2) - if ( showVoipFeatures ) - { - iAppUi->ActivateLocalViewL( KCallMainBarringViewId ); - } - else - { - iAppUi->ActivateLocalViewL( KGSTelPluginUid ); - } -#else // __VOIP && RD_VOIP_REL_2_2 - if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) ) - { - iAppUi->ActivateLocalViewL( KCallMainBarringViewId ); - } - else - { - iAppUi->ActivateLocalViewL( KGSTelPluginUid ); - } -#endif // __VOIP && RD_VOIP_REL_2_2 - break; - case EGSCmdBarringActivate: - barringSetting.iSetting = EActivateBarring; - HandleBarringOperationL( barringSetting, EAllTeleAndBearer ); - break; - case EGSCmdBarringCancel: - barringSetting.iSetting = ECancelBarring; - HandleBarringOperationL( barringSetting, EAllTeleAndBearer ); - break; - case EGSCmdBarringInquiry: - iBarring->GetBarringStatusL( EServiceGroupVoice, - barringSetting.iType ); - break; - case EGSCmdBarringChangePwd: - ChangeBarringPwdL(); - break; - case EGSCmdBarringCancelAll: - CancelAllBarringsL(); - break; - case EAknCmdHelp: - { - if( FeatureManager::FeatureSupported( KFeatureIdHelp ) ) - { - HlpLauncher::LaunchHelpApplicationL( - iEikonEnv->WsSession(), iAppUi->AppHelpContextL() ); - } - break; - } - default: - iAppUi->HandleCommandL( aCommand ); - break; - } - __GSLOGSTRING("[GS] <--CGSSettListBarringView::HandleCommandL"); - } - -// --------------------------------------------------------------------------- -// -// Activates view. -// -// --------------------------------------------------------------------------- -void CGSSettListBarringView::DoActivateL( const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage ) - { - __GSLOGSTRING("[GS]--> CGSSettListBarringView::DoActivateL"); - CGSLocalBaseView::DoActivateL( aPrevViewId, aCustomMessageId, - aCustomMessage ); - - iContainer->iListBox->SetTopItemIndex(iTopItemIndex); - - if (iCurrentItem >= 0 && - iCurrentItem < iContainer->iListBox->Model()->NumberOfItems()) - { - iContainer->iListBox->SetCurrentItemIndexAndDraw(iCurrentItem); - } - __GSLOGSTRING("[GS] <--CGSSettListBarringView::DoActivateL"); - } - -// --------------------------------------------------------------------------- -// -// Deactivates view. -// -// --------------------------------------------------------------------------- -void CGSSettListBarringView::DoDeactivate() - { - __GSLOGSTRING("[GS]--> CGSSettListBarringView::DoDeactivate"); - if ( iContainer ) - { - iCurrentItem = iContainer->iListBox->CurrentItemIndex(); - iTopItemIndex = iContainer->iListBox->TopItemIndex(); - - iAppUi->RemoveFromViewStack( *this, iContainer ); - delete iContainer; - iContainer = NULL; - } - __GSLOGSTRING("[GS] <--CGSSettListBarringView::DoDeactivate"); - } - - - // ----------------------------------------------------------------------------- -// CGSSettListBarringView::ProcessCommandL -// ----------------------------------------------------------------------------- -void CGSSettListBarringView::ProcessCommandL( TInt aCommand ) - { - // Context menu is needed to be initialized only if selection key - // is pressed. Initialization need to be performed only once. - if( aCommand == EAknSoftkeyContextOptions && - !iContextMenuInitialized ) - { - MenuBar()->SetContextMenuTitleResourceId( - R_CALL_BARRING_MSK_CONTEXTMENUBAR ); - iContextMenuInitialized = ETrue; - } - - // Call base class - CAknView::ProcessCommandL( aCommand ); - } -// --------------------------------------------------------------------------- -// -// Before showing a options menu, delete options key specific settings if -// rocker key has been pressed. -// --------------------------------------------------------------------------- -// -void CGSSettListBarringView::DynInitMenuPaneL( TInt aResourceId, - CEikMenuPane* aMenuPane ) - { - __GSLOGSTRING("[GS]--> CGSSettListBarringView::DynInitMenuPaneL"); - CEikMenuBar* menuBar = MenuBar(); - // show or hide the 'help' menu item when supported - if( aResourceId == R_GS_MENU_ITEM_HELP ) - { - if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) ) - { - aMenuPane->SetItemDimmed( EAknCmdHelp, EFalse ); - } - else - { - aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue ); - } - } - - if ( iRockerPress ) - { - // always hide 'help' & 'exit' menu items when rocker key is pressed - if( aResourceId == R_GS_MENU_ITEM_EXIT ) - { - aMenuPane->SetItemDimmed( EAknCmdExit, ETrue ); - } - else if ( aResourceId == R_GS_MENU_ITEM_HELP ) - { - aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue ); - } - else if ( aResourceId == R_GS_BARRING_VIEW_MENU ) - { - // these options are not initialized in restricted call barring - if ( !FeatureManager::FeatureSupported( KFeatureIdRestrictedCallBarring ) ) - { - aMenuPane->SetItemDimmed( EGSCmdBarringCancelAll, ETrue ); - aMenuPane->SetItemDimmed( EGSCmdBarringChangePwd, ETrue ); - } - } - } - else if (aResourceId == R_GS_BARRING_VIEW_MENU) - { - if (!menuBar->ItemSpecificCommandsEnabled() && menuBar->GetMenuType() - == CEikMenuBar::EMenuOptions) - { - aMenuPane->SetItemDimmed(EGSCmdBarringActivate, ETrue); - aMenuPane->SetItemDimmed(EGSCmdBarringCancel, ETrue); - aMenuPane->SetItemDimmed(EGSCmdBarringInquiry, ETrue); - } - } - __GSLOGSTRING("[GS] <--CGSSettListBarringView::DynInitMenuPaneL"); - } - -// --------------------------------------------------------------------------- -// -// Queries password from the user. -// -// --------------------------------------------------------------------------- -// -TInt CGSSettListBarringView::BarringPasswordQueryL( - TBarringPassword& aBarringPassword, - const TInt& aTitleID ) - { - __GSLOGSTRING("[GS]--> CGSSettListBarringView::BarringPasswordQueryL"); - TBool continueLoop = ETrue; - - while ( continueLoop ) - { - aBarringPassword = KNullDesC; - CCodeQueryDialog* dlg = new (ELeave) - CCodeQueryDialog( aBarringPassword, KGSBarringPasswordLength, - KGSBarringPasswordLength, ESecUiNone ); - dlg->PrepareLC( R_BARRING_PASSWORD_DLG ); - - HBufC* string = NULL; - string = StringLoader::LoadLC( aTitleID ); - dlg->SetPromptL( *string ); - CleanupStack::PopAndDestroy( string ); - - TInt res = dlg->RunLD(); - dlg = NULL; - - if ( res ) - { - if ( aBarringPassword.Length() == KGSBarringPasswordLength ) - { - continueLoop = EFalse; - } - } - else - { - __GSLOGSTRING("[GS] BarringPasswordQueryL: EAknSoftkeyCancel returned"); - __GSLOGSTRING("[GS] <--CGSSettListBarringView::BarringPasswordQueryL"); - return EAknSoftkeyCancel; - } - } - __GSLOGSTRING("[GS] BarringPasswordQueryL: EAknSoftkeyOk returned"); - __GSLOGSTRING("[GS] <--CGSSettListBarringView::BarringPasswordQueryL"); - return EAknSoftkeyOk; - } - -// --------------------------------------------------------------------------- -// -// Adds given item to a given list -// -// --------------------------------------------------------------------------- -void CGSSettListBarringView::AppendItemL( - CDesCArrayFlat& aList, const TInt aItem ) - { - HBufC* string = NULL; - string = StringLoader::LoadLC( aItem ); - aList.AppendL( *string ); - CleanupStack::PopAndDestroy( string ); - } - -// --------------------------------------------------------------------------- -// -// Handles barring operation requests. -// -// --------------------------------------------------------------------------- -void CGSSettListBarringView::HandleBarringOperationL( - TCallBarringSetting aBarringSetting, TBasicServiceGroups aBsc ) - { - __GSLOGSTRING("[GS]--> CGSSettListBarringView::HandleBarringOperationL"); - TInt ret = KErrNone; - ret = BarringPasswordQueryL( - aBarringSetting.iPassword, R_BARRING_PASSWORD ); - if ( ret == EAknSoftkeyOk ) - { - iBarring->SetBarringL( aBarringSetting, aBsc ); - } - __GSLOGSTRING("[GS] <--CGSSettListBarringView::HandleBarringOperationL"); - } - -// --------------------------------------------------------------------------- -// -// Sets barring type. Switches from GS internal values, to values -// shared by phone/phonesettings. -// --------------------------------------------------------------------------- -void CGSSettListBarringView::SetBarringType( TInt& aCommand, - TCallBarringSetting& aBarringSetting, - TGSBarringSetting aType ) - { - __GSLOGSTRING("[GS]--> CGSSettListBarringView::SetBarringType"); - if ( aCommand != EGSCmdBarringActivate && - aCommand != EGSCmdBarringCancel && - aCommand != EGSCmdBarringInquiry && - aCommand != EGSCmdBarringChangePwd && - aCommand != EGSCmdBarringCancelAll ) - { - __GSLOGSTRING("[GS] SetBarringType: No barring variables set"); - return; //in case of exit do not set barring variables. - } - - aBarringSetting.iServiceGroup = EServiceGroupVoice; - - switch ( aType ) - { - case EGSCBOutgoing: - aBarringSetting.iType = EBarringTypeAllOutgoing; - break; - case EGSCBInternational: - aBarringSetting.iType = EBarringTypeOutgoingInternational; - break; - case EGSCBInternationalExceptHome: - aBarringSetting.iType = - EBarringTypeOutgoingInternationalExceptToHomeCountry; - break; - case EGSCBIncoming: - aBarringSetting.iType = EBarringTypeAllIncoming; - break; - case EGSCBAbroad: - aBarringSetting.iType = EBarringTypeIncomingWhenRoaming; - break; - default: - aBarringSetting.iType = EBarringTypeAllBarrings; - break; - } - - if ( FeatureManager::FeatureSupported( KFeatureIdRestrictedCallBarring ) ) - { - // Restricted call barring only support EBarringTypeIncomingWhenRoaming - aBarringSetting.iType = EBarringTypeIncomingWhenRoaming; - } - - __GSLOGSTRING("[GS] <--CGSSettListBarringView::SetBarringType"); - } - -// --------------------------------------------------------------------------- -// -// Creates a request to cancel all barrings. -// -// --------------------------------------------------------------------------- -void CGSSettListBarringView::CancelAllBarringsL() - { - __GSLOGSTRING("[GS]--> CGSSettListBarringView::CancelAllBarringsL"); - TCallBarringSetting cancelAllCB; - - TInt retValue = KErrNone; - retValue = BarringPasswordQueryL( cancelAllCB.iPassword, - R_BARRING_PASSWORD ); - if ( retValue == EAknSoftkeyOk ) - { - cancelAllCB.iSetting = ECancelBarring; - cancelAllCB.iType = EBarringTypeAllBarrings; - cancelAllCB.iServiceGroup = EServiceGroupVoice; - iBarring->SetBarringL( cancelAllCB, EAllTeleAndBearer ); - } - __GSLOGSTRING("[GS] <--CGSSettListBarringView::CancelAllBarringsL"); - } - -// --------------------------------------------------------------------------- -// -// Handles changing of barring password. -// -// --------------------------------------------------------------------------- -void CGSSettListBarringView::ChangeBarringPwdL() - { - __GSLOGSTRING("[GS]--> CGSSettListBarringView::ChangeBarringPwdL"); - TInt returnValue = KErrNone; - RMobilePhone::TMobilePhonePasswordChangeV2 pwd; - - returnValue = BarringPasswordQueryL( - pwd.iOldPassword, R_CURRENT_BARRING_PASSWORD ); - - if ( returnValue != EAknSoftkeyOk ) //cancelled or error - { - __GSLOGSTRING("[GS] ChangeBarringPwdL: Current PW cancelled/error"); - return; - } - returnValue = BarringPasswordQueryL( pwd.iNewPassword, - R_NEW_BARRING_PASSWORD ); - if ( returnValue != EAknSoftkeyOk ) //cancelled or error - { - __GSLOGSTRING("[GS] ChangeBarringPwdL: New PW cancelled/error"); - return; - } - returnValue = BarringPasswordQueryL( pwd.iVerifiedPassword , - R_VERIFY_NEW_BARRING_PASSWORD ); - if ( returnValue != EAknSoftkeyOk ) - { - __GSLOGSTRING("[GS] ChangeBarringPwdL: Verify PW1 cancelled/error"); - return; - } - // check if newpw and verifypw do not - // match->password error->return to query - while ( pwd.iNewPassword.Compare( pwd.iVerifiedPassword ) != 0 ) - { - iCbObserver->HandleBarringErrorL( KErrGsmSSNegativePasswordCheck ); - - returnValue = BarringPasswordQueryL( pwd.iVerifiedPassword, - R_VERIFY_NEW_BARRING_PASSWORD ); - if ( returnValue != EAknSoftkeyOk ) //cancelled or error - { - __GSLOGSTRING("[GS] ChangeBarringPwdL: Verify PW2 cancelled/error"); - return; - } - } - iBarring->ChangePasswordL( pwd, ETrue ); - __GSLOGSTRING("[GS] <--CGSSettListBarringView::ChangeBarringPwdL"); - } - -// --------------------------------------------------------------------------- -// -// Creates new iContainer. -// -// --------------------------------------------------------------------------- -void CGSSettListBarringView::NewContainerL() - { - iContainer = new (ELeave) CGSSettListBarringContainer; - } - -// --------------------------------------------------------------------------- -// -// Handles listbox selection -// -// --------------------------------------------------------------------------- -void CGSSettListBarringView::HandleListBoxSelectionL() - { - iRockerPress = ETrue; - CEikMenuBar* menuBar = this->MenuBar(); - menuBar->SetMenuType( CEikMenuBar::EMenuContext ); - menuBar->SetContextMenuTitleResourceId(R_CALL_BARRING_MSK_CONTEXTMENUBAR); - // Display menu bar. - menuBar->TryDisplayContextMenuBarL(); - iRockerPress = EFalse; - menuBar->SetMenuType( CEikMenuBar::EMenuOptions ); - iContextMenuInitialized = ETrue; - } - - - // End of file