From: Paul Wisbey
Date: Tue, 28 Feb 2017 19:24:19 +0000 (+0000)
Subject: Initially show scroll indicator for a brief period
X-Git-Tag: dali_1.2.29~2^2
X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=95afb515eab9557a404015e26a210c07889f53b9
Initially show scroll indicator for a brief period
Change-Id: Ib19586c964d7f62aa78b89c791f7ff0067c729d0
---
diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ScrollBar.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ScrollBar.cpp
index ded233f..95b784d 100644
--- a/automated-tests/src/dali-toolkit/utc-Dali-ScrollBar.cpp
+++ b/automated-tests/src/dali-toolkit/utc-Dali-ScrollBar.cpp
@@ -21,6 +21,7 @@
#include
#include
#include
+#include
using namespace Dali;
using namespace Toolkit;
@@ -1388,6 +1389,307 @@ int UtcDaliToolkitScrollBarHideIndicatorN(void)
END_TEST;
}
+int UtcDaliToolkitScrollBarActionShowIndicator(void)
+{
+ ToolkitTestApplication application;
+
+ // Create a scroll bar
+ ScrollBar scrollBar = ScrollBar::New();
+ DALI_TEST_CHECK( scrollBar );
+
+ Stage::GetCurrent().Add( scrollBar );
+
+ Actor indicator = scrollBar.GetScrollIndicator();
+ DALI_TEST_CHECK( indicator );
+
+ // Get the default duration to hide the indicator
+ float duration = scrollBar.GetProperty( ScrollBar::Property::INDICATOR_SHOW_DURATION );
+
+ // Check that the default duration is greater than 0
+ DALI_TEST_CHECK( duration > 0.0f );
+
+ // Make the indicator invisible
+ indicator.SetOpacity(0.0f);
+
+ // Render and notify
+ application.SendNotification();
+ application.Render();
+
+ // Check that the indicator is invisible
+ DALI_TEST_EQUALS( indicator.GetCurrentOpacity(), 0.0f, TEST_LOCATION );
+
+ // Do the "ShowIndicator" action
+ Property::Map emptyMap;
+ scrollBar.DoAction( "ShowIndicator", emptyMap );
+
+ // Wait for the specified duration
+ Wait(application, duration * 1000);
+
+ // Render and notify
+ application.SendNotification();
+ application.Render();
+
+ // Check that the indicator is now visible
+ DALI_TEST_EQUALS( indicator.GetCurrentOpacity(), 1.0f, TEST_LOCATION );
+
+ END_TEST;
+}
+
+int UtcDaliToolkitScrollBarActionHideIndicator(void)
+{
+ ToolkitTestApplication application;
+
+ // Create a scroll bar
+ ScrollBar scrollBar = ScrollBar::New();
+ DALI_TEST_CHECK( scrollBar );
+
+ Stage::GetCurrent().Add( scrollBar );
+
+ Actor indicator = scrollBar.GetScrollIndicator();
+ DALI_TEST_CHECK( indicator );
+
+ // Get the default duration to hide the indicator
+ float duration = scrollBar.GetProperty( ScrollBar::Property::INDICATOR_HIDE_DURATION );
+
+ // Check that the default duration is greater than 0
+ DALI_TEST_CHECK( duration > 0.0f );
+
+ // Make the indicator visible
+ indicator.SetOpacity(1.0f);
+
+ // Render and notify
+ application.SendNotification();
+ application.Render();
+
+ // Check that the indicator is visible
+ DALI_TEST_EQUALS( indicator.GetCurrentOpacity(), 1.0f, TEST_LOCATION );
+
+ // Do the "HideIndicator" action
+ Property::Map emptyMap;
+ scrollBar.DoAction( "HideIndicator", emptyMap );
+
+ // Wait for the specified duration
+ Wait(application, duration * 1000);
+
+ // Render and notify
+ application.SendNotification();
+ application.Render();
+
+ // Check that the indicator is now invisible
+ DALI_TEST_EQUALS( indicator.GetCurrentOpacity(), 0.0f, TEST_LOCATION );
+
+ END_TEST;
+}
+
+int UtcDaliToolkitScrollBarActionShowTransientIndicator(void)
+{
+ ToolkitTestApplication application;
+
+ // Create a scroll bar
+ ScrollBar scrollBar = ScrollBar::New();
+ DALI_TEST_CHECK( scrollBar );
+
+ Stage::GetCurrent().Add( scrollBar );
+
+ Actor indicator = scrollBar.GetScrollIndicator();
+ DALI_TEST_CHECK( indicator );
+
+ // Get the default duration to hide the indicator
+ float duration = scrollBar.GetProperty( ScrollBar::Property::INDICATOR_SHOW_DURATION );
+
+ // Check that the default duration is greater than 0
+ DALI_TEST_CHECK( duration > 0.0f );
+
+ // Make the indicator invisible
+ indicator.SetOpacity(0.0f);
+
+ // Render and notify
+ application.SendNotification();
+ application.Render();
+
+ // Check that the indicator is invisible
+ DALI_TEST_EQUALS( indicator.GetCurrentOpacity(), 0.0f, TEST_LOCATION );
+
+ // Do the "ShowIndicator" action
+ Property::Map emptyMap;
+ scrollBar.DoAction( "ShowTransientIndicator", emptyMap );
+
+ // Wait for the specified duration
+ Wait(application, duration * 1000);
+
+ // Render and notify
+ application.SendNotification();
+ application.Render();
+
+ // Check that the indicator is now visible
+ DALI_TEST_EQUALS( indicator.GetCurrentOpacity(), 1.0f, TEST_LOCATION );
+
+ // Get the default duration to hide the indicator
+ float hideDuration = scrollBar.GetProperty( ScrollBar::Property::INDICATOR_HIDE_DURATION );
+ float transientDuration = scrollBar.GetProperty( DevelScrollBar::Property::INDICATOR_TRANSIENT_DURATION );
+ float totalVisibleDuration = hideDuration + transientDuration;
+
+ // Check that the default duration is greater than 0
+ DALI_TEST_CHECK( totalVisibleDuration > 0.0f );
+
+ // Wait for the specified duration
+ Wait(application, totalVisibleDuration * 1000);
+
+ // Render and notify
+ application.SendNotification();
+ application.Render();
+
+ // Check that the indicator is now invisible
+ DALI_TEST_EQUALS( indicator.GetCurrentOpacity(), 0.0f, TEST_LOCATION );
+
+ END_TEST;
+}
+
+int UtcDaliToolkitScrollBarActionShowTransientIndicatorImmediate(void)
+{
+ ToolkitTestApplication application;
+
+ // Create a scroll bar
+ ScrollBar scrollBar = ScrollBar::New();
+ DALI_TEST_CHECK( scrollBar );
+
+ Stage::GetCurrent().Add( scrollBar );
+
+ Actor indicator = scrollBar.GetScrollIndicator();
+ DALI_TEST_CHECK( indicator );
+
+ // Make the indicator invisible
+ indicator.SetOpacity(0.0f);
+
+ // Don't use a show animation; the indicator should appear immediately
+ scrollBar.SetProperty( ScrollBar::Property::INDICATOR_SHOW_DURATION, 0.0f );
+ float duration = scrollBar.GetProperty( ScrollBar::Property::INDICATOR_SHOW_DURATION );
+ DALI_TEST_EQUALS( duration, 0.0f, TEST_LOCATION );
+
+ // Render and notify
+ application.SendNotification();
+ application.Render();
+
+ // Do the "ShowIndicator" action
+ Property::Map emptyMap;
+ scrollBar.DoAction( "ShowTransientIndicator", emptyMap );
+
+ // Wait for the specified duration
+ Wait(application);
+
+ // Render and notify
+ application.SendNotification();
+ application.Render();
+
+ // Check that the indicator is now visible
+ DALI_TEST_EQUALS( indicator.GetCurrentOpacity(), 1.0f, TEST_LOCATION );
+
+ // Get the default duration to hide the indicator
+ float hideDuration = scrollBar.GetProperty( ScrollBar::Property::INDICATOR_HIDE_DURATION );
+ float transientDuration = scrollBar.GetProperty( DevelScrollBar::Property::INDICATOR_TRANSIENT_DURATION );
+ float totalVisibleDuration = hideDuration + transientDuration;
+
+ // Check that the default duration is greater than 0
+ DALI_TEST_CHECK( totalVisibleDuration > 0.0f );
+
+ // Wait for the specified duration
+ Wait(application, totalVisibleDuration * 1000);
+
+ // Render and notify
+ application.SendNotification();
+ application.Render();
+
+ // Check that the indicator is now invisible
+ DALI_TEST_EQUALS( indicator.GetCurrentOpacity(), 0.0f, TEST_LOCATION );
+
+ END_TEST;
+}
+
+int UtcDaliToolkitScrollBarActionShowTransientIndicatorDuringHide(void)
+{
+ ToolkitTestApplication application;
+
+ // Create a scroll bar
+ ScrollBar scrollBar = ScrollBar::New();
+ DALI_TEST_CHECK( scrollBar );
+
+ Stage::GetCurrent().Add( scrollBar );
+
+ Actor indicator = scrollBar.GetScrollIndicator();
+ DALI_TEST_CHECK( indicator );
+
+ // Get the default duration to hide the indicator
+ float duration = scrollBar.GetIndicatorHideDuration();
+
+ // Check that the default duration is greater than 0
+ DALI_TEST_CHECK( duration > 0.0f );
+
+ // Make the indicator visible
+ indicator.SetOpacity(1.0f);
+
+ // Render and notify
+ application.SendNotification();
+ application.Render();
+
+ // Check that the indicator is visible
+ DALI_TEST_EQUALS( indicator.GetCurrentOpacity(), 1.0f, TEST_LOCATION );
+
+ // Hide the indicator
+ scrollBar.HideIndicator();
+
+ // Wait for half the specified duration
+ Wait(application, duration * 0.5f * 1000);
+
+ // Render and notify
+ application.SendNotification();
+ application.Render();
+
+ // Check that the indicator is now partially hidden
+ DALI_TEST_CHECK( indicator.GetCurrentOpacity() < 1.0f );
+
+ // Now interrupt the Hide with a DoAction( "ShowTransientIndicator" )
+
+ // Get the default duration to hide the indicator
+ duration = scrollBar.GetProperty( ScrollBar::Property::INDICATOR_SHOW_DURATION );
+
+ // Check that the default duration is greater than 0
+ DALI_TEST_CHECK( duration > 0.0f );
+
+ // Do the "ShowIndicator" action
+ Property::Map emptyMap;
+ scrollBar.DoAction( "ShowTransientIndicator", emptyMap );
+
+ // Wait for the specified duration
+ Wait(application, duration * 1000);
+
+ // Render and notify
+ application.SendNotification();
+ application.Render();
+
+ // Check that the indicator is now visible
+ DALI_TEST_EQUALS( indicator.GetCurrentOpacity(), 1.0f, TEST_LOCATION );
+
+ // Get the default duration to hide the indicator
+ float hideDuration = scrollBar.GetProperty( ScrollBar::Property::INDICATOR_HIDE_DURATION );
+ float transientDuration = scrollBar.GetProperty( DevelScrollBar::Property::INDICATOR_TRANSIENT_DURATION );
+ float totalVisibleDuration = hideDuration + transientDuration;
+
+ // Check that the default duration is greater than 0
+ DALI_TEST_CHECK( totalVisibleDuration > 0.0f );
+
+ // Wait for the specified duration
+ Wait(application, totalVisibleDuration * 1000);
+
+ // Render and notify
+ application.SendNotification();
+ application.Render();
+
+ // Check that the indicator is now invisible
+ DALI_TEST_EQUALS( indicator.GetCurrentOpacity(), 0.0f, TEST_LOCATION );
+
+ END_TEST;
+}
+
int UtcDaliToolkitScrollBarPanFinishedSignalP(void)
{
ToolkitTestApplication application;
diff --git a/build/tizen/dali-toolkit/Makefile.am b/build/tizen/dali-toolkit/Makefile.am
index 67b723c..7127db2 100644
--- a/build/tizen/dali-toolkit/Makefile.am
+++ b/build/tizen/dali-toolkit/Makefile.am
@@ -106,6 +106,7 @@ develapieffectsviewdir = $(develapicontrolsdir)/effects-view
develapigaussianblurviewdir = $(develapicontrolsdir)/gaussian-blur-view
develapimagnifierdir = $(develapicontrolsdir)/magnifier
develapiitemviewdir = $(develapicontrolsdir)/scrollable/item-view
+develapiscrollbardir = $(develapicontrolsdir)/scroll-bar
develapinavigationviewdir = $(develapicontrolsdir)/navigation-view
develapipageturnviewdir = $(develapicontrolsdir)/page-turn-view
develapipopupdir = $(develapicontrolsdir)/popup
@@ -135,6 +136,7 @@ develapifocusmanager_HEADERS = $(devel_api_focus_manager_header_files)
develapigaussianblurview_HEADERS = $(devel_api_gaussian_blur_view_header_files)
develapiimageloader_HEADERS = $(devel_api_image_loader_header_files)
develapiitemview_HEADERS = $(devel_api_item_view_header_files)
+develapiscrollbar_HEADERS = $(devel_api_scroll_bar_header_files)
develapimagnifier_HEADERS = $(devel_api_magnifier_header_files)
develapinavigationview_HEADERS = $(devel_api_navigation_view_header_files)
develapipageturnview_HEADERS = $(devel_api_page_turn_view_header_files)
diff --git a/dali-toolkit/devel-api/controls/scroll-bar/scroll-bar-devel.h b/dali-toolkit/devel-api/controls/scroll-bar/scroll-bar-devel.h
new file mode 100644
index 0000000..7d16c75
--- /dev/null
+++ b/dali-toolkit/devel-api/controls/scroll-bar/scroll-bar-devel.h
@@ -0,0 +1,78 @@
+#ifndef DALI_TOOLKIT_SCROLL_BAR_DEVEL_H
+#define DALI_TOOLKIT_SCROLL_BAR_DEVEL_H
+
+/*
+ * Copyright (c) 2017 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// INTERNAL INCLUDES
+#include
+
+namespace Dali
+{
+
+namespace Toolkit
+{
+
+namespace DevelScrollBar
+{
+
+namespace Property
+{
+
+/**
+ * @brief ScrollBar is a UI component that can be linked to the scrollable objects
+ * indicating the current scroll position of the scrollable object.
+ *
+ * Actions
+ * | %Action Name | Attributes | Description |
+ * |------------------------|-------------------------|-------------------------------------------|
+ * | ShowIndicator | Doesn't have attributes | Shows the scroll-indicator |
+ * | HideIndicator | Doesn't have attributes | Hides the scroll-indicator |
+ * | ShowTransientIndicator | Doesn't have attributes | Shows the scroll-indicator for short time |
+ */
+
+/**
+ * @brief Enumeration for the instance of properties belonging to the ScrollBar class.
+ */
+enum
+{
+ SCROLL_DIRECTION = Dali::Toolkit::ScrollBar::Property::SCROLL_DIRECTION,
+ INDICATOR_HEIGHT_POLICY = Dali::Toolkit::ScrollBar::Property::INDICATOR_HEIGHT_POLICY,
+ INDICATOR_FIXED_HEIGHT = Dali::Toolkit::ScrollBar::Property::INDICATOR_FIXED_HEIGHT,
+ INDICATOR_SHOW_DURATION = Dali::Toolkit::ScrollBar::Property::INDICATOR_SHOW_DURATION,
+ INDICATOR_HIDE_DURATION = Dali::Toolkit::ScrollBar::Property::INDICATOR_HIDE_DURATION,
+ SCROLL_POSITION_INTERVALS = Dali::Toolkit::ScrollBar::Property::SCROLL_POSITION_INTERVALS,
+ INDICATOR_MINIMUM_HEIGHT = Dali::Toolkit::ScrollBar::Property::INDICATOR_MINIMUM_HEIGHT,
+ INDICATOR_START_PADDING = Dali::Toolkit::ScrollBar::Property::INDICATOR_START_PADDING,
+ INDICATOR_END_PADDING = Dali::Toolkit::ScrollBar::Property::INDICATOR_END_PADDING,
+
+ /**
+ * @brief The duration that transient indicators will remain fully visible.
+ * @details name "indicatorTransientDuration", type float.
+ */
+ INDICATOR_TRANSIENT_DURATION = INDICATOR_END_PADDING + 1
+};
+
+} // namespace Property
+
+} // namespace DevelScrollBar
+
+} // namespace Toolkit
+
+} // namespace Dali
+
+#endif // DALI_TOOLKIT_SCROLL_BAR_DEVEL_H
diff --git a/dali-toolkit/devel-api/file.list b/dali-toolkit/devel-api/file.list
index 3108cc3..7702ef4 100755
--- a/dali-toolkit/devel-api/file.list
+++ b/dali-toolkit/devel-api/file.list
@@ -69,6 +69,9 @@ devel_api_item_view_header_files = \
$(devel_api_src_dir)/controls/scrollable/item-view/default-item-layout-property.h \
$(devel_api_src_dir)/controls/scrollable/item-view/item-view-devel.h
+devel_api_scroll_bar_header_files = \
+ $(devel_api_src_dir)/controls/scroll-bar/scroll-bar-devel.h
+
devel_api_magnifier_header_files = \
$(devel_api_src_dir)/controls/magnifier/magnifier.h
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 7612185..5adc065 100755
--- a/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.cpp
+++ b/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.cpp
@@ -27,10 +27,12 @@
#include
#include
#include
+#include
// INTERNAL INCLUDES
#include
#include
+#include
using namespace Dali;
@@ -46,6 +48,7 @@ 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);
/**
* Indicator size constraint
@@ -154,19 +157,25 @@ 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_SIGNAL_REGISTRATION( Toolkit, ScrollBar, "panFinished", PAN_FINISHED_SIGNAL )
+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_DEVEL_PROPERTY_REGISTRATION( Toolkit, ScrollBar, "indicatorTransientDuration", FLOAT, INDICATOR_TRANSIENT_DURATION )
+
+DALI_SIGNAL_REGISTRATION( Toolkit, ScrollBar, "panFinished", PAN_FINISHED_SIGNAL )
DALI_SIGNAL_REGISTRATION( Toolkit, ScrollBar, "scrollPositionIntervalReached", SCROLL_POSITION_INTERVAL_REACHED_SIGNAL )
+DALI_ACTION_REGISTRATION( Toolkit, ScrollBar, "ShowIndicator", ACTION_SHOW_INDICATOR )
+DALI_ACTION_REGISTRATION( Toolkit, ScrollBar, "HideIndicator", ACTION_HIDE_INDICATOR )
+DALI_ACTION_REGISTRATION( Toolkit, ScrollBar, "ShowTransientIndicator", ACTION_SHOW_TRANSIENT_INDICATOR )
+
DALI_TYPE_REGISTRATION_END()
const char* SCROLL_DIRECTION_NAME[] = {"Vertical", "Horizontal"};
@@ -185,6 +194,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),
@@ -404,6 +414,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.
@@ -688,6 +722,11 @@ void ScrollBar::SetProperty( BaseObject* object, Property::Index index, const Pr
scrollBarImpl.ApplyConstraints();
break;
}
+ case Toolkit::DevelScrollBar::Property::INDICATOR_TRANSIENT_DURATION:
+ {
+ scrollBarImpl.mTransientIndicatorDuration = value.Get();
+ break;
+ }
}
}
}
@@ -759,11 +798,48 @@ Property::Value ScrollBar::GetProperty( BaseObject* object, Property::Index inde
value = scrollBarImpl.mIndicatorEndPadding;
break;
}
+ case Toolkit::DevelScrollBar::Property::INDICATOR_TRANSIENT_DURATION:
+ {
+ value = scrollBarImpl.mTransientIndicatorDuration;
+ break;
+ }
}
}
return value;
}
+bool ScrollBar::DoAction( BaseObject* object, const std::string& actionName, const Property::Map& attributes )
+{
+ bool ret = false;
+
+ Dali::BaseHandle handle( object );
+
+ Toolkit::ScrollBar scrollBar = Toolkit::ScrollBar::DownCast( handle );
+
+ DALI_ASSERT_DEBUG( scrollBar );
+
+ if( scrollBar )
+ {
+ if( 0 == strcmp( actionName.c_str(), ACTION_SHOW_INDICATOR ) )
+ {
+ GetImpl( scrollBar ).ShowIndicator();
+ ret = true;
+ }
+ else if( 0 == strcmp( actionName.c_str(), ACTION_HIDE_INDICATOR ) )
+ {
+ GetImpl( scrollBar ).HideIndicator();
+ ret = true;
+ }
+ else if( 0 == strcmp( actionName.c_str(), ACTION_SHOW_TRANSIENT_INDICATOR ) )
+ {
+ GetImpl( scrollBar ).ShowTransientIndicator();
+ ret = true;
+ }
+ }
+
+ return ret;
+}
+
Toolkit::ScrollBar ScrollBar::New(Toolkit::ScrollBar::Direction direction)
{
// Create the implementation, temporarily owned by this handle on stack
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..95b0901 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()
@@ -193,6 +198,15 @@ public:
*/
static Property::Value GetProperty( BaseObject* object, Property::Index index );
+ /**
+ * 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
/**
@@ -278,6 +292,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 069d5b6..3063cbc 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
@@ -26,6 +26,7 @@
#include
#include
#include
+#include
#include
// INTERNAL INCLUDES
@@ -1986,8 +1987,9 @@ void ScrollView::OnChildAdd(Actor& child)
if( mTransientScrollBar )
{
- scrollBar.SetVisible( false );
- scrollBar.HideIndicator();
+ // Show the scroll-indicator for a brief period
+ Property::Map emptyMap;
+ scrollBar.DoAction( "ShowTransientIndicator", emptyMap );
}
}
else if(mAlterChild)
@@ -2495,7 +2497,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 ff865b0..bd48ca7 100644
--- a/dali-toolkit/styles/1920x1080/dali-toolkit-default-theme.json
+++ b/dali-toolkit/styles/1920x1080/dali-toolkit-default-theme.json
@@ -166,7 +166,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 105b87b..43b99ea 100644
--- a/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json
+++ b/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json
@@ -165,7 +165,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 db96431..aa735b3 100644
--- a/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json
+++ b/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json
@@ -139,7 +139,8 @@
"TextSelectionScrollBar":
{
"indicatorShowDuration":0.25,
- "indicatorHideDuration":0.25
+ "indicatorHideDuration":0.25,
+ "indicatorTransientDuration":1.0
},
"TextSelectionScrollIndicator":
{