--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/voipplugins/accountcreationplugin/src/acpdialog.cpp Mon Jan 18 20:12:36 2010 +0200
@@ -0,0 +1,320 @@
+/*
+* Copyright (c) 2007-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: Implements CAcpDialog methods
+*
+*/
+
+
+#include <avkon.rsg>
+#include <StringLoader.h>
+#include <AknGlobalNote.h>
+#include <AknQueryDialog.h>
+#include <aknnotewrappers.h>
+#include <AknGlobalMsgQuery.h>
+#include <accountcreationplugin.rsg>
+
+#include "acpdialog.h"
+#include "accountcreationpluginlogger.h"
+#include "macpdialogobserver.h"
+
+
+// ---------------------------------------------------------------------------
+// CAcpDialog::CAcpDialog
+// ---------------------------------------------------------------------------
+//
+CAcpDialog::CAcpDialog( MAcpDialogObserver& aObserver )
+ : CActive ( EPriorityStandard ),
+ iObserver( aObserver )
+ {
+ CActiveScheduler::Add( this );
+ }
+
+// ---------------------------------------------------------------------------
+// CAcpDialog::NewL
+// ---------------------------------------------------------------------------
+//
+CAcpDialog* CAcpDialog::NewL( MAcpDialogObserver& aObserver )
+ {
+ CAcpDialog* self = CAcpDialog::NewLC( aObserver );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CAcpDialog::NewLC
+// ---------------------------------------------------------------------------
+//
+CAcpDialog* CAcpDialog::NewLC( MAcpDialogObserver& aObserver )
+ {
+ CAcpDialog* self = new ( ELeave ) CAcpDialog( aObserver );
+ CleanupStack::PushL( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CAcpDialog::~CAcpDialog
+// ---------------------------------------------------------------------------
+//
+CAcpDialog::~CAcpDialog()
+ {
+ Cancel();
+ }
+
+// ---------------------------------------------------------------------------
+// CAcpDialog::LaunchWaitNoteL
+// Launches a wait note.
+// ---------------------------------------------------------------------------
+//
+void CAcpDialog::LaunchWaitNoteL( TInt aWaitNote )
+ {
+ ACPLOG( "CAcpDialog::LaunchWaitNoteL begin" );
+
+ if ( !IsActive() )
+ {
+ // Show wait note with appropriate text.
+ HBufC* text = StringLoader::LoadLC( aWaitNote );
+ iWaitNote = CAknGlobalNote::NewL();
+ iWaitNote->SetSoftkeys( R_AVKON_SOFTKEYS_CANCEL );
+ iNoteId = iWaitNote->ShowNoteL(
+ iStatus,
+ EAknGlobalWaitNote,
+ *text );
+ CleanupStack::PopAndDestroy( text );
+ ACPLOG( " - SetActive();" );
+ SetActive();
+ }
+ ACPLOG( "CAcpDialog::LaunchWaitNoteL end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CAcpDialog::LaunchWaitNoteL
+// Launches a wait note with a custom string.
+// ---------------------------------------------------------------------------
+//
+void CAcpDialog::LaunchWaitNoteL( TInt aWaitNote, const TDesC& aString )
+ {
+ ACPLOG( "CAcpDialog::LaunchWaitNoteL begin" );
+
+ if ( !IsActive() )
+ {
+ // Show wait note with appropriate text.
+ HBufC* text = StringLoader::LoadLC( aWaitNote, aString );
+ iWaitNote = CAknGlobalNote::NewL();
+ iWaitNote->SetSoftkeys( R_AVKON_SOFTKEYS_CANCEL );
+ iNoteId = iWaitNote->ShowNoteL(
+ iStatus,
+ EAknGlobalWaitNote,
+ *text );
+ CleanupStack::PopAndDestroy( text );
+ ACPLOG( " - SetActive();" );
+ SetActive();
+ }
+ ACPLOG( "CAcpDialog::LaunchWaitNoteL end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CAcpDialog::DestroyWaitNote
+// Destroys a wait note.
+// ---------------------------------------------------------------------------
+//
+void CAcpDialog::DestroyWaitNote()
+ {
+ ACPLOG( "CAcpDialog::DestroyWaitNote begin" );
+ Cancel();
+
+ // If dialog handler wasn't active anymore, DoCancel wasn't called and
+ // the wait note needs to be deleted separately.
+ if ( iWaitNote )
+ {
+ TRAP_IGNORE( iWaitNote->CancelNoteL( iNoteId ) );
+ delete iWaitNote;
+ iWaitNote = NULL;
+ }
+
+ ACPLOG( "CAcpDialog::DestroyWaitNoteL end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CAcpDialog::ShowQueryL
+// ---------------------------------------------------------------------------
+//
+TInt CAcpDialog::ShowQueryL( TInt aQuery )
+ {
+ ACPLOG( "CAcpDialog::ShowQueryL begin" );
+ CAknQueryDialog* query = new ( ELeave )
+ CAknQueryDialog( CAknQueryDialog::ENoTone );
+ ACPLOG( " - return ( query->ExecuteLD( aQuery ) );" );
+ ACPLOG( "CAcpDialog::ShowQueryL end" );
+ return ( query->ExecuteLD( aQuery ) );
+ }
+
+// ---------------------------------------------------------------------------
+// CAcpDialog::ShowMessageQueryL
+// ---------------------------------------------------------------------------
+//
+void CAcpDialog::ShowMessageQueryL( TInt aMessageQuery, const TDesC& aString )
+ {
+ ACPLOG( "CAcpDialog::ShowMessageQueryL begin" );
+
+ if ( !IsActive() )
+ {
+ HBufC* text = StringLoader::LoadLC( aMessageQuery, aString );
+ iGlobalMsgQuery = CAknGlobalMsgQuery::NewL();
+
+ ACPLOG( " --> show query" );
+
+ iGlobalMsgQuery->ShowMsgQueryL(
+ iStatus,
+ text->Des(),
+ R_AVKON_SOFTKEYS_OK_EMPTY,
+ KNullDesC,
+ KNullDesC );
+
+ CleanupStack::PopAndDestroy( text );
+ SetActive();
+ }
+
+ ACPLOG( "CAcpDialog::ShowMessageQueryL end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CAcpDialog::ShowNoteL
+// ---------------------------------------------------------------------------
+//
+void CAcpDialog::ShowNoteL( TInt aNote, const TDesC& aString )
+ {
+ ACPLOG( "CAcpDialog::ShowNoteL(string) begin" );
+ HBufC* text = StringLoader::LoadLC( aNote, aString );
+ CAknInformationNote* note = new (ELeave) CAknInformationNote( ETrue );
+ note->ExecuteLD( *text );
+ CleanupStack::PopAndDestroy( text );
+ ACPLOG( "CAcpDialog::ShowNoteL(string) end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CAcpDialog::ShowGlobalNoteL
+// ---------------------------------------------------------------------------
+//
+void CAcpDialog::ShowGlobalNoteL( TInt aNote )
+ {
+ ACPLOG( "CAcpDialog::ShowGlobalNoteL begin" );
+ HBufC* text = StringLoader::LoadLC( aNote );
+ CAknGlobalNote* note = CAknGlobalNote::NewLC();
+ note->SetSoftkeys( R_AVKON_SOFTKEYS_OK_EMPTY );
+ note->ShowNoteL( EAknGlobalInformationNote, *text );
+ CleanupStack::PopAndDestroy( 2, text );
+ ACPLOG( "CAcpDialog::ShowGlobalNoteL end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CAcpDialog::ShowGlobalNoteL
+// ---------------------------------------------------------------------------
+//
+void CAcpDialog::ShowGlobalNoteL( TInt aNote, const TDesC& aString )
+ {
+ ACPLOG( "CAcpDialog::ShowGlobalNoteL(string) begin" );
+ HBufC* text = StringLoader::LoadLC( aNote, aString );
+ CAknGlobalNote* note = CAknGlobalNote::NewLC();
+ note->SetSoftkeys( R_AVKON_SOFTKEYS_OK_EMPTY );
+ note->ShowNoteL( EAknGlobalInformationNote, *text );
+ CleanupStack::PopAndDestroy( 2, text );
+ ACPLOG( "CAcpDialog::ShowGlobalNoteL(string) end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CAcpDialog::ShowSelectionDialogL
+// ---------------------------------------------------------------------------
+//
+TInt CAcpDialog::ShowSelectionDialogL( TInt aDialog, MDesC16Array* aArray )
+ {
+ ACPLOG( "CAcpDialog::ShowSelectionDialogL begin" );
+ TInt index( KErrNotFound );
+ CAknListQueryDialog* dialog = new (ELeave) CAknListQueryDialog( &index );
+ dialog->PrepareLC( aDialog );
+ dialog->SetItemTextArray( aArray );
+ dialog->SetOwnershipType( ELbmOwnsItemArray );
+ dialog->RunLD();
+
+ ACPLOG( "CAcpDialog::ShowSelectionDialogL end" );
+ return index;
+ }
+
+// ---------------------------------------------------------------------------
+// CAcpDialog::RunL
+// From CActive.
+// ---------------------------------------------------------------------------
+//
+void CAcpDialog::RunL()
+ {
+ ACPLOG2( "CAcpDialog::RunL: iStatus=%d", iStatus.Int() );
+
+ TInt status = iStatus.Int();
+
+ if ( iWaitNote )
+ {
+ ACPLOG( "CAcpDialog::RunL --> wait note" );
+
+ iObserver.DialogDismissedL( iStatus.Int() );
+ }
+ else if ( iGlobalMsgQuery &&
+ ( status == EAknSoftkeyYes || status == EAknSoftkeyOk ) )
+ {
+ ACPLOG( "CAcpDialog::RunL --> message query" );
+
+ iGlobalMsgQuery->CancelMsgQuery();
+ iObserver.DialogDismissedL( iStatus.Int() );
+ }
+ else if ( iGlobalMsgQuery &&
+ ( status != EAknSoftkeyYes || status != EAknSoftkeyOk ) )
+ {
+ ACPLOG( "CAcpDialog::RunL --> waiting user to check message query" );
+
+ // do nothing, wait user to press ok to message query.
+ }
+ else
+ {
+ ACPLOG( "CAcpDialog::RunL --> cancel" );
+
+ // in other cases cancel
+ Cancel();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CAcpDialog::DoCancel
+// From CActive.
+// ---------------------------------------------------------------------------
+//
+void CAcpDialog::DoCancel()
+ {
+ ACPLOG( "CAcpDialog::DoCancel - begin" );
+
+ if ( iWaitNote )
+ {
+ TRAP_IGNORE( iWaitNote->CancelNoteL( iNoteId ) );
+ delete iWaitNote;
+ iWaitNote = NULL;
+ }
+
+ if ( iGlobalMsgQuery )
+ {
+ iGlobalMsgQuery->CancelMsgQuery();
+ delete iGlobalMsgQuery;
+ iGlobalMsgQuery = NULL;
+ }
+
+ ACPLOG( "CAcpDialog::DoCancel - end" );
+ }
+
+// End of file.