taskswitcher/teleportui/hgteleportapp/inc/hgteleportphysicsengine.h
changeset 2 08c6ee43b396
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/teleportui/hgteleportapp/inc/hgteleportphysicsengine.h	Mon Jan 18 20:10:36 2010 +0200
@@ -0,0 +1,117 @@
+/*
+ * ============================================================================
+ *  Name        : hgteleportphysicsengine.h
+ *  Part of     : Hg Teleport
+ *  Description : Teleport physic engine
+ *  Version     : %version:  3 %
+ *
+ *  Copyright © 2009 Nokia.  All rights reserved.
+ *  This material, including documentation and any related computer
+ *  programs, is protected by copyright controlled by Nokia.  All
+ *  rights are reserved.  Copying, including reproducing, storing,
+ *  adapting or translating, any or all of this material requires the
+ *  prior written consent of Nokia.  This material also contains
+ *  confidential information which may not be disclosed to others
+ *  without the prior written consent of Nokia.
+ * ============================================================================
+ *
+ */
+
+#ifndef HGTELEPORTPHYSICSENGINE_H_
+#define HGTELEPORTPHYSICSENGINE_H_
+
+#include <e32base.h>
+#include <akntouchgesturefw.h>
+// CLASS DECLARATION
+class CAknPhysics;
+class CHgTeleportPhysics;
+/**
+ * Teleport physic engine implementation
+ */
+class CHgTeleportPhysicsEngine: public CBase
+    {
+public:
+    // Constructors and destructor
+
+    /**
+     * Destructor.
+     */
+    ~CHgTeleportPhysicsEngine();
+
+    /**
+     * Two-phased constructor.
+     */
+    static CHgTeleportPhysicsEngine* NewL(MAknPhysicsObserver& aPhysicObserver,
+            CCoeControl& aViewControl);
+
+    /**
+     * Two-phased constructor.
+     */
+    static CHgTeleportPhysicsEngine* NewLC(MAknPhysicsObserver& aPhysicObserver,
+            CCoeControl& aViewControl);
+
+private:
+
+    /**
+     * Constructor for performing 1st stage construction
+     */
+    CHgTeleportPhysicsEngine();
+
+    /**
+     * EPOC default constructor for performing 2nd stage construction
+     */
+    void ConstructL(MAknPhysicsObserver& aPhysicObserver,
+            CCoeControl& aViewControl);
+    
+    
+public:
+    /**
+     * Implements drag gesture handling
+     * @param aEvent - drag event
+     */
+    void HandleDragEvent(AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent);
+    
+    /**
+     */
+    TBool IsRunning() const;
+    
+    /**
+     */
+    void Stop();
+    
+    /**
+     * Initialize animation between current position and destination point
+     * @param aPoint - destination point 
+     */
+    void AnimateToTarget(const TPoint& aPoint);
+    
+    /**
+     * 
+     * @param aWorldSize Physics world size.
+     * @param aViewSize Physics (visible) view size.
+     * @param aLandscape ETrue if physics should work in landscape.     
+     **/
+    void ReInitPhysicsL(const TSize& aWorldSize, 
+                        const TSize& aViewSize,
+                        TBool aLandscape);
+    
+private:
+    /**
+     * Physics. 
+     * Own.
+     */
+    CAknPhysics* iPhysics;
+
+    /**
+     * Drag start time
+     */
+    TTime iStartTime;
+    
+    /**
+     * Teleport physics for item switch animation
+     */
+    CHgTeleportPhysics* iTeleportPhysics;
+
+    };
+
+#endif /* HGTELEPORTPHYSICSENGINE_H_*/