--- /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 <eikenv.h>
+#include <eikappui.h>
+#include <eikapp.h>
+#include <eikmenub.h>
+#include <eikspane.h>
+#include <featmgr.h>
+#include <ctsydomainpskeys.h>
+#include "phoneui.hrh"
+#include <phoneappvoipcommands.hrh>
+#include <phoneui.rsg>
+#include <telephonyvariant.hrh>
+#include <AvkonInternalCRKeys.h>
+#include <hwrmdomainpskeys.h>
+
+#include <AiwServiceHandler.h>
+
+// ================= 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<TPhoneCmdParamInteger*>( 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<TPhoneCmdParamDynMenu*>( aCommandParam );
+
+ TInt resourceId = menu->ResourceId();
+
+ __PHONELOG1(
+ EBasic,
+ EPhonePhoneapp,
+ "CPhoneMenuController::DynInitMenuPaneL() - ResourceId = %d)",
+ resourceId );
+
+ CEikMenuPane* menuPane=
+ reinterpret_cast<CEikMenuPane*>( menu->DynMenu() );
+
+ RArray<TInt> 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<TPhoneCmdParamBoolean*>( 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<TPhoneCmdParamBoolean*>( 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<TPhoneCmdParamBoolean*>( aCommandParam );
+
+ iHoldFlag = holdFlag->Boolean();
+ }
+ }
+
+// ---------------------------------------------------------
+// CPhoneMenuController::GetHoldFlag
+// ---------------------------------------------------------
+//
+void CPhoneMenuController::GetHoldFlag(
+ TPhoneCommandParam* aCommandParam )
+ {
+ __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::GetHoldFlag()" );
+ if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
+ {
+ TPhoneCmdParamBoolean* booleanValue =
+ static_cast<TPhoneCmdParamBoolean*>( 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<TPhoneCmdParamBoolean*>( aCommandParam );
+
+ iConferenceAndSingleFlag = conferenceAndSingleFlag->Boolean();
+ }
+ }
+
+// ---------------------------------------------------------
+// CPhoneMenuController::GetConferenceAndSingleFlag
+// ---------------------------------------------------------
+//
+void CPhoneMenuController::GetConferenceAndSingleFlag(
+ TPhoneCommandParam* aCommandParam )
+ {
+ __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::GetConferenceAndSingleFlag()" );
+ if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
+ {
+ TPhoneCmdParamBoolean* booleanValue =
+ static_cast<TPhoneCmdParamBoolean*>( 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<TPhoneCmdParamBoolean*>( 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<TPhoneCmdParamBoolean*>( 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<TPhoneCmdParamBoolean*>( 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<TPhoneCmdParamBoolean*>( 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<TPhoneCmdParamBoolean*>( 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<TPhoneCmdParamBoolean*>( 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<TPhoneCmdParamBoolean*>( 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<TPhoneCmdParamBoolean*>( 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<TPhoneCmdParamInteger*>( 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<TPhoneCmdParamInteger*>( 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<TPhoneCmdParamIncallIndicatorData*>( 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<TPhoneCmdParamBoolean*>( aCommandParam );
+ iConferenceParticipantsListOpenFlag = participantsListOpenFlag->Boolean();
+ }
+ }
+
+//-------------------------------------------------------------------------------
+// CPhoneMenuController::GetConferenceParticipantsListVisibleFlag
+//-------------------------------------------------------------------------------
+void CPhoneMenuController::GetConferenceParticipantsListVisibleFlag(
+ TPhoneCommandParam* aCommandParam )
+ {
+ if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
+ {
+ TPhoneCmdParamBoolean* participantsListOpenFlag =
+ static_cast<TPhoneCmdParamBoolean*>( 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<TPhoneCmdParamBoolean*>( 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<TPhoneCmdParamBoolean*>( 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<TPhoneCmdParamBoolean*>( aCommandParam );
+
+ __PHONELOG1(
+ EBasic,
+ EPhonePhoneapp,
+ "CPhoneMenuController::GetInvalidCsPhoneNumberFlag() - Boolean return value = %d)",
+ boolParam->Boolean() );
+
+ boolParam->SetBoolean( iInvalidCsPhoneNumber );
+ }
+ }
+
+// End of File