diff -r 000000000000 -r 5f000ab63145 phoneapp/phoneuivoipextension/src/cphonenewcallcmdhandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuivoipextension/src/cphonenewcallcmdhandler.cpp Mon Jan 18 20:18:27 2010 +0200 @@ -0,0 +1,251 @@ +/* +* Copyright (c) 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 CPhoneNewCallCmdHandler class. +* +*/ + +#include + +#include "cphonenewcallcmdhandler.h" +#include "cphonelogger.h" +#include "mphonestatemachine.h" +#include "phonerssvoip.h" +#include "phoneappvoipcommands.hrh" +#include "cphonestate.h" +#include "cphonestateincall.h" +#include "tphonecmdparamcustomdialer.h" +#include "tphonecmdparaminteger.h" +#include "tphonecmdparamstring.h" +#include "tphonecmdparamquery.h" +#include "tphonecmdparamglobalnote.h" +#include "cphonemainresourceresolver.h" +#include "cphonestatemachinevoip.h" +#include "cphonestateutilsvoip.h" + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CPhoneNewCallCmdHandler::CPhoneNewCallCmdHandler +// C++ constructor. +// --------------------------------------------------------------------------- +// +CPhoneNewCallCmdHandler::CPhoneNewCallCmdHandler( + MPhoneStateMachine& aStateMachine, + MPhoneViewCommandHandle& aViewCommandHandle ) + : iStateMachine( aStateMachine ), iViewCommandHandle( aViewCommandHandle ) + { + + } + + +// --------------------------------------------------------------------------- +// CPhoneNewCallCmdHandler::ConstructL +// --------------------------------------------------------------------------- +// +void CPhoneNewCallCmdHandler::ConstructL() + { + } + + +// --------------------------------------------------------------------------- +// CPhoneNewCallCmdHandler::NewL +// --------------------------------------------------------------------------- +// +CPhoneNewCallCmdHandler* CPhoneNewCallCmdHandler::NewL( + MPhoneStateMachine& aStateMachine, + MPhoneViewCommandHandle& aViewCommandHandle ) + { + CPhoneNewCallCmdHandler* self = + CPhoneNewCallCmdHandler::NewLC( + aStateMachine, aViewCommandHandle ); + CleanupStack::Pop( self ); + return self; + } + + +// --------------------------------------------------------------------------- +// CPhoneNewCallCmdHandler::NewLC +// --------------------------------------------------------------------------- +// +CPhoneNewCallCmdHandler* CPhoneNewCallCmdHandler::NewLC( + MPhoneStateMachine& aStateMachine, + MPhoneViewCommandHandle& aViewCommandHandle ) + { + CPhoneNewCallCmdHandler* self = + new( ELeave ) CPhoneNewCallCmdHandler( + aStateMachine, aViewCommandHandle ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + + +// --------------------------------------------------------------------------- +// CPhoneNewCallCmdHandler::~CPhoneNewCallCmdHandler +// Destructor. +// --------------------------------------------------------------------------- +// +CPhoneNewCallCmdHandler::~CPhoneNewCallCmdHandler() + { + } + + +// --------------------------------------------------------------------------- +// CPhoneNewCallCmdHandler::HandleCommandL +// --------------------------------------------------------------------------- +// +void CPhoneNewCallCmdHandler::HandleCommandL( TInt aCommand ) + { + __LOGMETHODSTARTEND( PhoneUIVoIPExtension, + "CPhoneNewCallCmdHandler::HandleCommandL" ) + + switch ( aCommand ) + { + case EPhoneInCallCmdNewInternetCall: + ShowNewCallQueryL(); + break; + + case EPhoneCmdNewInternetCallOk: + DoNewCallL(); + break; + + case EPhoneCmdNewInternetCallSearch: + OpenSingleItemContactFetchL( + EPhoneCmdNewInternetCallContactFetch ); + break; + + case EPhoneCmdNewInternetCallContactFetch: + { + TBuf fetchContent; + fetchContent = iViewCommandHandle.FetchContent(); + + StateUtils().SelectServiceAndDialL( fetchContent ); + break; + } + + default: + __PHONELOG( EOnlyFatal, PhoneUIVoIPExtension, + "CPhoneNewCallCmdHandler::HandleCommandL, DEFAULT" ); + ASSERT( EFalse ); + } + } + + +// --------------------------------------------------------------------------- +// CPhoneNewCallCmdHandler::ShowNewCallQueryL +// --------------------------------------------------------------------------- +// +void CPhoneNewCallCmdHandler::ShowNewCallQueryL() + { + __LOGMETHODSTARTEND( PhoneUIVoIPExtension, + "CPhoneNewCallCmdHandler::ShowNewCallQueryL" ) + + if ( !FeatureManager::FeatureSupported( KFeatureIdOnScreenDialer ) ) + { + CPhoneState* phoneState = + static_cast( iStateMachine.State() ); + + HBufC *text = HBufC::NewLC( KPhoneNumberEntryBufferSize ); + TPtr ptr( text->Des() ); + // Pre-populate the query with the number entry contents, if it exists + if ( phoneState->IsNumberEntryUsedL() ) + { + // get the number entry contents + TPhoneCmdParamString stringParam; + stringParam.SetString( &ptr ); + iViewCommandHandle.ExecuteCommandL( + EPhoneViewGetLocalizedNumberFromEntry, + &stringParam ); + } + + TPhoneCmdParamQuery queryDialogParam; + queryDialogParam.SetQueryType( EPhoneTextQueryDialog ); + queryDialogParam.SetQueryResourceId( + CPhoneMainResourceResolver::Instance()-> + ResolveResourceID( EPhoneVoIPNewCallQuery ) ); + + queryDialogParam.SetDefaultCba( CPhoneMainResourceResolver::Instance()-> + ResolveResourceID( EPhoneVoIPNewCallQueryEmptySoftkeys ) ); + + queryDialogParam.SetContentCba( CPhoneMainResourceResolver::Instance()-> + ResolveResourceID( EPhoneVoIPNewCallQueryNotEmptySoftkeys ) ); + + queryDialogParam.SetDataText( &ptr ); + queryDialogParam.SetSendKeyEnabled( ETrue ); + + // Display dialog + iViewCommandHandle.ExecuteCommandL( + EPhoneViewShowQuery, &queryDialogParam ); + + CleanupStack::PopAndDestroy( text ); + } + } + + +// --------------------------------------------------------------------------- +// CPhoneNewCallCmdHandler::DoNewCallL +// --------------------------------------------------------------------------- +// +void CPhoneNewCallCmdHandler::DoNewCallL() + { + __LOGMETHODSTARTEND( PhoneUIVoIPExtension, + "CPhoneNewCallCmdHandler::DoNewCallL" ) + + // First get the string from dialog + TPhoneCmdParamString string; + HBufC* content = HBufC::NewLC( KPEPhoneNumberMaxLength ); + TPtr ptr( content->Des() ); + string.SetString( &ptr ); + + iViewCommandHandle.ExecuteCommandL( + EPhoneViewGetTextQueryContent, &string ); + + // Dial new voip call + StateUtils().SelectServiceAndDialL( ptr ); + + CleanupStack::PopAndDestroy( content ); + } + + +// --------------------------------------------------------------------------- +// CPhoneNewCallCmdHandler::OpenSingleItemContactFetchL +// --------------------------------------------------------------------------- +// +void CPhoneNewCallCmdHandler::OpenSingleItemContactFetchL( + TInt aFetchType ) + { + __LOGMETHODSTARTEND( PhoneUIVoIPExtension, + "CPhoneNewCallCmdHandler::OpenSingleItemContactFetchL" ) + + TPhoneCmdParamInteger integerParam; + integerParam.SetInteger( aFetchType ); + + iViewCommandHandle.HandleCommandL( + EPhoneViewOpenSingleItemFetchDialog, + &integerParam ); + } + + +// ----------------------------------------------------------- +// CPhoneNewCallCmdHandler::StateUtils +// ----------------------------------------------------------- +// +CPhoneStateUtilsVoip& CPhoneNewCallCmdHandler::StateUtils() + { + return static_cast( + iStateMachine ).StateUtils(); + } + +// End of File