wvuing/IMPSConnectionUI/UISrc/CCnUiWaitNoteContainer.cpp
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/IMPSConnectionUI/UISrc/CCnUiWaitNoteContainer.cpp	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,109 @@
+/*
+* Copyright (c) 2004 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:  Wait note container.
+*
+*/
+
+// INCLUDE FILES
+#include <e32std.h>
+#include <aknwaitdialog.h>
+#include "MCnUiWaitNoteObserver.h"
+#include "CCnUiWaitNoteContainer.h"
+
+
+// CONSTANTS
+// ================= MEMBER FUNCTIONS =======================
+// Two-phased constructor.
+CCnUiWaitNoteContainer* CCnUiWaitNoteContainer::NewL( TInt aNoteStructureResourceId,
+                                                      const TDesC& aLabelText,
+                                                      MCnUiWaitNoteObserver* aObserver )
+    {
+    CCnUiWaitNoteContainer* self = new ( ELeave ) CCnUiWaitNoteContainer( aObserver );
+    CleanupStack::PushL( self );
+    self->ConstructL( aLabelText, aNoteStructureResourceId );
+    CleanupStack::Pop( self ); //self
+    return self;
+    }
+
+
+// Destructor
+CCnUiWaitNoteContainer::~CCnUiWaitNoteContainer()
+    {
+    //NULL observer before dismissing the wait note
+    //==>protects the observer from getting the wait note
+    //cancel events caused by the note deletion
+    iObserver = NULL;
+
+    if ( iWaitNote )
+        {
+        //wait note showing, try to dismiss it
+        TInt ignore;
+        TRAP( ignore, iWaitNote->ProcessFinishedL() );
+
+        //if the ProcessFinishedL() leaves,
+        //force the dialog away with delete
+        delete iWaitNote;
+        }
+    }
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CCnUiWaitNoteContainer::CCnUiWaitNoteContainer( MCnUiWaitNoteObserver* aObserver )
+        : iObserver( aObserver )
+    {
+    }
+
+// Symbian OS default constructor can leave.
+void CCnUiWaitNoteContainer::ConstructL( const TDesC& aLabelText, TInt aNoteStructureResourceId )
+    {
+    iWaitNote = new ( ELeave ) CAknWaitDialog( reinterpret_cast< CEikDialog** >
+                                               ( &iWaitNote ) );
+
+    // prepare LC:s push to CleanUpStack isn't a problem in case of leave, cos
+    // CAknWaitDialog sets self pointer to NULL in its destructor
+    iWaitNote->PrepareLC( aNoteStructureResourceId );
+
+    iWaitNote->SetTextL( aLabelText );
+    iWaitNote->SetCallback( this );
+
+    //pops the dialog
+    iWaitNote->RunLD();  // CSI: 50 # This sets iWaitNote as NULL
+    }
+
+
+// -----------------------------------------------------------------------------
+// CCnUiWaitNoteContainer::PushLC()
+// -----------------------------------------------------------------------------
+//
+void CCnUiWaitNoteContainer::PushLC()
+    {
+    CleanupStack::PushL( this );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CCnUiWaitNoteContainer::DialogDismissedL()
+// from MProgressDialogCallback
+// -----------------------------------------------------------------------------
+//
+void CCnUiWaitNoteContainer::DialogDismissedL( TInt /*aButtonId*/ )
+    {
+    if ( iObserver )
+        {
+        iObserver->HandleWaitNoteCancel();
+        }
+    }
+
+//  End of File