mulwidgets/mulcoverflowwidget/inc/mulcoverflowcontrol.h
changeset 17 3eca7e70b1b8
parent 3 4526337fb576
--- a/mulwidgets/mulcoverflowwidget/inc/mulcoverflowcontrol.h	Tue Feb 02 00:28:09 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,539 +0,0 @@
-/*
-* Copyright (c) 2007 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:  The Control header for CoverFlow Widgets.
- *
-*/
-
-#ifndef MULCOVERFLOWCONTROL_H
-#define MULCOVERFLOWCONTROL_H
-
-// Alf Headers
-#include <alf/alfwidgetcontrol.h>
-
-// Osn Headers
-#include <touchfeedback.h>
-
-// Gesture Helper
-#include <gestureobserver.h>
-
-// Mul Headers
-#include <mul/imulvarianttype.h>
-#include <mul/imulwidget.h>
-#include "imulmodelobserver.h"
-
-//Gesture Helper namespace 
-namespace GestureHelper
-    {
-    class CGestureHelper;
-    struct TRealPoint;
-    }
-
-//Forward declarations
-class CAlfFlowLayout ;
-class CAlfImageVisual;
-
-namespace Alf
-    {
-//Forward declarations
-class IAlfWidget;
-class IMulModelAccessor;
-class IMulSliderModel;
-class IMulSliderWidget;
-class MulBaseElement;
-class MulCoverFlowAo;
-class MulCoverFlowTemplate;
-
-struct TMulCoverFlowControlImpl;
-
-namespace mulcoverflowcontrol
-    {
-     static const IfId Ident=
-        {
-        0,"MulCoverFlowControl"
-        };
-    }
-    
-class MulCoverFlowControl : public CAlfWidgetControl,
-							public IMulModelObserver,
-							public GestureHelper::MGestureObserver
-    {
-
-public: //Constructor and destructor
-
-    /**
-     * C++ constructor.
-     */
-    MulCoverFlowControl( CAlfEnv& aEnv );
-
-    /**
-     * Destructor.
-     */
-    virtual ~MulCoverFlowControl();
-    
-public: //From CAlfWidgetControl
-
-    AlfEventStatus handleEvent( const TAlfEvent& aEvent );
-        
-    static inline const IfId& Type()
-        {
-        return mulcoverflowcontrol::Ident;    
-        }
-    
-    IAlfInterfaceBase* makeInterface( const IfId& aType );
-                
-    void VisualLayoutUpdated (CAlfVisual& aVisual);
-        
-public:// From IMulModelObserver
-    
-	void ModelStateChanged( TMulChangedState aState, IMulVariantType& aData );
-    
-public:// From MGestureObserver
-
-    /**
-     * Handles gesture events and delegates the processing to the base element
-     * 
-     * @param aEvent Gesture event e.g . EGestureSwipeLeft/Right
-     */
-    void HandleGestureL( const GestureHelper::MGestureEvent& aEvent );
-    
-
-public: //New Methods
-	
-	/**
-	 * Returns the total count that application has set to the model . 
-	 * The number of items that application has set to the model i,e the total 
-	 * number of items that the application may insert into the model may not
-	 * be equal to the total number of items given to the widget for presentation 
-	 * by the model . 
-	 * 
-	 * @returns The number of items that the application has set to the model .
-	 */
-	int TotalModelCount();
-	
-    /**
-     * Sets the highlight index to the given aIndex
-     *
-     * @param aIndex, Index to which the current focus visulisation to be moved.
-     */		
-	void SetHighlightIndex( int aIndex ,bool aUpdateSlider = true);
-	
-    /**
-     * Return the Highlight Item Index maintained in control when update highlight to model is blocked
-     *
-     * @return, Current Highlight
-     */
-    int HighlightIndex();
-    
-    /**
-     * Returns the current 2D coverflow template.
-     *
-     * @return, CoverflowTemplate
-     */	
-    MulCoverFlowTemplate*  Template2D();
-        
-    /**
-     * Returns whether the coverflow is currently in fast scroll mode or not .
-     *
-     * @returns true if fast scroll mode is launched, else returns false
-     */
-    bool IsFastScrollMode();
-    
-    /**
-     * Resets the show widget flag depending on the parameter passed. 
-     * 
-     * @param aNewResetValue The new value with which the flag needs to be reset.
-     */
-    void ResetShowWidgetFlag( bool aNewResetValue );
-    
-    
-    /**
-     * Returns the accessor to the current model of the widget.
-     */
-    IMulModelAccessor* ModelAccessor();
-     
-	
-	/**
-     * Recycles all the visuals added to the Icon Layout.
-     * The function is called whenever there is an model change
-     */
-    void RecycleVisuals(); 
-    
-    /**
-     * Creates the slider widget . The creation of slider widget depends on the xml . 
-     * That is if the xml has a slider tag then only slider widget is created . 
-     */
-    IAlfWidget* CreateSliderWidget();
-    
-    /**
-     * Returns the created slider widget . If the widget is  not created , then returns NULL.
-     */
-    IAlfWidget* GetSliderWidget();
-	
-	/**
-	 * Returns the slider model pointer . 
-	 *
-	 * @returns The slider model pointer if slider widget is created and exists, else returns NULL.
-	 */	
-	IMulSliderModel* GetSliderModel(); 
-	
-    /**
-     * Check whether we need hold events (Enhanced coverflow can be launched) and
-     * set the state to gesture helper accordingly
-     */	    
-    void SetHoldingEnabled();
-    
-    /**
-     * Enable/Disable double tap on Gesture helper based on the aValue specified.
-     * 
-     * @param aValue The value whether double tap should be enabled or not.
-     */	
-    void SetDoubleTapEnabled( bool aValue);
-        
-    /**
-     * Handles the scrolling event and changes the focus accordingly.
-     * 
-     * @param aEvent the scrolling event to be handled
-     */
-    void HandleNavigationEvent( int aEvent );
-    
-	/**
-	 * Transition time for highlight change in fast scroll
-	 *
-	 * @return, transition time to be used
-	 */	
-	int FastScrollTransitionTime();	 
-
-	/**
-	 * Update the item at relative index Of aVisualIndex with the data at aItemIndex
-	 *
-	 * @param aItemIndex, Absolute index
-	 * @param aVisualIndex, Relative index
-	 * @param aAnimationTime, text will be updated after the aAnimationTime.
-	 */
-	void UpdateCoverflowItem( int aItemIndex, int aVisualIndex, int aAnimationTime = 0);
-	
-	/**
-	 * Checks the current index is in visible window and returns its relative index in aRelativeIndex
-	 *
-	 * @param aIndex, 
-	 * @param aRelativeIndex,
-	 */	
-	bool IsIndexInVisibleWindow(const int aIndex,int& aRelativeIndex);
-	
-	/**
-	 *  
-	 *
-	 */	
-	int RelativeToAbsolute(const int aRelativeIndex);
-	
-	/**
-	 * update the item at the relative index. 
-	 * 
-	 * @param aVisualIndex, Relative index
-	 * @param aAnimationTime, text will be updated after the aAnimationTime.
-	 *
-	 */	
-	void UpdateItemAtIndex(const int aRelativeIndex, int aAnimationTime = 0);
-
-	/**
-	 *  
-	 *
-	 */
-    void DoSetImage(IMulVariantType* aImageData,CAlfImageVisual* aImgVisual);
-    
-   /**
-    * Checks the given file path is of SVG image or not
-    *
-    * @param aImagePath Path of the image file,which need to be checked for SVG file format. 
-    */
-    bool IsSVGImage(const TDesC& aImagePath);
-    
-    /**
-     * Load Image visual with image provided from file path
-     * 
-     * @param aSvgFilePath path of Image
-     * @param aImageVisual visual on with image to be loaded
-     */
-    void LoadImageFromSvg(const TDesC& aImagePath,CAlfImageVisual& aImageVisual );
-    
-	/**
-	 *  
-	 *
-	 */    
-    void StoreVisibleItemCount(int aVisibleItemCount);
-    
-	/**
-	 *  
-	 *
-	 */
-	void SetDefaultImage(int aTextureId);
-	
-	/**
-	 *  
-	 *
-	 */
-	int WindowTop(int aHighlightIndex);
-
-	/**
-	 *  
-	 *
-	 */	
-	void UpdateBaseElement(MulBaseElement* aBaseElement);
-	
-    /**
-     * Slider handles the key events  .
-     * Slider thumb positions itself to the gesture and key events of coverflow widget 
-     *
-     */
-    void SetSliderTickPosition();
-	
-	/**
-	 *  
-	 *
-	 */	
-    void ModelChanged( IMulModelAccessor* aAccessor);
-
-	/**
-	 * Determins the current resolution
-	 * 
-	 *
-	 */	
-	bool IsLandscape();
-    
-    /**
-     * Destroys slider widget.
-     */	
-    void DestroySlider(); 
- 
-    /**
-     * Return gesture helper.
-     */ 
-    GestureHelper::CGestureHelper* Gesturehelper();
-    
-private:
-    
-    // Event handling related api.
-    /**
-     * Handles key event related manipulation. 
-     * 
-     * @param TAlfEvent
-     * @returns The status of the handled event.
-     */
-    AlfEventStatus HandleKeyEvent( const TAlfEvent& aEvent );
-    
-    /**
-     * Handles repeated key event. 
-     * 
-     * @param TAlfEvent 
-     * @returns The status of the handled event.
-     */
-    AlfEventStatus HandleRepeatKeyEvent( const TAlfEvent& aEvent );  
-
-    /**
-     * Handle fast scrolling and speed variations with repeated key events. 
-     * 
-     * @param aDirection, Direction in which to change the highlight
-     */    
-    void HandleFastScrollWithKeyEvents(int aDirection);  
-    
-    /**
-     * Handles custom event that control has raised to itself like bounce,bounce over etc. 
-     * 
-     * @returns The status of the handled event.
-     */
-    AlfEventStatus HandleCustomEvent( const TAlfEvent& aEvent );
-    
-    /**
-     * Handles swipe events(only on pointer events from gesture helper)
-     * 
-     * @param aEvent - SwipeRight/SwipeLeft.
-     */
-    void HandleSwipe(int aEvent);
-    
-    /**
-     * Performs the focus visualisation for the new focusedindex, and clears the old
-     * index visulisation. Called for every navigation events and sethighlight api call.
-     *
-     * @param aIndex new Index to which the focus visualisation is to be set.    
-     */        
-    void DoSetFocusIndex( int aIndex, int aAnimationTime =0);
-    
-    /**
-     * Sets the current highlighted item as the selected item . 
-     * Sends the selection event to the application . 
-     */
-    void SetSelection(int aHighlight);
-        
-    /**
-     * Creates a new template element with aTemplateName .
-     * 
-     * @param aTemplateName The name of thew new template element.
-     */
-    void CreateTemplateElement( mulwidget::TLogicalTemplate aTemplateName);
-        
-       
-    /**
-     * Sends the specified event to the base element .
-     * 
-     * @param aEvent Event to be sent to the base element.
-     */
-    void SendEventToBaseElement( const TAlfEvent& aEvent );
-    
-    /**
-     * Handles if there is any change in the total count of model .
-     * Updates the slider tick if the total count of model increases/decreases.
-     *
-     */
-     
-    void HandleModelCountChange();
-            
-    /**
-     * Gets the absolute index of the specified visual, which has been tapped.
-     * 
-     * @param aHitVisual The visual which has been tapped or hit.
-     */
-    int GetHitVisualIndex( CAlfVisual* aHitVisual );
-    
-    /**
-     * Handle enhanced stop.
-     */ 
-	void HandleEnhancedStop();
-   
-    /**
-     * Performs all the enhanced mode related checkings ..e.g whether the fast scroll flag
-     * is set or not / whether the application is in landscape mode or not .
-     *
-     * @return Boolean value informing whether enhanced mode should be started or not .
-     */
-    bool EnhancedModeCondition();
-    
-    /**
-     * Performs animations when enhanced mode is started .
-     * The coverflow transits to enhanced mode from 2D normal mode .
-     *
-     * @param aEvent , gesture event
-     */
-    void EnhancedStarted( const GestureHelper::MGestureEvent& aEvent );
-    
-    /**
-     * Returns the current Gesture Speed. 
-     * 
-     * @param aEvent Event from the gesture helper.
-     * @returns The current gesture speed.
-     */
-    GestureHelper::TRealPoint GestureSpeed( const GestureHelper::MGestureEvent& aEvent );
-    
-    /**
-     * Performs animations in enhanced mode.
-     * Moves the layout along with the pointer event . The function calls the active object class
-     * to move the layout with smooth animation .
-     *
-     * @param aEvent Gesture event .
-     */
-    void StartMoving( const GestureHelper::MGestureEvent& aEvent );
-
-    /**
-     * Handles all normal gesture events other than hold events
-     * 
-     * @param aEvent Gesture event e.g . EGestureSwipeLeft/Right
-     */    
-	void HandleNormalGestureEvents(const GestureHelper::MGestureEvent& aEvent);
-
-    /**
-     * Handles hold gesture events.
-     * 
-     * @param aEvent Gesture event e.g . EGestureSwipeHoldLeft/Right
-     */
-	void HandleHoldGestureEvents(const GestureHelper::MGestureEvent& aEvent);
-
-    /**
-     * Handles updating utems when the number of items in model are less than total visible items
-     * 
-     * @param aIndex, Index to update.
-     */	
-	void HandleLessItemsUpdate(int aIndex);  
-
-    /**
-     * Sets a blank texture the visual at relative index.
-     * 
-     * @param aRelativeIndex, Index for which the blank texture should be set
-     */	
-	void SetBlankTexture(int aRelativeIndex);	  
-
-
-    /**
-     * Converts the gesture distance into the form of direction (For right
-     * its plus and left its minus)
-     * 
-     * @param aDistance, Gesture distance
-     */
-	int ConvertDistanceToDirection( int aDistance );    	 
-    /**
-     * Sends Tactile feedback in case of touch down event.
-     *
-     * @param aEvent Gesture event.
-     */	
-	void SendFeedbackOnTouchDown(const GestureHelper::MGestureEvent& aEvent); 
-	
-    /**
-     * Decides in which direction the strip should move during fast scroll and also decides the position of 
-     * reference point for some special cases .
-     *
-     * @param aEvent Gesture event.
-     */
-	void ReverseDirectionInFastScroll(const GestureHelper::MGestureEvent& aEvent); 
-	
-	/**
-	 * Change the reference point of reversing the direction until the reference point becomes the 
-	 * middle of the screen .
-	 *
-	 * @param aCurrPosition The current pointer position .
-	 * @param aDistanceTravelled The distance travelled by the gesture till now.
-	 */
-	void ChangeDirReferencePoint(int aCurrPosition, int aDistanceTravelled );
-	
-	/**
-     * Handles the operations on the Single tap.
-     *
-     * @param aEvent Gesture event.
-     */
-	void HandleSingleTap(const GestureHelper::MGestureEvent& aEvent); 
-
-	/**
-     * 
-     *
-     * 
-     */	
-	int TotalSwipeDistance( const GestureHelper::MGestureEvent& aEvent );	 
-
-    	 
-private:
-    
-     auto_ptr<GestureHelper::CGestureHelper> mHelper; //owns it
-    
-     auto_ptr<TMulCoverFlowControlImpl> mData; // Owned
-     
-     auto_ptr<MulCoverFlowAo> mCoverFlowAo;   // owned
-     
-     MTouchFeedback* mFeedback; // tactile feedback, doesnt own it.
-     
-    IMulSliderWidget* mSliderWidget;  //    
-    
-    };
-    
-    } // namespace Alf
-    
-#endif // MULCOVERFLOWCONTROL_H
-
-//End of file