diff -r 41a7f70b3818 -r 5266b1f337bd phoneapp/phoneuiview/src/cphonemenucontroller.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/src/cphonemenucontroller.cpp Wed Sep 01 12:30:10 2010 +0100 @@ -0,0 +1,1187 @@ +/* +* Copyright (c) 2005-2007 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: Implementation of CPhoneMenuController class. +* +*/ + + +// INCLUDE FILES +#include "cphonemenucontroller.h" +#include "tphonecommandparam.h" +#include "tphonecmdparaminteger.h" +#include "tphonecmdparamdynmenu.h" +#include "tphonecmdparamboolean.h" +#include "phoneconstants.h" +#include "phonelogger.h" +#include "tphonecmdparamincallindicatordata.h" +#include "cphonepubsubproxy.h" +#include "cphonecenrepproxy.h" + + +#include +#include +#include +#include +#include +#include +#include +#include "phoneui.hrh" +#include +#include +#include +#include +#include + +#include + +// ================= MEMBER FUNCTIONS ======================= + +// ----------------------------------------------------------------------------- +// CPhoneMenuController::CPhoneMenuController +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CPhoneMenuController::CPhoneMenuController( CEikonEnv& aEikEnv ): + iMenuResourceId( 0 ), + iOkMenuResourceId( 0 ), + iSecurityMode( ETrue ), + iEikEnv( aEikEnv ) + { + } + +// ----------------------------------------------------------------------------- +// CPhoneMenuController::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CPhoneMenuController::ConstructL() + { + iMenu = iEikEnv.AppUiFactory()->MenuBar(); + + if ( FeatureManager::FeatureSupported( KFeatureIdMultimediaSharing ) ) + { + __PHONELOG( EBasic, EPhoneUIView, "CPhoneViewController::CPhoneMenuController -> Going to instantiate CAiwServiceHandler"); + //If multimedia sharing is supported, initialise instance to AIW handler + //and attach menu interest. + iServiceHandler = CAiwServiceHandler::NewL(); + + // Attach menu service interests to AIW framework. + iServiceHandler->AttachMenuL( R_PHONEUI_CALLHANDLING_INCALL_OPTIONS_MENU, + R_PHONEUI_AIWSHARE_INTEREST ); + __PHONELOG( EBasic, EPhoneUIView, "CPhoneViewController::CPhoneMenuController -> AIW Menu attached"); + } + + CPhonePubSubProxy::Instance()->NotifyChangeL( + KPSUidHWRM, KHWRMGripStatus, this ); + } + +// ----------------------------------------------------------------------------- +// CPhoneMenuController::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CPhoneMenuController* CPhoneMenuController::NewL( CEikonEnv& aEikEnv ) + { + CPhoneMenuController* self = new( ELeave ) CPhoneMenuController( aEikEnv ); + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + + return self; + } + +// Destructor +CPhoneMenuController::~CPhoneMenuController() + { + delete iServiceHandler; + } + +// --------------------------------------------------------- +// CPhoneMenuController::CloseMenuBar() +// --------------------------------------------------------- +// +void CPhoneMenuController::CloseMenuBar() + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::CloseMenuBar()" ); + iMenu->StopDisplayingMenuBar(); + } + +// --------------------------------------------------------- +// CPhoneMenuController::OpenMenuBar() +// --------------------------------------------------------- +// +void CPhoneMenuController::OpenMenuBarL() + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::OpenMenuBarL()" ); + iMenu->SetMenuTitleResourceId( iMenuResourceId ); + iMenu->TryDisplayMenuBarL(); + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetMenubarL +// Set the Menubar to the specified setting +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CPhoneMenuController::OpenMenuBarL( TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::OpenMenuBarL()" ); + // Check is the given parameter valid + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdInteger ) + { + TPhoneCmdParamInteger* menuResource = + static_cast( aCommandParam ); + + iMenuResourceId = menuResource->Integer(); + ShowTaskSwapper( iMenuResourceId ); + + iMenu->SetMenuTitleResourceId( iMenuResourceId ); + iMenu->TryDisplayMenuBarL(); + } + } + +// ----------------------------------------------------------------------------- +// CPhoneMenuController::IsSwivelClosed +// This function checks from PubSubProxy that is +// Swivel closed or not in product. +// +// ----------------------------------------------------------------------------- +// +TBool CPhoneMenuController::IsSwivelClosed() const + { + if( CPhoneCenRepProxy::Instance()-> + IsTelephonyFeatureSupported( KTelephonyLVFlagSwivelInDevice )) + { + return CPhonePubSubProxy::Instance()->Value( + KPSUidHWRM, KHWRMGripStatus ) == EPSHWRMGripClosed; + } + else + { + return EFalse; + } + + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +TBool CPhoneMenuController::IsQwertyMode() const + { + return CPhonePubSubProxy::Instance()->Value( + KCRUidAvkon, + KAknQwertyInputModeActive ); + } +// --------------------------------------------------------- +// CPhoneMenuController::DynInitMenuBar +// --------------------------------------------------------- +// +void CPhoneMenuController::DynInitMenuBar( + TPhoneCommandParam* /*aCommandParam*/ ) + { + } + +// --------------------------------------------------------- +// CPhoneMenuController::DynInitMenuPaneL +// --------------------------------------------------------- +// +void CPhoneMenuController::DynInitMenuPaneL( TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::DynInitMenuPaneL()" ); + TPhoneCmdParamDynMenu* menu = + static_cast( aCommandParam ); + + TInt resourceId = menu->ResourceId(); + + __PHONELOG1( + EBasic, + EPhonePhoneapp, + "CPhoneMenuController::DynInitMenuPaneL() - ResourceId = %d)", + resourceId ); + + CEikMenuPane* menuPane= + reinterpret_cast( menu->DynMenu() ); + + RArray menuItemArray; + CleanupClosePushL( menuItemArray ); + + TInt menuItemCount = menuPane->NumberOfItemsInPane(); + __PHONELOG1( + EBasic, + EPhonePhoneapp, + "CPhoneMenuController::DynInitMenuPaneL() - MenuItemCount = %d)", + menuItemCount ); + + // Menu items to array + for ( TInt i( 0 ); i < menuItemCount; i++ ) + { + menuItemArray.Append( menuPane->MenuItemCommandId( i ) ); + } + TBool onScreenDialer = FeatureManager::FeatureSupported( + KFeatureIdOnScreenDialer ); + + // Menu items to be deleted + for ( TInt i( 0 ); i < menuItemArray.Count(); i++ ) + { + switch( menuItemArray[ i ] ) + { + case EPhoneInCallCmdAnswer: + if ( iConferenceAndWaitingVideoFlag ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + case EPhoneInCallCmdDialer: + if ( !onScreenDialer ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + case EPhoneInCallCmdLockKeypad: + if ( onScreenDialer || iHoldFlag ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + case EPhoneInCallCmdLockScreen: + if ( !onScreenDialer || iHoldFlag ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + case EPhoneNumberAcqCmdCall: + if ( onScreenDialer && iNumberEntryEmpty ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + else if ( iServiceCodeFlag ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + else if ( iInvalidCsPhoneNumber ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneNumberAcqCmdVideoCall: + if ( onScreenDialer && iNumberEntryEmpty ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + else if ( iServiceCodeFlag ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + else if( !( FeatureManager::FeatureSupported( + KFeatureIdCsVideoTelephony ) ) ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + else if ( iInvalidCsPhoneNumber ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneNumberAcqCmdSendMessage: + if ( iNumberEntryEmpty || iInvalidCsPhoneNumber || iSecurityMode ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneNumberAcqCmdSendCommand: + if ( !iServiceCodeFlag || iNumberEntryEmpty || iInvalidCsPhoneNumber ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneNumberAcqCmdToggleNeAlphaMode: + if ( iAlphaMode || iSecurityMode ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneNumberAcqCmdToggleNeNumericMode: + if ( !iAlphaMode || iSecurityMode ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + + case EPhoneInCallCmdGoToIdle: + if ( iNEVisible || iSecurityMode ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneInCallCmdMute: + if ( iMuteFlag ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneInCallCmdUnmute: + if ( !iMuteFlag ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneInCallCmdHold: // fall through + case EPhoneInCallCmdConferenceHold: + if ( iHoldFlag && !iConferenceAndSingleFlag ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneInCallCmdDtmfListQuery: + if ( ( iHoldFlag && !iAllowDtmfOptionsFlag ) || iHideVideoCallDTMFVisibility + || iHideVoipCallDTMFVisibility ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneInCallCmdSwitchToVideo: + if( !iPhoneNumberAvailableInPhoneEngine || + !( FeatureManager::FeatureSupported( + KFeatureIdCsVideoTelephony ) ) ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + case EPhoneInCallCmdSwitchToVoice: + if( !iPhoneNumberAvailableInPhoneEngine ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneCallComingCmdSoftReject: + if ( !iSoftRejectFlag || iSecurityMode ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneCallComingCmdAnswerHandPortableVideo: + if ( iWiredAccAvailableFlag || IsSwivelClosed() ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneCallComingCmdAnswerHandPortable: + if ( !iBTAccAvailableFlag ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneInCallCmdConferenceUnhold: // fall through + case EPhoneInCallCmdUnhold: + if ( !iHoldFlag ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneInCallCmdCreateConference: + // Remove conference submenu item if: + // 1. Specific flag is set (calls are different type) OR + // 2. We are in Conference And Single state where the conference call is on hold and there + // are maximum amount of participants in conference call (can't add single to the conference) OR + // 3. Conference call is on hold and we are in some other conference state than Conference And Single + if ( iRemoveConfrenceOptionsFlag || ( iHoldFlag && iConferenceAndSingleFlag && iMaxConfMembersFlag ) || + ( iHoldFlag && !iConferenceAndSingleFlag ) ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneInCallCmdJoin: + if( iMaxConfMembersFlag || iRemoveConfrenceOptionsFlag ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneInCallCmdReplace: + if ( !iReplace ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneInCallCmdActivateIhf: + if ( iWiredAccFlag || iIhfFlag ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneInCallCmdDeactivateIhf: + if ( iWiredAccFlag || !iIhfFlag || IsSwivelClosed() ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; + + case EPhoneInCallCmdBtHandsfree: + if ( iBTAccTmpUnFlag && !iWiredAccFlag ) + { + // None + } + else + { + menuPane->DeleteMenuItem( menuItemArray[i] ); + } + break; + + case EPhoneInCallCmdHandset: + if ( iBTAccFlag && !iWiredAccFlag ) + { + if ( IsSwivelClosed() ) + { + menuPane->DeleteMenuItem( menuItemArray[i] ); + } + } + else + { + menuPane->DeleteMenuItem( menuItemArray[i] ); + } + break; + + case EPhoneDialerCallHandling: + { + // no active call or security mode + if ( ( onScreenDialer && !iCallInProgress ) || iSecurityMode ) + { + menuPane->DeleteMenuItem( menuItemArray[i] ); + } + } + break; + case EPhoneDialerCmdLog: + { + if ( ( onScreenDialer && !iNumberEntryEmpty ) || iSecurityMode ) + { + menuPane->DeleteMenuItem( menuItemArray[i] ); + } + } + break; + case EPhoneDialerCmdContacts: + { + if ( ( onScreenDialer && !iNumberEntryEmpty ) || iSecurityMode ) + { + menuPane->DeleteMenuItem( menuItemArray[i] ); + } + } + break; + + case EPhoneNumberAcqCmdAddToContacts: + { + if ( ( onScreenDialer && iNumberEntryEmpty ) || iSecurityMode ) + { + menuPane->DeleteMenuItem( menuItemArray[i] ); + } + } + break; + case EPhoneDialerCmdSpeedDial: + { + if ( ( onScreenDialer && !iNumberEntryEmpty ) || iSecurityMode ) + { + menuPane->DeleteMenuItem( menuItemArray[i] ); + } + } + break; + case EPhoneCmdDtmfOk: + { + if ( ( onScreenDialer && iNumberEntryEmpty ) || iSecurityMode ) + { + menuPane->DeleteMenuItem( menuItemArray[i] ); + } + } + break; + case EPhoneInCallCmdPrivate: + { + if ( FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) && + iHoldFlag && + iConferenceParticipantsListOpenFlag ) + { + menuPane->DeleteMenuItem( menuItemArray[i] ); + } + } + break; + case EPhoneDialerCmdTouchInput: + { + if ( !FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) || + IsQwertyMode() ) + { + menuPane->DeleteMenuItem( menuItemArray[i] ); + } + } + break; + case EPhoneVideoSharing: + { + if( !FeatureManager::FeatureSupported( KFeatureIdMultimediaSharing ) ) + { + menuPane->DeleteMenuItem( menuItemArray[i] ); + } + } + break; + + case EEasyDialingSettingsItemPlaceHolder: + { + if( !FeatureManager::FeatureSupported( KFeatureIdProductIncludesHomeScreenEasyDialing ) ) + { + menuPane->DeleteMenuItem( menuItemArray[i] ); + } + } + break; + + case EPhoneDialerCallSettings: // Fall through + case EPhoneInCallCmdSendToCallerMenu: // Fall through + case EAknCmdEditItemPlaceHolder: // Fall through + case EPhoneDialerCmdHelp: // Fall through + case EPhoneDialerCmdHelpDtmf: // Fall through + case EPhoneInCallCmdHelp: + if ( iSecurityMode ) + { + menuPane->DeleteMenuItem( menuItemArray[i] ); + } + break; + + default: + break; + + } + } + + CleanupStack::PopAndDestroy(); // CleanupClosePushL + + if ( FeatureManager::FeatureSupported( KFeatureIdMultimediaSharing ) ) + { + if( iServiceHandler->HandleSubmenuL( *menuPane ) ) + { + // AIW handled this + __PHONELOG( EBasic, EPhoneUIView, "CPhoneViewController::CPhoneMenuController -> AIW handled this sub menu"); + return; + } + + if( iServiceHandler->IsAiwMenu( resourceId ) ) + { + __PHONELOG( EBasic, EPhoneUIView, "CPhoneViewController::CPhoneMenuController -> Resource is in AIW menu"); + iServiceHandler->InitializeMenuPaneL( + *menuPane, + resourceId, + EPhoneVideoSharing, + iServiceHandler->InParamListL() ); + __PHONELOG( EBasic, EPhoneUIView, "CPhoneViewController::CPhoneMenuController -> AIW menu initialized"); + } + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::AddMenuPaneL +// --------------------------------------------------------- +// +void CPhoneMenuController::AddMenuPaneL( + TInt /*aPaneResourceId*/, + CEikMenuPane* /*aMenuPane*/, + TBool /*aAddSeparator*/ ) + { + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetMuteFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetMuteFlag( TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetMuteFlag()" ); + // Check is the given parameter valid + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* muteFlag = + static_cast( aCommandParam ); + + iMuteFlag = muteFlag->Boolean(); + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetIhfFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetIhfFlag( TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetIhfFlag()" ); + // Check is the given parameter valid + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* ihfFlag = + static_cast( aCommandParam ); + + iIhfFlag = ihfFlag->Boolean(); + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetHoldFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetHoldFlag( TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetHoldFlag()" ); + // Check is the given parameter valid + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* holdFlag = + static_cast( aCommandParam ); + + iHoldFlag = holdFlag->Boolean(); + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::GetHoldFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::GetHoldFlag( + TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::GetHoldFlag()" ); + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* booleanValue = + static_cast( aCommandParam ); + booleanValue->SetBoolean( iHoldFlag ); + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetConferenceAndSingleFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetConferenceAndSingleFlag( TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetConferenceAndSingleFlag()" ); + // Check is the given parameter valid + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* conferenceAndSingleFlag = + static_cast( aCommandParam ); + + iConferenceAndSingleFlag = conferenceAndSingleFlag->Boolean(); + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::GetConferenceAndSingleFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::GetConferenceAndSingleFlag( + TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::GetConferenceAndSingleFlag()" ); + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* booleanValue = + static_cast( aCommandParam ); + booleanValue->SetBoolean( iConferenceAndSingleFlag ); + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetConferenceAndWaitingVideoFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetConferenceAndWaitingVideoFlag( TBool aIsConfAndWaitingVideo ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetConferenceAndWaitingVideoFlag" ); + iConferenceAndWaitingVideoFlag = aIsConfAndWaitingVideo; + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetSoftRejectFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetSoftRejectFlag( + TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetSoftRejectFlag()" ); + // Check is the given parameter valid + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* softRejectFlag = + static_cast( aCommandParam ); + + iSoftRejectFlag = softRejectFlag->Boolean(); + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::GetSoftRejectFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::GetSoftRejectFlag( + TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::GetSoftRejectFlag()" ); + // Check is the given parameter valid + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* softRejectFlag = + static_cast( aCommandParam ); + + softRejectFlag->SetBoolean( iSoftRejectFlag ); + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetServiceCodeFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetServiceCodeFlag( + TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetServiceCodeFlag()" ); + // Check is the given parameter valid + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* serviceCodeFlag = + static_cast( aCommandParam ); + + iServiceCodeFlag = serviceCodeFlag->Boolean(); + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetWiredAccFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetWiredAccFlag( TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetWiredAccFlag()" ); + // Check is the given parameter valid + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* accFlag = + static_cast( aCommandParam ); + + iWiredAccFlag = accFlag->Boolean(); + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetWiredAccAvailableFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetWiredAccAvailableFlag( TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetWiredAccAvailableFlag()" ); + // Check is the given parameter valid + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* accFlag = + static_cast( aCommandParam ); + + iWiredAccAvailableFlag = accFlag->Boolean(); + + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetMaxConfMembersFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetMaxConfMembersFlag( TBool aIsMaxConfMembers ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetMaxConfMembersFlag()" ); + iMaxConfMembersFlag = aIsMaxConfMembers; + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetBTAccFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetBTAccFlag( TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetBTAccFlag()" ); + // Check is the given parameter valid + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* accFlag = + static_cast( aCommandParam ); + + iBTAccFlag = accFlag->Boolean(); + iBTAccTmpUnFlag = iBTAccAvailableFlag && !iBTAccFlag; + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetBTAccAvailableFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetBTAccAvailableFlag( TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetBTAccAvailableFlag()" ); + // Check is the given parameter valid + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* accFlag = + static_cast( aCommandParam ); + + iBTAccAvailableFlag = accFlag->Boolean(); + iBTAccTmpUnFlag = iBTAccAvailableFlag && !iBTAccFlag; + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetNEVisibleFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetNEVisibleFlag( TBool aVisible ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetNEVisibleFlag()" ); + iNEVisible = aVisible; + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetReplaceFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetReplaceFlag( TBool aReplace ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetReplaceFlag()" ); + iReplace = aReplace; + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetPhoneNumberAvailableInPhoneEngine +// --------------------------------------------------------- +// +void CPhoneMenuController::SetPhoneNumberAvailableInPhoneEngine( + TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetPhoneNumberAvailableInPhoneEngine()" ); + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* phoneNumberAvailable = + static_cast( aCommandParam ); + + iPhoneNumberAvailableInPhoneEngine = phoneNumberAvailable->Boolean(); + } + } + +// ----------------------------------------------------------------------------- +// CPhoneMenuController::ShowTaskSwapper +// +// Decide if TaskSwapper is to be shown in menu. +// ----------------------------------------------------------------------------- +// +void CPhoneMenuController::ShowTaskSwapper( TInt aResourceId ) const + { + if ( aResourceId == R_PHONEUI_NUMBERACQ_OK_MENUBAR || + aResourceId == R_PHONEUI_INCOMINGVIDEOCALL_MENUBAR || + aResourceId == R_PHONEUI_INCOMINGCALL_MENUBAR || + aResourceId == R_PHONEUI_INCOMINGCALL_MENUBAR_WITH_NUMBERENTRY || + aResourceId == R_PHONEUI_INCOMINGVIDEOCALL_MENUBAR_WITH_NUMBERENTRY || + aResourceId == R_PHONEUI_WAITING_LOCK_MENUBAR || + aResourceId == R_PHONEUI_TWOSINGLES_WAITING_LOCK_MENUBAR || + iSecurityMode ) + { + iMenu->SetMenuType( CEikMenuBar::EMenuOptionsNoTaskSwapper ); + } + else + { + iMenu->SetMenuType( CEikMenuBar::EMenuOptions ); + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::SendAiwCommandL +// --------------------------------------------------------- +// +void CPhoneMenuController::SendAiwCommandL( TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SendAiwCommandL()" ); + if( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdInteger ) + { + TPhoneCmdParamInteger* command = + static_cast( aCommandParam ); + CAiwGenericParamList& in = iServiceHandler->InParamListL(); + iServiceHandler->ExecuteMenuCmdL( command->Integer(), + in, + iServiceHandler->OutParamListL() ); + } + } + + +// --------------------------------------------------------------------------- +// CPhoneMenuController::SetContextMenu +// --------------------------------------------------------------------------- +// +void CPhoneMenuController::SetContextMenu( TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, + "CPhoneMenuController::SetContextMenu" ); + if( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdInteger ) + { + TPhoneCmdParamInteger* command = + static_cast( aCommandParam ); + iMenu->SetContextMenuTitleResourceId( command->Integer() ); + + } + + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetRemoveConfrenceOptionsFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetRemoveConfrenceOptionsFlag( TBool aRemoveConfrenceOptions ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetRemoveConfrenceOptionsFlag()" ); + iRemoveConfrenceOptionsFlag = aRemoveConfrenceOptions; + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetNumberEntryEmptyFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetNumberEntryEmptyFlag( TBool aNumberEntryEmpty ) + { + iNumberEntryEmpty = aNumberEntryEmpty; + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetCallInProgressFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetCallInProgressFlag( TPhoneCommandParam* aCommandParam ) + { + TPhoneCmdParamIncallIndicatorData* param = + static_cast( aCommandParam ); + + TInt callState = param->CallState(); + switch ( callState ) + { + case EPSCTsyCallStateAlerting: + case EPSCTsyCallStateRinging: + case EPSCTsyCallStateDialling: + case EPSCTsyCallStateAnswering: + case EPSCTsyCallStateConnected: + case EPSCTsyCallStateHold: + { + //call in progress + iCallInProgress = ETrue; + break; + } + default: + { + iCallInProgress = EFalse; + //call not in progress + break; + } + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::IsMenuBarVisible() +// --------------------------------------------------------- +// +TBool CPhoneMenuController::IsMenuBarVisible() + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::IsMenuBarVisible()" ); + return iMenu->IsDisplayed(); + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetConferenceParticipantsListVisibleFlag() +// --------------------------------------------------------- +// +void CPhoneMenuController::SetConferenceParticipantsListVisibleFlag( + TPhoneCommandParam* aCommandParam ) + { + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* participantsListOpenFlag = + static_cast( aCommandParam ); + iConferenceParticipantsListOpenFlag = participantsListOpenFlag->Boolean(); + } + } + +//------------------------------------------------------------------------------- +// CPhoneMenuController::GetConferenceParticipantsListVisibleFlag +//------------------------------------------------------------------------------- +void CPhoneMenuController::GetConferenceParticipantsListVisibleFlag( + TPhoneCommandParam* aCommandParam ) + { + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* participantsListOpenFlag = + static_cast( aCommandParam ); + participantsListOpenFlag->SetBoolean( iConferenceParticipantsListOpenFlag ); + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetAlphaModeFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetAlphaModeFlag( TBool aMode ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetAlphaModeFlag()" ); + iAlphaMode = aMode; + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetAllowDtmfOptionsFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetAllowDtmfOptionsFlag( TBool aMode ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetAllowDtmfOptionsFlag()" ); + iAllowDtmfOptionsFlag = aMode; + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetHideVideoCallDTMFVisibility +// --------------------------------------------------------- +// +void CPhoneMenuController::SetHideVoipCallDTMFVisibilityFlag( TBool aHideVoipCallDTMFVisibility ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetHideVoipCallDTMFVisibilityFlag()" ); + iHideVoipCallDTMFVisibility = aHideVoipCallDTMFVisibility; + } +// CPhoneMenuController::SetHideVideoCallDTMFVisibility +// --------------------------------------------------------- +// +void CPhoneMenuController::SetHideVideoCallDTMFVisibilityFlag( TBool aHideVideoCallDTMFVisibility ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetHideVideocallDTMFVisibility()" ); + iHideVideoCallDTMFVisibility = aHideVideoCallDTMFVisibility; + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetVoipEnabledFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetVoipEnabledFlag( + TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetVoipEnabledFlag()" ); + + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* voipEnabled = + static_cast( aCommandParam ); + iVoipEnabledFlag = voipEnabled->Boolean(); + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::HandlePropertyChangedL +// --------------------------------------------------------- +// +void CPhoneMenuController::SetSecurityMode( TBool aIsEnabled ) + { + __PHONELOG1( EBasic, EPhoneUIView, "CPhoneViewController::SetSecurityMode %d ", aIsEnabled ); + iSecurityMode = aIsEnabled; + } + +// --------------------------------------------------------- +// CPhoneMenuController::HandlePropertyChangedL +// --------------------------------------------------------- +// +void CPhoneMenuController::HandlePropertyChangedL( + const TUid& aCategory, + const TUint aKey, + const TInt aValue ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::HandlePropertyChangedL()" ); + __PHONELOG1( EBasic, EPhoneUIView, + "CPhoneMenuController::HandlePropertyChangedL - aCategory= %d", aCategory ); + __PHONELOG1( EBasic, EPhoneUIView, + "CPhoneMenuController::HandlePropertyChangedL - aKey= %d", aKey ); + __PHONELOG1( EBasic, EPhoneUIView, + "CPhoneMenuController::HandlePropertyChangedL - aValue= %d", aValue ); + if ( aCategory == KPSUidHWRM && + aKey == KHWRMGripStatus && + aValue != EPSHWRMGripStatusUninitialized && + iMenu->IsDisplayed() ) + { + CloseMenuBar(); + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::SetInvalidCsPhoneNumberFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetInvalidCsPhoneNumberFlag( TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetInvalidCsPhoneNumberFlag()" ); + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* boolParam = + static_cast( aCommandParam ); + + __PHONELOG1( + EBasic, + EPhonePhoneapp, + "CPhoneMenuController::SetInvalidCsPhoneNumberFlag() - Boolean parameter = %d)", + boolParam->Boolean() ); + + iInvalidCsPhoneNumber = boolParam->Boolean(); + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::GetInvalidCsPhoneNumberFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::GetInvalidCsPhoneNumberFlag( + TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( + EPhoneUIView, + "CPhoneMenuController::GetInvalidCsPhoneNumberFlag()" ); + + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* boolParam = + static_cast( aCommandParam ); + + __PHONELOG1( + EBasic, + EPhonePhoneapp, + "CPhoneMenuController::GetInvalidCsPhoneNumberFlag() - Boolean return value = %d)", + boolParam->Boolean() ); + + boolParam->SetBoolean( iInvalidCsPhoneNumber ); + } + } + +// End of File