--- a/phoneapp/phoneuiview/src/cphonequerycontroller.cpp Tue Feb 02 00:10:04 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1047 +0,0 @@
-/*
-* Copyright (c) 2005 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 CPhoneQueryController class.
-*
-*/
-
-
-// INCLUDE FILES
-#include <AknGlobalConfirmationQuery.h>
-#include <eikenv.h>
-#include <StringLoader.h>
-#include <ccauireconnectquery.h>
-#include <mcauireconnectqueryobserver.h>
-#include <AknGlobalMsgQuery.h>
-#include <AknGlobalNote.h> // for CAknGlobalNote
-
-#include "phoneui.hrh"
-#include "cphonequerycontroller.h"
-#include "tphonecommandparam.h"
-#include "tphonecmdparamreconnectquery.h"
-#include "tphonecmdparamstring.h"
-#include "phonelogger.h"
-#include "cphonequerydialog.h"
-#include "tphonecmdparamboolean.h"
-#include "cphonedtmfnumberlistquery.h"
-#include "cphonelistquerydialog.h"
-#include "cphonetimer.h"
-
-// ================= MEMBER FUNCTIONS =======================
-// C++ default constructor can NOT contain any code, that
-// might leave.
-//
-CPhoneQueryController::CPhoneQueryController( CEikonEnv& aEikEnv )
- : CActive ( EPriorityUserInput ),
- iQueryDeleted( ETrue ),
- iEikEnv( aEikEnv )
- {
- CActiveScheduler::Add( this );
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::NewL()
-// Two-phased constructor
-// (other items were commented in a header).
-// ---------------------------------------------------------
-CPhoneQueryController* CPhoneQueryController::NewL( CEikonEnv& aEikEnv )
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::NewL( ) ");
- CPhoneQueryController* self =
- new( ELeave ) CPhoneQueryController( aEikEnv );
-
- return self;
- }
-
-// ---------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------
-//
-CPhoneQueryController::~CPhoneQueryController()
- {
- DestroyQuery();
- ClearTimer();
- DestroyGlobalQuery();
- DestroyGlobalMsgQuery();
-
- if( iCommandAsync )
- {
- delete iCommandAsync;
- iCommandAsync = NULL;
- }
- iQueryPreviousText.Close();
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::CreateNoteL
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::CreateQueryL(
- TPhoneCommandParam* aCommandParam )
- {
- __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneQueryController::CreateQueryL()" );
-
- // Cancel previous note. This prevents scheduler crashes.
- // Canceling must be done here since iActiveAvkonQuery may be overwritten.
- Cancel();
-
- TPhoneCmdParamQuery& params = *static_cast<TPhoneCmdParamQuery*>( aCommandParam );
- iCommandId = NULL;
- iNoConnectedCalls = EFalse;
- switch( params.ParamId() )
- {
- case TPhoneCommandParam::EPhoneParamIdQuery:
- case TPhoneCommandParam::EPhoneParamIdVideoCallSetupFailedCreateVoiceCallToTheSameContactQuery:
- case TPhoneCommandParam::EPhoneParamIdUnattendedTransferAcceptanceQuery:
- case TPhoneCommandParam::EPhoneParamIdGlobalWaitNote:
- CreateDefaultQueryL( params );
- break;
-
- case TPhoneCommandParam::EPhoneParamIdReconnectQuery:
- CreateReconnectQueryL( aCommandParam );
- break;
-
- case TPhoneCommandParam::EPhoneParamRebootQuery:
- {
- TRequestStatus status = KRequestPending;
- CAknGlobalConfirmationQuery* query = CAknGlobalConfirmationQuery::NewLC();
- query->ShowConfirmationQueryL(
- status, params.QueryPrompt(), params.DefaultCba(), R_QGN_NOTE_INFO_ANIM );
- User::WaitForRequest( status );
- CleanupStack::PopAndDestroy( query );
- }
- break;
-
- default:
- break;
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::DestroyQuery
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::DestroyQuery()
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::DestroyQuery( ) ");
-
- // Delete the query if it exists
- if ( iQuery )
- {
- delete iQuery;
- iQuery = NULL;
- }
-
- iQueryNoteText.Close();
- iQueryPrompt.Close();
-
- if( iCallUiReconnectQuery )
- {
- delete iCallUiReconnectQuery;
- iCallUiReconnectQuery = NULL;
- }
-
- if ( iDtmfNumberListQuery && !iQueryDeleted )
- {
- delete iDtmfNumberListQuery;
- iDtmfNumberListQuery = NULL;
- }
-
- if ( iTextQuery )
- {
- delete iTextQuery;
- iTextQuery = NULL;
- }
-
- if ( iListQuery && !iQueryDeleted )
- {
- delete iListQuery;
- iListQuery = NULL;
- }
-
- if( iTextQueryDisplayer )
- {
- delete iTextQueryDisplayer;
- iTextQueryDisplayer = NULL;
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::DestroyGlobalQuery
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::DestroyGlobalQuery()
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::DestroyGlobalQuery( ) ");
-
- if ( iGlobalConfirmationQuery )
- {
- iGlobalConfirmationQuery->CancelConfirmationQuery();
-
- delete iGlobalConfirmationQuery;
- iGlobalConfirmationQuery = NULL;
- }
- DestroyGlobalWaitNote();
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::CreateQueryDialogL
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::CreateQueryDialogL(
- const TPhoneCmdParamQuery& aParams )
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::CreateQueryDialogL( ) ");
-
- // Delete the existing query
- DestroyQuery();
-
- iQueryParam = aParams;
-
- // Create the query
- iQuery = CPhoneQueryDialog::NewL();
-
- if ( iQuery )
- {
- // Set the prompt if specified
- if ( aParams.QueryPrompt().Length() )
- {
- iQueryPrompt.Close();
- iQueryPrompt.Create( aParams.QueryPrompt() );
- iQuery->SetPromptL( iQueryPrompt );
- }
-
- // Display the query
- TInt buttonId = iQuery->ExecuteLD( aParams.QueryResourceId() );
- iQuery = NULL;
-
- if( buttonId != EPhoneCmdDoNothing )
- {
- if ( iQueryParam.QueryCommandObserver() )
- {
- // Let observer handle command.
- iQueryParam.QueryCommandObserver()->ProcessCommandL(
- iStatus.Int() );
- return;
- }
- else
- {
- // Forward pressed CBA to the framework so that we can handle it
- // in our active state
- static_cast<MEikCommandObserver*>( iEikEnv.EikAppUi() )
- ->ProcessCommandL( buttonId );
- }
- }
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::CreateTextQueryDialogL
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::CreateTextQueryDialogL(
- const TPhoneCmdParamQuery& aParams,
- TInt aEikBidOkCmd )
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::CreateTextQueryDialogL( ) ");
-
- // Delete the existing query
- DestroyQuery();
-
- iQueryNoteText.Create( *aParams.DataText() );
-
- iTextQuery = new( ELeave ) CPhoneTextQuery(
- *this,
- iQueryNoteText,
- aParams.DefaultCba(),
- aParams.ContentCba(),
- aParams.SendKeyEnabled(),
- aEikBidOkCmd );
-
- // Set the prompt if specified
- if ( aParams.QueryPrompt().Length() )
- {
- iQueryPrompt.Create( aParams.QueryPrompt() );
- iTextQuery->SetPromptL( iQueryPrompt );
- }
-
- // Cut the call stack so that Phone UI is responsive
- iTextQueryDisplayer = CIdle::NewL( EPriorityNormal );
- iTextQueryDisplayer->Start( TCallBack( DisplayTextQueryCallBack, this ) );
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::SetNoConnectedCalls
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::SetNoConnectedCalls( TPhoneCommandParam* aCommandParam )
- {
- TPhoneCmdParamBoolean* booleanParam =
- static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
- iNoConnectedCalls = booleanParam->Boolean();
- __PHONELOG1( EBasic, EPhoneUIView,
- "CPhoneQueryController::SetNoConnectedCalls(%d)",
- iNoConnectedCalls );
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::DisplayTextQueryCallBackL
-// ---------------------------------------------------------
-//
-TInt CPhoneQueryController::DisplayTextQueryCallBack( TAny* aCPhoneQueryController )
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::DisplayTextQueryCallBack( ) ");
-
- // Display the query
- CPhoneQueryController* queryController =
- static_cast<CPhoneQueryController*>( aCPhoneQueryController );
-
- TInt leaveError = KErrNone;
- TInt retVal = KErrNone;
-
- TRAP( leaveError, (
- retVal = queryController->iTextQuery->ExecuteLD( queryController->iQueryParam.QueryResourceId() ) ) );
-
- queryController->iTextQuery = NULL;
-
- // If iCommandId is EPhoneCmdEnd(User has pressed end dismiss DTMF query&dialog) or if iNoConnectedCalls
- // is TRUE it is an indication that remote party has terminated call and there is no connected call in device
- // therefore we dont need to reopen EPhoneInCallCmdDtmfListQuery.
- if ( retVal == KErrNone &&
- leaveError == KErrNone &&
- queryController->iQueryParam.QueryType() == EPhoneDtmfTextQuery &&
- queryController->iCommandId != EPhoneCmdEnd &&
- !queryController->iNoConnectedCalls )
- {
- //User has exited DMTF query with cancel, rule says that
- //we need to activate DTMF list query dialog.
-
- // Forward pressed CBA to the framework so that we can handle it
- // in our active state
- TRAP_IGNORE( static_cast<MEikCommandObserver*>( queryController->iEikEnv.EikAppUi() )
- ->ProcessCommandL( EPhoneInCallCmdDtmfListQuery ) );
- }
-
- queryController->iNoConnectedCalls = EFalse;
- return KErrNone;
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::CreateListQueryL
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::CreateListQueryL( TInt aDialogResourceId,
- const RArray<TInt>& aCommands )
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::CreateListQueryL( ) ");
- DestroyQuery();
-
- if ( !iListQuery )
- {
- iListQuery = new (ELeave)
- CPhoneListQueryDialog(
- static_cast<MEikCommandObserver&>( *iEikEnv.EikAppUi() ),
- *this, aCommands );
- }
- iQueryDeleted = EFalse;
- iCommandHandled = EFalse;
- iListQuery->ExecuteLD( aDialogResourceId );
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::CreateCustomListQueryL
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::CreateCustomListQueryL(
- const TPhoneCmdParamQuery& aParams )
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::CreateCustomListQueryL( ) ");
- DestroyQuery();
- RArray<TInt> commands;
- CleanupClosePushL( commands );
- const_cast<TPhoneCmdParamQuery&>(aParams).ItemTextArrayForListQuery();
-
- MDesCArray* itemArray = aParams.ItemTextArrayForListQuery();
-
- if ( NULL == itemArray )
- {
- User::Leave( KErrArgument );
- }
-
- for ( TInt i = 0; i < itemArray->MdcaCount(); i++ )
- {
- commands.Append( i );
- }
-
- if ( !iListQuery )
- {
- iListQuery = new (ELeave)
- CPhoneListQueryDialog(
- static_cast<MEikCommandObserver&>( *iEikEnv.EikAppUi() ),
- *this, commands );
- }
-
- iListQuery->PrepareLC( aParams.QueryResourceId() );
-
-
- iListQuery->SetItemTextArray( itemArray );
- iListQuery->SetOwnershipType( ELbmDoesNotOwnItemArray );
- iListQuery->SetTone( aParams.Tone() );
-
- iQueryDeleted = EFalse;
- iCommandHandled = EFalse;
-
- iListQuery->RunLD();
-
- CleanupStack::PopAndDestroy( &commands );
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::CreateDtmfListQueryL
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::CreateDtmfListQueryL( TInt aDialogResourceId )
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::CreateDtmfListQueryL( ) ");
- DestroyQuery();
-
- if ( !iDtmfNumberListQuery )
- {
- iDtmfNumberListQuery = CPhoneDtmfNumberListQuery::NewL(
- static_cast<MEikCommandObserver&>( *iEikEnv.EikAppUi() ),
- *this,
- iResultBuffer );
- }
- iQueryDeleted = EFalse;
- iDtmfNumberListQuery->ExecuteLD( aDialogResourceId );
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::GetTextQueryContentL
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::GetTextQueryContentL(
- TPhoneCommandParam* aCommandParam )
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::GetTextQueryContentL( ) ");
-
- TPhoneCmdParamString* stringParam =
- static_cast<TPhoneCmdParamString*>( aCommandParam );
-
- if ( iQueryPreviousText.Length() )
- {
- *stringParam->String() = iQueryPreviousText;
- iQueryPreviousText.Close();
- }
- else if ( iTextQuery )
- {
- iTextQuery->GetContent( *stringParam->String() );
- }
- else if ( iResultBuffer )
- {
- stringParam->String()->Append( iResultBuffer->Des() );
- delete iResultBuffer;
- iResultBuffer = NULL;
- }
-
- __PHONELOG1( EBasic, EPhoneUIView,
- "CPhoneQueryController::GetTextQueryContentL(%S)",
- stringParam->String() );
-
- AknTextUtils::ConvertDigitsTo( *stringParam->String(), EDigitTypeWestern );
-
- __PHONELOG1( EBasic, EPhoneUIView,
- "CPhoneQueryController::GetTextQueryContentL(%S)",
- stringParam->String() );
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::SetQueryDeletedFlag
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::SetQueryDeletedFlag( TBool aQueryDeleted )
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::SetQueryDeletedFlag( ) ");
- switch( iActiveAvkonQuery )
- {
- case EPhoneContactsListQuery:
- case EPhoneCustomListQueryDialog:
- {
- iListQuery = NULL;
-
- if ( iQueryParam.QueryCommandObserver() &&
- !iCommandHandled )
- {
- ReportQueryCompleteAsync( EAknSoftkeyCancel );
- }
- }
- break;
- case EPhoneDtmfListQueryDialog:
- {
- iDtmfNumberListQuery = NULL;
- }
- break;
- default:
- break;
- }
- iQueryDeleted = aQueryDeleted;
- }
-
-
-// ---------------------------------------------------------
-// CPhoneQueryController::CreateDefaultQueryL
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::CreateDefaultQueryL( const TPhoneCmdParamQuery& aParams )
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::CreateDefaultQueryL( ) ");
-
- iQueryParam = aParams;
- iActiveAvkonQuery = aParams.QueryType();
-
- switch( iActiveAvkonQuery )
- {
- case EPhoneQueryDialog:
- CreateQueryDialogL( aParams );
- break;
-
- case EPhoneTextQueryDialog:
- CreateTextQueryDialogL( aParams );
- break;
-
- case EPhoneDtmfTextQuery:
- case EPhoneGenericTextQuery:
- CreateTextQueryDialogL( aParams,
- EPhoneCmdDtmfOk );
- break;
-
- case EPhoneGlobalQueryDialog:
- {
- if ( aParams.ParamId() ==
- TPhoneCommandParam::EPhoneParamIdVideoCallSetupFailedCreateVoiceCallToTheSameContactQuery )
- {
- iVideoCallSetupFailedQuery = ETrue;
- }
- else
- {
- iVideoCallSetupFailedQuery = EFalse;
- }
- // Use timeout if defined
- TTimeIntervalMicroSeconds32 timeout = aParams.TimeOut() * 1000000;
- if ( timeout.Int() > 0 && !iTimer )
- {
- iTimer = CPhoneTimer::NewL();
- // Start timer.
- iTimer->After( timeout, this );
- }
- // Create query
- CreateGlobalQueryDialogL( aParams );
- break;
- }
- case EPhoneCustomListQueryDialog:
- {
- CreateCustomListQueryL( aParams );
- }
- break;
- case EPhoneDtmfListQueryDialog:
- CreateDtmfListQueryL(
- aParams.QueryResourceId() );
- break;
-
- case EPhoneContactsListQuery:
- {
- RArray<TInt> commands;
- CleanupClosePushL( commands );
- commands.Append( EPhoneNumberAcqCmdSave );
- commands.Append( EPhoneNumberAcqCmdAddToName );
- CreateListQueryL( aParams.QueryResourceId(), commands );
- CleanupStack::PopAndDestroy(); // CleanupClosePushL
- }
- break;
- case EPhoneGlobalMsgQuery:
- {
- iTransferAcceptanceQuery = ( aParams.ParamId() ==
- TPhoneCommandParam::EPhoneParamIdUnattendedTransferAcceptanceQuery );
-
- CreateGlobalMsgQueryL( aParams );
- break;
- }
- case EPhoneGlobalWaitNote:
- {
- CreateGlobalWaitNoteL( aParams );
- break;
- }
-
- default:
- return;
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::CreateReconnectQueryL
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::CreateReconnectQueryL( TPhoneCommandParam* aCommandParam )
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::CreateReconnectQueryL( ) ");
-
- TPhoneCmdParamReconnectQuery* queryParam =
- static_cast<TPhoneCmdParamReconnectQuery*>( aCommandParam );
-
- if( !iCallUiReconnectQuery )
- {
- iCallUiReconnectQuery =
- CCaUiReconnectQuery::NewL(
- queryParam->ReconnectQueryObserver());
- }
-
- iCallUiReconnectQuery->ShowL( queryParam->PhoneNumber(),
- queryParam->IncludeVideoCallOption() );
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::CreateGlobalQueryDialogL
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::CreateGlobalQueryDialogL( const TPhoneCmdParamQuery& aParams )
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::CreateGlobalQueryDialogL( ) ");
-
- // Delete the existing global query
- DestroyGlobalQuery();
-
- iGlobalConfirmationQuery = CAknGlobalConfirmationQuery::NewL();
- iGlobalConfirmationQuery->ShowConfirmationQueryL(
- iStatus,
- aParams.QueryPrompt(),
- aParams.DefaultCba(),
- R_QGN_NOTE_QUERY_ANIM,
- KNullDesC,
- 0,
- 0,
- CAknQueryDialog::TTone(aParams.Tone() ) );
-
- SetActive();
- }
-
-
-// ---------------------------------------------------------------------------
-// CPhoneQueryController::ReportQueryCompleteAsync
-// ---------------------------------------------------------------------------
-//
-void CPhoneQueryController::ReportQueryCompleteAsync( TInt aCommand )
- {
- iCommandHandled = ETrue;
- Cancel();
- TRequestStatus* status = &iStatus;
- User::RequestComplete( status, aCommand );
- SetActive();
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::RunL
-// EAknSoftkeyYes and EAknSoftkeyNo need to be used with
-// CAknGlobalConfirmationQuery. Others does not work
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::RunL()
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::RunL( ) ");
- TInt buttonId( KErrNone );
-
- if ( iQueryParam.QueryCommandObserver() )
- {
- // Let observer handle command.
- iQueryParam.QueryCommandObserver()->ProcessCommandL(
- iStatus.Int() );
- return;
- }
-
- if ( iActiveAvkonQuery == EPhoneContactsListQuery ||
- iActiveAvkonQuery == EPhoneDtmfListQueryDialog )
- {
- buttonId = iStatus.Int();
- }
- else if ( iActiveAvkonQuery == EPhoneGlobalQueryDialog )
- {
- if ( iStatus.Int() == EAknSoftkeyYes )
- {
- if ( iVideoCallSetupFailedQuery )
- {
- buttonId = EPhoneCmdYesVideoFailedNoMemorySwitchToVoice;
- }
- else
- {
- buttonId = EPhoneCmdYesBtDisconnectQuery;
- }
- }
- else if ( iStatus.Int() == EAknSoftkeyNo )
- {
- if ( iVideoCallSetupFailedQuery )
- {
- buttonId = EPhoneCmdNoVideoFailedNoMemorySwitchToVoice;
- }
- else
- {
- buttonId = EPhoneCmdNoBtDisconnectQuery;
- }
- }
- ClearTimer();
- iVideoCallSetupFailedQuery = EFalse;
- DestroyGlobalQuery();
- }
- else if ( iActiveAvkonQuery == EPhoneGlobalMsgQuery )
- {
- buttonId = iQueryParam.CbaCommandMapping( iStatus.Int() );
- if ( iTransferAcceptanceQuery )
- {
- iTransferAcceptanceQuery = EFalse;
- }
-
- ClearTimer();
- DestroyGlobalMsgQuery();
- }
- else if ( iActiveAvkonQuery == EPhoneGlobalWaitNote )
- {
- // If note is destroyed through DestroyGlobalQuery() then KErrCancel
- // is not mapped to any command.
- if ( iStatus.Int() == KErrCancel &&
- !iGlobalWaitNote )
- {
- ClearTimer();
- return;
- }
- else
- {
- buttonId = iQueryParam.CbaCommandMapping( iStatus.Int() );
- }
-
- ClearTimer();
- DestroyGlobalWaitNote();
- }
- // Forward pressed CBA to the framework so that we can handle it
- // in our active state
- static_cast<MEikCommandObserver*>( iEikEnv.EikAppUi() )
- ->ProcessCommandL( buttonId );
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::RunError
-// ---------------------------------------------------------
-//
-TInt CPhoneQueryController::RunError( TInt aError )
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::RunError( ) ");
-
- if ( aError )
- {
- __PHONELOG1( EBasic, EPhoneUIView,
- "CPhoneQueryController::RunError: error: %d",
- aError );
- }
- return aError;
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::DoCancel
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::DoCancel()
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::DoCancel( ) ");
-
- if ( iActiveAvkonQuery == EPhoneGlobalQueryDialog )
- {
- ClearTimer();
- DestroyGlobalQuery();
- if ( iVideoCallSetupFailedQuery )
- {
- iVideoCallSetupFailedQuery = EFalse;
- TRAP_IGNORE(
- static_cast<MEikCommandObserver*>( iEikEnv.EikAppUi() )
- ->ProcessCommandL(
- EPhoneCmdNoVideoFailedNoMemorySwitchToVoice ) )
- }
- else if ( iQueryParam.QueryCommandObserver() )
- {
- // Let observer handle command.
- TRAP_IGNORE( iQueryParam.QueryCommandObserver()->ProcessCommandL(
- EAknSoftkeyCancel ) );
- }
- }
- if ( EPhoneGlobalMsgQuery == iActiveAvkonQuery )
- {
- ClearTimer();
- DestroyGlobalMsgQuery();
-
- TInt buttonId = 0;
- TInt result = iQueryParam.GetCustomCommandForTimeOut( buttonId );
- if ( KErrNone == result && iTransferAcceptanceQuery )
- {
- // timeout equals reject of unattended transfer request
- iTransferAcceptanceQuery = EFalse;
- TRAP_IGNORE(
- static_cast<MEikCommandObserver*>( iEikEnv.EikAppUi() )
- ->ProcessCommandL( buttonId ) )
- }
- }
-
- if ( EPhoneGlobalWaitNote == iActiveAvkonQuery )
- {
- ClearTimer();
- TInt buttonId = 0;
- TInt result = iQueryParam.GetCustomCommandForTimeOut( buttonId );
- if ( KErrNone == result && iGlobalWaitNote )
- {
- DestroyGlobalWaitNote();
-
- TRAP_IGNORE(
- static_cast<MEikCommandObserver*>( iEikEnv.EikAppUi() )
- ->ProcessCommandL( buttonId ) )
- }
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::IsQueryActive
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::IsQueryActive( TPhoneCommandParam* aCommandParam )
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::IsQueryActive() ");
- TPhoneCmdParamBoolean* booleanParam =
- booleanParam = static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
-
- if ( iQuery ||
- iTextQuery ||
- iGlobalConfirmationQuery ||
- !iQueryDeleted )
- {
- booleanParam->SetBoolean( ETrue );
- }
- else
- {
- booleanParam->SetBoolean( EFalse );
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::IsDTMFQueryVisible
-// ---------------------------------------------------------
-//
-TBool CPhoneQueryController::IsDTMFQueryVisible()
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::IsDTMFQueryVisible() ");
- TBool dtmfVisible(EFalse);
- if( ( iTextQuery && iQueryParam.QueryType() == EPhoneDtmfTextQuery ) ||
- ( iDtmfNumberListQuery && iQueryParam.QueryType() == EPhoneDtmfListQueryDialog ) )
- {
- dtmfVisible = ETrue;
- }
- __PHONELOG1( EBasic, EPhoneUIView,
- "CPhoneQueryController::IsDTMFQueryVisible :%d",
- dtmfVisible );
- return dtmfVisible;
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::SetListQueryStringL
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::SetListQueryStringL( TPhoneCommandParam* aCommandParam )
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::SetListQueryStringL() ");
- //Create new object if needed
- if ( !iDtmfNumberListQuery )
- {
- iDtmfNumberListQuery = CPhoneDtmfNumberListQuery::NewL(
- static_cast<MEikCommandObserver&>( *iEikEnv.EikAppUi() ),
- *this,
- iResultBuffer );
- }
- TPhoneCmdParamString* stringParam =
- static_cast<TPhoneCmdParamString*>( aCommandParam );
- iDtmfNumberListQuery->AppendStringToArrayL( *stringParam->String() );
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneQueryController::HandleTimeOutL
-// -----------------------------------------------------------------------------
-//
-void CPhoneQueryController::HandleTimeOutL()
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::HandleTimeOutL()");
- Cancel();
- }
-
-// -----------------------------------------------------------------------------
-// CPhoneQueryController::ClearTimer
-// -----------------------------------------------------------------------------
-//
-void CPhoneQueryController::ClearTimer()
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::ClearTimer()");
- if ( iTimer )
- {
- if ( iTimer->IsActive() )
- {
- iTimer->Cancel();
- }
- delete iTimer;
- iTimer = NULL;
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::CreateGlobalMsgQueryL
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::CreateGlobalMsgQueryL(
- const TPhoneCmdParamQuery& aParams )
- {
- iQueryNoteText.Close();
- iQueryNoteText.Create( *aParams.DataText() );
- iQueryPrompt.Close();
- iQueryPrompt.Create( aParams.QueryPrompt() );
-
- // use timeout if defined
- const TInt KSecToUsFactor = 1000000;
- TTimeIntervalMicroSeconds32 timeout = aParams.TimeOut() * KSecToUsFactor;
- if ( 0 < timeout.Int() && !iTimer )
- {
- iTimer = CPhoneTimer::NewL();
- iTimer->After( timeout, this );
- }
-
- DestroyGlobalMsgQuery();
- iGlobalMsgQuery = CAknGlobalMsgQuery::NewL();
-
- const TInt KNoImage = 0;
- const TInt KNoImageMask = -1;
-
- iGlobalMsgQuery->ShowMsgQueryL( iStatus, iQueryNoteText, aParams.DefaultCba(),
- iQueryPrompt, KNullDesC(), KNoImage, KNoImageMask,
- static_cast<CAknQueryDialog::TTone>( aParams.Tone() ) );
- SetActive();
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::DestroyGlobalMsgQuery
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::DestroyGlobalMsgQuery()
- {
- if ( iGlobalMsgQuery )
- {
- iGlobalMsgQuery->CancelMsgQuery();
-
- delete iGlobalMsgQuery;
- iGlobalMsgQuery = NULL;
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::CreateGlobalWaitNote
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::CreateGlobalWaitNoteL(
- const TPhoneCmdParamQuery& aParams )
- {
- __LOGMETHODSTARTEND(EPhoneUIView,
- "CPhoneQueryController::CreateGlobalWaitNote()");
- if ( aParams.DataText()->Length() > 0 )
- {
- iWaitNoteText.Close();
- iWaitNoteText.Create( *aParams.DataText() );
- // use timeout if defined
- const TInt KSecToUsFactor = 1000000;
- TTimeIntervalMicroSeconds32 timeout = aParams.TimeOut() * KSecToUsFactor;
- if ( 0 < timeout.Int() && !iTimer )
- {
- iTimer = CPhoneTimer::NewL();
- iTimer->After( timeout, this );
- }
-
- DestroyGlobalWaitNote();
- iGlobalWaitNote = CAknGlobalNote::NewL();
- iGlobalWaitNote->SetSoftkeys( aParams.DefaultCba() );
- // Show the global note
- iGlobalWaitNote->ShowNoteL( iStatus, EAknGlobalWaitNote, *aParams.DataText() );
-
- SetActive();
- }
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::DestroyGlobalWaitNote
-// ---------------------------------------------------------
-//
-void CPhoneQueryController::DestroyGlobalWaitNote()
- {
- __LOGMETHODSTARTEND(EPhoneUIView,
- "CPhoneQueryController::DestroyGlobalWaitNote()");
- if ( iGlobalWaitNote )
- {
- ClearTimer();
- TRAP_IGNORE( iGlobalWaitNote->CancelNoteL( KErrCancel ) );
-
- delete iGlobalWaitNote;
- iGlobalWaitNote = NULL;
- }
- iWaitNoteText.Close();
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::ProcessCommand
-// ---------------------------------------------------------
-
-void CPhoneQueryController::ProcessCommandL( TInt aCommandId )
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::ProcessCommandL()");
-
- iCommandId = aCommandId;
-
- if ( iTextQuery )
- { // Store text for next content getting
- iQueryPreviousText.Close();
- iQueryPreviousText.Create( KPhoneMaxCharsInNote );
- iTextQuery->GetContent( iQueryPreviousText );
- }
-
- iCommandAsync = CIdle::NewL( EPriorityNormal );
- iCommandAsync->Start( TCallBack( ProcessCommandCallBack, this ) );
- }
-
-// ---------------------------------------------------------
-// CPhoneQueryController::ProcessCommandCallBack
-// ---------------------------------------------------------
-//
-TInt CPhoneQueryController::ProcessCommandCallBack( TAny* aCPhoneQueryController )
- {
- __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneQueryController::ProcessCommandCallBack() ");
-
- CPhoneQueryController* queryController =
- static_cast<CPhoneQueryController*>( aCPhoneQueryController );
-
- delete queryController->iCommandAsync;
- queryController->iCommandAsync = NULL;
-
- TRAP_IGNORE( static_cast<MEikCommandObserver*>( queryController->iEikEnv.EikAppUi() )
- ->ProcessCommandL( queryController->iCommandId ) );
-
- return KErrNone;
- }
-
-
-// end of file
-