--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshui/src/musuiviewcontainer.cpp Thu Dec 17 08:44:37 2009 +0200
@@ -0,0 +1,219 @@
+/*
+* Copyright (c) 2007 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: The MUS application's UI class.
+*
+*/
+
+
+#include "musuiviewcontainer.h"
+#include "musuidialogutil.h"
+#include "musuidefinitions.h"
+#include "muslogger.h" // debug logging
+#include "musuigeneralview.h"
+#include <musui.rsg>
+
+#include <AknWaitDialog.h>
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusUiViewContainer::~CMusUiViewContainer()
+ {
+ MUS_LOG( "mus: [MUSUI ] -> CMusUiViewContainer::~CMusUiViewContainer" );
+
+ CancelWaitTimer();
+ delete iWaitDialogTimer;
+
+ if ( iWaitDialog )
+ {
+ TRAP_IGNORE( iWaitDialog->ProcessFinishedL() );
+ }
+
+ MUS_LOG( "mus: [MUSUI ] <- CMusUiViewContainer::~CMusUiViewContainer" );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiViewContainer::CancelWaitTimer()
+ {
+ MUS_LOG( "mus: [MUSUI ] -> CMusUiViewContainer::CancelWaitTimer" );
+ if ( iWaitDialogTimer )
+ {
+ iWaitDialogTimer->Cancel();
+ }
+ MUS_LOG( "mus: [MUSUI ] <- CMusUiViewContainer::CancelWaitTimer" );
+ }
+
+
+// -----------------------------------------------------------------------------
+// Dismisses the current active wait note, if any.
+// -----------------------------------------------------------------------------
+//
+void CMusUiViewContainer::DismissWaitDialogL( TBool aReturnValue )
+ {
+ MUS_LOG( "mus: [MUSUI ] -> CMusUiViewContainer::DismissWaitDialogL" );
+
+ if ( iWaitDialog )
+ {
+ iInvitationWaitDialogDismissed = ETrue;
+ iWaitDialogReturnValueWhenDismissed = aReturnValue;
+
+ iWaitDialog->ProcessFinishedL();
+ iWaitDialog = NULL;
+ }
+
+ MUS_LOG( "mus: [MUSUI ] <- CMusUiViewContainer::DismissWaitDialogL" );
+ }
+
+
+// -----------------------------------------------------------------------------
+// Runs the Inviting recipient wait note
+// -----------------------------------------------------------------------------
+//
+TBool CMusUiViewContainer::RunWaitDialogL( const TDesC& aPrompt,
+ TInt aTimerInSeconds,
+ TInt aExpirationMessageResourceId )
+ {
+ MUS_LOG_TDESC( "mus: [MUSUI ] -> CMusUiViewContainer::RunWaitDialogL: ", aPrompt );
+
+ __ASSERT_ALWAYS( !iWaitDialog, User::Leave( KErrAlreadyExists ) );
+ __ASSERT_ALWAYS( !iWaitDialogTimer, User::Leave( KErrAlreadyExists ) );
+
+ MUS_LOG( " No previous wait dialog, continue " )
+
+ iExpirationMessageResourceId = aExpirationMessageResourceId;
+
+ iWaitDialog = new( ELeave ) CAknWaitDialog(
+ reinterpret_cast<CEikDialog**>(&iWaitDialog) );
+
+ iWaitDialog->SetTextL( aPrompt );
+
+ TBool retVal = ETrue;
+ iWaitDialog->PrepareLC( R_MUS_VIEW_INVITING_WAIT_NOTE );
+
+ if ( aTimerInSeconds > 0 )
+ {
+ iWaitDialogTimer = CPeriodic::NewL( CActive::EPriorityStandard );
+ iWaitDialogTimer->Start( KMusOneSecond * aTimerInSeconds,
+ KMusOneSecond * aTimerInSeconds,
+ TCallBack( DoWaitNoteTimeout, this ) );
+ }
+
+ iShowingWaitDialog = ETrue;
+ retVal = iWaitDialog->RunLD();
+ iShowingWaitDialog = EFalse;
+ iWaitDialog = NULL;
+
+ MUS_LOG( " Wait dialog's RunLD returned" )
+
+ if ( iToolbarHandler )
+ {
+ MUS_LOG( " Completing toobar request" )
+ iToolbarHandler->SetToolbarVisibility( ETrue );
+ iToolbarHandler = NULL;
+ }
+
+ // Cancel timer when dialog returns.
+ CancelWaitTimer();
+ delete iWaitDialogTimer;
+ iWaitDialogTimer = NULL;
+
+ if ( iInvitationWaitDialogDismissed )
+ {
+ iInvitationWaitDialogDismissed = EFalse;
+ retVal = iWaitDialogReturnValueWhenDismissed;
+ }
+
+ MUS_LOG( "mus: [MUSUI ] <- CMusUiViewContainer::RunWaitDialogL" );
+ return retVal;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiViewContainer::SetWaitDialogCallbackL( MProgressDialogCallback* aCallback )
+ {
+ __ASSERT_ALWAYS( iWaitDialog, User::Leave( KErrNotReady ) );
+ iWaitDialog->SetCallback( aCallback );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusUiViewContainer::WaitDialogShown() const
+ {
+ return iShowingWaitDialog;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiViewContainer::RequestToolbarVisibilityOnceDialogDismissed(
+ CMusUiGeneralView* aToolbarHandler )
+ {
+ MUS_LOG1(
+ "mus: [MUSUI ] <-> \
+CMusUiViewContainer::RequestToolbarVisibilityOnceDialogDismissed, handler:%d",
+ reinterpret_cast<TUint32>( aToolbarHandler ) );
+
+ iToolbarHandler = aToolbarHandler;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusUiViewContainer::CMusUiViewContainer()
+ {
+ // NOP
+ }
+
+
+// -----------------------------------------------------------------------------
+// Tick handler, callback function directly called by periodic timer
+// -----------------------------------------------------------------------------
+//
+TInt CMusUiViewContainer::DoWaitNoteTimeout( TAny* aObject )
+ {
+ // Cast, and call non-static function.
+ MUS_LOG( "mus: [MUSUI ] -> CMusUiViewContainer::DoWaitNoteTimeout" );
+
+ CMusUiViewContainer* self =
+ static_cast<CMusUiViewContainer*>( aObject );
+
+ TRAP_IGNORE( self->DismissWaitDialogL( EFalse ) );
+
+ if ( self->iExpirationMessageResourceId != 0 )
+ {
+ TRAP_IGNORE( MusUiDialogUtil::ShowGlobalInformationDialogL(
+ self->iExpirationMessageResourceId ) )
+ }
+
+ MUS_LOG( "mus: [MUSUI ] <- CMusUiViewContainer::DoWaitNoteTimeout" );
+ // Return 0 ( false ) to indicate that we don't want more ticks
+ return KErrNone;
+ }
+
+
+// end of file