diff -r 000000000000 -r e83bab7cf002 mulwidgets/mulsliderwidget/inc/mulslidervertical.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mulwidgets/mulsliderwidget/inc/mulslidervertical.h Thu Dec 17 08:56:02 2009 +0200 @@ -0,0 +1,376 @@ +/* +* 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: Header for presentation element - vertical slider. + * +*/ + + + + +#ifndef MUL_SLIDERVERTICAL_H +#define MUL_SLIDERVERTICAL_H + +//INCLUDES +#include +#include "alf/alfelement.h" +#include +#include +#include + +#include +#include + +#include "mulslidermodel.h" +#include +#include "imulsliderbaseelementinternal.h" + + +namespace duiuimodel + { + class DuiNode; + } + +using namespace osncore; + +namespace Alf + { + struct MulSliderPos; + + +// Forward declarations +class IAlfWidgetEventHandler; +class CAlfWidgetControl; +class MulSliderLongTapTimer; + + +/** + * Default Base Element of the Scrollbar. + */ +class MulSliderVertical : + public AlfElement, + public IAlfWidgetEventHandler, + public IMulSliderBaseElementInternal, + public MAlfBitmapProvider + { +public: + + /** + * Constructor + * @param aControl Widget control. + * @param aName Name of the item element. + * @param aCustomData . + * @param mNode . + * @since S60 ?S60_version + */ + MulSliderVertical ( + CAlfWidgetControl& aControl, + const char* aName, + AlfCustomInitDataBase* aCustomData=NULL); + + /** + * Destructor + */ + virtual ~MulSliderVertical(); + + /** + * bitmap provider. + * @since S60 ?S60_version + * @param aId bitmap ID. + * @param aBitmap bitmap. + * @param aMaskBitmap mask for the bitmap. + * @return + */ + void ProvideBitmapL (TInt aId, + CFbsBitmap *& aBitmap, + CFbsBitmap *& aMaskBitmap); + + /** + * From IAlfInterfaceBase. + * Getter for interfaces provided by the Button widget class. + * @since S60 ?S60_version + * @param aType A descriptor to identify the type of the queried interface. + * @return The queried interface, or NULL if the interface is not + * supported or available. + */ + virtual IAlfInterfaceBase* makeInterface(const IfId& aType); + + + /** + * Sets the text for the counter visual + * + * @param aNewString The counter visual text value + * @throw Invalid Argument incase there is no layout at zeroth position + */ + void SetTextLabels(const char* aStr); + + + //-------------------------------------------------------------------------- + //Overriden Apis from IAlfWidgetEventHandlers + //-------------------------------------------------------------------------- + // + + /** + * Used to identify event handlers that are capable of handling + * a specified key or custom event. + * Pointer event handlers cannot be identified directly, + * since they are dependent on the presentation. + * Therefore, pointer event handlers should be associated with + * a custom event ID that can be used to simulate the actual pointer event. + * @since S60 ?S60_version + * @param aEvent The event. + * @param aControl + * @return ETrue if the event can be processed. + * Otherwise EFalse. + */ + bool accept(CAlfWidgetControl& aControl, const TAlfEvent& aEvent) const; + + + + /** + * @see IAlfWidgetEventHandler + */ + virtual AlfEventHandlerType eventHandlerType(); + + /** + * @see IAlfWidgetEventHandler + */ + virtual AlfEventHandlerExecutionPhase eventExecutionPhase(); + /** + * Called when an input event is being offered to this event handler. + * The return value is used to indicate if the event was processed. + * Processed events may not be offered to other event handlers. + * @since S60 ?S60_version + * @param aControl The parent control of this event handler. + * @param aEvent The event. + * @return ETrue if the event was processed. + * Otherwise EFalse. + */ + + + virtual AlfEventStatus offerEvent( + CAlfWidgetControl& aControl, + const TAlfEvent& aEvent ); + + /** + * Defines the widget states, where the event handler is active. + * By default, if this method is not called, the event handler is expected + * to be active in all states. + * @param aStates A bitmask defining the widget states, where the event + * handler is active. The low 16 bits are reserved for the states + * defined by the framework in . The high 16 bits are + * available for states defined by the client code. + */ + void setActiveStates(unsigned int aStates); + + /** + * Sets AlfWidgetEventHandlerInitData to event handler. + * @param aData A data structure which contains for example id of the event + * handler. + */ + virtual void setEventHandlerData( + const AlfWidgetEventHandlerInitData& /*aData*/ ) + { + + } + + /** + * Returns AlfWidgetEventHandlerInitData. + * @return A pointer to AlfWidgetEventHandlerInitData structure + * which contains for example id of the event handler. + */ + virtual AlfWidgetEventHandlerInitData* eventHandlerData() + { + return NULL; + } + + /** + * Friend class for timer functions. + * + */ + friend class MulSliderLongTapTimer; + + + //-------------------------------------------------------------------------- + //Overriden Apis from IMulSliderBaseElementInternal + //-------------------------------------------------------------------------- + // + + /** + * Notified when the base layout of scrollbar changes . + * Relayouts all the visuals with respect to the new size. + */ + void baseLayoutSizeChanged(); + + /** + * createVisualization + * @param aTemplateId .aTemplateId takes 3 or 9 as parameter. + */ + void createVisualization(sliderTemplate aTemplateId); + + /** + * updateVisualization + * Notified when the base layout of scrollbar changes . + * Relayouts all the visuals with respect to the new size. + */ + void updateVisualization(); + + /** + * Updates Text visualization. + * + */ + + void updateTextVisualization(); + /** + * Sets transparency for the Widget + * @param aTransparent - opacity level + */ + void MakeTransparent(bool aVal); + /** + *Stops all event handling + * + * + */ + void stopEvents() ; + private: + /** + * Set skin images on scrollbar track + */ + void setTrackImage(); + + /** + * Set skin images on scrollbar thumb + */ + void setThumbImage(); + /** + * Sets the position of the handle + * + * + */ + void SetThumbPosition(); + + /** + * Handles the key events only. + * + * @param aEvent event to be handled + * @returns The return value is used to indicate if the event was processed. + */ + AlfEventStatus HandleKeyEvents(const TAlfEvent& aEvent); + + /** + * Handles the pointer events only. + * + * + * @param aEvent Event to be handled + * @returns The return value is used to indicate if the event was processed. + */ + AlfEventStatus HandlePointerEvents( TAlfEvent* aEvent); + + /** + * handles the pointerDown event + * + * @param aEvent Event to be handled + * @returns The return value is used to indicate if the event was processed. + */ + AlfEventStatus handlePointerDownEvent(TAlfEvent * aPntrEvent); + + +private: + + + /** + * IsSliderVisual + * + */ + bool IsSliderVisual(CAlfVisual *aVisual); + + + /** + * layout the visuals + * + */ + void layoutVisuals( sliderTemplate aTemplateId) ; + + + + /** + * + * initializes Model and Widget Pointer + */ + void initializeSliderData(); + + + + /** + * SetBackgroundBrush + * + */ + void SetBackgroundBrush(); + + /** + * ConvertDataToPixels + * + */ + void ConvertDataToPixels(); + + /** + * updateModelPrimaryValue + * + */ + void updateModelPrimaryValue(int aNewPosValue); + + /** + * Start drag + */ + bool initializeThumbDragData(const TPoint& aPointerPos); + + + /** + * Stop drag + */ + bool stopDrag(); + + /** + * handlePointerUpEvent + */ + void handlePointerUpEvent(); + + /** + * snapPrimaryValueToTicks + */ + void snapPrimaryValueToTicks(); + + /** + * trackVisualHit + */ + AlfEventStatus trackVisualHit(CAlfVisual * aHitVisual); + +private: // Class Data + + + struct MulVerticalSliderDataImpl* mData; + + // Structure for storing current and previous values + auto_ptr mPosData; + + + auto_ptr mLongTapTimer; + MulSliderModel * mSliderModel; + MulSliderWidget * mSliderWidget; + + }; // end of class + + } // end of namespace Alf + +#endif //MUL_SLIDERVERTICAL_H +//End Of File