diff -r ebdbd102c78a -r 2eacb6118286 phoneapp/phoneuiutils/inc/cphonerecoverysystem.h --- a/phoneapp/phoneuiutils/inc/cphonerecoverysystem.h Fri May 14 15:51:57 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,263 +0,0 @@ -/* -* 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: Manager to recover important operations. -* -*/ - - -#ifndef CPHONERECOVERYSYSTEM_H -#define CPHONERECOVERYSYSTEM_H - -// INCLUDES -#include -#include -#include "ctelerecoverysystem.h" - -// CONSTANTS -const TInt KNullId = -1; -const TInt KIdContainerSize = 10; - -// MACROS - - -// DATA TYPES -typedef TInt TPhoneRecoveryId; -typedef TInt8 TPhoneRecoveryPriority; - -typedef TPhoneRecoveryId TRecoveryId; -typedef TPhoneRecoveryPriority TRecoveryPriority; - - - -// FORWARD DECLARATIONS -class CPhoneTimer; -//class CTeleRecoverySystem; - -// CLASS DECLARATION - -/** -* If an operation fails, phone application may be leaved to incorrect states. -* By using recovery system, failed operation will be tried again some time -* later. This may enhance the robustness of phone application. -* -* Return value from callback function -* KErrNone: EStateIdle -* KErrNoMemory, KErrInUse, KErrServerTerminated, KErrServerBusy, KErrNotRead, -* KErrAccessDenied, KErrLocked, KErrDiskFull, KErrTimedOut: EStateWaiting -* Otherwise: EStatePending -* If call back function leaves, then the error of leave is used as return -* value. -* Note: In the recovery callback function, CPhoneRecoverySystem::AddL(...) or -* CPhoneRecoverySystem::Add(...) should never be called. -* -* @since 1.0 -*/ -class CPhoneRecoverySystem - : public CCoeStatic - { - public: // Constructors and destructor - - /** - * First call initializes the singleton object. Subsequent calls return - * instance. - * @return the created instance. - */ - IMPORT_C static CPhoneRecoverySystem* Instance(); - - /** - * Destructor. - */ - ~CPhoneRecoverySystem(); - - public: // new function - - /** - * Adds a new item with given priority & state. Returns Null id if it - * failed. Same item must not be added twice. Callback's return value - * indicates how many steps there are to be done, 0 - no more steps. - * Error code or leave - failure. - * Priority indicates importantance of the action. - * - * @param aCallBack callback. - * @param aPriority priority. - * @param aState start state. - * @return identifier. - */ - TRecoveryId Add( TCallBack aCallBack, - TRecoveryPriority aPriority, - CTeleRecoverySystem::TRecoveryState aState ); - - /** - * Add a new item to the recovery system. The function may leave if - * OOM. - * - * @param aCallBack callback. - * @param aPriority priority. - * @param aState start state. - * @return identifier. - */ - IMPORT_C TRecoveryId AddL( TCallBack aCallBack, - TRecoveryPriority aPriority, - CTeleRecoverySystem::TRecoveryState aState ); - - /** - * Removes item. - * - * @param aId identifier of the item to be removed. - */ - IMPORT_C static void Remove( TRecoveryId aId ); - - /** - * Sets state. Note: The timer will not be started if the state is - * set to be waiting. - * - * @param aId identifier. - * @param aState new state. - */ - void SetState( TRecoveryId aId, - CTeleRecoverySystem::TRecoveryState aState ); - - /** - * Resets pending recovery actions back to waiting. - */ - void ResetPending(); - - /** - * Recovers one step or all steps synchronously. Even if it's solved - * it should call the method. - * - * @param aId identifier. - * @param aPriority priority. - * @param aAllSteps ETrue if all steps need to be run. - * @return error code. - */ - IMPORT_C TInt RecoverNow( TRecoveryId aId, - TRecoveryPriority aPriority, - TBool aAllSteps = EFalse ); - - /** - * Informs that precondition has been satisfied. - */ - IMPORT_C void EnablePreconditionL(); - - - /** - * Create tele recovery system - */ - CTeleRecoverySystem* CreateRecoverySystemL(); - - private: // New functions - - /** - * Removes recovery id item. - * - * @param aId identifier of the item to be removed. - */ - void RemoveId( TRecoveryId aId ); - - private: // private structures - - // Defines structure containing information - // of a recovery item. - class TRecoveryItem - { - public: - // Identifier - TRecoveryId iId; - // Callback - TCallBack iCallBack; - // Priority - TRecoveryPriority iPriority; - // State - CTeleRecoverySystem::TRecoveryState iState; - }; - - private: //private function - - /** - * Two-phased constructor. - * @return new instance. - */ - static CPhoneRecoverySystem* NewL(); - - /** - * C++ constructor. - */ - CPhoneRecoverySystem(); - - /** - * Adds id to container which holds all the ids this singleton - * has given out via AddL method. - * @param aId - Id to be added in container - * @exception -1 (KErrNoSpace) is thrown if there isn't room in the container - */ - void AddIdToContainer( TRecoveryId aId ); - - /** - * Removes given id from the container which holds all the ids this singleton - * has given out via AddL method. - * @param aId - Id to be removed from container - */ - void RemoveFromContainer( TRecoveryId aId ); - - /** - * This is called from destructor. Method removes all the ids from recovery - * system that are hold within container. This is done this way because - * this singleton object is actually destructed by coeenv before some of - * object's clients' destructor is called where it would try to remove - * id from the recovery system. Now this way we do not leak any resources. - */ - void RemoveAllIdsFromContainer(); - - - private: // Data - - // Timer for recovery - CPhoneTimer* iTimer; - - // Timer for recovery all steps - CPhoneTimer* iAllStepsTimer; - - // Id counter for TRecoveryId - TInt iIdCounter; - - // Count the ticks - TInt iTickCounter; - -#ifdef _DEBUG - // Debug: to prevent modification of recovery system in - // recovery callback. - TBool iIsCallBack; -#endif // _DEBUG - - // ETrue if precondition ok - TBool iPrecondOk; - - // ETrue if precondition SIM ok - TBool iPrecondSimOk; - - // Keycount - recovery counter is checked only after some keypresses - TInt iKeyCount; - - // Reference to Tele recovery system. - CTeleRecoverySystem* iRecoverySystem; - - // Container for allocated recovery ids - TFixedArray< TInt, KIdContainerSize > iIdContainer; - - }; - -#endif // CPHONERECOVERYSYSTEM_H - -// End of File