--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/menufw/menufwui/mmwidgets/inc/mmdraweranimator.h Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,277 @@
+/*
+* Copyright (c) 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: CMmDrawerAnimator declaration
+* Version : %version: MM_17.1.8 % << Don't touch! Updated by Synergy at check-out.
+*
+*/
+
+
+#ifndef C_MMDRAWERANIMATOR_H
+#define C_MMDRAWERANIMATOR_H
+
+#include <e32base.h>
+#include <e32std.h>
+#ifdef RD_UI_TRANSITION_EFFECTS_LIST
+#include <aknlistloadertfx.h>
+#include <aknlistboxtfxinternal.h>
+#include <aknlistboxtfx.h>
+#endif
+class CMmListBoxItemDrawer;
+class TMmFloatingItem;
+
+/**
+ * Zoom ratio when no zooming is performed.
+ */
+const TReal KNormalStateZoomRatio = 1.0f;
+
+/**
+ * Zoom ratio when zooming is performed.
+ */
+const TReal KZoomStateZoomRatio = 1.25f;
+
+/**
+ * Used by Multimedia Menu to draw Animated items.
+ * Drawer animator is an active object, that forces refreshes
+ * while floating items are available in the associated CListBoxItemDrawer.
+ * When no items are available the drawer ceases to redraw the screen.
+ * Active object becomes active when a new animation is triggered.
+ *
+ * @code
+ * @endcode
+ * @lib mmwidgets
+ * @since S60 v5.0
+ * @see CListBoxItemDrawer
+ * @ingroup group_mmwidgets
+ */
+NONSHARABLE_CLASS( CMmDrawerAnimator ) : public CActive
+ {
+
+public:
+ /**
+ * Two-phased constructor.
+ *
+ * @since S60 v5.0
+ * @param aDrawer Item drawer used to draw item.
+ */
+ static CMmDrawerAnimator* NewL( CMmListBoxItemDrawer& aDrawer );
+
+ /**
+ * Two-phased constructor.
+ *
+ * @since S60 v5.0
+ * @param aDrawer Item drawer used to draw item.
+ */
+ static CMmDrawerAnimator* NewLC( CMmListBoxItemDrawer& aDrawer );
+
+ /**
+ * Destructor.
+ *
+ * @since S60 v5.0
+ */
+ virtual ~CMmDrawerAnimator();
+
+ /**
+ * Animates transition of the dragged item.
+ * The animation starts in the current position of EDrag
+ * floating item, and end in the original place of dragging
+ * or destination place, if reorder occured.
+ *
+ * @since S60 v5.0
+ */
+ void AnimateDragItemTransitionL( );
+
+ /**
+ * Animates an item with index aItemFrom into position
+ * indexed by aItemTo.
+ *
+ * @since S60 v5.0
+ * @param aItemFrom Which item should be animated.
+ * @param aItemTo Where to should the item be animated.
+ */
+ void AnimateItemSwapL( TInt aItemFrom, TInt aItemTo );
+
+ /**
+ * Animates zooming of an item.
+ *
+ * @since S60 v3.0
+ * @param aItemIndex Index of item to be zoomed.
+ * @param aZoomIn Is zooming in or out.
+ */
+ void AnimateItemZoomL( TInt aItemIndex, TBool aZoomIn );
+
+ /**
+ * Checks if system is ready for new animation.
+ *
+ * @since S60 v5.0
+ * @return Is system ready so new animation can proceed.
+ */
+ TBool IsReadyForNewAnimation();
+
+ /**
+ * Cancel currently running or pending animations.
+ *
+ * @since S60 v5.0
+ */
+ void CancelAnimationsL();
+
+ /**
+ * Triggers animation.
+ * This methods sets the Activeobject into active state
+ * if floating items are available
+ *
+ * @since S60 v5.0
+ * @return Error code
+ */
+ TInt Trigger();
+
+ /**
+ * Marks next redraw to be cancelled.
+ *
+ * @return Indicates if redraw occured due to cancel.
+ */
+ TBool CancelNextRedrawL();
+
+ /**
+ * Make the next animation redraw the whole screen;
+ */
+ void SetNextRedrawToWholeScreen();
+
+ /**
+ * Indicates that draweranimator is in garbage.
+ * This is used when suite model has been destroyed so there isn't
+ * anything to draw, therefore any animator attempts should be
+ * dropped.
+ */
+ void PrepareForGarbage();
+
+private:
+
+ /**
+ * Default constructor.
+ *
+ * @since S60 v3.0
+ * @param aDrawer Object used to draw items in widgets.
+ */
+ CMmDrawerAnimator( CMmListBoxItemDrawer& aDrawer );
+
+ /**
+ * 2nd phase constructor.
+ *
+ * @since S60 v3.0
+ */
+ void ConstructL();
+
+private: // From CActive
+
+ /**
+ * Draws next animation phase.
+ *
+ * @since S60 v3.0
+ */
+ void RunL();
+
+ /**
+ * Cancels animation timer. Stops animation.
+ *
+ * @since S60 v3.0
+ */
+ void DoCancel();
+
+ /**
+ * Handles error if error an error occured.
+ *
+ * @since S60 v3.0
+ * @param aError Error code which occurred.
+ * @return Error code for error handling.
+ */
+ TInt RunError( TInt aError );
+
+ /**
+ * Adjusts rect to non touch.
+ *
+ * @since S60 v3.0
+ * @param aRefreshRect Refresh rect.
+ * @return Adjusted rect.
+ */
+ TRect AdjustRefreshRectToNonTouch( const TRect& aRefreshRect );
+
+private: // Data
+
+ /**
+ * Timer
+ */
+ RTimer iTimer;
+
+ /**
+ * Associated item drawer.
+ */
+ CMmListBoxItemDrawer& iDrawer;
+
+ /**
+ * Number of animation frames
+ */
+ TInt iAnimateFrames;
+
+ /**
+ * Delay between redrawing.
+ */
+ TTimeIntervalMicroSeconds iDelay;
+
+ /**
+ * Last redraw time
+ */
+ TTime iLastRedrawTime;
+
+ /**
+ * Effects api.
+ */
+ MAknListBoxTfx *iTransTfx;
+
+ /**
+ * Effects api.
+ */
+ MAknListBoxTfxInternal *iTransTfxInternal;
+
+ /**
+ * Highlight noted when last redraw occured.
+ */
+ TInt iLastNotedHighlight;
+
+ /**
+ * Top item index noted when last redraw occured.
+ */
+ TInt iLastNotedTopItem;
+
+ /**
+ * Vertical offset noted when last redraw occured.
+ */
+ TInt iLastNotedVerticalOffset;
+
+ /**
+ * Holds the previous animation refresh rectangle.
+ */
+ TRect iPreviousRefreshRect;
+
+ /**
+ * Holds the number of frames to animate.
+ */
+ const TInt iUsualAnimationFramesCount;
+
+ /**
+ * Holds the previous animation refresh rectangle.
+ */
+ TBool iPreparedForGarbage;
+ };
+
+#endif // MMDRAWERANIMATOR_H