X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fscroll-bar%2Fscroll-bar-impl.h;h=8c90758b1cd28f4e80d447e12ab5ef7b5c2c1a35;hp=31780ebe90c23234dba50ca7640054880f1f569c;hb=refs%2Fchanges%2F34%2F39034%2F20;hpb=91c61abfba80ae007ca86fd12f25764395b207b0 diff --git a/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.h b/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.h index 31780eb..8c90758 100755 --- a/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.h +++ b/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.h @@ -23,11 +23,11 @@ #include #include #include +#include #include // INTERNAL INCLUDES -#include -#include +#include #include namespace Dali @@ -47,50 +47,56 @@ typedef IntrusivePtr ScrollBarPtr; * ScrollBar is a UI component that can be added to the scrollable controls * indicating the current scroll position of the scrollable content. */ -class ScrollBar : public ScrollComponentImpl +class ScrollBar : public Control { public: // Signals - typedef Toolkit::ScrollBar::ScrollPositionNotifiedSignalType ScrollPositionNotifiedSignalType; + typedef Toolkit::ScrollBar::PanFinishedSignalType PanFinishedSignalType; + typedef Toolkit::ScrollBar::ScrollPositionIntervalReachedSignalType ScrollPositionIntervalReachedSignalType; public: /** - * @copydoc Toolkit::ScrollBar::ScrollBar() + * @copydoc Toolkit::ScrollBar::New() */ - ScrollBar(); + static Toolkit::ScrollBar New(Toolkit::ScrollBar::Direction direction); /** - * @copydoc Toolkit::ScrollBar::~ScrollBar() + * @copydoc Toolkit::ScrollBar::SetScrollPropertySource() */ - virtual ~ScrollBar(); + void SetScrollPropertySource( Handle handle, Property::Index propertyScrollPosition, Property::Index propertyMinScrollPosition, Property::Index propertyMaxScrollPosition, Property::Index propertyScrollContentSize ); /** - * @copydoc Toolkit::ScrollBar::New() + * @copydoc Toolkit::ScrollBar::SetScrollIndicator() */ - static Toolkit::ScrollBar New(); + void SetScrollIndicator( Actor indicator ); /** - * @copydoc Toolkit::ScrollComponentImpl::OnScrollConnectorSet() + * @copydoc Toolkit::ScrollBar::GetScrollIndicator() */ - void OnScrollConnectorSet( Toolkit::ScrollConnector connector ); + Actor GetScrollIndicator(); /** - * @copydoc Toolkit::ScrollBar::SetIndicatorImage() + * @copydoc Toolkit::ScrollBar::SetScrollPositionIntervals() */ - void SetIndicatorImage( Image image ); + void SetScrollPositionIntervals( const Dali::Vector& positions ); /** - * @copydoc Toolkit::ScrollBar::GetScrollIndicator() + * @copydoc Toolkit::ScrollBar::GetScrollPositionIntervals() */ - Actor GetScrollIndicator(); + Dali::Vector GetScrollPositionIntervals() const; /** - * @copydoc Toolkit::ScrollBar::SetPositionNotifications() + * @copydoc Toolkit::ScrollBar::SetScrollDirection() */ - void SetPositionNotifications( const Dali::Vector& positions ); + void SetScrollDirection( Toolkit::ScrollBar::Direction direction ); + + /** + * @copydoc Toolkit::ScrollBar::GetScrollDirection() + */ + Toolkit::ScrollBar::Direction GetScrollDirection() const; /** * @copydoc Toolkit::ScrollBar::SetIndicatorHeightPolicy() @@ -100,7 +106,7 @@ public: /** * @copydoc Toolkit::ScrollBar::GetIndicatorHeightPolicy() */ - Toolkit::ScrollBar::IndicatorHeightPolicy GetIndicatorHeightPolicy(); + Toolkit::ScrollBar::IndicatorHeightPolicy GetIndicatorHeightPolicy() const; /** * @copydoc Toolkit::ScrollBar::SetIndicatorFixedHeight() @@ -110,7 +116,7 @@ public: /** * @copydoc Toolkit::ScrollBar::GetIndicatorFixedHeight() */ - float GetIndicatorFixedHeight(); + float GetIndicatorFixedHeight() const; /** * @copydoc Toolkit::ScrollBar::SetIndicatorShowDuration() @@ -120,7 +126,7 @@ public: /** * @copydoc Toolkit::ScrollBar::GetIndicatorShowDuration() */ - float GetIndicatorShowDuration(); + float GetIndicatorShowDuration() const; /** * @copydoc Toolkit::ScrollBar::SetIndicatorHideDuration() @@ -130,24 +136,32 @@ public: /** * @copydoc Toolkit::ScrollBar::GetIndicatorHideDuration() */ - float GetIndicatorHideDuration(); + float GetIndicatorHideDuration() const; /** - * @copydoc Toolkit::ScrollBar::Show() + * @copydoc Toolkit::ScrollBar::ShowIndicator() */ - void Show(); + void ShowIndicator(); /** - * @copydoc Toolkit::ScrollBar::Hide() + * @copydoc Toolkit::ScrollBar::HideIndicator() */ - void Hide(); + void HideIndicator(); /** - * Signal emitted after the SetScrollDomain() method has been called. + * @copydoc Toolkit::ScrollBar::PanFinishedSignal() */ - ScrollPositionNotifiedSignalType& ScrollPositionNotifiedSignal() + PanFinishedSignalType& PanFinishedSignal() { - return mScrollPositionNotifiedSignal; + return mPanFinishedSignal; + } + + /** + * @copydoc Toolkit::ScrollBar::ScrollPositionIntervalReachedSignal() + */ + ScrollPositionIntervalReachedSignalType& ScrollPositionIntervalReachedSignal() + { + return mScrollPositionIntervalReachedSignal; } /** @@ -187,11 +201,6 @@ private: // from Control virtual void OnInitialize(); /** - * @copydoc Toolkit::Control::OnPan - */ - virtual void OnPan( PanGesture gesture ); - - /** * @copydoc Toolkit::Control::OnControlSizeSet( const Vector3& size ) */ virtual void OnControlSizeSet( const Vector3& size ); @@ -199,25 +208,22 @@ private: // from Control private: /** - * Apply constraints for background and indicator. - * These constraints are based on values from the scroll connector. + * Create the default indicator actor. */ - void ApplyConstraints(); + void CreateDefaultIndicatorActor(); /** - * Callback when the start & end position and size of the scrollable content are changed. - * @param[in] minPosition The minimum position. - * @param[in] maxPosition The maximum position. - * @param[in] contentSize The size of scrollable content. + * Apply constraints for background and indicator. + * These constraints are based on values from the scroll connector. */ - void OnScrollDomainChanged(float minPosition, float maxPosition, float contentSize); + void ApplyConstraints(); /** * Callback when the current scroll position of the scrollable content goes above or - * below the values specified by SetPositionNotifications(). + * below the values specified by SetScrollPositionIntervals(). * @param[in] source the property notification that triggered this callback */ - void OnScrollPositionNotified(PropertyNotification& source); + void OnScrollPositionIntervalReached(PropertyNotification& source); /** * Process the pan gesture per predefined timeout until the gesture is finished. @@ -226,22 +232,56 @@ private: bool OnPanGestureProcessTick(); /** + * Handle SetProperty for scroll direction. + * @param[in] propertyValue The new property value. + */ + void OnScrollDirectionPropertySet(Property::Value propertyValue); + + /** * Handle SetProperty for scroll indicator height policy. * @param[in] propertyValue The new property value. */ void OnIndicatorHeightPolicyPropertySet(Property::Value propertyValue); + /** + * Pan gesture callback + * + * @param[in] actor The actor the event is raised for + * @param[in] gesture The pan event info + */ + void OnPan(Actor source, const PanGesture& gesture); + private: - Handle mScrollPositionObject; ///< From mScrollConnector + /** + * Constructor. + * It initializes ScrollBar members. + */ + ScrollBar( Toolkit::ScrollBar::Direction direction ); + + /** + * A reference counted object may only be deleted by calling Unreference() + */ + virtual ~ScrollBar(); - ImageActor mIndicator; ///< Image of scroll indicator. +private: + + Actor mIndicator; ///< Image of scroll indicator. Animation mAnimation; ///< Scroll indicator Show/Hide Animation. + Toolkit::ScrollBar::Direction mDirection; ///< The direction of scroll bar (vertical or horizontal) + + Handle mScrollableObject; ///< Object to be scrolled + + Property::Index mPropertyScrollPosition; ///< Index of scroll position property owned by the object to be scrolled + Property::Index mPropertyMinScrollPosition; ///< Index of minimum scroll position property owned by the object to be scrolled + Property::Index mPropertyMaxScrollPosition; ///< Index of maximum scroll position property owned by the object to be scrolled + Property::Index mPropertyScrollContentSize; ///< Index of scroll content size property owned by the object to be scrolled + float mIndicatorShowDuration; ///< The duration of scroll indicator show animation float mIndicatorHideDuration; ///< The duration of scroll indicator hide animation - float mScrollStart; ///< Scroll Start position (start of drag) + float mScrollStart; ///< Scroll Start position (start of drag) Vector3 mGestureDisplacement; ///< Gesture Displacement. bool mIsPanning; ///< Whether the scroll bar is being panned. @@ -250,15 +290,20 @@ private: Toolkit::ScrollBar::IndicatorHeightPolicy mIndicatorHeightPolicy; ///< The height policy of scroll indicator (variable or fixed) float mIndicatorFixedHeight; ///< The fixed height of scroll indicator - Timer mTimer; ///< The timer to process the pan gesture after the gesture is started. + PanGestureDetector mPanGestureDetector; ///< The pan gesture detector for scroll indicator - Property::Index mPropertyIndicatorPosition; ///< Indicatore Position ("indicator-position") + Timer mContractDelayTimer; ///< Timer guarantee contract delay time. + Timer mPanProcessTimer; ///< The timer to process the pan gesture after the gesture is started. + Dali::Vector mScrollPositionIntervals; ///< List of values to receive notification for when the current scroll position goes above or below them PropertyNotification mPositionNotification; ///< Stores the property notification used for scroll position changes - ScrollPositionNotifiedSignalType mScrollPositionNotifiedSignal; + PanFinishedSignalType mPanFinishedSignal; + ScrollPositionIntervalReachedSignalType mScrollPositionIntervalReachedSignal; Constraint mIndicatorPositionConstraint; + Constraint mIndicatorSizeConstraint; + Constraint mScrollPositionInCurrentAxisConstraint; }; } // namespace Internal