svgtviewer/SvgtViewerPlugin/UIControlInc/SvgtController.h
changeset 0 632761c941a7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtviewer/SvgtViewerPlugin/UIControlInc/SvgtController.h	Thu Dec 17 08:40:16 2009 +0200
@@ -0,0 +1,158 @@
+/*
+* 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:  SVGT Controller implements the active objects for the 
+*                progressive rendering feature(Redraw, Thread Exit)
+*
+*/
+
+
+//SvgtController.h
+
+#ifndef SVGTCONTROLLER_H
+#define SVGTCONTROLLER_H
+
+#include <e32base.h>
+#include <f32file.h>
+
+const TInt KAnimationLength = 10;
+const TInt KAnimatioBufferLength = 20;
+class CSVGTCustControl;
+class CAknNavigationDecorator;
+class CEikonEnv;
+
+/**
+*  CSvgtThreadController is a Active Object (CActive) used to
+*  notify thread death event to the main thread to do the post load operations
+*
+*  @lib SVGTUIControl.lib
+*  @since 3.1
+*/
+
+class CSvgtThreadController : public CActive
+    {
+    public:
+        /**
+        * Two phase constructor
+        * @since 3.1
+        * @param aEngine Engine object 
+        * @param aCustControl
+        * @return CSvgtThreadController*
+        */
+        static CSvgtThreadController* NewL(CSVGTCustControl* aCustControl);
+
+        /**
+        * Two phase constructor which pushes the object on cleanup stack
+        * @since 3.1
+        * @param aEngine Engine object 
+        * @param aCustControl
+        * @return CSvgtThreadController*
+        */
+        static CSvgtThreadController* NewLC(CSVGTCustControl* aCustControl);
+
+        /**
+        * Destructor
+        * @since 3.1
+        */
+        ~CSvgtThreadController();
+        
+        /**
+        * Makes it active to get notify on thread death
+        * @since 3.1
+        * @param aThread Main thread object 
+        */
+        void IssueThreadMonitorRequest(const RThread& aThread);
+
+        /**
+        * Stops the thread execution
+        * @since 3.1
+        * @param aThread Main thread object 
+        */
+        void StopThreadExecution(const RThread& aThread);
+        
+    private:
+        /**
+        * Cancels all the request
+        * @since 3.1
+        * @see CActive
+        */
+        void DoCancel();
+
+        /**
+        * Handles an active object's request completion event.
+        * @since 3.1
+        * @see CActive
+        */
+        void RunL();
+
+       /**
+        * Parameterized constructor
+        * @since 3.1
+        * @param aEngine Engine object 
+        * @param aCustControl
+        * @param aMainThread
+        */
+        CSvgtThreadController(CSVGTCustControl* aCustControl);
+        /**
+        * Two phase constructor
+        * @since 3.1
+        */
+        void ConstructL();
+
+        /**
+        * This fuction does the loading animation
+        * @since 3.1
+        */
+        void DoLoadAnimationL();
+        
+        /**
+        * Callback fuction for loading animation
+        * @since 3.1
+        * @param aThreadController Stores the object of type CSvgtThreadController
+        */
+        static TInt LoadAnimationCallBack(TAny* aThreadController);
+        
+        /**
+        * Clears the navi pane indicator when the loading animation gets over
+        * @since 3.1
+        * @param aThreadController Stores the object of type CSvgtThreadController
+        */
+        void ClearNaviPaneDecorator();
+        
+    private:    //data members
+        // Custom control object
+        CSVGTCustControl* iCustControl;
+        
+        // Periodic timer to do loading animation
+        CPeriodic* iLoadAnimator;
+        
+        // Counts the number steps in the animation
+        TInt iCount;
+        
+        // Stores the text to display in the context bar while loading animation
+        TBuf<KAnimatioBufferLength> iAnimationText;
+        
+        // Stores the the navigation pane decorator
+        CAknNavigationDecorator* iNaviDecorator;
+        
+        // Stores the main thread id
+        TThreadId iMainThread;
+       
+        // Application enviornment
+        CEikonEnv* iEikEnv;
+    };
+
+#endif //SVGTCONTROLLER_H
+
+// End of File
+