--- a/phoneapp/phoneuicontrol/src/cphonestate.cpp Fri May 14 15:51:57 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,4768 +0,0 @@
-/*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Implementation of CPhoneState class.
-*
-*/
-
-
-// INCLUDE FILES
-#include <avkon.rsg>
-#include <bautils.h>
-#include <eikenv.h>
-#include <StringLoader.h>
-#include <pevirtualengine.h>
-#include <mpeclientinformation.h>
-#include <mpeengineinfo.h>
-#include <cpephonemodelif.h>
-#include <featmgr.h>
-#include <rconnmon.h>
-#include <Profile.hrh>
-#include <PUAcodes.hrh>
-#include <AknUtils.h>
-#include <telephonyvariant.hrh>
-#include <aknsoundsystem.h>
-#include <wlaninternalpskeys.h>
-#include <btengdomainpskeys.h>
-#include <btengdomaincrkeys.h>
-#include <settingsinternalcrkeys.h>
-#include <starterclient.h>
-#include <rsssettings.h>
-#include <UikonInternalPSKeys.h>
-#include <telephonydomainpstypes.h>
-#include <telinformationpskeys.h>
-#include <coreapplicationuisdomainpskeys.h>
-#include <mccecall.h>
-#include <ccpdefs.h>
-#include <LogsDomainCRKeys.h>
-#include <spsettings.h>
-#include <startupdomainpskeys.h>
-#include <MediatorDomainUIDs.h>
-#include <videotelcontrolmediatorapi.h>
-#include <textresolver.h>
-#include <phoneappvoipcommands.hrh>
-#include <hwrmdomainpskeys.h>
-
-#include "phoneui.pan"
-#include "cphonestate.h"
-#include "mphonestatemachine.h"
-#include "mphoneviewcommandhandle.h"
-#include "tphonecmdparamboolean.h"
-#include "tphonecmdparaminteger.h"
-#include "tphonecmdparamkeyevent.h"
-#include "tphonecmdparamdynmenu.h"
-#include "tphonecmdparamcallheaderdata.h"
-#include "tphonecmdparamincallindicatordata.h"
-#include "tphonecmdparamnote.h"
-#include "tphonecmdparamkeycapture.h"
-#include "tphonecmdparamglobalnote.h"
-#include "tphonecmdparamquery.h"
-#include "tphonecmdparamstring.h"
-#include "tphonecmdparamcallstatedata.h"
-#include "tphonecmdparambitmap.h"
-#include "tphonecmdparamaudiooutput.h"
-#include "tphonecmdparamaudioavailability.h"
-#include "tphonecmdparamappinfo.h"
-#include "tphonecmdparamtranseffect.h"
-#include "tphonecmdparamringtone.h"
-#include "tphonecmdparamcustomdialer.h"
-#include "cphonekeys.h"
-#include "phoneui.hrh"
-#include "phonerssbase.h"
-#include "cphonebtaadisconnecthandler.h"
-#include "cphonemainresourceresolver.h"
-#include "cphonecenrepproxy.h"
-#include "cphonepubsubproxy.h"
-#include "phoneviewcommanddefinitions.h"
-#include "phonelogger.h"
-#include "phonestatedefinitions.h"
-#include "cphonetimer.h"
-#include "cphonereconnectquery.h"
-#include "mphoneerrormessageshandler.h"
-#include "cphoneclearblacklist.h"
-#include "mphonecustomization.h"
-#include "cphonemainerrormessageshandler.h"
-#include "cphoneaccessorybthandler.h"
-#include "cphonemediatorfactory.h"
-#include "mphonemediatormessage.h"
-#include "cphonemediatorsender.h"
-#include "cphonereleasecommand.h"
-#include "cphonecontinueemergencycallcommand.h"
-#include "cphonecallheadermanager.h"
-#include "cphonenumberentrymanager.h"
-#include "tphonecmdparamsfidata.h"
-#include "mphonestorage.h"
-#include "phoneconstants.h"
-#include "cphoneclearblacklist.h"
-
-// ================= MEMBER FUNCTIONS =======================
-
-EXPORT_C CPhoneState::CPhoneState(
- MPhoneStateMachine* aStateMachine,
- MPhoneViewCommandHandle* aViewCommandHandle,
- MPhoneCustomization* aCustomization) :
- iStateMachine( aStateMachine ),
- iViewCommandHandle( aViewCommandHandle ),
- iCustomization( aCustomization ),
- iEnv( *CEikonEnv::Static() )
- {
- // Need to get current SimState for inherited classis
- iPreviousSimState = SimState();
- __ASSERT_ALWAYS(
- aStateMachine && aViewCommandHandle,
- Panic( EPhoneCtrlParameterNotInitialized ) );
- if ( FeatureManager::FeatureSupported( KFeatureIdOnScreenDialer ) )
- {
- iOnScreenDialer = ETrue;
- }
- }
-
-EXPORT_C void CPhoneState::BaseConstructL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::BaseConstructL() ");
- if ( !iCbaManager )
- {
- iCbaManager = CPhoneCbaManager::NewL(
- this,
- *iViewCommandHandle,
- *iStateMachine );
- }
- }
-
-EXPORT_C CPhoneState::~CPhoneState()
- {
- if( iAlsLineChangeKeyPressTimer )
- {
- if( iAlsLineChangeKeyPressTimer->IsActive() )
- {
- iAlsLineChangeKeyPressTimer->CancelTimer();
- }
- delete iAlsLineChangeKeyPressTimer;
- }
- delete iNumberEntryManager;
- delete iCallHeaderManager;
- delete iCbaManager;
- }
-
-// <-------------------------- PHONE ENGINE EVENTS --------------------------->
-
-// -----------------------------------------------------------
-// CPhoneState::HandlePhoneEngineMessageL
-// Default handling for Phone Engine messages
-// (other items were commented in a header).
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandlePhoneEngineMessageL(
- const TInt aMessage,
- TInt aCallId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandlePhoneEngineMessageL() ");
-
- CPhoneAccessoryBTHandler* accessoryBtHandler;
-
- switch ( aMessage )
- {
- case MEngineMonitor::EPEMessageNetworkRegistrationStatusChange:
- {
- __PHONELOG1( EBasic, EPhoneControl,
- "PHONEUI_ERROR: EPEMessageNetworkRegistrationStatusChange - RegistrationStatus =%d ",
- iStateMachine->PhoneEngineInfo()->NetworkRegistrationStatus());
- }
- break;
-
- case MEngineMonitor::EPEMessageAudioMuteChanged:
- HandleAudioMuteChangedL();
- break;
-
- case MEngineMonitor::EPEMessageAudioOutputChanged:
- HandleAudioOutputChangedL();
- // Go to current state implementation
- iCbaManager->UpdateInCallCbaL();
- break;
-
- case MEngineMonitor::EPEMessageAvailableAudioOutputsChanged:
- HandleAudioAvailableOutputChangedL();
- if ( iStateMachine->PhoneEngineInfo()->AudioOutput() != EPENotActive )
- {
- // Go to current state implementation
- iCbaManager->UpdateInCallCbaL();
- }
- break;
-
- case MEngineMonitor::EPEMessageChangedCallDuration:
- HandleChangedCallDurationL( aCallId );
- break;
-
- case MEngineMonitor::EPEMessageRemoteBusy:
- HandleRemoteBusyL( aCallId );
- break;
-
- case MEngineMonitor::EPEMessageCallWaiting:
- SendGlobalInfoNoteL( EPhoneWaitingText );
- break;
-
- case MEngineMonitor::EPEMessageProfileChanged:
- {
- TPhoneCmdParamBoolean keypadVolumeParam;
- if ( iStateMachine->PhoneEngineInfo()->KeypadVolume() == 0 )
- {
- iViewCommandHandle->ExecuteCommandL( EPhoneViewKeypadAudioDisabled );
- }
- else
- {
- iViewCommandHandle->ExecuteCommandL( EPhoneViewKeypadAudioEnabled );
- }
- UpdateProfileDisplayL();
- }
- break;
-
- case MEngineMonitor::EPEMessageRemoteTerminated:
- // Close menu bar, if it is displayed, for call ending note
- iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
- /* Flow through */
- case MEngineMonitor::EPEMessageDisconnecting:
- HandleDisconnectingL( aCallId );
- break;
-
- case MEngineMonitor::EPEMessageTransferDone:
- SendGlobalInfoNoteL( EPhoneInCallTransferred );
- break;
-
- case MEngineMonitor::EPEMessageInitiatedEmergencyCall:
- HandleInitiatedEmergencyCallL( aCallId );
- break;
-
- case MEngineMonitor::EPEMessageInitiatedEmergencyWhileActiveVideo:
- HandleInitiatedEmergencyWhileActiveVideoL();
- break;
-
- case MEngineMonitor::EPEMessageShowIMEI:
- // Stop playing DTMF tone
- iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageEndDTMF );
- HandleShowImeiL();
- break;
-
- case MEngineMonitor::EPEMessageCallSecureStatusChanged:
- HandleCallSecureStatusChangeL( aCallId );
-
- if ( iCustomization )
- {
- iCustomization->HandlePhoneEngineMessageL( aMessage,
- aCallId );
- }
- break;
-
- case MEngineMonitor::EPEMessageActivateWarrantyMode:
- // Stop playing DTMF tone
- iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageEndDTMF );
- HandleShowLifeTimerL();
- break;
-
- case MEngineMonitor::EPEMessageIssuingUSSDRequest:
- {
- // Enable global notes
- TPhoneCmdParamBoolean globalNotifierParam;
- globalNotifierParam.SetBoolean( EFalse );
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewSetGlobalNotifiersDisabled,
- &globalNotifierParam );
-
- if ( !IsOnScreenDialerSupported() && IsNumberEntryUsedL() )
- {
- // Remove number entry from screen
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewRemoveNumberEntry );
- }
- else if ( IsOnScreenDialerSupported() )
- {
- NumberEntryClearL();
- }
- }
- break;
-
- case MEngineMonitor::EPEMessageIssuedUSSDRequest:
- // Go to current state implementation
- iCbaManager->UpdateInCallCbaL();
- break;
-
- // *#9990#
- case MEngineMonitor::EPEMessageShowBTLoopback:
- // Stop playing DTMF tone
- iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageEndDTMF );
- accessoryBtHandler = CPhoneAccessoryBTHandler::NewLC(
- iViewCommandHandle, iStateMachine, this );
- accessoryBtHandler->ShowBTLoopbackL();
- CleanupStack::PopAndDestroy( accessoryBtHandler );
- break;
-
- // *#2820#
- case MEngineMonitor::EPEMessageShowBTDeviceAddress:
- // Stop playing DTMF tone
- iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageEndDTMF );
- accessoryBtHandler = CPhoneAccessoryBTHandler::NewLC(
- iViewCommandHandle, iStateMachine, this );
- accessoryBtHandler->ShowBTAddressL();
- CleanupStack::PopAndDestroy( accessoryBtHandler );
- break;
-
- // *#7370#
- case MEngineMonitor::EPEMessageActivateRfsDeep:
- // Stop playing DTMF tone
- iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageEndDTMF );
- // Launch RFS
- iViewCommandHandle->ExecuteCommandL( EPhoneViewLaunchRfsDeep );
- if ( !IsOnScreenDialerSupported() )
- {
- // Do state-specific operation when number entry is cleared
- HandleNumberEntryClearedL();
- }
- break;
-
- // *#7780#
- case MEngineMonitor::EPEMessageActivateRfsNormal:
- // Stop playing DTMF tone
- iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageEndDTMF );
- // Launch RFS
- iViewCommandHandle->ExecuteCommandL( EPhoneViewLaunchRfsNormal );
- if ( !IsOnScreenDialerSupported() )
- {
- // Do state-specific operation when number entry is cleared
- HandleNumberEntryClearedL();
- }
- break;
- // *#62209526#
- case MEngineMonitor::EPEMessageShowWlanMacAddress:
- // Stop playing DTMF tone
- iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageEndDTMF );
- ShowWlanMacAddressL();
- break;
-
- case MEngineMonitor::EPEMessageThumbnailLoadingCompleted:
- // Update call buble
- UpdateRemoteInfoDataL( aCallId );
- break;
-
- case MEngineMonitor::EPEMessageRemotePartyInfoChanged:
- UpdateRemoteInfoDataL ( aCallId );
- break;
-
- case MEngineMonitor::EPEMessageSIMStateChanged:
- __PHONELOG1( EBasic, EPhoneControl, "CPhoneState::HandlePhoneEngineMessageL - simStateChanged =%d", SimState() );
- HandleSimStateChangedL();
- break;
-
- case MEngineMonitor::EPEMessageShowIncCallGroupIndex:
- HandleCugInUseNoteL();
- break;
-
- // *#2873#
- case MEngineMonitor::EPEMessageBTDebugMode:
- accessoryBtHandler = CPhoneAccessoryBTHandler::NewLC(
- iViewCommandHandle, iStateMachine, this );
- accessoryBtHandler->SetBTDebugModeL();
- CleanupStack::PopAndDestroy( accessoryBtHandler );
- break;
-
- default:
-
- TBool handled( EFalse );
-
- if ( iCustomization )
- {
- handled = iCustomization->HandlePhoneEngineMessageL(
- aMessage, aCallId );
- }
-
- if ( EFalse == handled )
- {
- MPhoneMediatorMessage* mediatorMessage = CPhoneMediatorFactory::Instance()->MediatorMessage( aMessage, aCallId );
- if( mediatorMessage )
- {
- CleanupDeletePushL( mediatorMessage );
- mediatorMessage->ExecuteL();
- CleanupStack::PopAndDestroy( mediatorMessage );
- mediatorMessage = NULL;
- }
- }
- break;
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleAudioMuteChangedL
-// Default handling for EPEMessageAudioMuteChanged message
-// (other items were commented in a header).
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleAudioMuteChangedL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleAudioMuteChangedL() ");
- __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
- Panic( EPhoneCtrlInvariant ) );
-
- TPhoneCmdParamBoolean booleanParam;
- const TBool audioMute = iStateMachine->PhoneEngineInfo()->AudioMute();
- booleanParam.SetBoolean( audioMute );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewActivateMuteUIChanges,
- &booleanParam );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleAudioOutputChangedL
-// Default handling for EPEMessageAudioOutputChanged message
-// (other items were commented in a header).
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleAudioOutputChangedL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleAudioOutputChangedL() ");
- __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
- Panic( EPhoneCtrlInvariant ) );
-
- TPhoneCmdParamAudioOutput outputParam;
-
- // Output
- const TPEAudioOutput audioOutput =
- iStateMachine->PhoneEngineInfo()->AudioOutput();
- outputParam.SetAudioOutput( audioOutput );
-
- // view update
- iViewCommandHandle->ExecuteCommandL( EPhoneViewActivateAudioPathUIChanges,
- &outputParam );
-
- // Previous Output
- TPEPhoneAudioRouteParameters RouteParameters = iStateMachine->
- PhoneEngineInfo()->RouteParameters();
- const TPEAudioOutput previousOutput =
- RouteParameters.iPreviousOutput;
-
- // BT availability
- TBool btAvailable = iStateMachine->PhoneEngineInfo()->AudioOutputAvailable(
- EPEBTAudioAccessory );
-
- // Show note or BT disconnect handler
- if ( audioOutput != EPENotActive &&
- previousOutput == EPEBTAudioAccessory &&
- !btAvailable )
- {
- CPhoneBtaaDisconnectHandler::InstanceL()->HandleConnectionLostL();
- }
- else if ( audioOutput == EPEBTAudioAccessory &&
- previousOutput != EPEBTAudioAccessory &&
- btAvailable )
- {
- CPhoneAccessoryBTHandler* bt = CPhoneAccessoryBTHandler::NewLC(
- iViewCommandHandle, iStateMachine, this );
- bt->ShowBTActivatedL();
- CleanupStack::PopAndDestroy( bt );
- }
- else if ( audioOutput == EPENotActive &&
- CPhoneBtaaDisconnectHandler::InstanceL()->IsQuery() )
- {
- CPhoneBtaaDisconnectHandler::InstanceL()->Cancel();
- }
- else if ( RouteParameters.iShowNote && audioOutput == EPELoudspeaker )
- {
- CAknKeySoundSystem* keySounds =
- static_cast<CAknAppUi*>( iEnv.EikAppUi() )->KeySounds();
- keySounds->PlaySound( EAvkonSIDIHFActive );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleSimStateChangedL
-// Handles changes in the SIM card state.
-// -----------------------------------------------------------
-//
-void CPhoneState::HandleSimStateChangedL()
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::HandleSimStateChangedL()" );
- CPhoneMainResourceResolver& resolver = *CPhoneMainResourceResolver::Instance();
- TPESimState simState = SimState();
-
- __PHONELOG2( EBasic, EPhoneControl, "SIM state was changed from %d to %d", iPreviousSimState, simState );
-
- switch ( simState )
- {
- case EPESimUsable: // Falls through.
- case EPESimReadable: // Falls through.
- case EPESimNotReady:
- {
- if ( iPreviousSimState == EPESimNotPresent )
- {
- __PHONELOG( EBasic, EPhoneControl, "SIM card was inserted, rebooting the phone" );
- RStarterSession starterSession;
- User::LeaveIfError( starterSession.Connect() );
- CleanupClosePushL( starterSession );
-
- HBufC* queryText = StringLoader::LoadLC( resolver.ResolveResourceID( EPhoneRebootRequired ) );
-
- TPhoneCmdParamQuery queryParams;
- queryParams.SetCommandParamId( TPhoneCommandParam::EPhoneParamRebootQuery );
- queryParams.SetQueryPrompt( *queryText );
- queryParams.SetDefaultCba( R_AVKON_SOFTKEYS_OK_EMPTY );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewShowQuery, &queryParams );
-
- starterSession.Reset( RStarterSession::ESIMStatusChangeReset );
- CleanupStack::PopAndDestroy( 2, &starterSession ); // queryText
- }
- break;
- }
- case EPESimNotPresent:
- {
- if ( iPreviousSimState == EPESimUsable ||
- iPreviousSimState == EPESimReadable ||
- iPreviousSimState == EPESimNotReady )
- {
- __PHONELOG( EBasic, EPhoneControl, "SIM card was removed" );
-
- TPhoneCmdParamGlobalNote globalNoteParam;
- globalNoteParam.SetType( EAknGlobalInformationNote );
- globalNoteParam.SetTone( EAvkonSIDNoSound );
-
- globalNoteParam.SetTextResourceId(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( EPhoneSimRemoved ) );
-
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewShowGlobalNote, &globalNoteParam );
-
- }
- // Show security note, if SIM not present and KFeatureIdFfSimlessOfflineSupport is disabled.
- else if ( !FeatureManager::FeatureSupported( KFeatureIdFfSimlessOfflineSupport ) &&
- ( iPreviousSimState != EPESimNotSupported ) )
- {
- StartShowSecurityNoteL();
- }
- break;
- }
- default:
- break;
- }
-
- iPreviousSimState = simState;
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::IsValidAlphaNumericKey
-// Checks is the key event a number, a special character
-// or if VoIP is enabled some other character
-// -----------------------------------------------------------------------------
-//
-TBool CPhoneState::IsValidAlphaNumericKey( const TKeyEvent& aKeyEvent,
- TEventCode aEventCode )
- {
- TBool ret(EFalse);
-
- const TBool numericKeyEntered( CPhoneKeys::IsNumericKey(
- aKeyEvent, aEventCode ) );
-
- // a numeric key (1,2,3,4,6,7,8,9,0,+,*,p,w )
- // or
- // a letter from fullscreen qwerty, miniqwerty or handwriting
- // when voip is enabled
- if ( numericKeyEntered
- || IsAlphanumericSupportedAndCharInput( aKeyEvent ) )
- {
- ret= ETrue;
- }
-
- return ret;
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::CustomizeCBAForPhoneNumber
-//
-// -----------------------------------------------------------------------------
-//
-void CPhoneState::CustomizeCbaForPhoneNumberL()
- {
- if ( !FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) &&
- iCustomization &&
- iCustomization->AllowAlphaNumericMode() )
- {
- // Get the number entry contents
- HBufC* phoneNumber = PhoneNumberFromEntryLC();
-
- TPhoneCmdParamInteger integerParam;
-
- //only charaters from set { 0, .., 9, *, #, +, p, w, P, W } used
- if ( CPhoneKeys::Validate( phoneNumber->Des()) )
- {
- integerParam.SetInteger( CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( EPhoneNumberAcqCBA ) );
- }
- //other characters
- else
- {
- integerParam.SetInteger( iCustomization->CustomizeSoftKeys() );
- }
-
- iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateCba, &integerParam );
- CleanupStack::PopAndDestroy( phoneNumber );
- }
-
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::IsTouchDTmfDialerOn
-// -----------------------------------------------------------------------------
-//
-TBool CPhoneState::IsTouchDTmfDialerOn() const
- {
- TBool status( EFalse );
- if ( IsOnScreenDialerSupported() )
- {
- TBool isDialerVisible( EFalse );
- TRAP_IGNORE( isDialerVisible = IsDTMFEditorVisibleL() );
-
- if ( isDialerVisible )
- {
- status = ETrue;
- }
- }
- return status;
- }
-// -----------------------------------------------------------------------------
-// CPhoneState::SendDtmfKeyEventL
-// send dtmf event when,
-// -touch dtmf dialer is NOT visible
-// -query is not active
-// -menubar is not open
-// -----------------------------------------------------------------------------
-//
-void CPhoneState::SendDtmfKeyEventL( const TKeyEvent& aKeyEvent,
- TEventCode aEventCode )
- {
-
- if ( !IsTouchDTmfDialerOn()
- && !IsAnyQueryActiveL()
- && !IsMenuBarVisibleL() )
- {
- // Send the key event to the phone engine.
- SendKeyEventL( aKeyEvent, aEventCode );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::IsKeyEventFurtherProcessed
-// -----------------------------------------------------------------------------
-//
-TBool CPhoneState::IsKeyEventFurtherProcessedL( const TKeyEvent& aKeyEvent ) const
- {
- // While being in some special keyboard mode (Full Screen&mini QWERTY,
- // handwriting mode) FEP sends only EEventKey -event and thus manual
- // DTMFs can not be played with the user specified tone lengths. Also,
- // in general, DTMFs are tried to play only in numeric mode.
- TBool numericMode = iViewCommandHandle->HandleCommandL(
- EPhoneViewIsNumberEntryNumericMode ) == EPhoneViewResponseSuccess;
-
- if ( ( aKeyEvent.iModifiers & EModifierSpecial ) != 0 || !numericMode )
- {
- return EFalse;
- }
-
- return ETrue;
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleErrorL
-// Default handling for HandleError message
-// (other items were commented in a header).
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleErrorL( const TPEErrorInfo& aErrorInfo )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleErrorL()");
-
- __PHONELOG1( EBasic, EPhoneControl,
- "PhoneUIControl: CPhoneState::HandleErrorL - aErrorInfo.iErrorCode =%d ",
- aErrorInfo.iErrorCode );
-
- __PHONELOG1( EBasic, EPhoneControl,
- "PhoneUIControl: CPhoneState::HandleErrorL - aErrorInfo.iCallId =%d ",
- aErrorInfo.iCallId );
-
-
- // Sets touch buttons to correct status if error has occured.
- if ( FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
- {
- iViewCommandHandle->ExecuteCommand( EPhoneResetTouchButtons );
- }
-
- // Do the common error handling (display proper notes etc)
- CPhoneMainErrorMessagesHandler::Instance()->ShowErrorSpecificNoteL( aErrorInfo );
-
- switch( aErrorInfo.iErrorCode )
- {
- case ECCPErrorCCUserAlertingNoAnswer:
- case ECCPErrorCCResourceNotAvailable:
- {
- if( aErrorInfo.iCallId > KErrNotFound )
- {
- if ( iStateMachine->PhoneEngineInfo()->CallDirection(
- aErrorInfo.iCallId ) != RMobileCall::EMobileTerminated )
- {
- if( IsVideoCall( aErrorInfo.iCallId ) )
- {
- // Active MO video call lost 3G network.
- __PHONELOG1( EBasic, EPhoneControl,
- "PhoneUIControl: CPhoneState::HandleErrorL - ShowReconnectQueryL vid 1, callid%d ",
- aErrorInfo.iCallId );
- CPhoneReconnectQuery::InstanceL()->ShowReconnectQueryL( ETrue );
- }
- else
- {
- __PHONELOG1( EBasic, EPhoneControl,
- "PhoneUIControl: CPhoneState::HandleErrorL - No video call =%d ",
- aErrorInfo.iCallId );
- }
- }
- }
- }
- break;
-
- case ECCPErrorCCServiceNotAvailable:
- {
- if( IsVideoCall( aErrorInfo.iCallId ) )
- {
- CPhoneReconnectQuery::InstanceL()->ShowReconnectQueryL( EFalse );
- }
- }
- break;
-
- case ECCPErrorBadRequest:
- {
- TPECallType callType =
- iStateMachine->PhoneEngineInfo()->CallTypeCommand();
-
- if( callType == EPECallTypeVideo )
- {
- // Dialling MO video call cannot reach 3G network.
- __PHONELOG1( EBasic, EPhoneControl,
- "PhoneUIControl: CPhoneState::HandleErrorL - ShowReconnectQueryL vid 2, callid%d ",
- aErrorInfo.iCallId );
- CPhoneReconnectQuery::InstanceL()->ShowReconnectQueryL( ETrue );
- }
- }
- break;
-
- case ECCPErrorVideoCallNotSupportedByNetwork:
- case ECCPErrorVideoCallSetupFailed:
- case ECCPErrorNotReached:
- // If call id found and seems to be Video Call
- if ( IsVideoCall( aErrorInfo.iCallId ) )
- {
- // Get active call count
- TPhoneCmdParamInteger activeCallCount;
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewGetCountOfActiveCalls, &activeCallCount );
-
- if ( activeCallCount.Integer() == 0
- || iStateMachine->PhoneEngineInfo()->CallDirection(
- aErrorInfo.iCallId ) != RMobileCall::EMobileTerminated )
- {
- // Dialling MO video call attempted in 2G network or
- // dialing MO video to unvalid number
- // Reconnect query include video label if errorcode is unvalid number.
- __PHONELOG1( EBasic, EPhoneControl,
- "PhoneUIControl: CPhoneState::HandleErrorL - ShowReconnectQueryL vid 3, callid%d ",
- aErrorInfo.iCallId );
- CPhoneReconnectQuery::InstanceL()->ShowReconnectQueryL(
- ECCPErrorNotReached == aErrorInfo.iErrorCode );
- }
- }
- break;
-
- case ECCPErrorNoService:
- // No network -> hide volume popup
- iViewCommandHandle->ExecuteCommandL( EPhoneViewHideNaviPaneAudioVolume );
- break;
-
- case ECCPErrorSatControl:
- {
- // check, that there really was a call established before completing SAT request
- if( aErrorInfo.iCallId != KPECallIdNotUsed )
- {
- }
-
- // remove number entry
- if ( !IsOnScreenDialerSupported() && IsNumberEntryUsedL() )
- {
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewRemoveNumberEntry );
- }
- else if ( IsOnScreenDialerSupported() )
- {
- NumberEntryClearL();
- }
- }
- break;
-
- default:
- break;
- }
-
- // clear call blacklist if call failure occurs
- CPhoneClearBlacklist::Instance()->ClearBlackListOnNextKey();
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleChangedCallDurationL
-// Default handling for EPEMessageChangedCallDuration message
-// (other items were commented in a header).
-// -----------------------------------------------------------
-void CPhoneState::HandleChangedCallDurationL( TInt aCallId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleChangedCallDurationL() ");
- // Get the call duration
- TTimeIntervalSeconds seconds =
- iStateMachine->PhoneEngineInfo()->CallDuration( aCallId );
-
- TPhoneCmdParamInteger time;
- time.SetInteger(seconds.Int());
- iViewCommandHandle->ExecuteCommandL(EPhoneViewUpdateCallHeaderCallDuration, aCallId, &time);
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::HandleRemoteBusyL
-// -----------------------------------------------------------------------------
-//
-void CPhoneState::HandleRemoteBusyL( TInt aCallId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleRemoteBusyL( ) ");
- ShowNumberBusyNoteL();
-
- const TPECallType callType =
- iStateMachine->PhoneEngineInfo()->CallTypeCommand();
-
- if( callType == EPECallTypeVideo )
- {
- // Launch reconnect query including video call menu item
- __PHONELOG1( EBasic, EPhoneControl,
- "PhoneUIControl: CPhoneState::HandleRemoteBusyL - ShowReconnectQueryL vid 5, callid%d ",
- aCallId );
- CPhoneReconnectQuery::InstanceL()->ShowReconnectQueryL( ETrue );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleDisconnectingL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleDisconnectingL( TInt aCallId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleDisconnectingL( ) ");
- // If there is no call in connected state then EPhoneDtmfTextQuery and EPhoneDtmfListQueryDialog
- // must be dismmissed from UI, therefore we must set EPhoneViewSetNoConnectedCalls to ETrue this
- // way we can ensure that CPhoneQueryController doesnt relaunch EPhoneDtmfListQueryDialog.
- if ( !IsAnyConnectedCalls() )
- {
- TPhoneCmdParamBoolean booleanParam;
- booleanParam.SetBoolean(ETrue);
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetNoConnectedCalls, &booleanParam );
- }
-
- TPhoneCmdParamCallHeaderData callHeaderParam;
- callHeaderParam.SetCallState( EPEStateDisconnecting );
-
- TBuf<KPhoneCallHeaderLabelMaxLength> labelText( KNullDesC );
- LoadResource( labelText, EPhoneInCallDisconnected );
-
- callHeaderParam.SetLabelText( labelText );
-
- iViewCommandHandle->ExecuteCommandL( EPhoneViewStopRingTone );
-
- iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId,
- &callHeaderParam );
-
- CPhoneClearBlacklist::Instance()->ClearBlackListOnNextKey();
- }
-
-// -----------------------------------------------------------
-// CPhoneState::IsCustomizedDialerVisibleL()
-// -----------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::IsCustomizedDialerVisibleL() const
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::IsCustomizedDialerVisibleL( ) ");
- return iViewCommandHandle->HandleCommandL(
- EPhoneIsCustomizedDialerVisible ) == EPhoneViewResponseSuccess;
- }
-
-// <------------------------------- KEY EVENTS ------------------------------->
-
-// -----------------------------------------------------------
-// CPhoneState::HandleKeyMessageL( aMessage, aKeyCode )
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleKeyMessageL(
- TPhoneKeyEventMessages /*aMessage*/,
- TKeyCode /*aKeyCode*/ )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleKeyMessageL( ) ");
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleKeyEventL( aKeyEvent, aEventCode )
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleKeyEventL(
- const TKeyEvent& aKeyEvent,
- TEventCode aEventCode )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleKeyEventL( ) ");
- if ( ( IsNumberEntryVisibleL() ) || OnlySideVolumeKeySupported() )
- {
- // Handle numeric keys when key events are received in single state
- HandleNumericKeyEventL( aKeyEvent, aEventCode );
- }
- else if ( aKeyEvent.iScanCode == EStdKeyUpArrow &&
- aEventCode == EEventKey )
- {
- // Increace audio volume
- IncreaseAudioVolumeL();
- }
- else if ( aKeyEvent.iScanCode == EStdKeyDownArrow &&
- aEventCode == EEventKey )
- {
- // Decreace audio volume
- DecreaseAudioVolumeL();
- }
- else
- {
- // Handle numeric keys when key events are received in single state
- HandleNumericKeyEventL( aKeyEvent, aEventCode );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::OnlySideVolumeKeySupported
-// -----------------------------------------------------------
-//
-TBool CPhoneState::OnlySideVolumeKeySupported()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::OnlySideVolumeKeySupported( ) ");
- TBool onlySideVolumeKeySupported(EFalse);
- if ( !CPhoneCenRepProxy::Instance()->
- IsTelephonyFeatureSupported( KTelephonyLVFlagScrollVolumeKeys ) &&
- FeatureManager::FeatureSupported( KFeatureIdSideVolumeKeys ) )
- {
- onlySideVolumeKeySupported = ETrue;
- }
- __PHONELOG1( EBasic, EPhoneControl,
- "OnlySideVolumeKeySupported: %d",
- onlySideVolumeKeySupported );
- return onlySideVolumeKeySupported;
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleKeyPressDurationL( aScanCode, aKeyPressDuration )
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleKeyPressDurationL(
- TKeyCode aCode,
- TTimeIntervalMicroSeconds /*aKeyPressDuration*/ )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleKeyPressDurationL( ) ");
-
- if( aCode == KPhoneDtmfHashCharacter )
- {
- if( iAlsLineChangeKeyPressTimer )
- {
- if( iAlsLineChangeKeyPressTimer->IsActive() )
- {
- iAlsLineChangeKeyPressTimer->Cancel();
- }
- }
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::IsNoteVisibleL
-// -----------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::IsNoteVisibleL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::IsNoteVisibleL( ) ");
- TPhoneCmdParamBoolean booleanParam;
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewGetIsNoteVisible, &booleanParam );
- return booleanParam.Boolean();
- }
-
-// -----------------------------------------------------------
-// CPhoneState::IsMenuBarVisibleL
-// -----------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::IsMenuBarVisibleL() const
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::IsMenuBarVisibleL( ) ");
- return iViewCommandHandle->HandleCommandL(
- EPhoneViewIsMenuBarVisible ) ==
- EPhoneViewResponseSuccess;
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleNumericKeyEventL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleNumericKeyEventL(
- const TKeyEvent& aKeyEvent,
- TEventCode aEventCode )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleNumericKeyEventL( ) ");
-
- TBool numberEntryUsed = IsNumberEntryUsedL();
-
- if ( numberEntryUsed && ( aKeyEvent.iRepeats == 0 ||
- aKeyEvent.iScanCode == EStdKeyBackspace ||
- aKeyEvent.iScanCode ==EStdKeyLeftArrow ||
- aKeyEvent.iScanCode ==EStdKeyRightArrow ))
- {
- // Number entry exists but may be hidden
- KeyEventForExistingNumberEntryL( aKeyEvent, aEventCode );
- }
-
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::IsAnyQueryActiveL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::IsAnyQueryActiveL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::IsAnyQueryActiveL( ) ");
- TBool isActive( EFalse );
-
- // If IsNoteDismissableL returns true then shown note is dismissable by key event
- // and then there is no actual query and IsAnyQueryActiveL returns false.
- if ( !IsNoteDismissableL() )
- {
- // Check is query displayed
- TPhoneCmdParamBoolean isQueryDisplayed;
- iViewCommandHandle->ExecuteCommandL( EPhoneViewIsQuery, &isQueryDisplayed );
- // Check is Blocking Dialog active ( e.g. RFS query )
- TPhoneCmdParamBoolean blockingDialogStatus;
- iViewCommandHandle->ExecuteCommandL( EPhoneViewGetBlockingDialogStatus,
- &blockingDialogStatus );
- // Check is note displayed
- TPhoneCmdParamBoolean isNoteActive;
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewIsNoteActive, &isNoteActive );
-
- if ( isQueryDisplayed.Boolean() || blockingDialogStatus.Boolean() || isNoteActive.Boolean() )
- {
- isActive = ETrue;
- }
- }
- __PHONELOG1( EBasic, EPhoneControl, "CPhoneState::IsAnyQueryActiveL: %d ", isActive );
- return isActive;
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::IsNoteDismissable
-// -----------------------------------------------------------------------------
-//
-TBool CPhoneState::IsNoteDismissableL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::IsNoteDismissableL( ) ");
- TBool dismiss = EFalse;
- if ( !FeatureManager::FeatureSupported( KFeatureIdFfSimlessOfflineSupport ) ||
- (FeatureManager::FeatureSupported( KFeatureIdFfSimlessOfflineSupport ) &&
- SimSecurityStatus() == ESimRejected ) )
- {
- // Check if note is dismissed by key event.
- TPhoneCmdParamBoolean isNoteDismissed;
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewIsActiveNoteDissmissableByKeyEvent, &isNoteDismissed );
- if ( isNoteDismissed.Boolean() )
- {
- dismiss = ETrue;
- }
- }
- __PHONELOG1( EBasic, EPhoneControl, "CPhoneState::IsNoteDismissableL: %d ", dismiss );
- return dismiss;
- }
-
-// -----------------------------------------------------------
-// CPhoneState::SendKeyEventL
-// -----------------------------------------------------------
-//
-void CPhoneState::SendKeyEventL(
- const TKeyEvent& aKeyEvent,
- TEventCode aEventCode )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::SendKeyEventL( ) ");
- switch( aEventCode )
- {
- // EEventKey
- case EEventKey:
- // Send the key press to the phone engine, if applicable
- SendKeyPressL( aKeyEvent, aEventCode );
- break;
-
- // EEventKeyUp
- case EEventKeyUp:
- // Send a key up event for the last key code sent to
- // the phone engine
- iStateMachine->SendPhoneEngineMessage(
- MPEPhoneModel::EPEMessageEndDTMF );
- break;
-
- default:
- break;
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::SendKeyPressL
-// -----------------------------------------------------------
-//
-void CPhoneState::SendKeyPressL(
- const TKeyEvent& aKeyEvent,
- TEventCode aEventCode )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::SendKeyPressL( ) ");
- const TBool dtmfToneKeyEntered =
- CPhoneKeys::IsDtmfTone( aKeyEvent, aEventCode );
-
- if ( dtmfToneKeyEntered ||
- aKeyEvent.iCode == EKeyBackspace )
- {
- // Get the number entry contents, if it exists
- if ( IsNumberEntryUsedL() )
- {
- HBufC* phoneNumber = PhoneNumberFromEntryLC();
- // Save the phone number
- __PHONELOG1( EBasic, EPhoneControl, "SetPhoneNumber: %S ", phoneNumber );
- iStateMachine->PhoneEngineInfo()->SetPhoneNumber( *phoneNumber );
-
- // Convert key code to western.
- TBuf<1> buffer; // one character
- buffer.Append( aKeyEvent.iCode );
- __PHONELOG1( EBasic, EPhoneControl,
- "CPhoneState::SendKeyPressL(%S)",
- &buffer );
- AknTextUtils::ConvertDigitsTo( buffer, EDigitTypeWestern );
- __PHONELOG1( EBasic, EPhoneControl,
- "CPhoneState::SendKeyPressL(%S)",
- &buffer );
- TLex code( buffer );
-
- // Save the key code
- iStateMachine->PhoneEngineInfo()->SetKeyCode( code.Peek() );
-
- // Plays a DTMF tone if active call
- iStateMachine->SendPhoneEngineMessage(
- MPEPhoneModel::EPEMessagePlayDTMF );
- // remove the phone number from the cleanup stack
- CleanupStack::PopAndDestroy( phoneNumber );
- }
- }
- }
-
-// <------------------------------ SYSTEM EVENTS ----------------------------->
-
-// -----------------------------------------------------------
-// CPhoneState::DynInitMenuPaneL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::DynInitMenuPaneL(
- TInt aResourceId,
- CEikMenuPane* aMenuPane )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::DynInitMenuPaneL( ) ");
- __ASSERT_DEBUG( aMenuPane && aResourceId,
- Panic( EPhoneCtrlParameterNotInitialized ) );
-
- // Save the number of digits in the number entry before processing
- // the menu pane
- if ( IsNumberEntryUsedL() )
- {
- TPhoneCmdParamBoolean serviceCodeParam;
- serviceCodeParam.SetBoolean(
- iStateMachine->PhoneEngineInfo()->PhoneNumberIsServiceCode() );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetServiceCodeFlag,
- &serviceCodeParam );
- }
-
- // Process the menu pane
- TPhoneCmdParamDynMenu dynMenuPane;
- dynMenuPane.SetResourceId( aResourceId );
- dynMenuPane.SetDynMenu( aMenuPane );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuPane, &dynMenuPane );
-
- if ( iCustomization )
- {
- // Menu pane is customized after default items are decided
- iCustomization->CustomizeMenuPaneL(aResourceId, aMenuPane);
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::DynInitMenuBarL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::DynInitMenuBarL(
- TInt aResourceId,
- CEikMenuBar* aMenuBar )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::DynInitMenuBarL( ) ");
- __ASSERT_DEBUG( aMenuBar && aResourceId,
- Panic( EPhoneCtrlParameterNotInitialized ) );
-
- TPhoneCmdParamDynMenu dynMenuBar;
- dynMenuBar.SetResourceId( aResourceId );
- dynMenuBar.SetDynMenu( aMenuBar );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBar, &dynMenuBar );
-
- if ( iCustomization )
- {
- // Menu bar is customized after default items are decided
- iCustomization->CustomizeMenuBarL(aResourceId, aMenuBar);
- }
-
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleSystemEventL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleSystemEventL( const TWsEvent& /*aEvent*/ )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleSystemEventL( ) ");
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleForegroundEventL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleForegroundEventL( TBool aForeground )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleForegroundEventL( ) ");
- if ( !aForeground && IsNumberEntryUsedL() )
- {
- // Going out from foreground and number entry is open.
- // Make sure that dtmf playing is stopped ( EEventKeyUp may be missed ).
- iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageEndDTMF );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandlePhoneForegroundEventL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandlePhoneForegroundEventL()
- {
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandlePhoneFocusLostEventL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandlePhoneFocusLostEventL()
- {
- // Notify that this method is called always when Idle is brought to foreground
- // See implementation in CPhoneAppUI::HandleWsEventL
-
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandlePhoneFocusLostEventL( ) ");
- // Phone app focus lost -> close Dtmf dialer when visible
- if ( IsOnScreenDialerSupported() && IsDTMFEditorVisibleL() )
- {
- CloseDTMFEditorL();
- }
- else if ( IsOnScreenDialerSupported() && IsCustomizedDialerVisibleL() )
- {
- CloseCustomizedDialerL();
- }
- }
-// ---------------------------------------------------------
-// CPhoneState::HandleIdleForegroundEventL
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleIdleForegroundEventL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleIdleForegroundEventL( ) ");
- // Empty implementation
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleEnvironmentChangeL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleEnvironmentChangeL( const TInt aChanges )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleEnvironmentChangeL( ) ");
- __PHONELOG1( EBasic, EPhoneControl, "CPhoneState::HandleEnvironmentChangeL - Changes: %d ", aChanges );
- // Update the profile display if required
- if ( aChanges &
- ( EChangesLocale | EChangesMidnightCrossover | EChangesSystemTime ) )
- {
- UpdateProfileDisplayL();
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandlePhoneStartupL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandlePhoneStartupL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandlePhoneStartupL( ) ");
- // Empty implementation
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandlePropertyChangedL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandlePropertyChangedL(
- const TUid& aCategory,
- const TUint aKey,
- const TInt aValue )
- {
-
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandlePropertyChangedL( ) ");
-
- __PHONELOG1( EBasic, EPhoneControl,
- "CPhoneState::HandlePropertyChangedL - aCategory= %d", aCategory );
- __PHONELOG1( EBasic, EPhoneControl,
- "CPhoneState::HandlePropertyChangedL - aKey= %d", aKey );
- __PHONELOG1( EBasic, EPhoneControl,
- "CPhoneState::HandlePropertyChangedL - aValue= %d", aValue );
- if ( aCategory == KPSUidCtsyCallInformation )
- {
- // Call state event
- if ( aKey == KCTsyCallState )
- {
- // Update the incall indicator
- UpdateIncallIndicatorL( aValue );
- }
- }
-
- // Telephony information category
- else if ( aCategory == KPSUidTelInformation
- && SimState() == EPESimUsable )
- {
- // Telephony display event
- if ( aKey == KTelDisplayInfo )
- {
- __PHONELOG( EBasic, EPhoneControl, "CPhoneState::HandlePropertyChangedL - telephony display info received" );
- // Update the operator and profile display
- UpdateProfileDisplayL();
- }
- }
- else if ( aCategory == KPSUidStartup && aKey == KStartupSimSecurityStatus )
- {
- // Show security note, SIM is not valid.
- if ( aValue == ESimRejected || aValue == ESimUnaccepted )
- {
- __PHONELOG( EBasic, EPhoneControl, "CPhoneStateStartup::HandlePropertyChangedL - SimSecurity status received" );
- StartShowSecurityNoteL();
- }
- }
- else if ( aCategory == KPSUidHWRM && aKey == KHWRMGripStatus )
- {
- UpdateCbaSwivelStateChangedL();
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleCenRepChangeL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleCenRepChangeL(
- const TUid& /*aUid*/,
- const TUint /*aId*/ )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleCenRepChangeL( ) ");
- }
-
-// -----------------------------------------------------------
-// CPhoneState::NeedToSendToBackgroundL
-// -----------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::NeedToSendToBackgroundL() const
- {
- return iViewCommandHandle->HandleCommandL(
- EPhoneViewGetNeedToSendToBackgroundStatus ) ==
- EPhoneViewResponseSuccess;
- }
-
-// -----------------------------------------------------------
-// CPhoneState::TopAppIsDisplayedL
-// -----------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::TopAppIsDisplayedL() const
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::TopAppIsDisplayedL( ) ");
- return iViewCommandHandle->HandleCommandL(
- EPhoneViewGetTopApplicationIsDisplayedStatus ) ==
- EPhoneViewResponseSuccess;
- }
-
-// -----------------------------------------------------------
-// CPhoneState::TitlePaneIsVisibleL
-// -----------------------------------------------------------
-//
-TBool CPhoneState::TitlePaneIsVisibleL() const
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::TitlePaneIsVisibleL( ) ");
- return iViewCommandHandle->HandleCommandL(
- EPhoneViewGetTitlePaneIsVisibleStatus ) ==
- EPhoneViewResponseSuccess;
- }
-
-// <---------------------------- MENU AND CBA EVENTS ------------------------->
-
-EXPORT_C TBool CPhoneState::HandleCommandL( TInt aCommand )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleCommandL( ) ");
- TBool commandStatus = ETrue;
- switch( aCommand )
- {
- case EPhoneEmergencyCmdExit:
- {
- //cancel emergency mode.
- TPhoneCmdParamBoolean booleanParam;
- booleanParam.SetBoolean( EFalse );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetRetrictedDialer,&booleanParam );
- }
- // this should be bypasses?
- case EPhoneDialerCallHandling:
- case EPhoneCmdBack:
- BeginTransEffectLC( ENumberEntryClose );
- // Remove number entry from screen
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
- // Do state-specific behaviour if number entry is cleared
- HandleNumberEntryClearedL();
- EndTransEffect();
- break;
-
- case EPhoneDialerCmdTouchInput:
- OpenVkbL();
- break;
-
- case EPhoneNumberAcqCmdSendMessage:
- // Open the mms editor
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewSendMessage );
- if ( !IsOnScreenDialerSupported() )
- {
- // Remove number entry from screen
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
- // Do state-specific behaviour if number entry is cleared
- HandleNumberEntryClearedL();
- }
- break;
-
- case EPhoneNumberAcqCmdSave:
- // Open Create contact
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewAddContact );
- break;
-
- case EPhoneNumberAcqCmdAddToName:
- // Open the message editor
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewUpdateContact );
- break;
-
- case EPhoneNumberAcqCmdAddToContacts:
- {
- if ( IsOnScreenDialerSupported() )
- {
- TPhoneCmdParamQuery queryDialogParam;
- queryDialogParam.SetQueryType( EPhoneContactsListQuery );
- queryDialogParam.SetQueryResourceId(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( EPhoneAddtoContactsListQuery ) );
-
- // Display dialog
- iViewCommandHandle->ExecuteCommandL( EPhoneViewShowQuery,
- &queryDialogParam );
- }
- }
- break;
-
- case EPhoneCmdWaitNoteOk:
- // Remove number entry from screen
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNote );
- if ( !IsOnScreenDialerSupported() )
- {
- HandleNumberEntryClearedL();
- }
- break;
-
- case EPhoneInCallCmdEndThisOutgoingCall:
- DisconnectCallL();
- break;
-
- case EPhoneCmdYesAlsLineChange:
- if( IsAlsLineChangePossible() )
- {
- ChangeAlsLineL();
- }
- else
- {
- SendGlobalErrorNoteL( EPhoneLineBlockingNote );
- HandleNumberEntryClearedL(); // Set back CBAs
- }
- break;
-
- case EPhoneCmdNoAlsLineChange:
- if ( !IsOnScreenDialerSupported() )
- {
- HandleNumberEntryClearedL();
- }
- break;
-
- case EPhoneCmdYesBtDisconnectQuery:
- case EPhoneCmdNoBtDisconnectQuery:
- CPhoneBtaaDisconnectHandler::InstanceL()->HandleQueryDismissL( aCommand );
- // Make sure that query is removed
- // if there has been also another ( by Cover UI ).
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveQuery );
- break;
-
- case EPhoneInCallCmdDeactivateIhf: // fall through
- case EPhoneInCallCmdActivateIhf:
- SetHandsfreeModeL( aCommand == EPhoneInCallCmdActivateIhf );
- break;
-
- case EPhoneInCallCmdHandset: // fall through
- case EPhoneInCallCmdBtHandsfree:
- CPhoneState::SetBTHandsfreeModeL(
- aCommand == EPhoneInCallCmdBtHandsfree );
- break;
-
- case EPhoneInCallCmdActivatEPhonebook:
- {
- // Launch Phonebook application
- TPhoneCmdParamAppInfo appInfoParam;
- appInfoParam.SetAppUid( KPhoneUidAppPhonebook );
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewActivateApp, &appInfoParam );
- }
- break;
-
- case EPhoneNumberAcqSecurityDialer:
- {
- if ( IsOnScreenDialerSupported() && !IsNumberEntryUsedL() )
- {
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNote );
- TPhoneCmdParamBoolean visibleMode;
- visibleMode.SetBoolean( ETrue );
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewSetStatusPaneVisible, &visibleMode );
-
-
- // Set emergency CBA, empty - exit
- iCbaManager->SetCbaL( EPhoneEmergencyModeNoteCBA );
-
- // Set dialer to restricted mode.
- TPhoneCmdParamBoolean booleanParam;
- booleanParam.SetBoolean( ETrue );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetRetrictedDialer,&booleanParam );
-
- NumberEntryManagerL()->CreateNumberEntryL();
- }
- }
- break;
-
- case EPhoneDialerCmdContacts:
- {
- // Launch Phonebook application
- TPhoneCmdParamAppInfo appInfoParam;
- appInfoParam.SetAppUid( KPhoneUidAppPhonebook );
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewActivateApp, &appInfoParam );
- }
- break;
-
- case EPhoneViewYesSingleItemFetch:
- {
- if ( IsOnScreenDialerSupported() )
- {
- TBuf<KPhoneNumberEntryBufferSize> fetchContent;
- fetchContent = iViewCommandHandle->FetchContent();
- if ( fetchContent.Length() )
- {
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewSetNumberEntryContent,
- 0,
- fetchContent );
-
- CallFromNumberEntryL();
- }
- }
- }
- break;
- case EPhoneNumberAcqCmdToggleNeAlphaMode:
- case EPhoneNumberAcqCmdToggleNeNumericMode:
- {
- // Toggle mode
- NumberEntryManagerL()->NumberEntryToggleAlphaNumericModeL();
- }
- break;
-
- case EPhoneCmdYesVideoFailedNoMemorySwitchToVoice:
- DialVoiceCallL();
- break;
-
- case EPhoneCmdNoVideoFailedNoMemorySwitchToVoice:
- if ( IsNumberEntryUsedL() )
- {
- // Show the number entry if it exists
- SetNumberEntryVisibilityL(ETrue);
- }
- else if ( NeedToSendToBackgroundL() )
- {
- // Continue displaying current app but set up the
- // idle screen in the background
- SetupIdleScreenInBackgroundL();
- }
- else
- {
- // Display idle screen
- DisplayIdleScreenL();
- }
- break;
-
- case EPhoneInCallCmdSetVolumeLevel:
- {
- // This command comes from ui control, no need to update
- // value to control (second parameter set false).
- ChangeAudioVolumeL( GetVolumeLevel(), EFalse );
- }
- break;
-
- case EPhoneDialerCmdHelp:
- if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
- {
- TPtrC contextName;
- contextName.Set( KDATA_DIALER_HLP_MAIN() );
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewLaunchHelpApplication, 0, contextName );
- }
- break;
-
- case EPhoneCmdVideoCallOutOfMemory:
- ShowVideoCallOutOfMemoryNoteL();
- DisconnectCallL();
- break;
-
- case EPhoneCallComingCmdSoftReject:
- // Open Soft reject message editor
- OpenSoftRejectMessageEditorL();
- break;
-
- case EPhoneInCallCmdContacts:
- iViewCommandHandle->ExecuteCommand( EPhoneViewOpenContacts );
- break;
-
- default:
-
- /*if ( IsOnScreenDialerSupported() )
- {
- // Offer command to view.
- TPhoneViewResponseId resId =
- iViewCommandHandle->HandleCommandL( aCommand );
-
- if( resId == EPhoneViewResponseFailed )
- {
- commandStatus = EFalse;
- }
- }
- else*/
-
- {
- commandStatus = EFalse;
- }
- break;
- }
-
- if( !commandStatus && iCustomization )
- {
- commandStatus = iCustomization->HandleCommandL( aCommand );
- }
-
- return commandStatus;
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::ProcessCommandL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::ProcessCommandL( TInt /*aCommand*/ )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateIdle::ProcessCommandL() ");
- // no implementation.
- return EFalse;
- }
-
-// <-------------------------- REMOTE CONTROL EVENTS ------------------------->
-
-// -----------------------------------------------------------------------------
-// CPhoneState::HandleRemConCommandL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::HandleRemConCommandL(
- TRemConCoreApiOperationId aOperationId,
- TRemConCoreApiButtonAction /*aButtonAct*/ )
- {
- TBool handled = EFalse;
-
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::MrccatoCommand() ");
- switch ( aOperationId )
- {
- case ERemConCoreApiVolumeUp:
- __PHONELOG( EBasic, EPhoneControl, "CPhoneState::MrccatoCommand ERemConCoreApiVolumeUp" );
- IncreaseAudioVolumeL();
- handled = ETrue;
- break;
-
- case ERemConCoreApiVolumeDown:
- __PHONELOG( EBasic, EPhoneControl, "CPhoneState::MrccatoCommand ERemConCoreApiVolumeDown" );
- DecreaseAudioVolumeL();
- handled = ETrue;
- break;
- case ERemConCoreApiMute:
- {
- __PHONELOG( EBasic, EPhoneControl, "CPhoneState::MrccatoCommand ERemConCoreApiMute" );
- iStateMachine->PhoneEngineInfo()->AudioMute() ?
- iStateMachine->PhoneEngineInfo()->SetAudioMuteCommand( EFalse ):
- iStateMachine->PhoneEngineInfo()->SetAudioMuteCommand( ETrue );
- iStateMachine->SendPhoneEngineMessage(
- MPEPhoneModel::EPEMessageSetAudioMute );
- handled = ETrue;
- break;
- }
-
- default:
- __PHONELOG1( EBasic, EPhoneControl, "CPhoneState::MrccatoCommand MrccatoCmd.Other(%d)", aOperationId );
- // Other commands ignored.
- break;
- }
-
- return handled;
- }
-
-// -----------------------------------------------------------
-// CPhoneState::DecreaseAudioVolume()
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::DecreaseAudioVolumeL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::DecreaceAudioVolumeL( ) ");
- __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
- Panic( EPhoneCtrlInvariant ) );
-
- TPEAudioOutput output( iStateMachine->PhoneEngineInfo()->AudioOutput() );
- __PHONELOG1( EBasic, EPhoneControl, "CPhoneState::DecreaseAudioVolumeL - audio output =%d", output );
- if( output == EPETTY )
- {
- SendGlobalInfoNoteL( EPhoneNoteTTYNoAudioControl );
- }
- else
- {
- TInt audioVolume( iStateMachine->PhoneEngineInfo()->AudioVolume() );
- audioVolume--;
- ChangeAudioVolumeL( audioVolume, ETrue );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::IncreaceAudioVolume()
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::IncreaseAudioVolumeL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::IncreaceAudioVolumeL( ) ");
- __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
- Panic( EPhoneCtrlInvariant ) );
-
- TPEAudioOutput output( iStateMachine->PhoneEngineInfo()->AudioOutput() );
- __PHONELOG1( EBasic, EPhoneControl, "CPhoneState::IncreaseAudioVolumeL - audio output =%d", output );
- if( output == EPETTY )
- {
- SendGlobalInfoNoteL( EPhoneNoteTTYNoAudioControl );
- }
- else
- {
- TInt audioVolume( iStateMachine->PhoneEngineInfo()->AudioVolume() );
- audioVolume++;
- ChangeAudioVolumeL( audioVolume, ETrue );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::ChangeAudioVolumeL()
-// -----------------------------------------------------------
-//
-void CPhoneState::ChangeAudioVolumeL( TInt aLevel, TBool aUpdateControl )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::ChangeAudioVolumeL( ) ");
- __PHONELOG1( EBasic, EPhoneControl, "CPhoneState::ChangeAudioVolumeL - set volume =%d", aLevel );
-
- TInt valueToControl = aLevel;
-
- // sets value between 1 -10
- if ( aLevel>=KPhoneVolumeMinValue && aLevel<=KPhoneVolumeMaxValue )
- {
- iStateMachine->PhoneEngineInfo()->SetAudioVolumeCommand( aLevel );
- // Syncronizes audio volume level between engine and ui
- // causes EPEMessageAudioVolumeChanged message to phoneUI
- iStateMachine->SendPhoneEngineMessage(
- MPEPhoneModel::EPEMessageSetAudioVolume );
- }
-
- if ( aUpdateControl )
- {
- // Update the volume display.
- // Upper max (11) and under min (-1)
- // values are also updated to volume popup.
- TPhoneCmdParamInteger volumeParam;
- volumeParam.SetInteger( valueToControl );
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewSetNaviPaneAudioVolume,
- &volumeParam );
- }
- }
-
-// <-------------------------- COMMON STATE FUNCTIONS ------------------------>
-
-// -----------------------------------------------------------
-// CPhoneState::DialMultimediaCallL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::DialMultimediaCallL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::DialMultimediaCall() ");
- __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
- Panic( EPhoneCtrlInvariant ) );
- iStateMachine->PhoneEngineInfo()->SetCallTypeCommand( EPECallTypeVideo );
- iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageDial );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::DialVoiceCallL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::DialVoiceCallL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::DialVoiceCallL() ");
- __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
- Panic( EPhoneCtrlInvariant ) );
-
- // Disable global notes
- TPhoneCmdParamBoolean globalNotifierParam;
- globalNotifierParam.SetBoolean( ETrue );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled,
- &globalNotifierParam );
- iStateMachine->PhoneEngineInfo()->SetCallTypeCommand( EPECallTypeCSVoice );
- iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageDial );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::DisconnectCallL
-// -----------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::DisconnectCallL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::DisconnectCallL( ) ");
- TPhoneCmdParamInteger callIdParam;
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewGetExpandedBubbleCallId, &callIdParam );
-
- TBool ret = EFalse;
- if( callIdParam.Integer() > KErrNotFound )
- {
- // Release the call
- iStateMachine->SetCallId( callIdParam.Integer() );
-
- if( IsVideoCall( callIdParam.Integer() ) )
- {
- // 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,
- CPhoneReleaseCommand::NewL( *iStateMachine ) );
- }
- else
- {
- // Release the call
- iStateMachine->SendPhoneEngineMessage(
- MPEPhoneModel::EPEMessageRelease );
- }
- ret = ETrue;
- }
- else
- {
- __PHONELOG( EOnlyFatal, EPhoneControl,
- "CPhoneState::DisconnectCallL has negative call id!" );
- }
-
- return ret;
- }
-
-// -----------------------------------------------------------
-// CPhoneState::DisplayIdleScreenL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::DisplayIdleScreenL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::DisplayIdleScreenL( ) ");
-
- // Don't remove reconnect query if it's shown
- if( !CPhoneReconnectQuery::InstanceL()->IsDisplayingQuery() )
- {
- // Remove dialogs if necessary
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs );
- }
-
- // Set Empty CBA
- iCbaManager->SetCbaL( EPhoneEmptyCBA );
- // Bring Idle app to the foreground
- iViewCommandHandle->ExecuteCommandL( EPhoneViewBringIdleToForeground );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::SetupIdleScreenInBackgroundL()
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SetupIdleScreenInBackgroundL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::SetupIdleScreenInBackgroundL( ) ");
- // Don't remove reconnect query if it's shown
- if( !CPhoneReconnectQuery::InstanceL()->IsDisplayingQuery() )
- {
- // Remove dialogs if necessary
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs );
- }
- // Return phone to the background
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground );
-
- // Set Idle app as the top app
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetIdleTopApplication );
-
- // Set Empty CBA
- iCbaManager->SetCbaL( EPhoneEmptyCBA );
- }
-
-// ---------------------------------------------------------
-// CPhoneState::CallFromNumberEntryL
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::CallFromNumberEntryL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::CallFromNumberEntryL( ) ");
- __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
- Panic( EPhoneCtrlInvariant ) );
-
- if ( IsOnScreenDialerSupported() )
- {
- if ( IsDTMFEditorVisibleL() ||
- IsCustomizedDialerVisibleL() )
- {
- return;
- }
-
- else if( IsNumberEntryUsedL() )
- {
- // Query on top of dialer
- if ( IsAnyQueryActiveL() )
- {
- return;
- }
- else if ( IsMenuBarVisibleL() )
- {
- iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
- return;
- }
- // Open recent calls list when the number entry is empty
- TPhoneCmdParamInteger numberEntryCountParam;
- iViewCommandHandle->ExecuteCommandL( EPhoneViewGetNumberEntryCount,
- &numberEntryCountParam );
- TInt neLength( numberEntryCountParam.Integer() );
- TBool startLogs = neLength == 0 ? ETrue : EFalse;
-
- if ( startLogs )
- {
- iViewCommandHandle->HandleCommandL(
- EPhoneDialerCmdLog );
- return;
- }
- }
- }
-
- // Get the number entry contents
- HBufC* phoneNumber = PhoneNumberFromEntryLC();
-
- // Call the number
- iStateMachine->PhoneEngineInfo()->SetPhoneNumber( *phoneNumber );
-
- if ( phoneNumber->Des().Length() < KPhoneValidPhoneNumberLength )
- {
- // Closing effect is shown when dialer exist.
- BeginTransEffectLC( ENumberEntryClose );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
- EndTransEffect();
-
- HandleNumberEntryClearedL();
- }
-
- CleanupStack::PopAndDestroy( phoneNumber );
-
- if ( !iCustomization ||
- !iCustomization->HandleCallFromNumberEntryL() )
- {
- // Customization didn't handle call. Dial voice call
- // as normally
- DialVoiceCallL();
- }
-
- }
-
-// -----------------------------------------------------------
-// CPhoneState::DisplayHeaderForCallComingInL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::DisplayHeaderForCallComingInL(
- TInt aCallId,
- TBool aWaitingCall )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::DisplayHeaderForCallComingInL( ) ");
- CallheaderManagerL()->DisplayHeaderForCallComingInL( aCallId, aWaitingCall );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::SetCallHeaderTextsForCallComingInL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SetCallHeaderTextsForCallComingInL(
- TInt aCallId,
- TBool aWaitingCall,
- TPhoneCmdParamCallHeaderData* aCallHeaderData )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::SetCallHeaderTextsForCallComingInL( ) ");
- CallheaderManagerL()->SetCallHeaderTextsForCallComingIn( aCallId, aWaitingCall, aCallHeaderData );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::DisplayHeaderForOutgoingCallL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::DisplayHeaderForOutgoingCallL(
- TInt aCallId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::DisplayHeaderForOutgoingCallL( ) ");
- CallheaderManagerL()->DisplayHeaderForOutgoingCallL(aCallId);
- }
-
-// -----------------------------------------------------------
-// CPhoneState::UpdateSingleActiveCallL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::UpdateSingleActiveCallL( TInt aCallId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::UpdateSingleActiveCallL( ) ");
-
- // Stop capturing keys
- CaptureKeysDuringCallNotificationL( EFalse );
-
- BeginUiUpdateLC();
-
- // Update call state
- TPhoneCmdParamCallHeaderData callHeaderParam;
- callHeaderParam.SetCallState( EPEStateConnected );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateBubble, aCallId,
- &callHeaderParam );
-
- // Update remote info data
- UpdateRemoteInfoDataL( aCallId );
-
- // Create call duration label if enabled
- // This key will be moved to some other area, but since key
- // is supported we can still use it.
- TBool callDuration( EFalse );
- CPhoneCenRepProxy::Instance()->GetInt(
- KCRUidLogs, KLogsShowCallDuration, callDuration );
-
- if ( callDuration )
- {
- HandleChangedCallDurationL( aCallId );
- }
-
- EndUiUpdate();
-
- // Go to current state implementation
- iCbaManager->UpdateInCallCbaL();
-
- //Update state of switch to video or voice call touch button.
- TPECallType type = iStateMachine->PhoneEngineInfo()->CallType( aCallId );
-
- if( type == EPECallTypeVideo )
- {
- TPhoneCmdParamBoolean booleanParam;
- booleanParam.SetBoolean( ETrue );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetVideoCallFlag, &booleanParam );
- }
- else
- {
- TPhoneCmdParamBoolean booleanParam;
- booleanParam.SetBoolean( EFalse );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetVideoCallFlag, &booleanParam );
- }
-
- // Go to background if necessary
- if ( NeedToSendToBackgroundL() || IsAutoLockOn() )
- {
- // If number entry is used set control and visibility.
- if ( IsNumberEntryUsedL() )
- {
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility );
- }
- }
- // If there is no need to send back ground and number entry is used then
- // we must show number entry.
- else if ( !NeedToSendToBackgroundL() && IsNumberEntryUsedL() )
- {
- SetNumberEntryVisibilityL(ETrue);
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::CaptureKeysDuringCallNotificationL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::CaptureKeysDuringCallNotificationL(
- TBool aCaptured )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::CaptureKeysDuringCallNotificationL( ) ");
- // Determine which view command to execute based on the capture status
- const TInt viewCommandId = aCaptured ?
- EPhoneViewStartCapturingKey :
- EPhoneViewStopCapturingKey;
-
- // Capture the App key
- TPhoneCmdParamKeyCapture appKeyCaptureParam;
- appKeyCaptureParam.SetKey( EStdKeyApplication0 );
- appKeyCaptureParam.SetKeyCode( EKeyApplication0 );
- appKeyCaptureParam.SetCaptureType( EPhoneKeyAllEvents );
- iViewCommandHandle->ExecuteCommandL( viewCommandId, &appKeyCaptureParam );
-
- // Capture the Camera key, if it exists
- if ( FeatureManager::FeatureSupported( KFeatureIdCamera ) )
- {
- TPhoneCmdParamKeyCapture cameraKeyCaptureParam;
- cameraKeyCaptureParam.SetKey( EStdKeyDevice7 );
- cameraKeyCaptureParam.SetKeyCode( EKeyDevice7 );
- cameraKeyCaptureParam.SetCaptureType( EPhoneKeyAllEvents );
- iViewCommandHandle->ExecuteCommandL( viewCommandId,
- &cameraKeyCaptureParam );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::IsWaitingCallL
-// -----------------------------------------------------------
-//
-TBool CPhoneState::IsWaitingCallL( const TInt aCallId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::IsWaitingCallL( ) ");
- return CallheaderManagerL()->IsWaitingCallL( aCallId );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::UpdateCallHeaderInfoL
-// -----------------------------------------------------------
-//
-TPhoneCmdParamCallHeaderData CPhoneState::UpdateCallHeaderInfoL( TInt aCallId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::UpdateCallHeaderInfoL( ) ");
- return CallheaderManagerL()->UpdateCallHeaderInfoL( aCallId );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::UpdateRemoteInfoDataL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::UpdateRemoteInfoDataL( TInt aCallId )
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::UpdateRemoteInfoDataL() ");
- TPhoneCmdParamCallHeaderData callHeaderParam = UpdateCallHeaderInfoL( aCallId );
-
- if( iCustomization )
- {
- TBuf<KCntMaxTextFieldLength> inCallNumberText( KNullDesC );
- // incall number text could be 'Call 1', 'Call 2', ...
- CallheaderManagerL()->GetInCallNumberTextL( aCallId, inCallNumberText );
- // to check if we have VoIP call in question and fix
- // parameters if needed
- iCustomization->ModifyCallHeaderTexts( aCallId, &callHeaderParam,
- inCallNumberText );
- }
-
-
- // Update the remote info data in the call header
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewUpdateCallHeaderRemoteInfoData,
- aCallId,
- &callHeaderParam );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::SetCallHeaderType
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SetCallHeaderType(
- TInt aCallHeaderType )
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::SetCallHeaderType() ");
- TRAP_IGNORE( CallheaderManagerL()->SetCallHeaderType( aCallHeaderType ) );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::GetRemoteInfoDataL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::GetRemoteInfoDataL(
- TInt aCallId,
- TDes& aData )
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::GetRemoteInfoDataL() ");
- CallheaderManagerL()->GetRemoteInfoDataL( aCallId, aData );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::UpdateCbaSwivelStateChangedL
-// -----------------------------------------------------------
-//
-void CPhoneState::UpdateCbaSwivelStateChangedL()
- {
- __LOGMETHODSTARTEND(EPhoneControl,"CPhoneState::UpdateCbaSwivelStateChangedL()" );
-
- TPhoneCmdParamCallStateData callStateData;
- callStateData.SetCallState( EPEStateRinging );
- iViewCommandHandle->HandleCommandL(
- EPhoneViewGetCallIdByState, &callStateData );
- TInt incomingCall = callStateData.CallId();
-
- TPhoneCmdParamInteger activeCallCount;
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewGetCountOfActiveCalls, &activeCallCount );
-
- if ( incomingCall > KErrNotFound )
- {
- if( activeCallCount.Integer() == ENoActiveCalls )
- {
- iCbaManager->UpdateIncomingCbaL( incomingCall );
- UpdateSilenceButtonDimming();
- }
- else
- {
- iCbaManager->UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
- }
- }
- else if ( activeCallCount.Integer() != ENoActiveCalls )
- {
- iCbaManager->UpdateInCallCbaL();
- }
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::IsSwivelClosed
-// This function checks from PubSubProxy that is
-// Swivel closed or not in product.
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::IsSwivelClosed() const
- {
- if( CPhoneCenRepProxy::Instance()->
- IsTelephonyFeatureSupported( KTelephonyLVFlagSwivelInDevice ))
- {
- return CPhonePubSubProxy::Instance()->
- Value( KPSUidHWRM, KHWRMGripStatus ) == EPSHWRMGripClosed;
- }
- else
- {
- return EFalse;
- }
- }
-
-// <-------------------------- CONTEXT MENU ------------------------->
-
-// -----------------------------------------------------------------------------
-// CPhoneState::SetContextMenu
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SetContextMenuL( TInt aResourceId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::SetContextMenuL() ");
-
- TPhoneCmdParamInteger integerParam;
- TInt resId( CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( aResourceId ) );
- integerParam.SetInteger( resId );
- __PHONELOG1( EBasic, EPhoneControl,
- "CPhoneState::SetContextMenuL : resId =%d",resId );
-
- iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateContextMenu,
- &integerParam );
- }
-// -----------------------------------------------------------------------------
-// CPhoneState::UpdateInCallContextMenuL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CPhoneState::UpdateInCallContextMenuL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::UpdateInCallContextMenuL() ");
-
- SetContextMenuL( EPhoneNumberAcqMenubar );
-
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::UpdateIncomingContextMenuL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CPhoneState::UpdateIncomingContextMenuL( TInt aCallId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::UpdateIncomingContextMenuL() ");
-
- if( CPhoneState::IsVideoCall ( aCallId ) )
- {
- SetContextMenuL( EPhoneIncomingVideoCallMenubar );
- }
- else
- {
- SetContextMenuL( EPhoneIncomingCallMenubar );
- }
-
- }
-
-// -----------------------------------------------------------
-// CPhoneState::ShowNoteL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::ShowNoteL( TInt aResourceId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::ShowNoteL( ) ");
- __ASSERT_DEBUG( aResourceId, Panic( EPhoneCtrlParameterNotInitialized ) );
- TPhoneCmdParamNote noteParam;
- noteParam.SetType( EPhoneNotePermanent );
- noteParam.SetResourceId( CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( aResourceId ) );
-
- iViewCommandHandle->ExecuteCommandL( EPhoneViewShowNote, ¬eParam );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::ShowQueryL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::ShowQueryL( TInt aResourceId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::ShowQueryL( ) ");
- __ASSERT_DEBUG( aResourceId, Panic( EPhoneCtrlParameterNotInitialized ) );
- TPhoneCmdParamQuery queryParam;
- queryParam.SetQueryType( EPhoneQueryDialog );
- queryParam.SetQueryResourceId( CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( aResourceId ) );
-
- iViewCommandHandle->ExecuteCommandL( EPhoneViewShowQuery, &queryParam );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::ShowTextQueryL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::ShowTextQueryL(
- TInt aDialogResourceId,
- TInt aDefaultCbaResourceId,
- TInt aContentCbaResourceId,
- TDes* aDataText,
- TBool aSendKeyEnabled )
- {
- __ASSERT_DEBUG( aDialogResourceId &&
- aDefaultCbaResourceId &&
- aContentCbaResourceId &&
- aDataText,
- Panic( EPhoneCtrlParameterNotInitialized ) );
- TPhoneCmdParamQuery queryDialogParam;
- queryDialogParam.SetQueryType( EPhoneTextQueryDialog );
- queryDialogParam.SetQueryResourceId( aDialogResourceId );
- queryDialogParam.SetDefaultCba( aDefaultCbaResourceId );
- queryDialogParam.SetContentCba( aContentCbaResourceId );
- queryDialogParam.SetDataText( aDataText );
- queryDialogParam.SetSendKeyEnabled( aSendKeyEnabled );
-
- // Display dialog
- iViewCommandHandle->ExecuteCommandL( EPhoneViewShowQuery,
- &queryDialogParam );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::DisplayCallTerminationNoteL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::DisplayCallTerminationNoteL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::DisplayCallTerminationNoteL( ) ");
- __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
- Panic( EPhoneCtrlInvariant ) );
- if ( CheckIfShowCallTerminationNote() )
- {
- TBuf<KPhoneMaxCharsInNote> noteText;
- TBuf<KPhoneMaxCharsInNote> postCallLineText;
-
- // Post call Line 1: Call Summary
- LoadResource( postCallLineText, EPhoneNoteTextCallSummary );
- noteText.Append( postCallLineText );
- noteText.Append( KPhoneLineFeed );
-
- // Post call Line 2: Duration
- LoadResource( postCallLineText, EPhoneNoteTextCallDuration );
- noteText.Append( postCallLineText );
- noteText.Append( KPhoneLineFeed );
-
- // Post call Line 3: Time, get the format for last call time.
- LoadResource( postCallLineText, EPhoneCallDurationFormatString );
- TPtrC durationFormat( postCallLineText );
-
- // Get the last call duration
- TTime time( 0 );
- TTimeIntervalSeconds timeInterval =
- iStateMachine->PhoneEngineInfo()->CallDuration();
- time += timeInterval;
-
- // Format the time
- TBuf<KPhoneMaxTimeDisplayTextLength> timeString( KNullDesC );
- time.FormatL( timeString, durationFormat );
-
- AknTextUtils::DisplayTextLanguageSpecificNumberConversion( timeString );
-
- noteText.Append( timeString );
-
- TPhoneCmdParamGlobalNote globalNoteParam;
- globalNoteParam.SetType( EAknGlobalInformationNote );
- globalNoteParam.SetText( noteText );
- globalNoteParam.SetTone( CAknNoteDialog::ENoTone );
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewShowGlobalNote, &globalNoteParam );
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneState::SendGlobalInfoNoteL
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SendGlobalInfoNoteL( TInt aResourceId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::SendGlobalInfoNoteL( ) ");
- __ASSERT_DEBUG( aResourceId, Panic( EPhoneCtrlParameterNotInitialized ) );
- if ( CPhonePubSubProxy::Instance()->Value(
- KPSUidUikon, KUikGlobalNotesAllowed ) == 1 )
- {
- // Re-enable global notes
- TPhoneCmdParamBoolean globalNotifierParam;
- globalNotifierParam.SetBoolean( EFalse );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled,
- &globalNotifierParam );
-
- TPhoneCmdParamGlobalNote globalNoteParam;
-
- globalNoteParam.SetType( EAknGlobalInformationNote );
- globalNoteParam.SetTextResourceId(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( aResourceId ) );
- globalNoteParam.SetTone( EAvkonSIDInformationTone );
-
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewShowGlobalNote, &globalNoteParam );
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneUIController::SendGlobalWarningNoteL
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SendGlobalWarningNoteL( TInt aResourceId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::SendGlobalWarningNoteL( ) ");
- __ASSERT_DEBUG( aResourceId, Panic( EPhoneCtrlParameterNotInitialized ) );
- if ( CPhonePubSubProxy::Instance()->Value(
- KPSUidUikon, KUikGlobalNotesAllowed ) == 1 ||
- SimState() == EPESimReadable )
- {
- // Re-enable global notes
- TPhoneCmdParamBoolean globalNotifierParam;
- globalNotifierParam.SetBoolean( EFalse );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled,
- &globalNotifierParam );
-
- TPhoneCmdParamGlobalNote globalNoteParam;
- globalNoteParam.SetType( EAknGlobalWarningNote );
- globalNoteParam.SetTextResourceId(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( aResourceId ) );
- globalNoteParam.SetTone( EAvkonSIDWarningTone );
-
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewShowGlobalNote, &globalNoteParam );
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneUIController::SendGlobalErrorNoteL
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SendGlobalErrorNoteL( TInt aResourceId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::SendGlobalErrorNoteL( ) ");
- __ASSERT_DEBUG( aResourceId, Panic( EPhoneCtrlParameterNotInitialized ) );
- if ( CPhonePubSubProxy::Instance()->Value(
- KPSUidUikon, KUikGlobalNotesAllowed ) == 1 )
- {
- // Re-enable global notes
- TPhoneCmdParamBoolean globalNotifierParam;
- globalNotifierParam.SetBoolean( EFalse );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled,
- &globalNotifierParam );
-
- TPhoneCmdParamGlobalNote globalNoteParam;
- globalNoteParam.SetType( EAknGlobalErrorNote );
- globalNoteParam.SetTextResourceId(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( aResourceId ) );
- globalNoteParam.SetTone( CAknNoteDialog::EErrorTone );
-
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewShowGlobalNote, &globalNoteParam );
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneState::SetHandsfreeModeL
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SetHandsfreeModeL( TBool aHandsfreeMode )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::SetHandsfreeModeL( ) ");
- CPhoneAccessoryBTHandler* bt = CPhoneAccessoryBTHandler::NewLC(
- iViewCommandHandle, iStateMachine, this );
- if ( !bt->SetHandsfreeModeL( aHandsfreeMode ))
- {
- SendGlobalErrorNoteL( EPhoneNoteTextNotAllowed );
- }
- CleanupStack::PopAndDestroy( bt );
- }
-
-// ---------------------------------------------------------
-// CPhoneState::SetBTHandsfreeModeL
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SetBTHandsfreeModeL( TBool aHandsfreeMode )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::SetBTHandsfreeModeL( ) ");
- CPhoneAccessoryBTHandler* bt = CPhoneAccessoryBTHandler::NewLC(
- iViewCommandHandle, iStateMachine, this );
- if ( !bt->SetBTHandsfreeModeL( aHandsfreeMode ))
- {
- SendGlobalErrorNoteL( EPhoneNoteTextNotAllowed );
- }
- CleanupStack::PopAndDestroy( bt );
- }
-
-// <-------------------------- INTERNAL FUNCTIONS ------------------------>
-
-// -----------------------------------------------------------
-// CPhoneState::UpdateIncallIndicatorL
-// -----------------------------------------------------------
-//
-void CPhoneState::UpdateIncallIndicatorL( TInt aCallState )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::UpdateIncallIndicatorL( ) ");
- TPhoneCmdParamIncallIndicatorData incallIndicatorParam;
-
- // Set the state
- incallIndicatorParam.SetCallState( aCallState );
-
- // Set mode
- incallIndicatorParam.SetMode(
- CPhonePubSubProxy::Instance()->Value(
- KPSUidCtsyCallInformation,
- KCTsyCallType ) );
-
- TInt activeCallId = GetActiveCallIdL();
- if ( activeCallId > KErrNotFound )
- {
- if ( iStateMachine->PhoneEngineInfo()->CallALSLine( activeCallId )
- == CCCECallParameters::ECCELineTypeAux )
- {
- incallIndicatorParam.SetLine2( ETrue );
- }
- }
-
- // Set the mute status
- const TBool audioMute = iStateMachine->PhoneEngineInfo()->AudioMute();
- incallIndicatorParam.SetMute( audioMute );
-
- // Set the voice privacy status
- if ( activeCallId > KErrNotFound &&
- activeCallId != KConferenceCallId )
- {
- incallIndicatorParam.SetCiphering(
- iStateMachine->PhoneEngineInfo()->IsSecureCall( activeCallId ) );
- }
- else
- {
- incallIndicatorParam.SetCiphering( ETrue );
- }
-
- incallIndicatorParam.SetCipheringIndicatorAllowed(
- iStateMachine->PhoneEngineInfo()->SecureSpecified() );
-
- // Set the emergency status
- if( EPEStateIdle != iStateMachine->PhoneEngineInfo()->CallState( KPEEmergencyCallId ) )
- {
- incallIndicatorParam.SetEmergency( ETrue );
- }
-
- if( aCallState == EPSCTsyCallStateDisconnecting )
- {
- if ( TopAppIsDisplayedL() )
- {
- if ( ( !IsOnScreenDialerSupported() ) ||
- ( IsOnScreenDialerSupported() && !IsNumberEntryVisibleL() ) )
- {
- // Phone application is in the foreground so we don't need to
- // display the little bubble. If we don't hide it here then
- // it will appear for a short time. We don't want that.
- incallIndicatorParam.SetLittleBubbleVisible( EFalse );
- }
- }
- }
-
- // Update the in-call indicator
- iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateIncallIndicator,
- &incallIndicatorParam );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::UpdateProfileDisplayL
-// -----------------------------------------------------------
-//
-void CPhoneState::UpdateProfileDisplayL()
- {
- }
-
-// -----------------------------------------------------------
-// CPhoneState::UpdateOperatorDisplayL
-// -----------------------------------------------------------
-//
-void CPhoneState::UpdateOperatorDisplayL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::UpdateOperatorDisplayL( ) ");
- __PHONELOG( EBasic, EPhoneControl, "CPhoneState::UpdateOperatorDisplayL" );
- // Get current title pane content.
- TTelTitleDisplay titleContent;
- titleContent.iDisplayTag.Zero();
- titleContent.iLogoHandle = 0;
- TPckg<TTelTitleDisplay> titlePckg( titleContent );
-
- RProperty::Get(
- KPSUidTelInformation,
- KTelDisplayInfo,
- titlePckg );
-
- if ( TitlePaneIsVisibleL() )
- {
- // There is a title pane icon.
- if ( titleContent.iLogoHandle != 0 )
- {
- // Set new logo.
- __PHONELOG( EBasic, EPhoneControl,
- "CPhoneState::UpdateOperatorDisplayL - logo found" );
-
- if( iLogoHandle != titleContent.iLogoHandle )
- {
- __PHONELOG( EBasic, EPhoneControl,
- "CPhoneState::UpdateOperatorDisplayL - set new logo" );
-
- TPhoneCmdParamBitmap bitmapParam;
-
- // Duplicate bitmap from handle.
- CFbsBitmap* bitmap = new (ELeave) CFbsBitmap;
- CleanupStack::PushL( bitmap );
- User::LeaveIfError(
- bitmap->Duplicate( titleContent.iLogoHandle ) );
- bitmapParam.SetBitmap( bitmap );
-
- // Duplicate and set bitmap mask if needed
- CFbsBitmap* maskBitmap = NULL;
- if( titleContent.iLogoMaskHandle != 0 )
- {
- maskBitmap = new( ELeave )CFbsBitmap;
- CleanupStack::PushL( maskBitmap );
- User::LeaveIfError( maskBitmap->Duplicate(
- titleContent.iLogoMaskHandle ) );
- bitmapParam.SetMaskBitmap( maskBitmap );
- }
-
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewSetTitlePanePicture,
- &bitmapParam );
-
- // The title pane takes ownership of the bitmaps so no need
- // to destroy it here.
- if( maskBitmap )
- {
- // Pop maskBitmap only, if it has been created
- CleanupStack::Pop( maskBitmap );
- }
- CleanupStack::Pop( bitmap );
- }
- }
- else
- {
- __PHONELOG1( EBasic, EPhoneControl,
- "CPhoneState::UpdateOperatorDisplayL - set text=%S", &titleContent.iDisplayTag );
- iLogoHandle = titleContent.iLogoHandle;
-
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewSetTitlePaneContent,
- 0,
- titleContent.iDisplayTag );
- }
- }
-
- // Check background image.
- TPhoneCmdParamBitmap savedBitmapParam;
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewGetBackgroundImageBitmap,
- &savedBitmapParam );
-
- if ( titleContent.iBackgroundImageHandle !=
- savedBitmapParam.Bitmap()->Handle() )
- {
- __PHONELOG2( EBasic, EPhoneControl,
- "CPhoneState::UpdateOperatorDisplayL - update background image since different titleContent(%d), saved(%d)",
- titleContent.iBackgroundImageHandle, savedBitmapParam.Bitmap()->Handle() );
- // Background image has changed. Duplicate bitmap from handle if
- // available; otherwise reset the background image
- CFbsBitmap* bitmap = new (ELeave) CFbsBitmap;
- CleanupStack::PushL( bitmap );
- TInt err = KErrNone;
- if ( titleContent.iBackgroundImageHandle != 0 )
- {
- err = bitmap->Duplicate( titleContent.iBackgroundImageHandle );
- }
- else
- {
- bitmap->Reset();
- }
-
- if ( err == KErrNone )
- {
- iBitmapRedrawCounter = titleContent.iBackgroundImageRedrawCounter;
- TPhoneCmdParamBitmap bitmapParam;
- bitmapParam.SetBitmap( bitmap );
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewSetBackgroundImageBitmap,
- &bitmapParam );
- }
-
- CleanupStack::PopAndDestroy( bitmap );
- }
- else if ( titleContent.iBackgroundImageRedrawCounter !=
- iBitmapRedrawCounter )
- {
- iBitmapRedrawCounter = titleContent.iBackgroundImageRedrawCounter;
- iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateView );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleInitiatedEmergencyCallL
-// Default handling for EPEMessageInitiatedEmergencyCallL message
-// (other items were commented in a header).
-// -----------------------------------------------------------
-//
-void CPhoneState::HandleInitiatedEmergencyCallL( TInt /*aCallId*/ )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleInitiatedEmergencyCallL( ) ");
-
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs );
-
- // Stop tone playing, if necessary
- iViewCommandHandle->ExecuteCommandL( EPhoneViewStopRingTone );
-
- // Reset Hold flag to view
- TPhoneCmdParamBoolean holdFlag;
- holdFlag.SetBoolean( EFalse );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
-
- // Undim Answer button for sure.
- SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer );
-
- // Go to emergency call state
- // No need update cba
- iStateMachine->ChangeState( EPhoneStateEmergency );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleInitiatedEmergencyWhileActiveVideoL
-// -----------------------------------------------------------
-//
-void CPhoneState::HandleInitiatedEmergencyWhileActiveVideoL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleInitiatedEmergencyWhileActiveVideoL( ) ");
-
- // We have existing video call so need to release dataport before continuing
- // emergency call. Otherwise we will face problems with dataport use later.
- CPhoneMediatorFactory::Instance()->Sender()->IssueCommand( KMediatorVideoTelephonyDomain,
- KCatPhoneToVideotelCommands,
- EVtCmdReleaseDataport,
- TVersion( KPhoneToVideotelCmdVersionMajor,
- KPhoneToVideotelCmdVersionMinor,
- KPhoneToVideotelCmdVersionBuild ),
- KNullDesC8,
- CPhoneContinueEmergencyCallCommand::NewL( *iStateMachine ) );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleShowImeiL
-// -----------------------------------------------------------
-//
-void CPhoneState::HandleShowImeiL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleShowImeiL( ) ");
-
- // Fetch IMEI
- TBuf<RMobilePhone::KPhoneSerialNumberSize> serialNumber;
- TPEPhoneIdentityParameters phoneIdentityParameters =
- iStateMachine->PhoneEngineInfo()->PhoneIdentityParameters();
- serialNumber = phoneIdentityParameters.iSerialNumber;
-
- HBufC* imeiNoteText = StringLoader::LoadLC(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID(
- EPhonePhoneImeiString ), serialNumber );
-
- TPhoneCmdParamGlobalNote noteParam;
- noteParam.SetType( EAknGlobalInformationNote );
- noteParam.SetTone( EAvkonSIDInformationTone );
- noteParam.SetText( *imeiNoteText );
- noteParam.SetTimeout( KPhoneNoteNoTimeout );
-
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewShowGlobalNote,
- ¬eParam );
-
- CleanupStack::PopAndDestroy( imeiNoteText );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleCallSecureStatusChangeL
-// -----------------------------------------------------------
-//
-void CPhoneState::HandleCallSecureStatusChangeL( TInt aCallId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleCallSecureStatusChangeL( ) ");
-
- TBool ciphering( ETrue );
- TBool secureSpecified( ETrue );
-
- if ( aCallId > KErrNotFound )
- {
- ciphering = iStateMachine->PhoneEngineInfo()->IsSecureCall( aCallId );
- secureSpecified = iStateMachine->PhoneEngineInfo()->SecureSpecified();
- }
-
- TPhoneCmdParamCallHeaderData callHeaderParam;
-
- callHeaderParam.SetCiphering( ciphering );
- callHeaderParam.SetCipheringIndicatorAllowed( secureSpecified );
-
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewCipheringInfoChange,
- aCallId,
- &callHeaderParam );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleShowLifeTimerL
-// -----------------------------------------------------------
-//
-void CPhoneState::HandleShowLifeTimerL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleShowLifeTimerL( ) ");
-
- // Fetch LifeTime
- TPELifeTimeData lifeTimeData =
- iStateMachine->PhoneEngineInfo()->LifeTimerData();
-
- TLocale locale;
- TBuf<KTimerTextLength> lifetimerText;
- lifetimerText.NumFixedWidth(
- lifeTimeData.iHours,
- EDecimal,
- KPhoneLifeTimerHoursLength );
-
- lifetimerText.Append(locale.TimeSeparator( KTimerMinuteSeparator ) );
-
- TBuf<KPhoneLifeTimerMinutesLength> mins;
- mins.NumFixedWidth(
- lifeTimeData.iMinutes,
- EDecimal,
- KPhoneLifeTimerMinutesLength );
-
- lifetimerText.Append(mins);
-
- HBufC* buf = StringLoader::LoadLC(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID(
- EPhoneLifeTimeFormat ), lifetimerText );
-
- TPhoneCmdParamGlobalNote noteParam;
- noteParam.SetType( EAknGlobalInformationNote );
- noteParam.SetTone( EAvkonSIDInformationTone );
- noteParam.SetText( *buf );
- noteParam.SetTimeout( KPhoneNoteNoTimeout );
-
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewShowGlobalNote,
- ¬eParam );
-
- CleanupStack::PopAndDestroy( buf );
- }
-
-// ---------------------------------------------------------
-// CPhoneState::IsVideoCall
-// ---------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::IsVideoCall( const TInt aCallId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::IsVideoCall( ) ");
- TBool isVideoCall( EFalse );
- TRAP_IGNORE( isVideoCall = CallheaderManagerL()->IsVideoCall( aCallId ) );
- __PHONELOG1( EBasic, EPhoneControl,
- "CPhoneState::IsVideoCall isVideoCall(%d)",
- isVideoCall );
- return isVideoCall;
- }
-
-// ---------------------------------------------------------
-// CPhoneState::ChangeAlsLineL
-// ---------------------------------------------------------
-//
-void CPhoneState::ChangeAlsLineL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::ChangeAlsLineL( ) ");
-
- if ( !IsOnScreenDialerSupported() )
- {
- // Do state-specific operation when number entry is cleared
- HandleNumberEntryClearedL();
- }
-
- CCCECallParameters::TCCELineType currentLine;
- TSSSettingsAlsValue newLine( ESSSettingsAlsPrimary );
-
- currentLine = iStateMachine->PhoneEngineInfo()->ALSLine();
-
- if ( currentLine == CCCECallParameters::ECCELineTypePrimary )
- {
- newLine = ESSSettingsAlsAlternate;
- }
- else if ( currentLine == CCCECallParameters::ECCELineTypeAux )
- {
- newLine = ESSSettingsAlsPrimary;
- }
-
- RSSSettings ssSettings;
- TInt retValue = ssSettings.Open();
- __PHONELOG1( EBasic, EPhoneControl,
- "CPhoneState::ChangeAlsLineL : Open %d", retValue );
- if ( retValue == KErrNone )
- {
- retValue = ssSettings.Set( ESSSettingsAls, newLine );
- __PHONELOG1( EBasic, EPhoneControl,
- "CPhoneState::ChangeAlsLineL : Set %d", retValue );
- ssSettings.Close();
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneState::GetActiveCallIdL()
-// ---------------------------------------------------------
-//
-TInt CPhoneState::GetActiveCallIdL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::GetActiveCallId()( ) ");
-
- // Fetch active call's id from view
- TPhoneViewResponseId response;
- TPhoneCmdParamCallStateData callStateData;
- callStateData.SetCallState( EPEStateConnected );
- response = iViewCommandHandle->HandleCommandL(
- EPhoneViewGetCallIdByState, &callStateData );
-
- if ( response == EPhoneViewResponseSuccess &&
- callStateData.CallId() < 0 ) // no connected calls
- {
- // check for held call
- callStateData.SetCallState( EPEStateHeld );
- response = iViewCommandHandle->HandleCommandL(
- EPhoneViewGetCallIdByState, &callStateData );
- }
-
- return callStateData.CallId();
- }
-
-// ---------------------------------------------------------
-// CPhoneState::SimState()
-// ---------------------------------------------------------
-//
-EXPORT_C TPESimState CPhoneState::SimState() const
- {
-
- /*
- SIM states:
-
- EPESimStatusUninitialized = KPEStartupEnumerationFirstValue =100,
- EPESimUsable, // The Sim card is fully usable.
- EPESimReadable, // The SIM card is not fully usable, but the emergency number can be read.
- EPESimNotReady, // The Sim card is present but not ready or usable.
- EPESimNotPresent, // The Sim card is not present.
- EPESimNotSupported // SIM/RUIM is not supported. Some CDMA phones do not support a SIM/RUIM at all.
- */
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::SimState()");
- __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
- Panic( EPhoneCtrlInvariant ) );
- TPESimState simState = iStateMachine->PhoneEngineInfo()->SimState();
-
- __PHONELOG1( EBasic, EPhoneControl,
- "CPhoneState::SimState - value= %d", simState );
- return simState;
- }
-
-// ---------------------------------------------------------
-// CPhoneState::IsSimOk()
-// ---------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::IsSimOk()
- {
-
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::IsSimOk()");
- // Phone is interested on Sim state and sim security statuses
- // Check first Sim state status:
- TBool retVal( ETrue );
- switch ( SimState() )
- {
- case EPESimNotSupported:
- retVal = EFalse;
- break;
-
- case EPESimNotPresent:
- {
- if ( !FeatureManager::FeatureSupported( KFeatureIdOfflineMode ) ||
- !FeatureManager::FeatureSupported( KFeatureIdFfSimlessOfflineSupport ) )
- {
- retVal = EFalse;
- }
- break;
- }
-
- default:
- break;
- }
- if ( retVal != EFalse )
- {
- // Sim state is valid, check also Sim security status
- switch ( SimSecurityStatus() )
- {
- case ESimRejected:
- case ESimUnaccepted:
- retVal = EFalse;
- break;
-
- default:
- break;
- }
- }
- __PHONELOG1( EBasic, EPhoneControl,
- "CPhoneState::IsSimOK - value= %d", retVal );
- return retVal;
- }
-
-// -----------------------------------------------------------
-// CPhoneState::IsSimStateNotPresentWithSecurityModeEnabled
-// -----------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::IsSimStateNotPresentWithSecurityModeEnabled()
- {
- TPhoneCmdParamBoolean isSecurityMode;
- TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode ) );
- if ( SimState() == EPESimNotPresent && isSecurityMode.Boolean() )
- {
- return ETrue;
- }
- else
- {
- return EFalse;
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneState::SetDivertIndication
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SetDivertIndication( const TBool aDivertIndication )
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::SetDivertIndication()");
- TRAP_IGNORE( CallheaderManagerL()->SetDivertIndication( aDivertIndication ) );
- }
-
-// ---------------------------------------------------------
-// CPhoneState::StartAlsLineChangeTimerL
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::StartAlsLineChangeTimerL()
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::StartAlsLineChangeTimerL()");
- TBool alsLineAvailable = iStateMachine->PhoneEngineInfo()->ALSLineSupport();
-
- if( alsLineAvailable )
- {
- if( !iAlsLineChangeKeyPressTimer )
- {
- iAlsLineChangeKeyPressTimer = CPhoneTimer::NewL();
- }
-
- iAlsLineChangeKeyPressTimer->After( KAlsLineChangeTimerValue,
- TCallBack( AlsLineChangeTimerCallbackL, this ) );
- }
- else
- {
- // Don't bother launching the timer. ALS not supported.
- __PHONELOG( EBasic, EPhoneControl,
- "CPhoneState::StartAlsLineChangeTimerL - ALS not supported " );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::StartShowSecurityNoteL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CPhoneState::StartShowSecurityNoteL()
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::StartShowSecurityNoteL ");
-
- // Set security mode on.
- TPhoneCmdParamBoolean securityMode;
- securityMode.SetBoolean( ETrue );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetSecurityMode, &securityMode );
-
- // Remove number entry from screen
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
-
- TPhoneCmdParamBoolean visibleMode;
- visibleMode.SetBoolean( EFalse );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetStatusPaneVisible, &visibleMode );
-
- iCbaManager->UpdateCbaL( EPhoneEmptyCBA );
-
- TPhoneCmdParamInteger uidParam;
- // Bring Phone app in the foreground
- uidParam.SetInteger( KUidPhoneApplication.iUid );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewBringAppToForeground,
- &uidParam );
-
- // Set Phone as the top application
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetTopApplication,
- &uidParam );
-
- TInt resourceId ( KErrNone );
-
- if ( SimSecurityStatus() == ESimRejected )
- {
- resourceId = CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( EPhoneSimRejected );
- }
- else if ( SimState() == EPESimNotPresent )
- {
- // insert sim card -note
- resourceId = CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( EPhoneSimRemoved );
- }
- else if ( SimSecurityStatus() == ESimUnaccepted )
- {
- resourceId = CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( EPhoneSimUnaccepted );
- }
-
- if ( resourceId != KErrNone )
- {
- // Add it to the resource string
- HBufC* buf = StringLoader::LoadLC( resourceId );
-
- TPhoneCmdParamNote noteParam;
-
- noteParam.SetResourceId( CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( EPhoneSecurityInformationNote ) );
-
- noteParam.SetText( *buf );
- noteParam.SetTone( CAknNoteDialog::EConfirmationTone );
- noteParam.SetType( EPhoneNoteSecurity );
- // Display note
- iViewCommandHandle->ExecuteCommandL( EPhoneViewShowNote, ¬eParam );
-
- CleanupStack::PopAndDestroy( buf );
-
-
- // Capture the App key
- TPhoneCmdParamKeyCapture appKeyCaptureParam;
- appKeyCaptureParam.SetKey( EStdKeyApplication0 );
- appKeyCaptureParam.SetKeyCode( EKeyApplication0 );
- appKeyCaptureParam.SetCaptureType( EPhoneKeyAllEvents );
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewStartCapturingKey, &appKeyCaptureParam );
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneState::AlsLineChangeTimerCallbackL
-// ---------------------------------------------------------
-//
-TInt CPhoneState::AlsLineChangeTimerCallbackL( TAny* aAny )
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::AlsLineChangeTimerCallbackL()");
-
- // Send a key up event for stopping keypad tone
- reinterpret_cast<CPhoneState*>( aAny )->
- iStateMachine->SendPhoneEngineMessage(
- MPEPhoneModel::EPEMessageEndDTMF );
-
- if ( !( reinterpret_cast<CPhoneState*>( aAny )->
- IsOnScreenDialerSupported() ) )
- {
- // If dialer is undefined remove the number entry.
- reinterpret_cast<CPhoneState*>( aAny )->
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
- }
- else
- {
- // If on screen dialer is in use just clear entry
- // do not remove dialer.
- reinterpret_cast<CPhoneState*>( aAny )->
- NumberEntryClearL();
- }
-
- // Show the als line changing confirmation query
- reinterpret_cast<CPhoneState*>( aAny )->
- ShowQueryL( EPhoneAlsLineChangeConfirmationQuery );
-
- return KErrNone;
- }
-
-// ---------------------------------------------------------
-// CPhoneState::ShowWlanMacAddressL
-// ---------------------------------------------------------
-//
-void CPhoneState::ShowWlanMacAddressL()
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::ShowWlanMacAddressL()");
- if ( IsOnScreenDialerSupported() )
- {
- NumberEntryClearL();
- }
- else
- {
- // Remove number entry from screen
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
- }
-
- // Fetch WLAN MAC address
- TBuf8<KPhoneWlanMacAddressLength> address;
- RProperty::Get(
- KPSUidWlan,
- KPSWlanMacAddress,
- address );
-
- // Format fetched address
- TBuf<KPhoneWlanMacAddressLength> wlanMACAddress;
- for ( TInt i( 0 ); i < address.Length(); i++ )
- {
- // Set separator
- if( i > 0 )
- {
- wlanMACAddress.Append( KPhoneWlanSeparator );
- }
- // Set data
- TBuf<10> tmp;
- tmp.Format( KWLanMACDataFormat, address[i] );
- wlanMACAddress.Append( tmp );
- }
-
- // Now we need the localised text
- HBufC* wlanMacAddress = StringLoader::LoadLC(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( EPhoneWlanMacAddress ), wlanMACAddress );
-
- TPhoneCmdParamNote noteParam;
- noteParam.SetType( EPhoneNoteCustom );
- noteParam.SetResourceId( CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( EPhoneInformationWaitNote ) );
- noteParam.SetText( *wlanMacAddress );
- noteParam.SetTone( CAknNoteDialog::EConfirmationTone );
-
- // Display note
- iViewCommandHandle->ExecuteCommandL( EPhoneViewShowNote, ¬eParam );
-
- CleanupStack::PopAndDestroy( wlanMacAddress );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleAudioAvailableOutputChangedL
-// Default handling for EPEMessageAvailableAudioOutputsChanged message
-// (other items were commented in a header).
-// -----------------------------------------------------------
-//
-void CPhoneState::HandleAudioAvailableOutputChangedL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleAudioAvailableOutputChangedL() ");
- __ASSERT_DEBUG( iStateMachine->PhoneEngineInfo(),
- Panic( EPhoneCtrlInvariant ) );
-
- TPhoneCmdParamAudioAvailability outputParam;
-
- // Output
- const TPEAudioOutput audioOutput =
- iStateMachine->PhoneEngineInfo()->AudioOutput();
-
- // BT availability
- TBool btAvailable = iStateMachine->PhoneEngineInfo()->AudioOutputAvailable(
- EPEBTAudioAccessory );
- outputParam.SetBTAccAvailable( btAvailable );
-
- // Wired availability
- TBool wiredAvailable = iStateMachine->PhoneEngineInfo()->AudioOutputAvailable(
- EPEWiredAudioAccessory );
- outputParam.SetWiredAccAvailable( wiredAvailable );
-
- // BTA disconnect handler check
- if( btAvailable )
- {
- CPhoneBtaaDisconnectHandler::InstanceL()->Cancel();
- }
-
- // view update
- iViewCommandHandle->ExecuteCommandL( EPhoneViewActivateAudioAvailabilityUIChanges,
- &outputParam );
- }
-
-
-// ---------------------------------------------------------
-// CPhoneState::IsAlsLineChangePossible
-// ---------------------------------------------------------
-//
-TBool CPhoneState::IsAlsLineChangePossible()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::IsAlsLineChangePossible( ) ");
-
- TBool isAlsLineChangePossible( ETrue );
- TSSSettingsAlsBlockingValue AlsBlockingValue( ESSSettingsAlsBlockingNotSupported );
- TInt value( 0 );
-
- RSSSettings ssSettings;
- TInt retValue = ssSettings.Open();
-
- if ( retValue == KErrNone )
- {
- ssSettings.Get( ESSSettingsAlsBlocking, value );
- ssSettings.Close();
-
- AlsBlockingValue = static_cast< TSSSettingsAlsBlockingValue > ( value );
-
- if( AlsBlockingValue == ESSSettingsAlsAlternate )
- {
- isAlsLineChangePossible = EFalse;
- }
- }
-
- return isAlsLineChangePossible;
- }
-
-// ---------------------------------------------------------
-// CPhoneState::ShowNumberBusyNoteL
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::ShowNumberBusyNoteL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::ShowNumberBusyNoteL( ) ");
- // Re-enable global notes
- TPhoneCmdParamBoolean globalNotifierParam;
- globalNotifierParam.SetBoolean( EFalse );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled,
- &globalNotifierParam );
-
- TInt resource( EPhoneNumberBusy );
-
- if( iCustomization )
- {
- // Get customized text resource for busy note
- resource = iCustomization->CustomizeBusyNoteText();
- }
-
- // Show number busy note
- TPhoneCmdParamGlobalNote globalNoteParam;
- globalNoteParam.SetType( EAknGlobalInformationNote );
- globalNoteParam.SetTextResourceId(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( resource ) );
- globalNoteParam.SetTone( EAvkonSIDInformationTone );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewShowGlobalNote,
- &globalNoteParam );
- }
-
-// ---------------------------------------------------------
-// CPhoneState::IsAutoLockOn
-// ---------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::IsAutoLockOn() const
- {
- // Check if phone is locked
- const TBool phoneIsLocked =
- CPhonePubSubProxy::Instance()->Value(
- KPSUidCoreApplicationUIs,
- KCoreAppUIsAutolockStatus ) > EAutolockOff;
-
- return phoneIsLocked;
- }
-
-// ---------------------------------------------------------
-// CPhoneState::IsKeyLockOn
-// ---------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::IsKeyLockOn() const
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::IsKeyLockOn( ) ");
- TPhoneCmdParamBoolean keyLockStatus;
- keyLockStatus.SetBoolean( EFalse );
-
- iViewCommandHandle->ExecuteCommand(
- EPhoneViewGetKeyLockStatus,
- &keyLockStatus );
-
- __PHONELOG1( EBasic,
- EPhoneControl,
- "CPhoneState::IsKeyLockOn() Lock Status: %d",
- keyLockStatus.Boolean() );
- return keyLockStatus.Boolean();
- }
-
-// ---------------------------------------------------------
-// CPhoneState::CompleteSatRequestL
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::CompleteSatRequestL( const TInt aCallId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::CompleteSatRequestL( ) ");
- iStateMachine->SetCallId( aCallId );
- iStateMachine->SendPhoneEngineMessage(
- MPEPhoneModel::EPEMessageSatCallRequestCompleted );
- }
-
-// ---------------------------------------------------------
-// CPhoneState::SetTouchPaneButtons
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SetTouchPaneButtons( TInt /*aResourceId*/ )
- {
- if ( FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
- {
- TBool emergency( EPEStateIdle !=
- iStateMachine->PhoneEngineInfo()->CallState( KPEEmergencyCallId ) );
- TPhoneCmdParamBoolean booleanParam;
- booleanParam.SetBoolean( emergency );
-
- TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL(
- EPhoneViewSetTouchPaneButtons,
- &booleanParam ) );
- SetTouchPaneVisible( ETrue );
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneState::DeleteTouchPaneButtons
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::DeleteTouchPaneButtons()
- {
- if ( FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
- {
- TPhoneCmdParamBoolean boolParam;
- TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL(
- EPhoneViewSetTouchPaneButtons,
- &boolParam ) );
- SetTouchPaneVisible( EFalse );
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneState::SetTouchPaneVisible
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SetTouchPaneVisible( TBool aVisible )
- {
- if ( FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
- {
- TPhoneCmdParamBoolean booleanParam;
- booleanParam.SetBoolean( aVisible );
- TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL(
- EPhoneViewSetTouchPaneVisible,
- &booleanParam ) );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CPhoneState::SetTouchButtonEnabled
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SetTouchPaneButtonEnabled( TInt aCommandId )
- {
- if ( FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
- {
- TPhoneCmdParamInteger commandParam;
- commandParam.SetInteger( aCommandId );
- iViewCommandHandle->ExecuteCommand( EPhoneViewEnableTouchButton,
- &commandParam );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CPhoneState::SetTouchButtonDisabled
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SetTouchPaneButtonDisabled( TInt aCommandId )
- {
- if ( FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
- {
- TPhoneCmdParamInteger commandParam;
- commandParam.SetInteger( aCommandId );
-
- iViewCommandHandle->ExecuteCommand( EPhoneViewDisableTouchButton,
- &commandParam );
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneState::HandleLongHashL
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleLongHashL()
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::HandleLongHashL() ");
-
- TPhoneCmdParamInteger numberEntryCountParam;
- iViewCommandHandle->ExecuteCommandL( EPhoneViewGetNumberEntryCount,
- &numberEntryCountParam );
- TInt neLength( numberEntryCountParam.Integer() );
-
- if( iCustomization && iCustomization->AllowAlphaNumericMode() )
- {
- if ( NumberEntryManagerL()->NumberEntryInNumericModeL() )
- {
- if ( neLength == 0 )
- {
- OnlyHashInNumberEntryL();
- }
-
- if ( neLength == 1 )
- {
- NumberEntryClearL();
- }
- }
- NumberEntryManagerL()->NumberEntryToggleAlphaNumericModeL();
- }
- else
- {
- if( neLength == 1 )
- {
- TPhoneCmdParamBoolean isSecurityMode;
- iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode );
-
- if ( !isSecurityMode.Boolean() )
- {
- OnlyHashInNumberEntryL();
- }
- }
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::OpenVKBL
-// -----------------------------------------------------------
-//
-void CPhoneState::OpenVkbL()
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::OpenVKB() ");
- iViewCommandHandle->ExecuteCommandL( EPhoneViewOpenVirtualKeyBoard );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::BeginUiUpdateLC
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::BeginUiUpdateLC()
- {
-
- iViewCommandHandle->ExecuteCommand( EPhoneViewBeginUpdate );
-
- TCleanupItem operation( UiUpdateCleanup, this );
- CleanupStack::PushL( operation );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::BeginTransEffectLC
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::BeginTransEffectLC( TStateTransEffectType aType )
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::BeginTransEffectLC( ) ");
- TPhoneCmdParamTransEffect effectParam;
-
- switch ( aType )
- {
- case ENumberEntryOpen:
- effectParam.SetType( EPhoneTransEffectDialerOpen );
- break;
- case ENumberEntryClose:
- effectParam.SetType( EPhoneTransEffectDialerClose );
- break;
- case ENumberEntryCreate:
- effectParam.SetType( EPhoneTransEffectDialerCreate );
- break;
- default:
- effectParam.SetType( EPhoneTransEffectNone );
- }
-
- iViewCommandHandle->ExecuteCommand( EPhoneViewBeginTransEffect, &effectParam );
-
- TCleanupItem operation( EffectCleanup, this );
- CleanupStack::PushL( operation );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::EndUiUpdate
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::EndUiUpdate()
- {
- CleanupStack::PopAndDestroy(); // Call UiUpdateCleanup
- }
-
-// -----------------------------------------------------------
-// CPhoneState::EndTransEffect
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::EndTransEffect()
- {
- CleanupStack::PopAndDestroy(); // Call EffectCleanup
- }
-
-// -----------------------------------------------------------
-// CPhoneState::CheckIfShowTerminationNote
-// This method is intended to be overridden in states
-// that contain more info about decision.
-// -----------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::CheckIfShowCallTerminationNote( )
- {
- TBool show = EFalse;
- TInt callSummaryActivated = 0;
- const TInt err = CPhoneCenRepProxy::Instance()->GetInt(
- KCRUidCommonTelephonySettings,
- KSettingsSummaryAfterCall,
- callSummaryActivated );
-
- if ( err == KErrNone && callSummaryActivated )
- {
- show = ETrue;
- }
-
- return show;
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::HandleDtmfKeyTone
-// Called from KeyEventForwarder
-// Allow only special characters to pass from
-// keyEventForwarder to phoneEngine
-// -----------------------------------------------------------------------------
-//
-
-EXPORT_C void CPhoneState::HandleDtmfKeyToneL( const TKeyEvent& aKeyEvent,
- TEventCode aEventCode )
- {
- SendDtmfKeyEventL( aKeyEvent, aEventCode );
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::UiUpdateCleanup
-// -----------------------------------------------------------------------------
-//
-void CPhoneState::UiUpdateCleanup(TAny* aThis )
- {
- static_cast<CPhoneState*>( aThis )->iViewCommandHandle->ExecuteCommand(
- EPhoneViewEndUpdate );
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::EffectCleanup
-// -----------------------------------------------------------------------------
-//
-void CPhoneState::EffectCleanup(TAny* aThis )
- {
- TPhoneCmdParamTransEffect effectParam;
- effectParam.SetType( EPhoneTransEffectStop );
-
- static_cast<CPhoneState*>( aThis )->iViewCommandHandle->ExecuteCommand(
- EPhoneViewEndTransEffect, &effectParam );
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::IsDTMFEditorVisibleL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::IsDTMFEditorVisibleL() const
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::IsDTMFEditorVisibleL( ) ");
- return iViewCommandHandle->HandleCommandL(
- EPhoneViewIsDTMFEditorVisible ) ==
- EPhoneViewResponseSuccess;
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::CloseDTMFEditorL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CPhoneState::CloseDTMFEditorL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::CloseDTMFEditorL()");
- if ( iOnScreenDialer ) // Touch
- {
- TPhoneCmdParamBoolean booleanParam;
- booleanParam.SetBoolean( EFalse );
- // Disable dialer DTMF mode
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfDialerViewVisible,
- &booleanParam );
-
- // Closing effect is shown when DTMF dialer exist.
- BeginTransEffectLC( ENumberEntryClose );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
- EndTransEffect();
- }
- else // Non-Touch
- {
- // If dtmf query is visible then remove number entry
- // because it should not be shown if user has pressed end key.
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveQuery );
- }
-
- // Do state-specific behaviour if number entry is cleared
- HandleNumberEntryClearedL();
- }
-
-// -----------------------------------------------------------
-// CPhoneState::SetDefaultFlagsL()
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SetDefaultFlagsL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::SetDefaultFlagsL()");
- iViewCommandHandle->ExecuteCommandL( EPhoneViewHideNaviPaneAudioVolume );
-
- // Reset Hold flag to view
- TPhoneCmdParamBoolean holdFlag;
- holdFlag.SetBoolean( EFalse );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
-
- // Update FSW
- iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateFSW );
-
- // Re-enable global notes
- TPhoneCmdParamBoolean globalNotifierParam;
- globalNotifierParam.SetBoolean( EFalse );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled,
- &globalNotifierParam );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetEikonNotifiersDisabled,
- &globalNotifierParam );
-
- // uncapture App and Camera keys if not security mode
- TPhoneCmdParamBoolean isSecurityMode;
- iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode );
- if ( !isSecurityMode.Boolean() )
- {
- CaptureKeysDuringCallNotificationL( EFalse );
- }
-
- // Restore keylock if phone has been locked before call.
- if ( iStateMachine->PhoneStorage()->NeedToEnableKeylock() )
- {
- iViewCommandHandle->ExecuteCommandL( EPhoneViewEnableKeyLock );
- iStateMachine->PhoneStorage()->SetNeedToEnableKeylock( EFalse );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::GetVolumeLevel
-// -----------------------------------------------------------
-//
-TInt CPhoneState::GetVolumeLevel()
- {
- TPhoneCmdParamInteger integerParam;
-
- iViewCommandHandle->ExecuteCommand( EPhoneViewGetAudioVolumeLevel,
- &integerParam );
- return integerParam.Integer();
- }
-
-// -----------------------------------------------------------
-// CPhoneState::ShowVideoCallOutOfMemoryNoteL
-// -----------------------------------------------------------
-//
-void CPhoneState::ShowVideoCallOutOfMemoryNoteL()
- {
- __LOGMETHODSTARTEND(EPhoneControl,
- "CPhoneState::ShowVideoCallOutOfMemoryNoteL()" );
-
- // Re-enable global notes
- TPhoneCmdParamBoolean globalNotifierParam;
- globalNotifierParam.SetBoolean( EFalse );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled,
- &globalNotifierParam );
-
- // 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 );
-
- // Display error note
- SExtendedError ext;
- ext.iComponent = KUidPhoneApplication;
- ext.iErrorNumber = KErrNoMemory;
- ext.iInformation = EFalse;
- TBuf<1> ignore;
- iAvkonAppUi->HandleError( KErrNoMemory, ext, ignore, ignore );
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::SimSecurityStatus
-// -----------------------------------------------------------------------------
-//
-TInt CPhoneState::SimSecurityStatus() const
- {
- /*
- Sim security statuses:
-
- ESimSecurityStatusUninitialized = KStartupEnumerationFirstValue,
- ESimRejected, // The PUK code has been entered incorrectly, so the card is rejected.
- ESimUnaccepted // The SIM lock is on, so the card is unaccepted.
- */
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::SimSecurityStatus()" );
- return CPhonePubSubProxy::Instance()->Value(
- KPSUidStartup, KStartupSimSecurityStatus );
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::CallWaitingNoteL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CPhoneState::CallWaitingNoteL( TInt aCallId )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::CallWaitingNoteL()" );
-
- TBuf< KPhoneContactNameMaxLength > callText( KNullDesC );
-
- // Set CLI text for the call header
- const TBool contactInfoAvailable =
- iStateMachine->PhoneEngineInfo()->RemoteName( aCallId ).Length() ||
- iStateMachine->PhoneEngineInfo()->RemoteCompanyName( aCallId ).Length();
-
- __PHONELOG1( EBasic, EPhoneControl,
- "CPhoneState::CallWaitingNoteL - contactInfoAvailable(%d)", contactInfoAvailable );
-
- __PHONELOG1( EBasic, EPhoneControl,
- "CPhoneState::CallWaitingNoteL - remote name(%S)",
- &iStateMachine->PhoneEngineInfo()->RemoteName( aCallId ) );
-
- __PHONELOG1( EBasic, EPhoneControl,
- "CPhoneState::CallWaitingNoteL - company name(%S)",
- &iStateMachine->PhoneEngineInfo()->RemoteCompanyName( aCallId ) );
-
- if ( contactInfoAvailable )
- {
- // Set Call Text flag to waiting note
- callText = iStateMachine->PhoneEngineInfo()->RemoteName( aCallId );
-
- // if no remote name available then set company name
- if ( callText == KNullDesC )
- {
- callText = iStateMachine->PhoneEngineInfo()->RemoteCompanyName( aCallId );
- }
-
- TPhoneCmdParamGlobalNote globalNoteParam;
- globalNoteParam.SetText( callText );
- globalNoteParam.SetType( EAknGlobalInformationNote );
- globalNoteParam.SetTone( EAvkonSIDInformationTone );
- globalNoteParam.SetTextResourceId(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( EPhoneCallWaitingWithLabel ) );
-
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewShowGlobalNote, &globalNoteParam );
- }
- else
- {
- SendGlobalInfoNoteL( EPhoneCallWaitingWithoutLabel );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CPhoneState::SetRingingTonePlaybackL()
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SetRingingTonePlaybackL( TInt aCallId )
- {
- __LOGMETHODSTARTEND(EPhoneControl,
- "CPhoneState::SetRingingTonePlaybackL()" );
-
- TPhoneCmdParamRingTone ringToneParam;
- ringToneParam.SetVolume(
- iStateMachine->PhoneEngineInfo()->RingingVolume() );
-
- TArray< TContactItemId > alertGroups =
- iStateMachine->PhoneEngineInfo()->AlertForGroup();
-
- TInt alertGroupCount = alertGroups.Count();
- TInt contactGroupCount =
- iStateMachine->PhoneEngineInfo()->ContactGroups( aCallId ).Count();
- TBool alertingGroupFound( EFalse );
-
- // Check contents of both the alerting groups array and call contact group
- // array, if any of the group ids match then allow playing.
- if ( alertGroupCount > 0 )
- {
- for ( TInt i = 0 ; i < alertGroupCount ; i++ )
- {
- for ( TInt j = 0 ; j < contactGroupCount ; j++ )
- {
- if ( alertGroups[ i ] ==
- ( iStateMachine->PhoneEngineInfo()->ContactGroups(
- aCallId ) )[ j ] )
- {
- alertingGroupFound = ETrue;
- }
- }
- }
- if ( alertingGroupFound == EFalse )
- {
- ringToneParam.SetRingingType( EProfileRingingTypeSilent );
- }
- else
- {
- ringToneParam.SetRingingType(
- iStateMachine->PhoneEngineInfo()->RingingType() );
- }
- }
- else // no alerting groups set
- {
- ringToneParam.SetRingingType(
- iStateMachine->PhoneEngineInfo()->RingingType() );
- }
-
- // Set ring tone
- if ( iStateMachine->PhoneEngineInfo()->PersonalRingingTone(
- aCallId ).Length() )
- {
- // Set the personal ring tone
- ringToneParam.SetRingTone(
- iStateMachine->PhoneEngineInfo()->PersonalRingingTone( aCallId ) );
- ringToneParam.SetType( EPhoneRingTonePersonal );
- }
- else if ( iStateMachine->PhoneEngineInfo()->RingingTone(
- aCallId ).Length() )
- {
- // Set the profile ring tone
- ringToneParam.SetRingTone(
- iStateMachine->PhoneEngineInfo()->RingingTone( aCallId ) );
- ringToneParam.SetType( EPhoneRingToneProfile );
-
- if ( ( iStateMachine->PhoneEngineInfo()->CallerImage( aCallId ).Length() > 0 &&
- BaflUtils::FileExists( CCoeEnv::Static()->FsSession(),
- iStateMachine->PhoneEngineInfo()->CallerImage( aCallId ) ) ) ||
- iStateMachine->PhoneEngineInfo()->HasCallerThumbnail( aCallId ) )
- {
- // Caller image set
- ringToneParam.SetCallerImageStatus( ETrue );
- }
- }
-
- // Set text to say, if enabled
- if ( iStateMachine->PhoneEngineInfo()->TextToSpeech() )
- {
- ringToneParam.SetTextToSay(
- iStateMachine->PhoneEngineInfo()->RemoteTextToSpeechText(
- aCallId ) );
- }
-
- if ( iStateMachine->PhoneEngineInfo()->CallerText( aCallId ).Length() > 0 )
- {
- ringToneParam.SetCallerTextStatus( ETrue );
- }
-
- // Play the ring tone
- iViewCommandHandle->ExecuteCommandL( EPhoneViewPlayRingTone, &ringToneParam );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleCugNoteL
-// -----------------------------------------------------------
-//
-void CPhoneState::HandleCugInUseNoteL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleCugInUseNoteL() ");
-
- TInt cugIndex( 0 );
-
- RSSSettings ssSettings;
- TInt retValue = ssSettings.Open();
-
- if ( retValue == KErrNone )
- {
- ssSettings.Get( ESSSettingsCug, cugIndex );
- }
- ssSettings.Close();
-
- if ( cugIndex )
- {
- // Add it to the resource string
- HBufC* buf = StringLoader::LoadLC(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID(
- EPhoneInfoCugInUse ), cugIndex );
-
- TPhoneCmdParamGlobalNote globalNoteParam;
- globalNoteParam.SetText( *buf );
- globalNoteParam.SetType( EAknGlobalInformationNote );
- globalNoteParam.SetTone( EAvkonSIDInformationTone );
-
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewShowGlobalNote, &globalNoteParam );
-
- CleanupStack::PopAndDestroy( buf );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::CallheaderManagerL
-// -----------------------------------------------------------
-//
-CPhoneCallHeaderManager* CPhoneState::CallheaderManagerL()
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::CallheaderManagerL() ");
- if ( !iCallHeaderManager )
- {
- iCallHeaderManager = CPhoneCallHeaderManager::NewL(
- *iViewCommandHandle,
- *iStateMachine,
- iCustomization );
- }
- return iCallHeaderManager;
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::CloseCustomizedDialerL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CPhoneState::CloseCustomizedDialerL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::CloseCustomizedDialerL( ) ");
-
- // Set dialer back to default mode.
- iViewCommandHandle->HandleCommandL( EPhoneViewHideCustomizedDialer );
-
- // Closing effect is shown when customized dialer exist.
- BeginTransEffectLC( ENumberEntryClose );
-
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry );
-
- EndTransEffect();
- // Do state-specific behaviour if number entry is cleared
- HandleNumberEntryClearedL();
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::CustomizedDialerMenuResourceId
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CPhoneState::CustomizedDialerMenuResourceIdL()
- {
- __LOGMETHODSTARTEND(EPhoneControl,
- "CPhoneState::CustomizedDialerMenuResourceId( ) ");
- // Get and return customized dialer menu resource id
- TPhoneCmdParamInteger integerParam;
- iViewCommandHandle->HandleCommandL(
- EPhoneViewGetCustomizedDialerMenuResourceId,
- &integerParam );
- return integerParam.Integer();
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::CustomizedDialerCbaResourceId
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CPhoneState::CustomizedDialerCbaResourceIdL()
- {
- __LOGMETHODSTARTEND(EPhoneControl,
- "CPhoneState::CustomizedDialerCbaResourceId( ) ");
- // Get and return customized dialer CBA resource id
- TPhoneCmdParamInteger integerParam;
- iViewCommandHandle->HandleCommandL(
- EPhoneViewGetCustomizedDialerCbaResourceId,
- &integerParam );
- return integerParam.Integer();
- }
-
-// -----------------------------------------------------------
-// CPhoneState::ShowDtmfDialerL
-// -----------------------------------------------------------
-//
-void CPhoneState::ShowDtmfDialerL()
- {
- __LOGMETHODSTARTEND(EPhoneControl,
- "CPhoneState::ShowDtmfDialerL()" );
-
- // Set dialer to DTMF mode.
- TPhoneCmdParamBoolean booleanParam;
- booleanParam.SetBoolean( ETrue );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfDialerViewVisible,
- &booleanParam );
-
- BeginTransEffectLC( ENumberEntryCreate );
-
- if ( IsNumberEntryUsedL() )
- {
- // Store the number entry content to cache
- if ( !IsNumberEntryContentStored() )
- {
- StoreNumberEntryContentL();
- }
- // Clear and display DTMF dialer
- NumberEntryClearL();
- SetNumberEntryVisibilityL(ETrue);
- }
- else
- {
- // Create and display DTMF dialer
- NumberEntryManagerL()->CreateNumberEntryL();
- }
-
- EndTransEffect();
-
- // Update CBA
- iCbaManager->UpdateInCallCbaL();
- }
-
-// -----------------------------------------------------------
-// CPhoneState::CheckIfRestoreNEContentAfterDtmfDialer
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::CheckIfRestoreNEContentAfterDtmfDialer()
- {
- if ( IsOnScreenDialerSupported() )
- {
- TBool isDialerVisible( EFalse );
- TRAP_IGNORE( isDialerVisible = IsDTMFEditorVisibleL() );
-
- if ( isDialerVisible )
- {
- TRAP_IGNORE( CloseDTMFEditorL() );
- }
-
- // if the DTMF dialer is used before the idle message, we have to
- // restore the original content of the number entry
- if ( IsNumberEntryContentStored() )
- {
- TBool isNumberEntryUsed( EFalse );
- TRAP_IGNORE( isNumberEntryUsed = IsNumberEntryUsedL() );
-
- if ( !isNumberEntryUsed )
- {
- TRAP_IGNORE( NumberEntryManagerL()->CreateNumberEntryL() );
- }
- // Restore the number entry content from cache
- TRAP_IGNORE( RestoreNumberEntryContentL() );
- }
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::IsOnScreenDialerSupported
-// -----------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::IsOnScreenDialerSupported() const
- {
- return iOnScreenDialer;
- }
-
-// ---------------------------------------------------------------------------
-// CPhoneState::LoadResource
-// ---------------------------------------------------------------------------
-//
-void CPhoneState::LoadResource( TDes& aData, const TInt aResource ) const
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::LoadResource() ");
- __PHONELOG1( EBasic, EPhoneControl, "CPhoneState::LoadResource - aResource: %d", aResource );
- StringLoader::Load( aData,
- CPhoneMainResourceResolver::Instance()->ResolveResourceID( aResource ),
- &iEnv );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::IsAnyConnectedCalls
-// -----------------------------------------------------------
-//
-TBool CPhoneState::IsAnyConnectedCalls()
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::IsAnyConnectedCalls() ");
- TBool connectedCall(EFalse);
- if ( iStateMachine->PhoneEngineInfo()->CheckIfCallStateExists( EPEStateConnected ) ||
- iStateMachine->PhoneEngineInfo()->CheckIfCallStateExists( EPEStateConnecting ) ||
- iStateMachine->PhoneEngineInfo()->CheckIfCallStateExists( EPEStateConnectedConference ) )
- {
- connectedCall = ETrue;
- }
- __PHONELOG1( EBasic, EPhoneControl, "CPhoneState::IsAnyConnectedCalls: (%d)", connectedCall );
- return connectedCall;
- }
-
-// -----------------------------------------------------------
-// CPhoneState::NumberEntryContentL
-// -----------------------------------------------------------
-//
-CPhoneNumberEntryManager* CPhoneState::NumberEntryManagerL()
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::NumberEntryContentL() ");
- if ( !iNumberEntryManager )
- {
- iNumberEntryManager = CPhoneNumberEntryManager::NewL(
- this,
- *iViewCommandHandle,
- *iStateMachine,
- iCustomization,
- *iCbaManager );
- }
- return iNumberEntryManager;
- }
-
-// -----------------------------------------------------------
-// CPhoneState::PhoneNumberFromEntryLC()
-// -----------------------------------------------------------
-//
-EXPORT_C HBufC* CPhoneState::PhoneNumberFromEntryLC()
- {
- return NumberEntryManagerL()->PhoneNumberFromEntryLC();
- }
-
-// -----------------------------------------------------------
-// CPhoneState::IsNumberEntryUsedL
-// -----------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::IsNumberEntryUsedL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::IsNumberEntryUsedL( ) ");
- return NumberEntryManagerL()->IsNumberEntryUsedL();
- }
-
-// -----------------------------------------------------------
-// CPhoneState::IsNumberEntryVisibleL
-// -----------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::IsNumberEntryVisibleL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::IsNumberEntryVisibleL( ) ");
- return NumberEntryManagerL()->IsNumberEntryVisibleL();
- }
-
-// -----------------------------------------------------------
-// CPhoneState::KeyEventForExistingNumberEntryL
-// -----------------------------------------------------------
-//
-void CPhoneState::KeyEventForExistingNumberEntryL( const TKeyEvent& aKeyEvent,
- TEventCode aEventCode )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::KeyEventForExistingNumberEntryL( ) ");
- NumberEntryManagerL()->KeyEventForExistingNumberEntryL( aKeyEvent, aEventCode );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleNumberEntryClearedL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleNumberEntryClearedL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleNumberEntryClearedL( ) ");
- NumberEntryManagerL()->HandleNumberEntryClearedL();
- }
-
-// -----------------------------------------------------------
-// CPhoneState::SetNumberEntryVisibilityL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SetNumberEntryVisibilityL( const TBool aVisible )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::SetNumberEntryVisibilityL( ) ");
- TPhoneCmdParamBoolean booleanParam;
- booleanParam.SetBoolean( ETrue );
- if ( !aVisible )
- {
- booleanParam.SetBoolean( EFalse );
- }
- NumberEntryManagerL()->SetNumberEntryVisibilityL( booleanParam );
- }
-
-// ---------------------------------------------------------
-// CPhoneState::HandleCreateNumberEntryL
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleCreateNumberEntryL(
- const TKeyEvent& /*aKeyEvent*/,
- TEventCode /*aEventCode*/ )
- {
- NumberEntryManagerL()->HandleCreateNumberEntryL();
- }
-
-// -----------------------------------------------------------
-// CPhoneState::IsNumberEntryContentStored
-// -----------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::IsNumberEntryContentStored()
- {
- TBool isNumberEntryContentStored( EFalse );
- TRAP_IGNORE( isNumberEntryContentStored = NumberEntryManagerL()->IsNumberEntryContentStored() );
- return isNumberEntryContentStored;
- }
-
-// -----------------------------------------------------------
-// CPhoneState::StoreNumberEntryContentL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::StoreNumberEntryContentL()
- {
- NumberEntryManagerL()->StoreNumberEntryContentL();
- }
-
-// -----------------------------------------------------------
-// CPhoneState::RestoreNumberEntryContentL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::RestoreNumberEntryContentL()
- {
- NumberEntryManagerL()->RestoreNumberEntryContentL();
- }
-
-// -----------------------------------------------------------
-// CPhoneState::ClearNumberEntryContentCache
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::ClearNumberEntryContentCache()
- {
- TRAP_IGNORE( NumberEntryManagerL()->ClearNumberEntryContentCache() );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleNumberEntryEdited
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleNumberEntryEdited()
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::HandleNumberEntryEdited() ");
- TRAP_IGNORE( NumberEntryManagerL()->HandleNumberEntryEdited() );
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneState::IsAlphanumericSupportedAndCharInput
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CPhoneState::IsAlphanumericSupportedAndCharInput(
- const TKeyEvent& aKeyEvent )
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::IsAlphanumericSupportedAndCharInput() ");
- TBool alphaNumericSupport(EFalse);
- TRAP_IGNORE( alphaNumericSupport = NumberEntryManagerL()->IsAlphanumericSupportedAndCharInput( aKeyEvent ) );
- return alphaNumericSupport;
- }
-
-// ---------------------------------------------------------
-// CPhoneState::OnlyHashInNumberEntryL
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::OnlyHashInNumberEntryL()
- {
- __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::OnlyHashInNumberEntryL( ) ");
- // 0.8 seconds has passed, start ALS line change timer
- StartAlsLineChangeTimerL();
- }
-
-// -----------------------------------------------------------
-// CPhoneState::NumberEntryClearL
-// -----------------------------------------------------------
-//
-void CPhoneState::NumberEntryClearL()
- {
- NumberEntryManagerL()->NumberEntryClearL();
- }
-
-// -----------------------------------------------------------
-// CPhoneState::UpdateSilenceButtonDimming
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::UpdateSilenceButtonDimming()
- {
- if ( FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
- {
- const TProfileRingingType ringingType =
- iStateMachine->PhoneEngineInfo()->RingingType();
-
- TBool callIsAlerting =
- !(( ringingType == EProfileRingingTypeSilent ) ||
- ( ringingType == EProfileRingingTypeBeepOnce ));
-
- if ( !callIsAlerting )
- {
- SetTouchPaneButtonDisabled( EPhoneCallComingCmdSilent );
- }
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::GetBlockedKeyList
-// -----------------------------------------------------------
-//
-EXPORT_C const RArray<TInt>& CPhoneState::GetBlockedKeyList() const
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::GetBlockedKeyList( ) ");
- return iStateMachine->PhoneStorage()->GetBlockedKeyList();
- }
-
-// -----------------------------------------------------------
-// CPhoneState::DisableHWKeysL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::DisableHWKeysL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::DisableHWKeysL( ) ");
-
- if( iStateMachine->PhoneStorage()->IsBlockedKeysListEmpty() )
- {
- __PHONELOG( EBasic, EPhoneControl, " CPhoneState::DisableHWKeysL HW Keys Disabled " );
-
- iStateMachine->PhoneStorage()->AppendBlockedKeysListL( EStdKeyNo );
- iStateMachine->PhoneStorage()->AppendBlockedKeysListL( EStdKeyYes );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::DisableCallUIL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::DisableCallUIL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::DisableCallUIL( ) ");
-
- // Set Call UI state to storage
- if( !iStateMachine->PhoneStorage()->IsScreenLocked() )
- {
- __PHONELOG( EBasic, EPhoneControl, " CPhoneState::DisableCallUIL CallUI Disabled " );
-
- // Show keys locked note
- TPhoneCmdParamNote noteParam;
- noteParam.SetType( EPhoneNoteUIDisabled );
- noteParam.SetResourceId( CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( EPhoneInformationNote ) );
-
- HBufC* noteText = StringLoader::LoadLC(
- CPhoneMainResourceResolver::Instance()->
- ResolveResourceID( EPhoneIncomingCallKeysLocked ) );
- noteParam.SetText( *noteText );
-
- iViewCommandHandle->ExecuteCommandL( EPhoneViewShowNote, ¬eParam );
- CleanupStack::PopAndDestroy( noteText );
-
- // Start capturing the key guard key
- TPhoneCmdParamKeyCapture appKeyCaptureParam;
- appKeyCaptureParam.SetKey( EStdKeyDevice7 );
- appKeyCaptureParam.SetKeyCode( EKeyDeviceF );
- appKeyCaptureParam.SetCaptureType( EPhoneKeyAllEvents );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewStartCapturingKey, &appKeyCaptureParam );
-
- // Set Call UI state to storage
- iStateMachine->PhoneStorage()->SetScreenLocked( ETrue );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::EnableCallUIL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::EnableCallUIL()
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::EnableCallUIL( ) ");
-
- if( iStateMachine->PhoneStorage()->IsScreenLocked() )
- {
- __PHONELOG( EBasic, EPhoneControl, " CPhoneState::EnableCallUIL CallUI Enabled " );
-
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNote );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewDisableKeyLockWithoutNote );
-
- // Stop capturing the key guard key
- TPhoneCmdParamKeyCapture appKeyCaptureParam;
- appKeyCaptureParam.SetKey( EStdKeyDevice7 );
- appKeyCaptureParam.SetKeyCode( EKeyDeviceF );
- appKeyCaptureParam.SetCaptureType( EPhoneKeyAllEvents );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewStopCapturingKey, &appKeyCaptureParam );
-
- iStateMachine->PhoneStorage()->SetScreenLocked( EFalse );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::CheckDisableHWKeysAndCallUIL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::CheckDisableHWKeysAndCallUIL()
- {
- __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneState::CheckDisableHWKeysAndCallUIL( ) ");
-
- if( IsKeyLockOn() || IsAutoLockOn() )
- {
- // Disable HW keys if needed
- if( CPhoneCenRepProxy::Instance()->
- IsTelephonyFeatureSupported( KTelephonyLVFlagDisableCallControlHardKeysWhileLocked ) )
- {
- DisableHWKeysL();
- }
-
- // Disable Call UI if needed
- if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke )
- && !CPhoneCenRepProxy::Instance()->
- IsTelephonyFeatureSupported( KTelephonyLVFlagAllowUnlockOnIncoming ) )
- {
- DisableCallUIL();
- iStateMachine->PhoneStorage()->SetNeedToEnableKeylock( ETrue );
- }
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::HandleHoldSwitchL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleHoldSwitchL()
- {
- __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneState::HandleHoldSwitchL( ) ");
-
- if( CPhoneCenRepProxy::Instance()->
- IsTelephonyFeatureSupported( KTelephonyLVFlagDisableCallControlHardKeysWhileLocked ) )
- {
- if( iStateMachine->PhoneStorage()->IsBlockedKeysListEmpty() )
- {
- // Disable HW Keys if needed
- DisableHWKeysL();
- }
- else
- {
- // Reset blocked keys list
- iStateMachine->PhoneStorage()->ResetBlockedKeysList();
- }
- }
-
- if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke )
- && !CPhoneCenRepProxy::Instance()->
- IsTelephonyFeatureSupported( KTelephonyLVFlagAllowUnlockOnIncoming ) )
- {
- if( iStateMachine->PhoneStorage()->IsScreenLocked() )
- {
- // Enable Call
- EnableCallUIL();
- }
- else
- {
- // Set keylock enabled
- iViewCommandHandle->ExecuteCommandL( EPhoneViewEnableKeyLockWithoutNote );
- // Disable Call
- DisableCallUIL();
- }
- }
-
- // Stop ringingtone
- iViewCommandHandle->ExecuteCommandL( EPhoneViewStopRingTone );
- }
-
-// -----------------------------------------------------------
-// CPhoneState::RetainPreviousKeylockStateL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::RetainPreviousKeylockStateL()
- {
- // Lock keypad, if keylock was enabled before incoming call.
- // Also reset PhoneStorage keylock status.
- if ( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) &&
- iStateMachine->PhoneStorage()->NeedToEnableKeylock() )
- {
- iStateMachine->PhoneStorage()->SetNeedToEnableKeylock( EFalse );
- iViewCommandHandle->ExecuteCommandL( EPhoneViewEnableKeyLockWithoutNote );
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneState::HandleKeyLockEnabledL
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::HandleKeyLockEnabled( TBool aKeylockEnabled )
- {
- __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleKeyLockEnabledL( ) ");
- if( !FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke )
- && CPhoneCenRepProxy::Instance()->
- IsTelephonyFeatureSupported( KTelephonyLVFlagDisableCallControlHardKeysWhileLocked ) )
- {
- if( !aKeylockEnabled )
- {
- // Keylock disabled
- // Reset blocked keys list
- iStateMachine->PhoneStorage()->ResetBlockedKeysList();
- }
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneState::SetToolbarDimming
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SetToolbarDimming( TBool aDimmed )
- {
- if ( FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
- {
- TPhoneCmdParamBoolean booleanParam;
- booleanParam.SetBoolean( aDimmed );
- TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL(
- EPhoneViewSetToolbarDimming, &booleanParam ));
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneState::SetToolbarButtonLoudspeakerEnabled
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SetToolbarButtonLoudspeakerEnabled()
- {
- if ( FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
- {
- TPhoneCmdParamInteger integerParam;
- integerParam.SetInteger( EPhoneInCallCmdActivateIhf );
- TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL(
- EPhoneViewEnableToolbarButton, &integerParam ));
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneState::SetToolbarDimming
-// ---------------------------------------------------------
-//
-EXPORT_C void CPhoneState::SetBackButtonActive( TBool aActive )
- {
- if ( FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) )
- {
- TPhoneCmdParamBoolean booleanParam;
- booleanParam.SetBoolean( aActive );
- iViewCommandHandle->ExecuteCommand(
- EPhoneViewBackButtonActive, &booleanParam );
- }
- }
-
-// -----------------------------------------------------------
-// CPhoneState::OpenSoftRejectMessageEditorL
-// -----------------------------------------------------------
-//
-EXPORT_C void CPhoneState::OpenSoftRejectMessageEditorL()
- {
- __LOGMETHODSTARTEND(EPhoneControl,
- "CPhoneState::OpenSoftRejectMessageEditorL ()" );
-
- // Fetch incoming call's id from view
- TPhoneCmdParamCallStateData callStateData;
- callStateData.SetCallState( EPEStateRinging );
- iViewCommandHandle->HandleCommandL(
- EPhoneViewGetCallIdByState, &callStateData );
-
- TInt ringingCallId( KErrNotFound );
- // Do nothing if negative incoming call id
- if( callStateData.CallId() > KErrNotFound )
- {
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveQuery );
-
- ringingCallId = callStateData.CallId();
- }
-
-
- TPhoneCmdParamSfiData sfiDataParam;
-
- if (KErrNotFound != ringingCallId)
- {
- if ( iStateMachine->PhoneEngineInfo()->RemoteName( ringingCallId ).Length() )
- {
- // store both the name and the number
- sfiDataParam.SetNumber( iStateMachine->PhoneEngineInfo()->RemotePhoneNumber( ringingCallId ) );
- sfiDataParam.SetName( iStateMachine->PhoneEngineInfo()->RemoteName( ringingCallId ) );
- }
- else
- {
- // store the number
- sfiDataParam.SetNumber( iStateMachine->PhoneEngineInfo()->RemotePhoneNumber( ringingCallId ) );
- }
- }
-
- iViewCommandHandle->ExecuteCommandL(
- EPhoneViewOpenSoftRejectEditor, &sfiDataParam );
- }
-
-// End of File
-