epoc32/include/mw/aknwaitnotewrapper.h
branchSymbian2
changeset 2 2fe1408b6811
parent 1 666f914201fb
child 4 837f303aceeb
--- a/epoc32/include/mw/aknwaitnotewrapper.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/mw/aknwaitnotewrapper.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,155 @@
-aknwaitnotewrapper.h
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*     Declares a wait note wrapper.
+*
+*/
+
+
+#ifndef CAknWaitNoteWrapper_H
+#define CAknWaitNoteWrapper_H
+
+// INCLUDES
+#include <e32base.h>
+#include <AknProgressDialog.h>
+
+
+// CONSTANTS
+class CAknWaitDialog;
+
+
+// CLASS DECLARATION
+
+/**
+ * Abstract process divided into steps.
+ */
+class MAknBackgroundProcess
+    {
+    public: // interface
+        /**
+         * Completes one cycle of the process.
+         */
+        virtual void StepL()=0;
+
+        /**
+         * Return true when the process is done.
+         */
+        virtual TBool IsProcessDone() const =0;
+
+        /**
+         * Callback when the process is finished.
+         */
+        virtual void ProcessFinished() { }
+
+        /**
+        * Callback when the dialog is dismissed
+        */
+        virtual void DialogDismissedL(TInt /*aButtonId*/) { }
+
+        /**
+         * Handles error occurred in StepL
+         * @param aError error code that occurred
+         * @return translated error code. If this is != KErrNone process will be stopped.
+         */
+        virtual TInt CycleError(TInt aError) { return aError; }
+    };
+
+/**
+ * CAknWaitNoteWrapper class.
+ */
+NONSHARABLE_CLASS(CAknWaitNoteWrapper) : private CActive, private MProgressDialogCallback
+    {
+    public: // constructor and destructor
+        IMPORT_C static CAknWaitNoteWrapper* NewL();
+        
+        IMPORT_C ~CAknWaitNoteWrapper();
+
+    public: // interface
+        /**
+         * Executes the wait note and calls the cycle callback.
+		 *
+		 * @param aResId                Resource id for the dialog.
+         * @param aBackgroundProcess    Callback interface.
+         * @param aVisibilityDelayOff   If set ETrue the dialog will be visible
+         *                              immediality. Use only when the length of
+         *                              the process is ALWAYS over 1.5 seconds.
+         * @param aTone                 Will be played when the dialog is shown.
+         *
+		 * @return true if success, false if wait note was canceled.
+         */
+        IMPORT_C TBool ExecuteL(TInt aResId, MAknBackgroundProcess& aBackgroundProcess,
+            TBool aVisibilityDelayOff = EFalse, const CAknNoteDialog::TTone& aTone = CAknNoteDialog::ENoTone); 
+
+
+		 /**
+         * Executes the wait note and calls the cycle callback.
+		 * Dynamically set note prompt.
+		 *
+		 * @param aResId                Resource id for the dialog.
+         * @param aBackgroundProcess    Callback interface.
+         * @param aPrompt               Note Prompt
+		 * @param aVisibilityDelayOff   If set ETrue the dialog will be visible
+         *                              immediality. Use only when the length of
+         *                              the process is ALWAYS over 1.5 seconds.
+         * @param aTone                 Will be played when the dialog is shown.
+         *
+		 * @return true if success, false if wait note was canceled.
+         */
+        IMPORT_C TBool ExecuteL(TInt aResId, MAknBackgroundProcess& aBackgroundProcess,
+			const TDesC& aPrompt, TBool aVisibilityDelayOff = EFalse, const CAknNoteDialog::TTone& aTone = CAknNoteDialog::ENoTone); 
+
+		/**
+		* Return pointer to dialog
+		*/
+		inline CAknWaitDialog* WaitDialog() const; 
+
+    private: // from CActive
+	    void DoCancel();
+	    void RunL();
+        TInt RunError(TInt aError);
+
+    private:  // from MProgressDialogCallback
+        void DialogDismissedL(TInt aButtonId);
+
+    private: // implementation
+        class CWaitNote;
+
+        CAknWaitNoteWrapper();
+        void NextCycle();
+
+		TBool NextCycleAndReturnL();
+		void CreateDialogL(TBool aVisibilityDelayOff, const CAknNoteDialog::TTone& aTone);
+
+
+    private: // data members
+        /// Ref: callback to client
+        MAknBackgroundProcess* iBackgroundProcess;
+        /// Own: error code from RunL
+        TInt iRunError;
+        /// Own: wait note dialog
+        CAknWaitDialog* iWaitDialog;
+        /// Own: is dialog dismissed
+        TBool iIsDialogCanceled;
+		/// Own: scheduler wait object, safe to use as direct member data.
+		CActiveSchedulerWait iWait;
+		///Event generator for this AO (interval is zero seconds)
+		RTimer iTimer;
+
+    };
+
+CAknWaitDialog* CAknWaitNoteWrapper::WaitDialog() const { return iWaitDialog;}
+
+#endif
+
+// End of File