diff -r 000000000000 -r 72b543305e3a messagingappbase/smartmessaging/msgeditorutils/inc/MsgAsyncItemSaver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingappbase/smartmessaging/msgeditorutils/inc/MsgAsyncItemSaver.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,125 @@ +/* +* 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 "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: +* This is a base class for implementing asyncronous item saving. +* +*/ + + + +#ifndef CMSGASYNCITEMSAVER_H +#define CMSGASYNCITEMSAVER_H + +// INCLUDES + +#include + +// CLASS DECLARATION + +/** +* Interface for implementing the asyncronous saving operations. +*/ +class MMsgAsyncItemSaver + { + + public: + + /** + * Checks the status of the operation. + * @return ETrue if the operation can be completed, EFalse + * if the operation should continue. + */ + virtual TBool IsComplete() const = 0; + + /** + * Perform some operations and set the inner state. + * If this leaves then RunError will be called with the + * leave code. + */ + virtual void ContinueOperationL() = 0; + + /** + * This method is called after IsComplete() has return ETrue. + * This method should result deleting the saver object. + */ + virtual void CompleteOperationL() = 0; + + /** + * Error handling method. If a leave occurs in ContinueOperationL + * then this method will be called with the leave code. + * @param aError Error code from the leave. + * @return Error code or KErrNone if error doesn't need to be + * handled. Returning KErrNone will continue the operation. + */ + virtual TInt HandleError( TInt aError ) = 0; + }; + +/** +* This class implements the asyncronous framework for item saving. +*/ +class CMsgAsyncItemSaver : public CActive + { + public: + + /** + * Constructor. + */ + IMPORT_C CMsgAsyncItemSaver(); + + /** + * Destructor. + */ + IMPORT_C ~CMsgAsyncItemSaver(); + + /** + * Call this when the operation is ready to start executing. + * Ownership of aItemSaver is not taken. + * @param aItemSaver asyncronous item saver + */ + IMPORT_C void StartOperation( MMsgAsyncItemSaver* aItemSaver ); + + /** + * @param aMicroseconds time to pause. By default pauses indefinitely. + */ + IMPORT_C void Pause( TInt aMicroSeconds = 0 ); + + IMPORT_C void Continue(); + + protected: // from CActive + + void RunL(); + void DoCancel(); + TInt RunError(TInt aError); + + private: // Own + + /** + * Execute the next loop. + */ + void NextStep(); + + private: + + /// Reference to the operation specific item saver. + MMsgAsyncItemSaver* iItemSaver; + + /// Saver activity state. + TBool iPaused; + RTimer iTimer; + TInt iPauseDelay; + }; + +#endif // CMSGASYNCITEMSAVER_H + +// End of file