classicui_plat/notes_api/inc/AknWaitNoteWrapper.h
author hgs
Fri, 23 Jul 2010 17:08:56 +0800
changeset 45 667edd0b8678
permissions -rw-r--r--
201029
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: 
hgs
parents:
diff changeset
    15
*     Declares a wait note wrapper.
hgs
parents:
diff changeset
    16
*
hgs
parents:
diff changeset
    17
*/
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#ifndef CAknWaitNoteWrapper_H
hgs
parents:
diff changeset
    21
#define CAknWaitNoteWrapper_H
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
// INCLUDES
hgs
parents:
diff changeset
    24
#include <e32base.h>
hgs
parents:
diff changeset
    25
#include <AknProgressDialog.h>
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
// CONSTANTS
hgs
parents:
diff changeset
    29
class CAknWaitDialog;
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
// CLASS DECLARATION
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
/**
hgs
parents:
diff changeset
    35
 * Abstract process divided into steps.
hgs
parents:
diff changeset
    36
 */
hgs
parents:
diff changeset
    37
class MAknBackgroundProcess
hgs
parents:
diff changeset
    38
    {
hgs
parents:
diff changeset
    39
    public: // interface
hgs
parents:
diff changeset
    40
        /**
hgs
parents:
diff changeset
    41
         * Completes one cycle of the process.
hgs
parents:
diff changeset
    42
         */
hgs
parents:
diff changeset
    43
        virtual void StepL()=0;
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
        /**
hgs
parents:
diff changeset
    46
         * Return true when the process is done.
hgs
parents:
diff changeset
    47
         */
hgs
parents:
diff changeset
    48
        virtual TBool IsProcessDone() const =0;
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
        /**
hgs
parents:
diff changeset
    51
         * Callback when the process is finished.
hgs
parents:
diff changeset
    52
         */
hgs
parents:
diff changeset
    53
        virtual void ProcessFinished() { }
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
        /**
hgs
parents:
diff changeset
    56
        * Callback when the dialog is dismissed
hgs
parents:
diff changeset
    57
        */
hgs
parents:
diff changeset
    58
        virtual void DialogDismissedL(TInt /*aButtonId*/) { }
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
        /**
hgs
parents:
diff changeset
    61
         * Handles error occurred in StepL
hgs
parents:
diff changeset
    62
         * @param aError error code that occurred
hgs
parents:
diff changeset
    63
         * @return translated error code. If this is != KErrNone process will be stopped.
hgs
parents:
diff changeset
    64
         */
hgs
parents:
diff changeset
    65
        virtual TInt CycleError(TInt aError) { return aError; }
hgs
parents:
diff changeset
    66
    };
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
/**
hgs
parents:
diff changeset
    69
 * CAknWaitNoteWrapper class.
hgs
parents:
diff changeset
    70
 */
hgs
parents:
diff changeset
    71
NONSHARABLE_CLASS(CAknWaitNoteWrapper) : private CActive, private MProgressDialogCallback
hgs
parents:
diff changeset
    72
    {
hgs
parents:
diff changeset
    73
    public: // constructor and destructor
hgs
parents:
diff changeset
    74
        IMPORT_C static CAknWaitNoteWrapper* NewL();
hgs
parents:
diff changeset
    75
        
hgs
parents:
diff changeset
    76
        IMPORT_C ~CAknWaitNoteWrapper();
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
    public: // interface
hgs
parents:
diff changeset
    79
        /**
hgs
parents:
diff changeset
    80
         * Executes the wait note and calls the cycle callback.
hgs
parents:
diff changeset
    81
		 *
hgs
parents:
diff changeset
    82
		 * @param aResId                Resource id for the dialog.
hgs
parents:
diff changeset
    83
         * @param aBackgroundProcess    Callback interface.
hgs
parents:
diff changeset
    84
         * @param aVisibilityDelayOff   If set ETrue the dialog will be visible
hgs
parents:
diff changeset
    85
         *                              immediality. Use only when the length of
hgs
parents:
diff changeset
    86
         *                              the process is ALWAYS over 1.5 seconds.
hgs
parents:
diff changeset
    87
         * @param aTone                 Will be played when the dialog is shown.
hgs
parents:
diff changeset
    88
         *
hgs
parents:
diff changeset
    89
		 * @return true if success, false if wait note was canceled.
hgs
parents:
diff changeset
    90
         */
hgs
parents:
diff changeset
    91
        IMPORT_C TBool ExecuteL(TInt aResId, MAknBackgroundProcess& aBackgroundProcess,
hgs
parents:
diff changeset
    92
            TBool aVisibilityDelayOff = EFalse, const CAknNoteDialog::TTone& aTone = CAknNoteDialog::ENoTone); 
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
hgs
parents:
diff changeset
    95
		 /**
hgs
parents:
diff changeset
    96
         * Executes the wait note and calls the cycle callback.
hgs
parents:
diff changeset
    97
		 * Dynamically set note prompt.
hgs
parents:
diff changeset
    98
		 *
hgs
parents:
diff changeset
    99
		 * @param aResId                Resource id for the dialog.
hgs
parents:
diff changeset
   100
         * @param aBackgroundProcess    Callback interface.
hgs
parents:
diff changeset
   101
         * @param aPrompt               Note Prompt
hgs
parents:
diff changeset
   102
		 * @param aVisibilityDelayOff   If set ETrue the dialog will be visible
hgs
parents:
diff changeset
   103
         *                              immediality. Use only when the length of
hgs
parents:
diff changeset
   104
         *                              the process is ALWAYS over 1.5 seconds.
hgs
parents:
diff changeset
   105
         * @param aTone                 Will be played when the dialog is shown.
hgs
parents:
diff changeset
   106
         *
hgs
parents:
diff changeset
   107
		 * @return true if success, false if wait note was canceled.
hgs
parents:
diff changeset
   108
         */
hgs
parents:
diff changeset
   109
        IMPORT_C TBool ExecuteL(TInt aResId, MAknBackgroundProcess& aBackgroundProcess,
hgs
parents:
diff changeset
   110
			const TDesC& aPrompt, TBool aVisibilityDelayOff = EFalse, const CAknNoteDialog::TTone& aTone = CAknNoteDialog::ENoTone); 
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
		/**
hgs
parents:
diff changeset
   113
		* Return pointer to dialog
hgs
parents:
diff changeset
   114
		*/
hgs
parents:
diff changeset
   115
		inline CAknWaitDialog* WaitDialog() const; 
hgs
parents:
diff changeset
   116
hgs
parents:
diff changeset
   117
    private: // from CActive
hgs
parents:
diff changeset
   118
	    void DoCancel();
hgs
parents:
diff changeset
   119
	    void RunL();
hgs
parents:
diff changeset
   120
        TInt RunError(TInt aError);
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
    private:  // from MProgressDialogCallback
hgs
parents:
diff changeset
   123
        void DialogDismissedL(TInt aButtonId);
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
    private: // implementation
hgs
parents:
diff changeset
   126
        class CWaitNote;
hgs
parents:
diff changeset
   127
hgs
parents:
diff changeset
   128
        CAknWaitNoteWrapper();
hgs
parents:
diff changeset
   129
        void NextCycle();
hgs
parents:
diff changeset
   130
hgs
parents:
diff changeset
   131
		TBool NextCycleAndReturnL();
hgs
parents:
diff changeset
   132
		void CreateDialogL(TBool aVisibilityDelayOff, const CAknNoteDialog::TTone& aTone);
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
hgs
parents:
diff changeset
   135
    private: // data members
hgs
parents:
diff changeset
   136
        /// Ref: callback to client
hgs
parents:
diff changeset
   137
        MAknBackgroundProcess* iBackgroundProcess;
hgs
parents:
diff changeset
   138
        /// Own: error code from RunL
hgs
parents:
diff changeset
   139
        TInt iRunError;
hgs
parents:
diff changeset
   140
        /// Own: wait note dialog
hgs
parents:
diff changeset
   141
        CAknWaitDialog* iWaitDialog;
hgs
parents:
diff changeset
   142
        /// Own: is dialog dismissed
hgs
parents:
diff changeset
   143
        TBool iIsDialogCanceled;
hgs
parents:
diff changeset
   144
		/// Own: scheduler wait object, safe to use as direct member data.
hgs
parents:
diff changeset
   145
		CActiveSchedulerWait iWait;
hgs
parents:
diff changeset
   146
		///Event generator for this AO (interval is zero seconds)
hgs
parents:
diff changeset
   147
		RTimer iTimer;
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
    };
hgs
parents:
diff changeset
   150
hgs
parents:
diff changeset
   151
CAknWaitDialog* CAknWaitNoteWrapper::WaitDialog() const { return iWaitDialog;}
hgs
parents:
diff changeset
   152
hgs
parents:
diff changeset
   153
#endif
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
// End of File