From: Paul Wisbey Date: Tue, 28 Feb 2017 19:24:19 +0000 (+0000) Subject: [3.0] Initially show scroll indicator for a brief period X-Git-Tag: accepted/tizen/3.0/common/20170323.155226~14 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F68%2F116868%2F3;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git [3.0] Initially show scroll indicator for a brief period Change-Id: Ib19586c964d7f62aa78b89c791f7ff0067c729d0 --- diff --git a/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.cpp b/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.cpp index 8f69a6e..5a4beea 100755 --- a/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.cpp +++ b/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.cpp @@ -46,6 +46,17 @@ const float DEFAULT_INDICATOR_FIXED_HEIGHT(80.0f); const float DEFAULT_INDICATOR_MINIMUM_HEIGHT(0.0f); const float DEFAULT_INDICATOR_START_PADDING(0.0f); const float DEFAULT_INDICATOR_END_PADDING(0.0f); +const float DEFAULT_INDICATOR_TRANSIENT_DURATION(1.0f); + +// The following properties are not in the public-api yet. +enum +{ + /** + * @brief The duration that transient indicators will remain fully visible. + * @details name "indicatorTransientDuration", type float. + */ + INDICATOR_TRANSIENT_DURATION = Toolkit::ScrollBar::Property::INDICATOR_END_PADDING + 1 +}; /** * Indicator size constraint @@ -154,15 +165,18 @@ BaseHandle Create() // Setup properties, signals and actions using the type-registry. DALI_TYPE_REGISTRATION_BEGIN( Toolkit::ScrollBar, Toolkit::Control, Create ); -DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "scrollDirection", STRING, SCROLL_DIRECTION ) -DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "indicatorHeightPolicy", STRING, INDICATOR_HEIGHT_POLICY ) -DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "indicatorFixedHeight", FLOAT, INDICATOR_FIXED_HEIGHT ) -DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "indicatorShowDuration", FLOAT, INDICATOR_SHOW_DURATION ) -DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "indicatorHideDuration", FLOAT, INDICATOR_HIDE_DURATION ) -DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "scrollPositionIntervals", ARRAY, SCROLL_POSITION_INTERVALS ) -DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "indicatorMinimumHeight", FLOAT, INDICATOR_MINIMUM_HEIGHT ) -DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "indicatorStartPadding", FLOAT, INDICATOR_START_PADDING ) -DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "indicatorEndPadding", FLOAT, INDICATOR_END_PADDING ) +DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "scrollDirection", STRING, SCROLL_DIRECTION ) +DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "indicatorHeightPolicy", STRING, INDICATOR_HEIGHT_POLICY ) +DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "indicatorFixedHeight", FLOAT, INDICATOR_FIXED_HEIGHT ) +DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "indicatorShowDuration", FLOAT, INDICATOR_SHOW_DURATION ) +DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "indicatorHideDuration", FLOAT, INDICATOR_HIDE_DURATION ) +DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "scrollPositionIntervals", ARRAY, SCROLL_POSITION_INTERVALS ) +DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "indicatorMinimumHeight", FLOAT, INDICATOR_MINIMUM_HEIGHT ) +DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "indicatorStartPadding", FLOAT, INDICATOR_START_PADDING ) +DALI_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "indicatorEndPadding", FLOAT, INDICATOR_END_PADDING ) + +Dali::PropertyRegistration manualProperty1( typeRegistration, "indicatorTransientDuration", INDICATOR_TRANSIENT_DURATION, + Property::FLOAT, Dali::Toolkit::Internal::ScrollBar::SetProperty, Dali::Toolkit::Internal::ScrollBar::GetProperty ); DALI_SIGNAL_REGISTRATION( Toolkit, ScrollBar, "panFinished", PAN_FINISHED_SIGNAL ) DALI_SIGNAL_REGISTRATION( Toolkit, ScrollBar, "scrollPositionIntervalReached", SCROLL_POSITION_INTERVAL_REACHED_SIGNAL ) @@ -185,6 +199,7 @@ ScrollBar::ScrollBar(Toolkit::ScrollBar::Direction direction) mPropertyScrollContentSize(Property::INVALID_INDEX), mIndicatorShowDuration(DEFAULT_INDICATOR_SHOW_DURATION), mIndicatorHideDuration(DEFAULT_INDICATOR_HIDE_DURATION), + mTransientIndicatorDuration(DEFAULT_INDICATOR_TRANSIENT_DURATION), mScrollStart(0.0f), mCurrentScrollPosition(0.0f), mIndicatorHeightPolicy(Toolkit::ScrollBar::Variable), @@ -403,6 +418,30 @@ void ScrollBar::HideIndicator() } } +void ScrollBar::ShowTransientIndicator() +{ + // Cancel any animation + if(mAnimation) + { + mAnimation.Clear(); + mAnimation.Reset(); + } + + mAnimation = Animation::New( mIndicatorShowDuration + mTransientIndicatorDuration + mIndicatorHideDuration ); + if(mIndicatorShowDuration > 0.0f) + { + mAnimation.AnimateTo( Property( mIndicator, Actor::Property::COLOR_ALPHA ), + mIndicatorShowAlpha, AlphaFunction::EASE_IN, TimePeriod(0, mIndicatorShowDuration) ); + } + else + { + mIndicator.SetOpacity(mIndicatorShowAlpha); + } + mAnimation.AnimateTo( Property( mIndicator, Actor::Property::COLOR_ALPHA ), + 0.0f, AlphaFunction::EASE_IN, TimePeriod((mIndicatorShowDuration + mTransientIndicatorDuration), mIndicatorHideDuration) ); + mAnimation.Play(); +} + bool ScrollBar::OnPanGestureProcessTick() { // Update the scroll position property. @@ -685,6 +724,11 @@ void ScrollBar::SetProperty( BaseObject* object, Property::Index index, const Pr scrollBarImpl.ApplyConstraints(); break; } + case INDICATOR_TRANSIENT_DURATION: + { + scrollBarImpl.mTransientIndicatorDuration = value.Get(); + break; + } } } } @@ -756,6 +800,11 @@ Property::Value ScrollBar::GetProperty( BaseObject* object, Property::Index inde value = scrollBarImpl.mIndicatorEndPadding; break; } + case INDICATOR_TRANSIENT_DURATION: + { + value = scrollBarImpl.mTransientIndicatorDuration; + break; + } } } return value; 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 0826ef3..da398b6 100755 --- a/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.h +++ b/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.h @@ -146,7 +146,12 @@ public: /** * @copydoc Toolkit::ScrollBar::HideIndicator() */ - void HideIndicator(); + void HideIndicator(); + + /** + * @brief Shows indicator until the transient duration has expired + */ + void ShowTransientIndicator(); /** * @copydoc Toolkit::ScrollBar::PanFinishedSignal() @@ -278,6 +283,7 @@ private: 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 mScrollStart; ///< Scroll Start position (start of drag) Vector3 mGestureDisplacement; ///< Gesture Displacement. diff --git a/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp b/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp index 6ab13c2..622a934 100644 --- a/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp +++ b/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp @@ -34,6 +34,7 @@ #include #include #include +#include //#define ENABLED_SCROLL_STATE_LOGGING @@ -1983,8 +1984,8 @@ void ScrollView::OnChildAdd(Actor& child) if( mTransientScrollBar ) { - scrollBar.SetVisible( false ); - scrollBar.HideIndicator(); + // Show the scroll-indicator for a brief period + GetImpl(scrollBar).ShowTransientIndicator(); } } else if(mAlterChild) @@ -2492,7 +2493,6 @@ void ScrollView::OnPan( const PanGesture& gesture ) if( ( rulerDomainX.max > size.width ) || ( rulerDomainY.max > size.height ) ) { - scrollBar.SetVisible( true ); scrollBar.ShowIndicator(); } } diff --git a/dali-toolkit/styles/1920x1080/dali-toolkit-default-theme.json b/dali-toolkit/styles/1920x1080/dali-toolkit-default-theme.json index 1274cf0..05e101d 100644 --- a/dali-toolkit/styles/1920x1080/dali-toolkit-default-theme.json +++ b/dali-toolkit/styles/1920x1080/dali-toolkit-default-theme.json @@ -130,7 +130,8 @@ "TextSelectionScrollBar": { "indicatorShowDuration":0.25, - "indicatorHideDuration":0.25 + "indicatorHideDuration":0.25, + "indicatorTransientDuration":1.0 }, "TextSelectionScrollIndicator": { diff --git a/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json b/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json index 2548843..0100130 100644 --- a/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json +++ b/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json @@ -117,7 +117,8 @@ "TextSelectionScrollBar": { "indicatorShowDuration":0.25, - "indicatorHideDuration":0.25 + "indicatorHideDuration":0.25, + "indicatorTransientDuration":1.0 }, "TextSelectionScrollIndicator": { diff --git a/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json b/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json index 0958f29..d9c6c02 100644 --- a/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json +++ b/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json @@ -137,7 +137,8 @@ "TextSelectionScrollBar": { "indicatorShowDuration":0.25, - "indicatorHideDuration":0.25 + "indicatorHideDuration":0.25, + "indicatorTransientDuration":1.0 }, "TextSelectionScrollIndicator": {