phoneapp/phoneuiutils/inc/ctelerecoverysystem.h
changeset 36 2eacb6118286
parent 30 ebdbd102c78a
child 37 ba76fc04e6c2
--- a/phoneapp/phoneuiutils/inc/ctelerecoverysystem.h	Fri May 14 15:51:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,497 +0,0 @@
-/*
-* Copyright (c) 2007 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:  Recovery system class.
-*
-*/
-
-
-
-#ifndef CTeleRecoverySystem_H
-#define CTeleRecoverySystem_H
-
-//  INCLUDES
-#include <e32base.h>
-#include <e32property.h>
-
-// FORWARD DECLARATIONS
-class CPhoneTimer;
-class CTeleWaitingIdle;
-
-// DATA TYPES
-typedef TInt TPhoneRecoveryId;
-typedef TInt8 TPhoneRecoveryPriority;
-
-// Template class for late construct
-// User guide:
-// In header file:
-// class A
-//     {
-//     public:
-//         static A* NewL( CTeleRecoverySystem& aRecoverySystem );
-//         void ~A();
-//         void EarlyDestruct();
-//     private:
-//         A( CTeleRecoverySystem& aRecoverySystem );
-//         void ConstructL();
-//         void LateConstructL();
-//         static TInt LateConstructCallBackL( TAny* aAny );
-//     private:
-//         CTeleRecoverySystem& iRecoverySystem;
-//         TInt iLateConstructId;
-//     }
-// 
-// In cpp file
-// A* A::NewL( CPhoneRecoverySstem& aRecoverySystem )
-//     {
-//     A* self = new ( ELeave ) A( aRecoverySystem );
-//     CleanupStack::PushL( A );
-//     A->ConstructL();
-//     CleanupStack::Pop();
-//     }
-// void A::~A();
-//    {
-//    EarlyDestruct();
-//    iRecoverySystem.Remove( iLateConstructId );
-//    }
-// void A::EarlyDestruct()
-//    {
-//    //do all the construct
-//    }
-// A::A( CTeleRecoverySystem& aRecoverySystem ) 
-//    : iReoverySystem( aRecoverySystem )
-//    {
-//    }
-// void A::ConstructL()
-//    {
-//    // Add everything related to recovery system. 
-//    // If EStateWaiting is used, make sure in the callback 
-//    // function, the system may not be constructed yet.
-//    iRecoverySystem.AddL( TCallBack( LateConstructCallBackL, this ),
-//        CTeleRecoverySystem::EPhonePriorityStandard,
-//        CTeleRecoverySystem::EStateWaiting );
-//    }
-// void A::LateConstructL()
-//    {
-//    //Do the real construct
-//    //Note! CTeleRecoverySystem::AddL() shouldn't be called in this function.
-//    }
-// TInt A::LateConstructCallBackL( TAny* aAny )
-//    {
-//    A* self = reinterpret_cast< A* >( aAny );
-//    CleanupEarlyDestructPushL( *self );
-//    self->LateConstructL();
-//    CleanupStack::Pop();
-//    }
-// 
-// Call Resume() from time to time. For example in OfferKeyEventL, every 16th
-// key press calls Resume().
-//
-// TKeyResponse A::OfferKeyEventL(...)
-//    {
-//    iKeyCount++;
-//    iKeyCount %= 16;
-//    if ( !iKeyCount )
-//      {
-//      iRecoverySystem.Resume();
-//      iKeyCount = 0;
-//      }
-//    return EKeyWasNotConsumed;
-//    }
-//      
-
-/**
-* Template class to handle late construction.
-*/
-template <class T>
-class CleanupEarlyDestruct
-    {
-    public:
-        
-        /**
-        * Pushes an item to cleanup stack. 
-        * If leave occurs, then EarlyDestruct 
-        * method will be called.
-        *
-        * @param aRef instance of which EarlyDestruct
-        *             needs to be called upon leave.
-        */
-        inline static void PushL( T& aRef );
-        
-    private:
-        
-        /**
-        * Cleanup action.
-        */
-        static void Cleanup( TAny* aPtr );
-        
-    };
-
-/**
-* Helper function.
-*/ 
-template <class T>
-inline void CleanupEarlyDestructPushL( T& aRef );
-
-// CLASS DECLARATION
-
-/**
-*  If an operation fails, user classes 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 user class.
-*/
-NONSHARABLE_CLASS( CTeleRecoverySystem ): public CActive
-    {   
-    public:
-    // Enumerates priorities:
-    // EPriorityDontCare - don't care
-    // EPriorityLow - low
-    // EPriorityStandard - standard
-    // EPriorityHigh - high
-    // EPriorityCritical - very critical.
-    enum TPhonePriority
-        {
-        EPhonePriorityDontCare = -10,
-        EPhonePriorityLow = -5,
-        EPhonePriorityStandard = 0,
-        EPhonePriorityHigh = 5,
-        EPhonePriorityCritical = 100
-        };
-        
-    // Enumerates states for a recovery item:
-    // EStateIdle - solved, everything is fine
-    // EStateWaiting - not solved, waiting
-    // EStatePending - semipermanently not solved
-    // EStateStarting - recovery for all steps started
-    // EStateLockedPending - locked to pending state. it's not allowed 
-    //                       to be moved back to waiting
-    // EStatePrecond - precondition: light idle-phone is reached, 
-    //                 but before PIN code query)must be satisfied 
-    //                 before this can be run
-    // EStatePrecondSim - precondition: SIM card is ready. This happens 
-    //                 after PIN code is accepted.
-    enum TRecoveryState
-        {
-        EPhoneStateIdle, 
-        EPhoneStateWaiting,  
-        EPhoneStatePending,  
-        EPhoneStateStarting, 
-        EPhoneStateLockedPending, 
-        EPhoneStatePrecond, 
-        EPhoneStatePrecondSim  
-        };
-
-    // Defines null id.
-    enum 
-        {
-        KNullId = -1
-        }; 
-    
-    public:  // Constructors and destructor
-        
-        /**
-        * Two-phased constructor.
-        */
-        static CTeleRecoverySystem* NewL();
-        
-        /**
-        * Destructor.
-        */
-        virtual ~CTeleRecoverySystem();
-
-    public: // New functions
-               
-        /**
-        * 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.
-        */
-        virtual TPhoneRecoveryId Add( TCallBack aCallBack, 
-            TPhoneRecoveryPriority aPriority, 
-            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.
-        */
-        virtual TPhoneRecoveryId AddL( TCallBack aCallBack,
-            TPhoneRecoveryPriority aPriority,
-            TRecoveryState aState );
-    
-        /**
-        * Removes item.
-        *
-        * @param aId identifier of the item to be removed.
-        */
-        virtual void Remove( TPhoneRecoveryId 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.
-        */
-        virtual void SetState( TPhoneRecoveryId aId, TRecoveryState aState );
-    
-        /**
-        * Resets pending recovery actions back to waiting.
-        */
-        virtual 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.
-        */
-        virtual TInt RecoverNow( TPhoneRecoveryId aId, 
-            TPhoneRecoveryPriority aPriority, 
-            TBool aAllSteps = EFalse );
-
-        /**
-        * Informs that precondition has been satisfied.
-        */
-        virtual void EnablePrecondition();
-        
-        /**
-        * If recovery has been paused due to internal logic, requests
-        * recovery to continue. 
-        * User class should call this from time to time to improve robustness.
-        * For example, user class could call this based on key events it receives.
-        */
-        virtual void Resume();
-    
-    public:
-    
-        /**
-        * Recovers all steps synchronously.
-        */
-        void RecoverAllNow();
-        
-    public: // Functions from base classes
-
-        /**
-        * @see CActive::RunL.
-        */
-        void RunL();
-
-        /**
-        * @see CActive::DoCancel.
-        */
-        void DoCancel();
-        
-    private: // private structures
-        
-        // Defines structure containing information of a recovery item.
-        struct TRecoveryItem
-            {
-            // Identifier
-            TPhoneRecoveryId iId;
-            // Callback
-            TCallBack iCallBack;
-            // Priority
-            TPhoneRecoveryPriority iPriority;
-            // State
-            TRecoveryState iState;
-            };
-
-    private:
-
-        /**
-        * C++ default constructor.
-        */
-        CTeleRecoverySystem();
-
-        /**
-        * By default Symbian 2nd phase constructor is private.
-        */
-        void ConstructL();
-        
-        /**
-        * Enable precondition Sim OK.
-        */
-        void EnablePrecondSimOk();
-
-        /**
-        * Do item call back
-        */
-        TInt DoItemCallBack( TRecoveryItem& aItem );
-
-        /**
-        * Call back funciton for CPhoneTimer.
-        */
-        static TInt HandleTimer( TAny* aAny );
-
-        /**
-        * Really handle function to handle timer.
-        */
-        TInt DoHandleTimer();
-
-        /**
-        * Call back funciton for AllStepsTimer.
-        */
-        static TInt HandleAllStepsTimer( TAny* aAny );
-
-        /**
-        * Handle AllStesTimer timeout.
-        */
-        TInt DoHandleAllStepsTimer();
-
-        /**
-        * Checks and updates state if precondition has been satisfied.
-        */
-        void CheckStateForPrecondition( TRecoveryState& aState );
-
-        /**
-        * It starts a timer if required when event state changes.
-        *
-        * @param aNewState new state of the event.
-        */
-        void StartTimerIfRequired( TRecoveryState aNewState );
-
-        /**
-        * It start the timer, but iTickCounter will not be cleared.
-        */
-        void StartTimerIfIdle();
-
-        /**
-        * Start timer.
-        */
-        void StartTimer();
-
-        /**
-        * Starts all steps timer.
-        */
-        void StartAllStepsTimer();
-
-        /**
-        * Starts timer for the next recovery attempt.
-        */
-        void StartNext( TInt aFound );
-
-        /**
-        * Determines which events will be run.
-        */
-        TInt DetermineRun() const;
-
-        /**
-        * Calculates next tick.
-        */
-        inline TInt NextTick( TInt aTicks ) const;
-
-        /**
-        * Finds by recovery id.
-        *
-        * @param aId id.
-        * @return recovery id.
-        */
-        TInt Find( TPhoneRecoveryId aId ) const;                    
-        
-        /**
-        * Issues new active object request.
-        */
-        void IssueRequest();
-        
-        /**
-        * Is SIM now ok?
-        */
-        TBool IsSIMOk();
-        
-        /**
-        * Check for SIM availability. 
-        */
-        TInt CheckSIMAvailable();
-        
-        /**
-        * Checks if Idle is started.
-        */
-        TBool IsIdle();
-                        
-    private:    // Data
-    
-        // Currently handled request.
-        enum TPhoneRequestStatus
-            {
-            EPhoneNone,
-            EPhoneSIMPresent,
-            EPhoneSIMStatus
-            };
-
-        // Timer for recovery
-        CPhoneTimer* iTimer;
-
-        // Timer for recovery all steps
-        CPhoneTimer* iAllStepsTimer;
-        
-        // Timer for idle.
-        CTeleWaitingIdle* iWaitingIdle;
-
-        // Recoverty time array
-        CArrayFixFlat< TRecoveryItem >* iRecoveryItems;
-
-        // Id counter for TPhoneRecoveryId
-        TInt iIdCounter;
-
-        // Count the ticks
-        TInt iTickCounter;
-        
-        // Sim present status. 
-        TInt iSimAvailable;
-
-#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;
-        
-        // Indicates what request is currently handled.
-        TPhoneRequestStatus iRequest;
-     
-        //  Owned Publish and Subscribe property for SIM status.
-        RProperty iSimStatusProperty;
-        
-        // Owned Publish and Subscribe property for SIM present.
-        RProperty iSimPresentProperty;
-        
-        // Owned Publish and Subscribe property for Idle active.
-        RProperty iIdleActive;
-    };
-
-// Inline methods.
-#include "ctelerecoverysystem.inl"
-
-#endif      // CTELERECOVERYSYSTEM_H
-
-// End of File