taskswitcher/teleportui/hgteleportapp/src/hgteleporteventcontroler.cpp
changeset 2 08c6ee43b396
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/teleportui/hgteleportapp/src/hgteleporteventcontroler.cpp	Mon Jan 18 20:10:36 2010 +0200
@@ -0,0 +1,195 @@
+/*
+ * ============================================================================
+ *  Name        : hgteleporteventcontroler.cpp
+ *  Part of     : Hg Teleport
+ *  Description : Gesture and physics helper declaration
+ *  Version     : %version: 5 %
+ *
+ *  Copyright © 2008 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.
+ * ============================================================================
+ *
+ */
+#include "hgteleporteventcontroler.h"
+#include "hgteleportphysicsengine.h"
+
+// -----------------------------------------------------------------------------
+// NewLC
+// -----------------------------------------------------------------------------
+//
+CHgTeleportEventControler* CHgTeleportEventControler::NewLC(
+    MHgTeleportEventControlerObserver& aObserver,
+    CCoeControl& aEventSrc)
+    {
+    CHgTeleportEventControler* self = 
+        new(ELeave)CHgTeleportEventControler(aObserver);
+    CleanupStack::PushL(self);
+    self->ConstructL(aEventSrc);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// NewL
+// -----------------------------------------------------------------------------
+//
+CHgTeleportEventControler* CHgTeleportEventControler::NewL(
+    MHgTeleportEventControlerObserver& aObserver,
+    CCoeControl& aEventSrc)
+    {
+    CHgTeleportEventControler* self = 
+        CHgTeleportEventControler::NewLC(aObserver, aEventSrc);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// ~CHgTeleportPointerHandler
+// -----------------------------------------------------------------------------
+//
+CHgTeleportEventControler::~CHgTeleportEventControler()
+    {
+    delete iGestureHelper;
+    delete iPhysicsHelper;
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTeleportPointerHandler
+// -----------------------------------------------------------------------------
+//
+CHgTeleportEventControler::CHgTeleportEventControler(
+    MHgTeleportEventControlerObserver& aObserver)
+    :
+    CBase(),
+    iObserver(aObserver)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CHgTeleportEventControler::ConstructL(CCoeControl& aEventSrc)
+    {
+    iGestureHelper = 
+        AknTouchGestureFw::CAknTouchGestureFw::NewL(*this, aEventSrc);
+    iGestureHelper->SetGestureInterestL(EAknTouchGestureFwAll);
+    iPhysicsHelper = CHgTeleportPhysicsEngine::NewL(*this, aEventSrc);
+    }
+
+// -----------------------------------------------------------------------------
+// HandleTouchGestureL
+// -----------------------------------------------------------------------------
+//
+void CHgTeleportEventControler::HandleTouchGestureL(
+    AknTouchGestureFw::MAknTouchGestureFwEvent& aEvent)
+    {
+    if (AknTouchGestureFwEventDrag(aEvent))
+        {
+        HandleDragEventL(*AknTouchGestureFwEventDrag(aEvent));
+        }
+    else if (AknTouchGestureFwEventTap(aEvent))
+        {
+        HandleTapEventL(*AknTouchGestureFwEventTap(aEvent));
+        }
+    //ignore flick and pinch events
+    }
+
+// -----------------------------------------------------------------------------
+// HandleTapEventL
+// -----------------------------------------------------------------------------
+//
+void CHgTeleportEventControler::HandleTapEventL(
+    MAknTouchGestureFwTapEvent& aEvent)
+    {
+    if(EAknTouchGestureFwLongTap == aEvent.Type())
+        {
+        iObserver.LongTapL(aEvent.Position());
+        }
+    else if(EAknTouchGestureFwTap == aEvent.Type())
+        {
+        if( iPhysicsHelper->IsRunning())
+            {
+            iPhysicsHelper->Stop();
+            }
+        else
+            {
+            iObserver.TapL(aEvent.Position());
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// HandleDragEventL
+// -----------------------------------------------------------------------------
+//
+void CHgTeleportEventControler::HandleDragEventL(
+    MAknTouchGestureFwDragEvent& aEvent)
+    {
+    iObserver.Drag(aEvent);
+    iPhysicsHelper->HandleDragEvent(aEvent);
+    }
+
+// -----------------------------------------------------------------------------
+// PhysicEmulationEnded
+// -----------------------------------------------------------------------------
+//
+void CHgTeleportEventControler::ViewPositionChanged(const TPoint& aNewPosition,
+    TBool /*aDrawNow*/,
+    TUint /*aFlags*/)
+    {
+    iObserver.MoveOffset(aNewPosition);
+    }
+
+// -----------------------------------------------------------------------------
+// PhysicEmulationEnded
+// -----------------------------------------------------------------------------
+//
+void CHgTeleportEventControler::PhysicEmulationEnded()
+    {
+    iObserver.Stop();
+    }
+
+// -----------------------------------------------------------------------------
+// ViewPosition
+// -----------------------------------------------------------------------------
+//
+TPoint CHgTeleportEventControler::ViewPosition() const
+    {
+    return iObserver.ViewPos();
+    }
+
+// -----------------------------------------------------------------------------
+// Animate
+// -----------------------------------------------------------------------------
+//
+void CHgTeleportEventControler::Animate(const TPoint& aPoint)
+    {
+    iPhysicsHelper->AnimateToTarget(aPoint);
+    }
+
+// -----------------------------------------------------------------------------
+// ReInitPhysicL
+// -----------------------------------------------------------------------------
+//
+void CHgTeleportEventControler::ReInitPhysicsL(const TSize& aWorldSize,
+        const TSize& aViewSize, TBool aLandscape)
+    {
+    iPhysicsHelper->ReInitPhysicsL( aWorldSize, aViewSize, aLandscape);
+    }
+
+// -----------------------------------------------------------------------------
+// StopAnimation
+// -----------------------------------------------------------------------------
+//
+void CHgTeleportEventControler::StopAnimation()
+    {
+    iPhysicsHelper->Stop();
+    }
+
+// end of file