--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuicontrol/src/cphonecallheadermanager.cpp Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,375 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Bubble manager wrapper.
+*
+*/
+
+#include <mpeengineinfo.h>
+#include <StringLoader.h>
+#include "cphonecallheadermanager.h"
+#include "tphonecallheaderparam.h"
+#include "tphonecmdparamboolean.h"
+#include "tphonecmdparaminteger.h"
+#include "tphonecmdparamcallheaderdata.h"
+#include "cphonemainresourceresolver.h"
+#include "phonerssbase.h"
+#include "phoneui.pan"
+#include "phoneviewcommanddefinitions.h"
+#include "phonelogger.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CPhoneCallHeaderManager::CPhoneCallHeaderManager
+// ---------------------------------------------------------------------------
+//
+CPhoneCallHeaderManager::CPhoneCallHeaderManager(
+ MPhoneViewCommandHandle& aViewCommandHandle,
+ MPhoneStateMachine& aStateMachine,
+ MPhoneCustomization* aCustomization )
+ : iViewCommandHandle ( aViewCommandHandle ),
+ iStateMachine ( aStateMachine ),
+ iCustomization ( aCustomization )
+ {
+ __LOGMETHODSTARTEND( EPhoneControl, "CPhoneCallHeaderManager::CPhoneCallHeaderManager() ");
+ }
+
+ // ---------------------------------------------------------------------------
+ // CPhoneCallHeaderManager::NewL
+ // ---------------------------------------------------------------------------
+ //
+CPhoneCallHeaderManager* CPhoneCallHeaderManager::NewL(
+ MPhoneViewCommandHandle& aViewCommandHandle,
+ MPhoneStateMachine& aStateMachine,
+ MPhoneCustomization* aCustomization )
+ {
+ __LOGMETHODSTARTEND( EPhoneControl, "CPhoneCallHeaderManager::NewL() ");
+ CPhoneCallHeaderManager* self = new (ELeave) CPhoneCallHeaderManager(
+ aViewCommandHandle,
+ aStateMachine,
+ aCustomization );
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CPhoneCallHeaderManager::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CPhoneCallHeaderManager::ConstructL()
+ {
+ __LOGMETHODSTARTEND( EPhoneControl, "CPhoneCallHeaderManager::ConstructL() ");
+ if ( !iCallHeaderParam )
+ {
+ iCallHeaderParam = new (ELeave) TPhoneCallHeaderParam ( *this, iStateMachine );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CPhoneCallHeaderManager::~CPhoneCallHeaderManager
+// ---------------------------------------------------------------------------
+//
+CPhoneCallHeaderManager::~CPhoneCallHeaderManager()
+ {
+ __LOGMETHODSTARTEND( EPhoneControl, "CPhoneCallHeaderManager::~CPhoneCallHeaderManager() ");
+ delete iCallHeaderParam;
+ }
+
+// ======== LOCAL FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CPhoneCallHeaderManager::LoadResource
+// ---------------------------------------------------------------------------
+//
+void CPhoneCallHeaderManager::LoadResource( TDes& aData, const TInt aResource )
+ {
+ __LOGMETHODSTARTEND( EPhoneControl, "CPhoneCallHeaderManager::LoadResource() ");
+ __PHONELOG1( EBasic, EPhoneControl, "CPhoneCallHeaderManager::LoadResource - aResource: %d", aResource );
+ StringLoader::Load(
+ aData, CPhoneMainResourceResolver::Instance()->ResolveResourceID( aResource ),
+ CCoeEnv::Static() );
+ }
+
+// ---------------------------------------------------------------------------
+// CPhoneCallHeaderManager::UpdateCallHeaderInfoL
+// ---------------------------------------------------------------------------
+//
+TPhoneCmdParamCallHeaderData CPhoneCallHeaderManager::UpdateCallHeaderInfoL(
+ const TInt aCallId )
+ {
+ __LOGMETHODSTARTEND( EPhoneControl, "CPhoneCallHeaderManager::UpdateCallHeaderInfoL() ");
+ __ASSERT_DEBUG( iStateMachine.PhoneEngineInfo(), Panic( EPhoneCtrlInvariant ) );
+ TPhoneCmdParamCallHeaderData callHeaderParam;
+ iCallHeaderParam->UpdateCallHeaderInfoL(
+ aCallId,
+ IsWaitingCallL( aCallId ),
+ IsVideoCall( aCallId ),
+ &callHeaderParam );
+
+ callHeaderParam.SetCiphering(
+ iStateMachine.PhoneEngineInfo()->IsSecureCall( aCallId ) );
+
+ callHeaderParam.SetCipheringIndicatorAllowed(
+ iStateMachine.PhoneEngineInfo()->SecureSpecified() );
+
+ return callHeaderParam;
+ }
+
+// ---------------------------------------------------------------------------
+// TPhoneCallHeaderParam::GetRemoteInfoDataL
+// ---------------------------------------------------------------------------
+//
+void CPhoneCallHeaderManager::GetRemoteInfoDataL(
+ const TInt aCallId,
+ TDes& aData ) const
+ {
+ __LOGMETHODSTARTEND( EPhoneControl, "CPhoneCallHeaderManager::GetRemoteInfoDataL() ");
+ iCallHeaderParam->GetRemoteInfoDataL( aCallId, aData);
+ }
+
+// ---------------------------------------------------------------------------
+// CPhoneCallHeaderManager::SetCallHeaderTextsForCallComingIn
+// ---------------------------------------------------------------------------
+//
+void CPhoneCallHeaderManager::SetCallHeaderTextsForCallComingIn(
+ const TInt aCallId,
+ const TBool aWaitingCall,
+ TPhoneCmdParamCallHeaderData* aCallHeaderData )
+ {
+ __LOGMETHODSTARTEND(EPhoneControl, "CPhoneCallHeaderManager::SetCallHeaderTextsForCallComingIn() ");
+ __ASSERT_DEBUG( iStateMachine.PhoneEngineInfo(), Panic( EPhoneCtrlInvariant ) );
+
+ iCallHeaderParam->SetCallHeaderTexts(
+ aCallId,
+ aWaitingCall,
+ IsVideoCall( aCallId ),
+ aCallHeaderData );
+ }
+
+// ---------------------------------------------------------------------------
+// CPhoneCallHeaderManager::DisplayHeaderForCallComingInL
+// ---------------------------------------------------------------------------
+//
+void CPhoneCallHeaderManager::DisplayHeaderForCallComingInL(
+ const TInt aCallId,
+ const TBool aWaitingCall )
+ {
+ __LOGMETHODSTARTEND(EPhoneControl, "CPhoneCallHeaderManager::DisplayHeaderForCallComingInL() ");
+ __ASSERT_DEBUG( iStateMachine.PhoneEngineInfo(), Panic( EPhoneCtrlInvariant ) );
+ TPhoneCmdParamCallHeaderData callHeaderParam;
+
+ iCallHeaderParam->SetIncomingCallHeaderParamsL(
+ aCallId,
+ aWaitingCall,
+ IsVideoCall( aCallId ),
+ &callHeaderParam );
+
+ if( iCustomization )
+ {
+ // to do modifications to call header parameters
+ // if VoIP call in question
+ iCustomization->ModifyCallHeaderTexts( aCallId, &callHeaderParam,
+ KNullDesC );
+ }
+
+ // Display call header
+ iViewCommandHandle.ExecuteCommandL(
+ EPhoneViewCreateCallHeader,
+ aCallId,
+ &callHeaderParam );
+ }
+
+// ---------------------------------------------------------------------------
+// CPhoneCallHeaderManager::DisplayHeaderForOutgoingCallL
+// ---------------------------------------------------------------------------
+//
+void CPhoneCallHeaderManager::DisplayHeaderForOutgoingCallL( const TInt aCallId )
+ {
+ __LOGMETHODSTARTEND( EPhoneControl, "CPhoneCallHeaderManager::DisplayHeaderForOutgoingCallL() ");
+ __ASSERT_DEBUG( iStateMachine.PhoneEngineInfo(), Panic( EPhoneCtrlInvariant ) );
+ TPhoneCmdParamCallHeaderData callHeaderParam;
+
+ iCallHeaderParam->SetOutgoingCallHeaderParamsL(
+ aCallId,
+ &callHeaderParam );
+
+ if( iCustomization )
+ {
+ // to do modifications to call header parameters
+ // if VoIP call in question
+ iCustomization->ModifyCallHeaderTexts( aCallId, &callHeaderParam,
+ KNullDesC );
+ }
+
+ // Display call header for outgoing call
+ iViewCommandHandle.ExecuteCommandL(
+ EPhoneViewCreateCallHeader,
+ aCallId,
+ &callHeaderParam );
+ }
+
+// ---------------------------------------------------------------------------
+// CPhoneCallHeaderManager::IsWaitingCallL
+// ---------------------------------------------------------------------------
+//
+TBool CPhoneCallHeaderManager::IsWaitingCallL( const TInt aCallId ) const
+ {
+ __LOGMETHODSTARTEND(EPhoneControl, "CPhoneCallHeaderManager::IsWaitingCallL() ");
+ TBool waiting( EFalse );
+ if ( iStateMachine.PhoneEngineInfo()->CallState( aCallId ) == EPEStateRinging )
+ {
+ TPhoneCmdParamInteger activeCallCount;
+ iViewCommandHandle.ExecuteCommandL(
+ EPhoneViewGetCountOfActiveCalls,
+ &activeCallCount );
+ // if there is other calls then ringing call is waiting call.
+ if( activeCallCount.Integer() > 0 )
+ {
+ waiting = ETrue;
+ }
+ }
+ __PHONELOG1( EBasic, EPhoneControl, "CPhoneCallHeaderManager::IsWaitingCallL - waiting: %d", waiting );
+ return waiting;
+ }
+
+// ---------------------------------------------------------------------------
+// CPhoneCallHeaderManager::IsVideoCall
+// ---------------------------------------------------------------------------
+//
+TBool CPhoneCallHeaderManager::IsVideoCall( const TInt aCallId ) const
+ {
+ __LOGMETHODSTARTEND( EPhoneControl, "CPhoneCallHeaderManager::IsVideoCall() ");
+ if( aCallId < 0 )
+ {
+ // Illegal call id, check call type command
+ return ( iStateMachine.PhoneEngineInfo()->CallTypeCommand()
+ == EPECallTypeVideo );
+ }
+ return ( iStateMachine.PhoneEngineInfo()->CallType( aCallId )
+ == EPECallTypeVideo );
+ }
+
+// ---------------------------------------------------------------------------
+// CPhoneCallHeaderManager::SetCallHeaderType
+// ---------------------------------------------------------------------------
+//
+void CPhoneCallHeaderManager::SetCallHeaderType(
+ const CBubbleManager::TPhoneCallTypeFlags aCallHeaderType )
+ {
+ __LOGMETHODSTARTEND( EPhoneControl, "CPhoneCallHeaderManager::SetCallHeaderType() ");
+ iCallHeaderParam->SetCallHeaderType( aCallHeaderType );
+ }
+
+// ---------------------------------------------------------------------------
+// CPhoneCallHeaderManager::~CPhoneCallHeaderManager
+// ---------------------------------------------------------------------------
+//
+CBubbleManager::TPhoneCallTypeFlags CPhoneCallHeaderManager::CallHeaderType() const
+ {
+ __LOGMETHODSTARTEND( EPhoneControl, "CPhoneCallHeaderManager::CallHeaderType() ");
+ return iCallHeaderParam->CallHeaderType();
+ }
+
+// ---------------------------------------------------------------------------
+// CPhoneCallHeaderManager::SetDivertIndication
+// ---------------------------------------------------------------------------
+//
+void CPhoneCallHeaderManager::SetDivertIndication( const TBool aDivertIndication )
+ {
+ __LOGMETHODSTARTEND( EPhoneControl, "CPhoneCallHeaderManager::SetDivertIndication()");
+ iCallHeaderParam->SetDivertIndication( aDivertIndication );
+ }
+
+// ---------------------------------------------------------------------------
+// CPhoneCallHeaderManager::SetPhoneNumberAvailabilityL
+// ---------------------------------------------------------------------------
+//
+void CPhoneCallHeaderManager::SetPhoneNumberAvailabilityL(
+ const TInt aNumberLength,
+ const TBool aContactInfoAvailable )
+ {
+ __LOGMETHODSTARTEND(
+ EPhoneControl,
+ "CPhoneCallHeaderManager::SetPhoneNumberAvailabilityL() ");
+ TPhoneCmdParamBoolean phoneNumberAvailable;
+ if( aNumberLength || aContactInfoAvailable )
+ {
+ // Phone number is available straight or via contact info
+ // so switch to video/voice call is possible
+ __PHONELOG( EBasic,
+ EPhoneControl,
+ "CPhoneCallHeaderManager::SetPhoneNumberAvailabilityL - Phonenumber is available" );
+ phoneNumberAvailable.SetBoolean( ETrue );
+ }
+ else
+ {
+ __PHONELOG( EBasic,
+ EPhoneControl,
+ "CPhoneCallHeaderManager::SetPhoneNumberAvailabilityL - Phonenumber is not available" );
+ phoneNumberAvailable.SetBoolean( EFalse );
+ }
+ iViewCommandHandle.ExecuteCommandL(
+ EPhoneViewSetPhoneNumberAvailableInPhoneEngine,
+ &phoneNumberAvailable );
+ }
+
+// -----------------------------------------------------------
+// CPhoneCallHeaderManager::LoadCallHeaderTexts
+// -----------------------------------------------------------
+//
+void CPhoneCallHeaderManager::LoadCallHeaderTexts(
+ const TInt aLabelId,
+ const TInt aShortLabelId,
+ TPhoneCmdParamCallHeaderData* aCallHeaderData )
+ {
+ __LOGMETHODSTARTEND(EPhoneControl, "CPhoneCallHeaderManager::LoadCallHeaderTexts( ) ");
+ if ( aLabelId != EPhoneStringList )
+ {
+ TBuf<KPhoneCallHeaderLabelMaxLength> labelText( KNullDesC );
+ LoadResource( labelText, aLabelId );
+ aCallHeaderData->SetLabelText( labelText );
+
+ if ( aShortLabelId != EPhoneStringList )
+ {
+ TBuf<KPhoneCallHeaderLabelMaxLength> shortLabelText( KNullDesC );
+ LoadResource( shortLabelText, aShortLabelId );
+ aCallHeaderData->SetShortLabelText( shortLabelText );
+ }
+ }
+ }
+
+// -----------------------------------------------------------
+// CPhoneCallHeaderManager::GetInCallNumberTextL
+// -----------------------------------------------------------
+//
+void CPhoneCallHeaderManager::GetInCallNumberTextL(
+ TInt aCallId,
+ TDes& aData ) const
+ {
+ __LOGMETHODSTARTEND(EPhoneControl, "CPhoneCallHeaderManager::GetInCallNumberTextL( ) ");
+ // Display "Call n", n = callId-8 for video and callId+1 for voice call
+ HBufC* tmp = StringLoader::LoadL(
+ CPhoneMainResourceResolver::Instance()->
+ ResolveResourceID( EPhoneInCallNumberText ),
+ aCallId + ( IsVideoCall( aCallId ) ? -8 : 1 ),
+ CCoeEnv::Static() );
+
+ aData = *tmp;
+ delete tmp;
+ }
+