--- a/phoneapp/phoneuistates/src/cphonesinglecall.cpp Fri May 14 15:51:57 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,801 +0,0 @@
-/*
-* Copyright (c) 2005-2008 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 CPhoneSingleCall class.
-*
-*/
-
-
-// INCLUDES
-#include <eikmenub.h>
-#include <eikenv.h>
-#include <StringLoader.h>
-#include <featmgr.h>
-#include <pevirtualengine.h>
-#include <mpeengineinfo.h>
-#include <cpephonemodelif.h>
-#include <connect/sbdefs.h>
-#include <videotelcontrolmediatorapi.h>
-#include <MediatorDomainUIDs.h>
-#include <telephonyvariant.hrh>
-
-#include "cphonesinglecall.h"
-#include "tphonecmdparamstring.h"
-#include "tphonecmdparamboolean.h"
-#include "tphonecmdparamcallheaderdata.h"
-#include "mphonestatemachine.h"
-#include "tphonecmdparaminteger.h"
-#include "phoneviewcommanddefinitions.h"
-#include "phoneui.hrh"
-#include "cphonemainresourceresolver.h"
-#include "phonerssbase.h"
-#include "phonestatedefinitionsgsm.h"
-#include "tphonecmdparamglobalnote.h"
-#include "tphonecmdparamcallstatedata.h"
-#include "phonelogger.h"
-#include "cphonepubsubproxy.h"
-#include "cphonemediatorfactory.h"
-#include "cphonemediatorsender.h"
-#include "cphoneswitchtovideoorvoicecommand.h"
-#include "mphonestorage.h"
-#include "cphonecenrepproxy.h"
-
-// ================= MEMBER FUNCTIONS =======================
-
-// C++ default constructor can NOT contain any code, that
-// might leave.
-//
-EXPORT_C CPhoneSingleCall::CPhoneSingleCall(
- MPhoneStateMachine* aStateMachine,
- MPhoneViewCommandHandle* aViewCommandHandle,
- MPhoneCustomization* aPhoneCustomization ) :
- CPhoneGsmInCall( aStateMachine, aViewCommandHandle, aPhoneCustomization )
- {
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::~CPhoneSingleCall()
-// Destructor
-// (other items were commented in a header).
-// -----------------------------------------------------------
-//
-EXPORT_C CPhoneSingleCall::~CPhoneSingleCall()
- {
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::ConstructL()
-// Constructor
-// (other items were commented in a header).
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneSingleCall::ConstructL()
- {
- CPhoneGsmInCall::ConstructL();
-
- // Re-enable global notes
- TPhoneCmdParamBoolean globalNotifierParam;
- globalNotifierParam.SetBoolean( EFalse );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled,
- &globalNotifierParam );
-
- TPhoneCmdParamBoolean holdFlag;
- holdFlag.SetBoolean( EFalse );
- // Fetch active call's id from view
- TPhoneCmdParamCallStateData callStateData;
- callStateData.SetCallState( EPEStateConnected );
- iViewCommandHandle->HandleCommandL(
- EPhoneViewGetCallIdByState, &callStateData );
-
- if( callStateData.CallId() == KErrNotFound )
- {
- holdFlag.SetBoolean( ETrue );
- // No connected call, find the hold call
- callStateData.SetCallState( EPEStateHeld );
- iViewCommandHandle->HandleCommandL(
- EPhoneViewGetCallIdByState, &callStateData );
-
- if ( callStateData.CallId() == KErrNotFound )
- {
- // No hold call, find the disconnected call
- callStateData.SetCallState( EPEStateDisconnecting );
- iViewCommandHandle->HandleCommandL(
- EPhoneViewGetCallIdByState, &callStateData );
- }
- }
-
- iCallId = callStateData.CallId();
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
-
-
- // Update phone number availability for menu use
- PhoneNumberAvailableInPhoneEngineL( callStateData.CallId() );
-
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::NewL()
-// Constructor
-// (other items were commented in a header).
-// -----------------------------------------------------------
-//
-CPhoneSingleCall* CPhoneSingleCall::NewL(
- MPhoneStateMachine* aStateMachine,
- MPhoneViewCommandHandle* aViewCommandHandle,
- MPhoneCustomization* aPhoneCustomization )
- {
- CPhoneSingleCall* self = new( ELeave ) CPhoneSingleCall(
- aStateMachine, aViewCommandHandle, aPhoneCustomization );
-
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
-
- return self;
- }
-
-// --------------------------------------------------------------
-// CPhoneSingleCall::HandleKeyMessageL
-// --------------------------------------------------------------
-//
-EXPORT_C void CPhoneSingleCall::HandleKeyMessageL(
- TPhoneKeyEventMessages aMessage,
- TKeyCode aCode )
- {
- __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleCall::HandleKeyMessageL()");
- switch ( aCode )
- {
- // send-key
- case EKeyYes:
- if( IsNumberEntryUsedL() )
- {
- if ( IsVideoCallActiveL() )
- {
- HBufC *phoneNumber = HBufC::NewLC( KPhoneNumberEntryBufferSize );
- TPtr ptr( phoneNumber->Des() );
- TPhoneCmdParamString stringParam;
- stringParam.SetString( &ptr );
- iViewCommandHandle->ExecuteCommand(
- EPhoneViewGetNumberFromEntry,
- &stringParam );
- iStateMachine->PhoneEngineInfo()->SetPhoneNumber( ptr ) ;
-
- if ( iStateMachine->PhoneEngineInfo()->PhoneNumberIsServiceCode() ||
- phoneNumber->Des().Length() < KPhoneValidPhoneNumberLength )
- {
- // Send a manual control sequence by providing number
- // information with dial command
- CallFromNumberEntryL();
- }
- else
- {
- iStateMachine->SendPhoneEngineMessage(
- MPEPhoneModel::EPEMessageCheckEmergencyNumber );
- }
- CleanupStack::PopAndDestroy( phoneNumber );
- }
- else
- {
- // Provide number information with dial command
- CallFromNumberEntryL();
- }
- }
- else
- {
- ToggleHoldL();
- }
- break;
-
- default:
- // do base operation
- CPhoneGsmInCall::HandleKeyMessageL( aMessage, aCode );
- break;
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::HandlePhoneEngineMessageL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneSingleCall::HandlePhoneEngineMessageL(
- const TInt aMessage,
- TInt aCallId )
- {
- __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleCall::HandlePhoneEngineMessageL()");
- switch ( aMessage )
- {
- case MEngineMonitor::EPEMessageHeld:
- HandleHeldL( aCallId );
- break;
-
- case MEngineMonitor::EPEMessageConnected:
- HandleConnectedL( aCallId );
- break;
-
- case MEngineMonitor::EPEMessageIncoming:
- HandleIncomingL( aCallId );
- break;
-
- case MEngineMonitor::EPEMessageDialing:
- HandleDiallingL( aCallId );
- break;
-
- /* Flow through */
- case MEngineMonitor::EPEMessageRemoteTerminated:
- case MEngineMonitor::EPEMessageDisconnecting:
- iViewCommandHandle->ExecuteCommandL( EPhoneViewHideNaviPaneAudioVolume );
- CPhoneGsmInCall::HandlePhoneEngineMessageL( aMessage, aCallId );
- break;
-
- case MEngineMonitor::EPEMessageInValidEmergencyNumber:
- SendGlobalErrorNoteL( EPhoneNoteTextNotAllowed );
- break;
-
- case MEngineMonitor::EPEMessageValidEmergencyNumber:
- DialVoiceCallL();
- break;
-
- default:
- CPhoneGsmInCall::HandlePhoneEngineMessageL( aMessage, aCallId );
- break;
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::HandleCommandL
-// -----------------------------------------------------------
-//
-EXPORT_C TBool CPhoneSingleCall::HandleCommandL( TInt aCommand )
- {
- __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleCall::HandleCommandL()");
- TBool commandStatus = ETrue;
-
- switch( aCommand )
- {
- /* Flow through */
- case EPhoneInCallCmdHold:
- case EPhoneInCallCmdUnhold:
- ToggleHoldL();
- break;
-
- case EPhoneInCallCmdNewCall:
- LaunchNewCallQueryL();
- break;
-
- case EPhoneInCallCmdNewCallCall:
- CallFromNewCallQueryL();
- break;
-
- case EPhoneInCallCmdSwitchToVideo:
- SwitchToVideoL();
- break;
-
- case EPhoneInCallCmdSwitchToVoice:
- SwitchToVoiceL();
- break;
-
- case EPhoneCmdYesSwitchToVideo:
- // Set current call id
- iStateMachine->SetCallId( iCallId );
- iStateMachine->SendPhoneEngineMessage(
- CPEPhoneModelIF::EPEMessageSwitchToVideoOrVoice );
- break;
-
- /* Flow through */
- case EPhoneCmdNoSwitchToVideo:
- case EPhoneCmdNoSwitchToVoice:
- // Sets touch buttons to correct status if 'No' command has occured.
- iViewCommandHandle->ExecuteCommand( EPhoneResetTouchButtons );
- break;
-
- case EPhoneCmdYesSwitchToVoice:
- // Set current call id
- iStateMachine->SetCallId( iCallId );
- if( IsVideoCall( iCallId ) )
- {
- // Video call can be released only after we get response to VT Shutdown Command
- CPhoneMediatorFactory::Instance()->Sender()->IssueCommand( KMediatorVideoTelephonyDomain,
- KCatPhoneToVideotelCommands,
- EVtCmdReleaseDataport,
- TVersion( KPhoneToVideotelCmdVersionMajor,
- KPhoneToVideotelCmdVersionMinor,
- KPhoneToVideotelCmdVersionBuild ),
- KNullDesC8,
- CPhoneSwitchToVideoOrVoiceCommand::NewL( *iStateMachine ) );
- }
- else
- {
- iStateMachine->SendPhoneEngineMessage(
- CPEPhoneModelIF::EPEMessageSwitchToVideoOrVoice );
- }
- break;
-
- case EPhoneVideoSharing:
- case EPhoneVideoSharingOpt2:
- case EPhoneVideoSharingOpt3:
- {
- TPhoneCmdParamInteger command;
- command.SetInteger( aCommand );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSendAiwCommand,
- &command );
- }
- break;
-
- default:
- commandStatus = CPhoneGsmInCall::HandleCommandL( aCommand );
- break;
- }
-
- return commandStatus;
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::OpenMenuBarL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneSingleCall::OpenMenuBarL()
- {
- __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleCall::OpenMenuBarL()");
-
- if ( IsVideoCall ( iCallId ))
- {
- OpenVideoCallMenuBarL();
- }
- else
- {
- CPhoneGsmInCall::OpenMenuBarL();
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::CallId
-// -----------------------------------------------------------
-//
-EXPORT_C TInt CPhoneSingleCall::CallId() const
- {
- return iCallId;
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::OpenVideoCallMenuBarL
-// -----------------------------------------------------------
-//
-void CPhoneSingleCall::OpenVideoCallMenuBarL()
- {
- __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleCall::OpenVideoCallMenuBarL()");
- if( FeatureManager::FeatureSupported( KFeatureIdCsVideoTelephony ) )
- {
- TInt resourceId;
-
- if ( IsNumberEntryUsedL() )
- {
- resourceId = EPhoneVideoCallMenubarWithNumberEntry;
- }
- else
- {
- resourceId = EPhoneVideoCallMenubar;
- }
-
- TPhoneCmdParamInteger integerParam;
- integerParam.SetInteger(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( resourceId ) );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen,
- &integerParam );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::HandleHeldL
-// -----------------------------------------------------------
-//
-void CPhoneSingleCall::HandleHeldL( TInt aCallId )
- {
- __LOGMETHODSTARTEND( EPhoneUIStates,
- "CPhoneSingleCall::HandleHeldL()");
- TPhoneCmdParamCallHeaderData callHeaderParam;
- callHeaderParam.SetCallState( EPEStateHeld );
-
- TInt callLabelId;
- TBuf<KPhoneCallHeaderLabelMaxLength> labelText( KNullDesC );
- callLabelId = CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( EPhoneCallOnHold );
-
- StringLoader::Load(
- labelText,
- callLabelId,
- CCoeEnv::Static() );
- callHeaderParam.SetLabelText( labelText );
-
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewUpdateBubble, aCallId, &callHeaderParam );
-
- // Set Hold flag to view
- TPhoneCmdParamBoolean holdFlag;
- holdFlag.SetBoolean( ETrue );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
-
- if ( !FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
- {
- HandleHoldNoteL( aCallId , ETrue );
- }
-
- UpdateInCallCbaL();
- SetTouchPaneButtons( EPhoneIncallHeldButtons );
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::HandleConnectedL
-// -----------------------------------------------------------
-//
-void CPhoneSingleCall::HandleConnectedL( TInt aCallId )
- {
- __LOGMETHODSTARTEND( EPhoneUIStates,
- "CPhoneSingleCall::HandleConnectedL()");
-
- // Show bubble
- TPhoneCmdParamCallHeaderData callHeaderParam;
- callHeaderParam.SetCallState( EPEStateConnected );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId,
- &callHeaderParam );
-
- // Get initial hold flag from view.
- TPhoneCmdParamBoolean holdFlag;
- iViewCommandHandle->ExecuteCommandL( EPhoneViewGetHoldFlag, &holdFlag );
-
- if ( holdFlag.Boolean() )
- {
- // Update hold flag to view
- holdFlag.SetBoolean( EFalse );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
-
- if ( !FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
- {
- HandleHoldNoteL( aCallId , EFalse );
- }
- }
-
- UpdateInCallCbaL();
- SetTouchPaneButtons( EPhoneIncallButtons );
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::ToggleHold
-// -----------------------------------------------------------
-//
-void CPhoneSingleCall::ToggleHoldL()
- {
- __LOGMETHODSTARTEND( EPhoneUIStates,
- "CPhoneSingleCall::ToggleHoldL()");
-
- TPECallControlCaps callControlCaps =
- iStateMachine->PhoneEngineInfo()->CallControlCaps( iCallId );
-
- if ( callControlCaps & MCCECallObserver::ECCECapsHold )
- {
- iStateMachine->SetCallId( iCallId );
- iStateMachine->SendPhoneEngineMessage(
- CPEPhoneModelIF::EPEMessageHold );
- }
- else if ( callControlCaps & MCCECallObserver::ECCECapsResume )
- {
- iStateMachine->SetCallId( iCallId );
- iStateMachine->SendPhoneEngineMessage(
- CPEPhoneModelIF::EPEMessageResume );
- }
- else
- {
- SendGlobalInfoNoteL( EPhoneNoteTextNotAllowed );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::HandleIncomingL
-// -----------------------------------------------------------
-//
-void CPhoneSingleCall::HandleIncomingL( TInt aCallId )
- {
- __LOGMETHODSTARTEND( EPhoneUIStates,
- "CPhoneSingleCall::HandleIncomingL()");
-
- BeginUiUpdateLC();
-
- TPhoneCmdParamBoolean dialerParam;
- dialerParam.SetBoolean( ETrue );
-
- // Get allow waiting call header param value.
- AllowShowingOfWaitingCallHeaderL( dialerParam );
-
- // Display incoming call
- DisplayIncomingCallL( aCallId, dialerParam );
-
- // Show incoming call buttons
- SetTouchPaneButtons( EPhoneWaitingCallButtons );
-
- if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke )
- && !CPhoneCenRepProxy::Instance()->
- IsTelephonyFeatureSupported( KTelephonyLVFlagAllowUnlockOnIncoming )
- && ( IsKeyLockOn() || IsAutoLockOn() ) )
- {
- DisableCallUIL();
- }
- else
- {
- // if keys have been locked, disable keylock without information note
- if ( IsKeyLockOn() )
- {
- iViewCommandHandle->ExecuteCommandL( EPhoneViewDisableKeyLockWithoutNote );
- }
- }
-
- if( CPhoneCenRepProxy::Instance()->
- IsTelephonyFeatureSupported( KTelephonyLVFlagDisableCallControlHardKeysWhileLocked )
- && ( IsKeyLockOn() || IsAutoLockOn() ) )
- {
- DisableHWKeysL();
- }
-
- EndUiUpdate();
-
- // This query is required to dismiss
- // Operation cannot be completed in waiting and single state
- if ( iSwitchToVideoQuery )
- {
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveQuery );
- }
-
- // Go to incoming state
- UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
- iStateMachine->ChangeState( EPhoneStateWaitingInSingle );
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::DisplayIncomingCallL
-// -----------------------------------------------------------
-//
-void CPhoneSingleCall::DisplayIncomingCallL(
- TInt aCallId,
- const TPhoneCmdParamBoolean aCommandParam )
- {
- __LOGMETHODSTARTEND( EPhoneUIStates,
- "CPhoneSingleCall::DisplayIncomingCallL()");
- // Close menu bar, if it is displayed
- iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
-
- // Cannot delete active note, e.g. New call query,
- // but show waiting note with or without caller name
- if ( IsAnyQueryActiveL() ||
- ( !aCommandParam.Boolean() && iOnScreenDialer ) )
- {
- CallWaitingNoteL( aCallId );
- }
- else
- {
- // Remove any phone dialogs if they are displayed
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs );
- }
-
- // Indicate that the Phone needs to be sent to the background if
- // an application other than the top application is in the foreground
- TPhoneCmdParamBoolean booleanParam;
- booleanParam.SetBoolean( !TopAppIsDisplayedL() );
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewSetNeedToSendToBackgroundStatus,
- &booleanParam );
-
- // Bring Phone app in the foreground
- TPhoneCmdParamInteger uidParam;
- uidParam.SetInteger( KUidPhoneApplication.iUid );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewBringAppToForeground,
- &uidParam );
-
- // Set Phone as the top application
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetTopApplication,
- &uidParam );
-
- DisplayHeaderForCallComingInL( aCallId, ETrue ); //waiting call
- }
-
-// ---------------------------------------------------------
-// CPhoneSingleCall::CallFromNewCallQueryL
-// ---------------------------------------------------------
-//
-void CPhoneSingleCall::CallFromNewCallQueryL()
- {
- __LOGMETHODSTARTEND( EPhoneUIStates,
- "CPhoneSingleCall::CallFromNewCallQueryL()");
- // First get the phone number from the dialog
- TPhoneCmdParamString phoneNumberParam;
- HBufC *content = HBufC::NewLC( KPhoneNumberEntryBufferSize );
- TPtr ptr( content->Des() );
- phoneNumberParam.SetString( &ptr );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewGetTextQueryContent,
- &phoneNumberParam );
-
- // Store the phone number
- iStateMachine->PhoneEngineInfo()->SetPhoneNumber( ptr );
-
- // clean up stack
- CleanupStack::PopAndDestroy( content );
-
- DialVoiceCallL();
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::HandleDiallingL
-// -----------------------------------------------------------
-//
-void CPhoneSingleCall::HandleDiallingL( TInt aCallId )
- {
- __LOGMETHODSTARTEND( EPhoneUIStates,
- "CPhoneSingleCall::HandleDiallingL()");
-
- BeginTransEffectLC( ENumberEntryClose );
- BeginUiUpdateLC();
-
- SetNumberEntryVisibilityL(EFalse);
-
- // Display call setup
- DisplayCallSetupL( aCallId );
-
- // Show incoming call buttons
- SetTouchPaneButtons( EPhoneCallSetupAndSingleButtons );
-
- EndUiUpdate();
-
- EndTransEffect();
-
- // Go to call setup state
- UpdateCbaL( EPhoneCallHandlingCallSetupCBA );
- iStateMachine->ChangeState( EPhoneStateCallSetupInSingle );
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::DisplayCallSetupL
-// -----------------------------------------------------------
-//
-void CPhoneSingleCall::DisplayCallSetupL( TInt aCallId )
- {
- __LOGMETHODSTARTEND( EPhoneUIStates,
- "CPhoneSingleCall::DisplayCallSetupL()");
- // Close menu bar, if it is displayed
- iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
-
- // Remove dialogs if necessary
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs );
-
- // Capture keys when the phone is dialling
- CaptureKeysDuringCallNotificationL( ETrue );
-
- // Force telephony to the foreground
- TPhoneCmdParamInteger uidParam;
- uidParam.SetInteger( KUidPhoneApplication.iUid );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewBringAppToForeground,
- &uidParam );
-
- // Display call setup header
- DisplayHeaderForOutgoingCallL( aCallId );
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::SetCallHoldL
-// -----------------------------------------------------------
-//
-void CPhoneSingleCall::SetCallHoldL()
- {
- __LOGMETHODSTARTEND( EPhoneUIStates,
- "CPhoneSingleCall::SetCallHold()");
-
- TPhoneCmdParamCallStateData callStateData;
- callStateData.SetCallId( iCallId );
- iViewCommandHandle->HandleCommandL( EPhoneViewGetCallState,
- &callStateData );
-
- if( callStateData.CallState() == EPEStateConnected && !IsVideoCallActiveL() )
- {
- iStateMachine->SetCallId( iCallId );
- iStateMachine->SendPhoneEngineMessage(
- CPEPhoneModelIF::EPEMessageHold );
- }
- else
- {
- // Show not allowed note
- SendGlobalInfoNoteL( EPhoneNoteTextNotAllowed );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::SetCallResumeL
-// -----------------------------------------------------------
-//
-void CPhoneSingleCall::SetCallResumeL()
- {
- __LOGMETHODSTARTEND( EPhoneUIStates,
- "CPhoneSingleCall::SetCallHold()");
-
- TPhoneCmdParamCallStateData callStateData;
- callStateData.SetCallId( iCallId );
- iViewCommandHandle->HandleCommandL( EPhoneViewGetCallState,
- &callStateData );
-
- if( callStateData.CallState() == EPEStateHeld )
- {
- iStateMachine->SetCallId( iCallId );
- iStateMachine->SendPhoneEngineMessage(
- CPEPhoneModelIF::EPEMessageResume );
- }
- else
- {
- // Show not allowed note
- SendGlobalInfoNoteL( EPhoneNoteTextNotAllowed );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::SwitchToVideoL
-// -----------------------------------------------------------
-//
-void CPhoneSingleCall::SwitchToVideoL()
- {
- __LOGMETHODSTARTEND( EPhoneUIStates,
- "CPhoneSingleCall::SwitchToVideoL()");
-
- if( FeatureManager::FeatureSupported( KFeatureIdCsVideoTelephony ) )
- {
- TInt networkMode( CPhonePubSubProxy::Instance()->Value( KPSUidNetworkInfo,
- KNWTelephonyNetworkMode ) );
- TBool restoreOngoing( CPhonePubSubProxy::Instance()->Value( KUidSystemCategory,
- conn::KUidBackupRestoreKey ));
-
- TBool resetTouchButtons = EFalse;
-
- if ( networkMode != ENWNetworkModeWcdma )
- {
- // We aren't in 3G, video call not possible
- SendGlobalInfoNoteL( EPhoneInformationNoNetworkSupportForVideoCallNote );
- resetTouchButtons = ETrue;
- }
- else if ( restoreOngoing & ( conn::EBURRestoreFull | conn::EBURRestorePartial ))
- {
- // MC restore ongoing
- SendGlobalInfoNoteL( EPhoneInformationVideoCallNotAllowedDuringRestoreNote );
- resetTouchButtons = ETrue;
- }
- else
- {
- iSwitchToVideoQuery = ETrue;
- ShowQueryL( EPhoneSwitchToVideoQuery );
- iSwitchToVideoQuery = EFalse;
- }
-
- if( resetTouchButtons )
- {
- // Sets touch buttons to correct status if error has occured.
- iViewCommandHandle->ExecuteCommand( EPhoneResetTouchButtons );
- }
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneSingleCall::SwitchToVoiceL
-// -----------------------------------------------------------
-//
-void CPhoneSingleCall::SwitchToVoiceL()
- {
- __LOGMETHODSTARTEND( EPhoneUIStates,
- "CPhoneSingleCall::SwitchToVoiceL()");
-
- ShowQueryL( EPhoneSwitchToVoiceQuery );
- }
-
-// End of File