meetingrequest/mrgui/inc/cmrlistpanephysics.h
branchRCL_3
changeset 12 4ce476e64c59
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/meetingrequest/mrgui/inc/cmrlistpanephysics.h	Wed Mar 31 21:08:33 2010 +0300
@@ -0,0 +1,145 @@
+/*
+* Copyright (c) 2009 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:  ESMR Custom list component physics impl
+*
+*/
+
+#ifndef CMRLISTPANEPHYSICS_H
+#define CMRLISTPANEPHYSICS_H
+
+// INCLUDES
+#include <e32base.h>
+#include <w32std.h>
+#include <aknphysicsobserveriface.h>
+
+// FORWARD DECLARATIONS
+class CAknPhysics;
+class CMRFieldContainer;
+class CCoeControl;
+class MMRPhysicsObserver;
+
+// CLASS DECLARATIONS
+NONSHARABLE_CLASS( CMRListPanePhysics ): 
+    public CBase, 
+    public MAknPhysicsObserver
+    {
+    public: // C'tor and d'tor
+        static CMRListPanePhysics* NewL(
+                CCoeControl& aParent, 
+                CMRFieldContainer& aViewControl,
+                MMRPhysicsObserver& aPhysicsObserver );
+        
+        ~CMRListPanePhysics();
+        
+    public: // Interface
+        /**
+         * Handles the pointer event
+         *
+         * @param aPointerEvent Pointer event to handle.
+         * @param aEventsBlocked ETrue if events are blocked.
+         *          Set by this function.
+         * @return ETrue if the physics has been started, EFalse otherwise.
+         */
+        TBool HandlePointerEventL(
+                const TPointerEvent& aPointerEvent, TBool& aEventsBlocked );
+        
+        /**
+         * Initializes physics.
+         */
+        void InitPhysics();
+        
+        /**
+         * Sets world height.
+         *
+         * @param aWorldHeight New world height.
+         */
+        void SetWorldHeight( TInt aWorldHeight );
+        
+        /**
+         * Sets the vertical scroll index, which is directly the position 
+         * of the list pane on the Y-axis
+         *
+         * @param aVerScrollIndex New vertical scroll index.
+         */
+        void UpdateVerticalScrollIndex( TInt aVerScrollIndex );
+        
+        /**
+         * Returns the current vertical scroll index.
+         *
+         * @return Current vertical scroll index
+         */
+        TInt VerticalScrollIndex();
+
+        
+    public:    // from base class MAknPhysicsObserver
+        void ViewPositionChanged( const TPoint& aNewPosition,
+                                  TBool aDrawNow,
+                                  TUint aFlags );            
+        void PhysicEmulationEnded();    
+        TPoint ViewPosition() const;
+        
+    private: // Implementation
+        CMRListPanePhysics( CCoeControl& aParent, 
+                            CMRFieldContainer& aViewControl,
+                            MMRPhysicsObserver& aPhysicsObserver );
+        void ConstructL();
+
+    private:
+        /// Own: Physics engine handle
+        CAknPhysics* iPhysics;   
+        /// Ref: Parent control
+        CCoeControl& iParent;
+        /// Ref: Reference to field container that should be kinetic
+        CMRFieldContainer& iViewControl;
+        /// Feature enabled
+        TBool iFeatureEnabled;
+        /// Ref: Physics observer
+        MMRPhysicsObserver& iPhysicsObserver;
+        /// Own: Records previous pointer event
+        TPointerEvent iPreviousPointerEvent;
+
+        /**
+         * Physics world size.
+         */
+        TSize iWorldSize;
+        
+        /**
+         * Physics view size.
+         */
+        TSize iViewSize;
+
+        /**
+         * Vertical scroll index.
+         */
+        TInt iVerScrollIndex;
+        
+        /**
+         * Pointer event start time.
+         */
+        TTime iStartTime;
+        
+        /**
+         * Pointer event start position.
+         */
+        TPoint iStartPoint;
+
+        /**
+         * Pointer event drag position.
+         */
+        TPoint iDragPoint;             
+    };
+
+#endif // CMRLISTPANEPHYSICS_H
+// End of file
+