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=8c6ef2a20a88d04ae05bd4d5cb055081bd723bf0;hp=f5321a46f4406a1decc3b4212fb0c23e3cca6165;hb=60a70025a145b0e0674354f13a82318a108acbbc;hpb=1c5674a11a51310ee689d6daf4e6b7d94dec607e diff --git a/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.h b/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.h old mode 100755 new mode 100644 index f5321a4..8c6ef2a --- a/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.h +++ b/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.h @@ -1,8 +1,8 @@ -#ifndef __DALI_TOOLKIT_INTERNAL_SCROLL_BAR_H__ -#define __DALI_TOOLKIT_INTERNAL_SCROLL_BAR_H__ +#ifndef DALI_TOOLKIT_INTERNAL_SCROLL_BAR_H +#define DALI_TOOLKIT_INTERNAL_SCROLL_BAR_H /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,26 +19,26 @@ */ // EXTERNAL INCLUDES +#include #include -#include -#include #include +#include #include #include +#include // INTERNAL INCLUDES +#include +#include +#include #include -#include namespace Dali { - namespace Toolkit { - namespace Internal { - class ScrollBar; typedef IntrusivePtr ScrollBarPtr; @@ -49,15 +49,12 @@ typedef IntrusivePtr ScrollBarPtr; */ class ScrollBar : public Control { - public: - // Signals - typedef Toolkit::ScrollBar::PanFinishedSignalType PanFinishedSignalType; + typedef Toolkit::ScrollBar::PanFinishedSignalType PanFinishedSignalType; typedef Toolkit::ScrollBar::ScrollPositionIntervalReachedSignalType ScrollPositionIntervalReachedSignalType; public: - /** * @copydoc Toolkit::ScrollBar::New() */ @@ -66,12 +63,12 @@ public: /** * @copydoc Toolkit::ScrollBar::SetScrollPropertySource() */ - void SetScrollPropertySource( Handle handle, Property::Index propertyScrollPosition, Property::Index propertyMinScrollPosition, Property::Index propertyMaxScrollPosition, Property::Index propertyScrollContentSize ); + void SetScrollPropertySource(Handle handle, Property::Index propertyScrollPosition, Property::Index propertyMinScrollPosition, Property::Index propertyMaxScrollPosition, Property::Index propertyScrollContentSize); /** * @copydoc Toolkit::ScrollBar::SetScrollIndicator() */ - void SetScrollIndicator( Actor indicator ); + void SetScrollIndicator(Actor indicator); /** * @copydoc Toolkit::ScrollBar::GetScrollIndicator() @@ -81,7 +78,7 @@ public: /** * @copydoc Toolkit::ScrollBar::SetScrollPositionIntervals() */ - void SetScrollPositionIntervals( const Dali::Vector& positions ); + void SetScrollPositionIntervals(const Dali::Vector& positions); /** * @copydoc Toolkit::ScrollBar::GetScrollPositionIntervals() @@ -91,7 +88,7 @@ public: /** * @copydoc Toolkit::ScrollBar::SetScrollDirection() */ - void SetScrollDirection( Toolkit::ScrollBar::Direction direction ); + void SetScrollDirection(Toolkit::ScrollBar::Direction direction); /** * @copydoc Toolkit::ScrollBar::GetScrollDirection() @@ -101,7 +98,7 @@ public: /** * @copydoc Toolkit::ScrollBar::SetIndicatorHeightPolicy() */ - void SetIndicatorHeightPolicy( Toolkit::ScrollBar::IndicatorHeightPolicy policy ); + void SetIndicatorHeightPolicy(Toolkit::ScrollBar::IndicatorHeightPolicy policy); /** * @copydoc Toolkit::ScrollBar::GetIndicatorHeightPolicy() @@ -111,7 +108,7 @@ public: /** * @copydoc Toolkit::ScrollBar::SetIndicatorFixedHeight() */ - void SetIndicatorFixedHeight( float height ); + void SetIndicatorFixedHeight(float height); /** * @copydoc Toolkit::ScrollBar::GetIndicatorFixedHeight() @@ -121,7 +118,7 @@ public: /** * @copydoc Toolkit::ScrollBar::SetIndicatorShowDuration() */ - void SetIndicatorShowDuration( float durationSeconds ); + void SetIndicatorShowDuration(float durationSeconds); /** * @copydoc Toolkit::ScrollBar::GetIndicatorShowDuration() @@ -131,7 +128,7 @@ public: /** * @copydoc Toolkit::ScrollBar::SetIndicatorHideDuration() */ - void SetIndicatorHideDuration( float durationSeconds ); + void SetIndicatorHideDuration(float durationSeconds); /** * @copydoc Toolkit::ScrollBar::GetIndicatorHideDuration() @@ -146,25 +143,30 @@ public: /** * @copydoc Toolkit::ScrollBar::HideIndicator() */ - void HideIndicator(); + void HideIndicator(); - /** + /** + * @brief Shows indicator until the transient duration has expired + */ + void ShowTransientIndicator(); + + /** * @copydoc Toolkit::ScrollBar::PanFinishedSignal() */ - PanFinishedSignalType& PanFinishedSignal() - { - return mPanFinishedSignal; - } + PanFinishedSignalType& PanFinishedSignal() + { + return mPanFinishedSignal; + } - /** + /** * @copydoc Toolkit::ScrollBar::ScrollPositionIntervalReachedSignal() */ - ScrollPositionIntervalReachedSignalType& ScrollPositionIntervalReachedSignal() - { - return mScrollPositionIntervalReachedSignal; - } + ScrollPositionIntervalReachedSignalType& ScrollPositionIntervalReachedSignal() + { + return mScrollPositionIntervalReachedSignal; + } - /** + /** * Connects a callback function with the object's signals. * @param[in] object The object providing the signal. * @param[in] tracker Used to disconnect the signal. @@ -173,40 +175,52 @@ public: * @return True if the signal was connected. * @post If a signal was connected, ownership of functor was passed to CallbackBase. Otherwise the caller is responsible for deleting the unused functor. */ - static bool DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor ); + static bool DoConnectSignal(BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor); - // Properties + // Properties - /** + /** * Called when a property of an object of this type is set. * @param[in] object The object whose property is set. * @param[in] index The property index. * @param[in] value The new property value. */ - static void SetProperty( BaseObject* object, Property::Index index, const Property::Value& value ); + static void SetProperty(BaseObject* object, Property::Index index, const Property::Value& value); - /** + /** * Called to retrieve a property of an object of this type. * @param[in] object The object whose property is to be retrieved. * @param[in] index The property index. * @return The current value of the property. */ - static Property::Value GetProperty( BaseObject* object, Property::Index index ); + static Property::Value GetProperty(BaseObject* object, Property::Index index); -private: // from Control + /** + * Performs actions as requested using the action name. + * @param[in] object The object on which to perform the action. + * @param[in] actionName The action to perform. + * @param[in] attributes The attributes with which to perfrom this action. + * @return true if action has been accepted by this control + */ + static bool DoAction(BaseObject* object, const std::string& actionName, const Property::Map& attributes); +private: // from Control /** * @copydoc Toolkit::Control::OnInitialize */ - virtual void OnInitialize(); + void OnInitialize() override; + + /** + * @copydoc Toolkit::Control::OnPan + */ + void OnPan(const PanGesture& gesture) override; /** * @copydoc CustomActorImpl::OnSizeSet( const Vector3& size ) */ - virtual void OnSizeSet( const Vector3& size ); + void OnSizeSet(const Vector3& size) override; private: - /** * Create the default indicator actor. */ @@ -243,21 +257,12 @@ private: */ 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: - /** * Constructor. * It initializes ScrollBar members. */ - ScrollBar( Toolkit::ScrollBar::Direction direction ); + ScrollBar(Toolkit::ScrollBar::Direction direction); /** * A reference counted object may only be deleted by calling Unreference() @@ -265,45 +270,60 @@ private: virtual ~ScrollBar(); private: + Actor mIndicator; ///< Image of scroll indicator. + float mIndicatorShowAlpha; ///< The alpha value when the indicator is fully shown + Animation mAnimation; ///< Scroll indicator Show/Hide Animation. - 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) - Toolkit::ScrollBar::Direction mDirection; ///< The direction of scroll bar (vertical or horizontal) + WeakHandle mScrollableObject; ///< Object to be scrolled - Handle mScrollableObject; ///< Object to be scrolled + Property::Index mPropertyScrollPosition = 0; ///< Index of scroll position property owned by the object to be scrolled + Property::Index mPropertyMinScrollPosition = 0; ///< Index of minimum scroll position property owned by the object to be scrolled + Property::Index mPropertyMaxScrollPosition = 1; ///< 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 - 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 mTransientIndicatorDuration; ///< The duration before hiding transient indicator - 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) + Vector2 mGestureDisplacement; ///< Gesture Displacement. - float mScrollStart; ///< Scroll Start position (start of drag) - Vector3 mGestureDisplacement; ///< Gesture Displacement. - - bool mIsPanning; ///< Whether the scroll bar is being panned. - float mCurrentScrollPosition; ///< The current scroll position updated by the pan gesture + float mCurrentScrollPosition; ///< The current scroll position updated by the pan gesture Toolkit::ScrollBar::IndicatorHeightPolicy mIndicatorHeightPolicy; ///< The height policy of scroll indicator (variable or fixed) - float mIndicatorFixedHeight; ///< The fixed height of scroll indicator - - PanGestureDetector mPanGestureDetector; ///< The pan gesture detector for scroll indicator + float mIndicatorFixedHeight; ///< The fixed height of scroll indicator + float mIndicatorMinimumHeight; ///< The minimum height for a variable size indicator + float mIndicatorStartPadding; ///< The padding at the start of the indicator + float mIndicatorEndPadding; ///< The padding at the end of the indicator - Timer mContractDelayTimer; ///< Timer guarantee contract delay time. - Timer mPanProcessTimer; ///< The timer to process the pan gesture after the gesture is started. + 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 + 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 - PanFinishedSignalType mPanFinishedSignal; + PanFinishedSignalType mPanFinishedSignal; ScrollPositionIntervalReachedSignalType mScrollPositionIntervalReachedSignal; Constraint mIndicatorPositionConstraint; Constraint mIndicatorSizeConstraint; - Constraint mScrollPositionInCurrentAxisConstraint; + + bool mIsPanning : 1; ///< Whether the scroll bar is being panned. + bool mIndicatorFirstShow : 1; ///< True if the indicator has never been shown + +protected: + struct AccessibleImpl : public DevelControl::AccessibleImpl, + public virtual Dali::Accessibility::Value + { + using DevelControl::AccessibleImpl::AccessibleImpl; + double GetMinimum() override; + double GetCurrent() override; + double GetMaximum() override; + bool SetCurrent(double) override; + double GetMinimumIncrement() override; + }; }; } // namespace Internal @@ -332,4 +352,4 @@ inline const Toolkit::Internal::ScrollBar& GetImpl(const Toolkit::ScrollBar& scr } // namespace Dali -#endif // __DALI_TOOLKIT_INTERNAL_SCROLL_BAR_H__ +#endif // DALI_TOOLKIT_INTERNAL_SCROLL_BAR_H