deviceencryption/DevEncUi/inc/DevEncUiMemoryEntity.h
branchRCL_3
changeset 39 65326cf895ed
parent 0 6a9f87576119
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/deviceencryption/DevEncUi/inc/DevEncUiMemoryEntity.h	Wed Sep 01 12:31:07 2010 +0100
@@ -0,0 +1,187 @@
+/*
+* Copyright (c) 2005 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:  Class for managing different types of memory on a 
+*               very abstract level.
+*
+*/
+
+#ifndef DEVENCUI_MEMORYENTITY_H
+#define DEVENCUI_MEMORYENTITY_H
+
+#include <e32base.h>
+#include <eikenv.h>
+
+#include "DevEnc.hrh"
+#include "DevEncUiMemInfoObserver.h"
+#include "DevEncDiskStatusObserver.h"
+
+class CDevEncSession;
+class CDevEncUiInfoObserver;
+
+class CDevEncUiMemoryEntity : public CBase,
+                              public MDiskStatusObserver
+    {
+    public:
+        /**
+         * Constructs the CDevEncUiMemoryEntity using the NewLC method, popping
+         * the constructed object from the CleanupStack before returning it.
+         *
+         * @return The newly constructed CDevEncUiMemoryEntity
+         */
+    	static CDevEncUiMemoryEntity* NewL( CEikonEnv* aEikonEnv,
+                                            TDevEncUiMemoryType aType );
+
+        /**
+         * Constructs the CDevEncUiMemoryEntity using the constructor and ConstructL
+         * method, leaving the constructed object on the CleanupStack before returning it.
+         *
+         * @return The newly constructed CDevEncUiMemoryEntity
+         */
+    	static CDevEncUiMemoryEntity* NewLC( CEikonEnv* aEikonEnv,
+                                             TDevEncUiMemoryType aType );
+
+    	/**
+         * Adds an observer to this object's list of observers.
+         * @param aInfoObserver The observer to add
+         * @leave Symbian error code
+         */
+        void AddObserverL( MDevEncUiMemInfoObserver* aInfoObserver );
+
+        /**
+         * Removes an observer from this object's list of observers.
+         * Any errors are ignored.
+         * @param aInfoObserver The observer to remove
+         */
+        void RemoveObserver( MDevEncUiMemInfoObserver* aInfoObserver );
+
+        /**
+         * Called periodically. Not intended for use by other classes.
+         * @param aPtr Pointer to an instance of this class.
+         */
+        static TInt ProgressTick( TAny* aPtr );
+
+        /**
+         * Called periodically. Not intended for use by other classes.
+         * @param aPtr Pointer to an instance of this class.
+         */
+        static TInt PollTick( TAny* aPtr );
+        
+        /**
+        * Destructor.
+        */
+        virtual ~CDevEncUiMemoryEntity();
+
+        /**
+         * Starts the encryption of this memory.
+         */
+        void StartEncryptionL();
+
+        /**
+         * Starts the decryption of this memory.
+         */
+        void StartDecryptionL();
+
+        void Cancel();
+
+        /**
+         * Gets the state of this memory entity.
+         * @return the current state
+         */
+        TUint State() const;
+
+        /**
+         * Sends the current memory state information to all observers.
+         * @return none
+         */
+        virtual void UpdateMemoryInfo();
+        
+        /*
+         * From MDiskStatusObserver
+         */
+        void DiskStatusChangedL( TInt aStatus );
+
+    private:
+    // functions
+
+        /**
+         * C++ Constructor
+         **/
+        CDevEncUiMemoryEntity( CEikonEnv* aEikonEnv, TDevEncUiMemoryType aType );
+
+        /**
+         * Second-phase constructor
+         **/
+        virtual void ConstructL();
+
+        /**
+         * Sets the internal state and calls UpdateMemoryInfo()
+         * @param aState the new state
+         **/
+        virtual void SetState( TUint aState );
+
+        /**
+         * Starts a timer to periodically update the memory state in the UI.
+         * @param aInterval the polling interval
+         **/
+        void StartPolling( TTimeIntervalMicroSeconds32 aInterval );
+
+        /**
+         * Helper function, called by StartPolling.
+         * Starts a timer to periodically update the memory state in the UI.
+         * @param aInterval the polling interval
+         **/
+        void DoStartPollingL( TTimeIntervalMicroSeconds32 aInterval );
+
+        /**
+         * Fetches the encryption state and progress. Called periodically.
+         **/
+        virtual void CheckProgress();
+
+        /**
+         * Performs periodical processing of timeouts. Calls CheckProgress().
+         **/
+        virtual void DoProgressTick();
+
+        /**
+         * Performs periodical processing of timeouts.
+         * Checks if the encryption status has changed.
+         **/
+        virtual void DoPollTickL();
+
+        void RestoreAutolockSettings();
+
+    // Data
+        /** Not owned */
+        CEikonEnv* iEikEnv;
+
+        /** Owned */
+        CDiskStatusObserver* iDiskStatusObserver;
+
+        /** Owned */
+        CPeriodic* iPeriodic;
+
+        /** Owned */
+        RArray<MDevEncUiMemInfoObserver*> iObservers;
+
+        /** Owned */
+        CDevEncSession* iSession;
+
+        TUint iState;
+        TUint iPrevState;
+        const TDevEncUiMemoryType iType;
+        TInt iPercentDone;
+        TInt iPrevPercentDone;
+    };
+
+#endif	// DEVENCUI_MEMORYENTITY_H