const Vector4 DEFAULT_INDICATOR_NINE_PATCH_BORDER(4.0f, 9.0f, 7.0f, 11.0f);
const float MINIMUM_INDICATOR_HEIGHT(20.0f); // The minimum indicator height for the nine patch border
const float DEFAULT_SLIDER_DEPTH(1.0f);
-const float INDICATOR_SHOW_TIME(0.5f);
-const float INDICATOR_HIDE_TIME(0.5f);
+const float DEFAULT_INDICATOR_SHOW_DURATION(0.5f);
+const float DEFAULT_INDICATOR_HIDE_DURATION(0.5f);
const float DEFAULT_PAN_GESTURE_PROCESS_TIME(16.7f); // 16.7 milliseconds, i.e. one frame
const float DEFAULT_INDICATOR_FIXED_HEIGHT(80.0f);
const Property::Index ScrollBar::PROPERTY_INDICATOR_HEIGHT_POLICY( Internal::ScrollBar::SCROLLBAR_PROPERTY_START_INDEX );
const Property::Index ScrollBar::PROPERTY_INDICATOR_FIXED_HEIGHT( Internal::ScrollBar::SCROLLBAR_PROPERTY_START_INDEX + 1 );
+const Property::Index ScrollBar::PROPERTY_INDICATOR_SHOW_DURATION( Internal::ScrollBar::SCROLLBAR_PROPERTY_START_INDEX + 2 );
+const Property::Index ScrollBar::PROPERTY_INDICATOR_HIDE_DURATION( Internal::ScrollBar::SCROLLBAR_PROPERTY_START_INDEX + 3 );
namespace Internal
{
PropertyRegistration property1( typeRegistration, "indicator-height-policy", Toolkit::ScrollBar::PROPERTY_INDICATOR_HEIGHT_POLICY, Property::STRING, &ScrollBar::SetProperty, &ScrollBar::GetProperty );
PropertyRegistration property2( typeRegistration, "indicator-fixed-height", Toolkit::ScrollBar::PROPERTY_INDICATOR_FIXED_HEIGHT, Property::FLOAT, &ScrollBar::SetProperty, &ScrollBar::GetProperty );
+PropertyRegistration property3( typeRegistration, "indicator-show-duration", Toolkit::ScrollBar::PROPERTY_INDICATOR_SHOW_DURATION, Property::FLOAT, &ScrollBar::SetProperty, &ScrollBar::GetProperty );
+PropertyRegistration property4( typeRegistration, "indicator-hide-duration", Toolkit::ScrollBar::PROPERTY_INDICATOR_HIDE_DURATION, Property::FLOAT, &ScrollBar::SetProperty, &ScrollBar::GetProperty );
}
ScrollBar::ScrollBar()
-: mScrollStart(0.0f),
+: mIndicatorShowDuration(DEFAULT_INDICATOR_SHOW_DURATION),
+ mIndicatorHideDuration(DEFAULT_INDICATOR_HIDE_DURATION),
+ mScrollStart(0.0f),
mIsPanning(false),
mCurrentScrollPosition(0.0f),
mIndicatorHeightPolicy(Toolkit::ScrollBar::Variable),
mAnimation.Reset();
}
- mAnimation = Animation::New( INDICATOR_SHOW_TIME );
- mAnimation.OpacityTo( Self(), 1.0f, AlphaFunctions::EaseIn );
- mAnimation.Play();
+ if(mIndicatorShowDuration > 0.0f)
+ {
+ mAnimation = Animation::New( mIndicatorShowDuration );
+ mAnimation.OpacityTo( Self(), 1.0f, AlphaFunctions::EaseIn );
+ mAnimation.Play();
+ }
+ else
+ {
+ Self().SetOpacity(1.0f);
+ }
}
void ScrollBar::Hide()
mAnimation.Reset();
}
- mAnimation = Animation::New( INDICATOR_HIDE_TIME );
- mAnimation.OpacityTo( Self(), 0.0f, AlphaFunctions::EaseIn );
- mAnimation.Play();
+ if(mIndicatorHideDuration > 0.0f)
+ {
+ mAnimation = Animation::New( mIndicatorHideDuration );
+ mAnimation.OpacityTo( Self(), 0.0f, AlphaFunctions::EaseIn );
+ mAnimation.Play();
+ }
+ else
+ {
+ Self().SetOpacity(0.0f);
+ }
}
bool ScrollBar::OnPanGestureProcessTick()
return mIndicatorFixedHeight;
}
+void ScrollBar::SetIndicatorShowDuration( float durationSeconds )
+{
+ mIndicatorShowDuration = durationSeconds;
+}
+
+float ScrollBar::GetIndicatorShowDuration()
+{
+ return mIndicatorShowDuration;
+}
+
+void ScrollBar::SetIndicatorHideDuration( float durationSeconds )
+{
+ mIndicatorHideDuration = durationSeconds;
+}
+
+float ScrollBar::GetIndicatorHideDuration()
+{
+ return mIndicatorHideDuration;
+}
+
void ScrollBar::OnIndicatorHeightPolicyPropertySet( Property::Value propertyValue )
{
std::string policyName( propertyValue.Get<std::string>() );
scrollBarImpl.SetIndicatorFixedHeight(value.Get<float>());
break;
}
+ case Toolkit::ScrollBar::PROPERTY_INDICATOR_SHOW_DURATION:
+ {
+ scrollBarImpl.SetIndicatorShowDuration(value.Get<float>());
+ break;
+ }
+ case Toolkit::ScrollBar::PROPERTY_INDICATOR_HIDE_DURATION:
+ {
+ scrollBarImpl.SetIndicatorHideDuration(value.Get<float>());
+ break;
+ }
}
}
}
value = scrollBarImpl.GetIndicatorFixedHeight();
break;
}
+ case Toolkit::ScrollBar::PROPERTY_INDICATOR_SHOW_DURATION:
+ {
+ value = scrollBarImpl.GetIndicatorShowDuration();
+ break;
+ }
+ case Toolkit::ScrollBar::PROPERTY_INDICATOR_HIDE_DURATION:
+ {
+ value = scrollBarImpl.GetIndicatorHideDuration();
+ break;
+ }
}
}
return value;
float GetIndicatorFixedHeight();
/**
+ * @copydoc Toolkit::ScrollBar::SetIndicatorShowDuration()
+ */
+ void SetIndicatorShowDuration( float durationSeconds );
+
+ /**
+ * @copydoc Toolkit::ScrollBar::GetIndicatorShowDuration()
+ */
+ float GetIndicatorShowDuration();
+
+ /**
+ * @copydoc Toolkit::ScrollBar::SetIndicatorHideDuration()
+ */
+ void SetIndicatorHideDuration( float durationSeconds );
+
+ /**
+ * @copydoc Toolkit::ScrollBar::GetIndicatorHideDuration()
+ */
+ float GetIndicatorHideDuration();
+
+ /**
* @copydoc Toolkit::ScrollBar::Show()
*/
void Show();
ImageActor mIndicator; ///< Image of scroll indicator.
Animation mAnimation; ///< Scroll indicator Show/Hide Animation.
+ 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)
Vector3 mGestureDisplacement; ///< Gesture Displacement.
typedef SignalV2< void ( float ) > ScrollPositionNotifiedSignalType;
// Properties
- static const Property::Index PROPERTY_INDICATOR_HEIGHT_POLICY; ///< name "indicator-height-policy", type STRING
- static const Property::Index PROPERTY_INDICATOR_FIXED_HEIGHT; ///< name "indicator-fixed-height", type FLOAT
+ static const Property::Index PROPERTY_INDICATOR_HEIGHT_POLICY; ///< name "indicator-height-policy", @see SetIndicatorHeightPolicy(), type STRING
+ static const Property::Index PROPERTY_INDICATOR_FIXED_HEIGHT; ///< name "indicator-fixed-height", @see SetIndicatorFixedHeight(), type FLOAT
+ static const Property::Index PROPERTY_INDICATOR_SHOW_DURATION; ///< name "indicator-show-duration", @see SetIndicatorShowDuration(), type FLOAT
+ static const Property::Index PROPERTY_INDICATOR_HIDE_DURATION; ///< name "indicator-hide-duration", @see SetIndicatorHideDuration(), type FLOAT
public:
float GetIndicatorFixedHeight();
/**
+ * @brief Sets the duration in second for the scroll indicator to become fully visible
+ *
+ * @pre The scroll bar actor has been initialised.
+ *
+ * @param[in] durationSeconds The duration for the scroll indicator to become fully visible
+ */
+ void SetIndicatorShowDuration( float durationSeconds );
+
+ /**
+ * @brief Gets the duration in second for the scroll indicator to become fully visible
+ * @return The duration for the scroll indicator to become fully visible
+ */
+ float GetIndicatorShowDuration();
+
+ /**
+ * @brief Sets the duration in second for the scroll indicator to become fully invisible
+ *
+ * @pre The scroll bar actor has been initialised.
+ *
+ * @param[in] durationSeconds The duration for the scroll indicator to become fully invisible
+ */
+ void SetIndicatorHideDuration( float durationSeconds );
+
+ /**
+ * @brief Gets the duration in second for the scroll indicator to become fully invisible
+ * @return The duration for the scroll indicator to become fully invisible
+ */
+ float GetIndicatorHideDuration();
+
+ /**
* @brief Shows the scroll indicator
*/
void Show();