+Toolkit::ScrollBar::IndicatorHeightPolicy ScrollBar::GetIndicatorHeightPolicy() const
+{
+ return mIndicatorHeightPolicy;
+}
+
+void ScrollBar::SetIndicatorFixedHeight( float height )
+{
+ mIndicatorFixedHeight = height;
+
+ if(mIndicatorHeightPolicy == Toolkit::ScrollBar::Fixed)
+ {
+ mIndicator.SetSize(Self().GetCurrentSize().width, mIndicatorFixedHeight);
+ }
+}
+
+float ScrollBar::GetIndicatorFixedHeight() const
+{
+ return mIndicatorFixedHeight;
+}
+
+void ScrollBar::SetIndicatorShowDuration( float durationSeconds )
+{
+ mIndicatorShowDuration = durationSeconds;
+}
+
+float ScrollBar::GetIndicatorShowDuration() const
+{
+ return mIndicatorShowDuration;
+}
+
+void ScrollBar::SetIndicatorHideDuration( float durationSeconds )
+{
+ mIndicatorHideDuration = durationSeconds;
+}
+
+float ScrollBar::GetIndicatorHideDuration() const
+{
+ return mIndicatorHideDuration;
+}
+
+void ScrollBar::OnScrollDirectionPropertySet( Property::Value propertyValue )
+{
+ std::string directionName( propertyValue.Get<std::string>() );
+ if(directionName == "Vertical")
+ {
+ SetScrollDirection(Toolkit::ScrollBar::Vertical);
+ }
+ else if(directionName == "Horizontal")
+ {
+ SetScrollDirection(Toolkit::ScrollBar::Horizontal);
+ }
+ else
+ {
+ DALI_ASSERT_ALWAYS( !"ScrollBar::OnScrollDirectionPropertySet(). Invalid Property value." );
+ }
+}
+
+void ScrollBar::OnIndicatorHeightPolicyPropertySet( Property::Value propertyValue )
+{
+ std::string policyName( propertyValue.Get<std::string>() );
+ if(policyName == "Variable")
+ {
+ SetIndicatorHeightPolicy(Toolkit::ScrollBar::Variable);
+ }
+ else if(policyName == "Fixed")
+ {
+ SetIndicatorHeightPolicy(Toolkit::ScrollBar::Fixed);
+ }
+ else
+ {
+ DALI_ASSERT_ALWAYS( !"ScrollBar::OnIndicatorHeightPolicyPropertySet(). Invalid Property value." );
+ }
+}
+
+bool ScrollBar::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor )
+{
+ Dali::BaseHandle handle( object );
+
+ bool connected( true );
+ Toolkit::ScrollBar scrollBar = Toolkit::ScrollBar::DownCast( handle );
+
+ if( 0 == strcmp( signalName.c_str(), PAN_FINISHED_SIGNAL ) )
+ {
+ scrollBar.PanFinishedSignal().Connect( tracker, functor );
+ }
+ else if( 0 == strcmp( signalName.c_str(), SCROLL_POSITION_INTERVAL_REACHED_SIGNAL ) )
+ {
+ scrollBar.ScrollPositionIntervalReachedSignal().Connect( tracker, functor );
+ }
+ else
+ {
+ // signalName does not match any signal
+ connected = false;
+ }
+
+ return connected;
+}
+
+void ScrollBar::SetProperty( BaseObject* object, Property::Index index, const Property::Value& value )
+{
+ Toolkit::ScrollBar scrollBar = Toolkit::ScrollBar::DownCast( Dali::BaseHandle( object ) );
+
+ if( scrollBar )
+ {
+ ScrollBar& scrollBarImpl( GetImpl( scrollBar ) );
+ switch( index )
+ {
+ case Toolkit::ScrollBar::Property::SCROLL_DIRECTION:
+ {
+ scrollBarImpl.OnScrollDirectionPropertySet( value );
+ break;
+ }
+ case Toolkit::ScrollBar::Property::INDICATOR_HEIGHT_POLICY:
+ {
+ scrollBarImpl.OnIndicatorHeightPolicyPropertySet( value );
+ break;
+ }
+ case Toolkit::ScrollBar::Property::INDICATOR_FIXED_HEIGHT:
+ {
+ 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;
+ }
+ case Toolkit::ScrollBar::Property::SCROLL_POSITION_INTERVALS:
+ {
+ Property::Array* array = value.GetArray();
+ if( array )
+ {
+ Dali::Vector<float> positions;
+ size_t positionCount = array->Count();
+ positions.Resize( positionCount );
+ for( size_t i = 0; i != positionCount; ++i )
+ {
+ array->GetElementAt( i ).Get( positions[i] );
+ }
+
+ scrollBarImpl.SetScrollPositionIntervals(positions);
+ }
+ break;
+ }
+ }
+ }
+}
+
+Property::Value ScrollBar::GetProperty( BaseObject* object, Property::Index index )
+{
+ Property::Value value;
+
+ Toolkit::ScrollBar scrollBar = Toolkit::ScrollBar::DownCast( Dali::BaseHandle( object ) );
+
+ if( scrollBar )
+ {
+ ScrollBar& scrollBarImpl( GetImpl( scrollBar ) );
+ switch( index )
+ {
+ case Toolkit::ScrollBar::Property::SCROLL_DIRECTION:
+ {
+ value = SCROLL_DIRECTION_NAME[ scrollBarImpl.GetScrollDirection() ];
+ break;
+ }
+ case Toolkit::ScrollBar::Property::INDICATOR_HEIGHT_POLICY:
+ {
+ value = INDICATOR_HEIGHT_POLICY_NAME[ scrollBarImpl.GetIndicatorHeightPolicy() ];
+ break;
+ }
+ case Toolkit::ScrollBar::Property::INDICATOR_FIXED_HEIGHT:
+ {
+ 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;
+ }
+ case Toolkit::ScrollBar::Property::SCROLL_POSITION_INTERVALS:
+ {
+ Property::Value value( Property::ARRAY );
+ Property::Array* array = value.GetArray();
+
+ if( array )
+ {
+ Dali::Vector<float> positions = scrollBarImpl.GetScrollPositionIntervals();
+ size_t positionCount( array->Count() );
+ for( size_t i( 0 ); i != positionCount; ++i )
+ {
+ array->PushBack( positions[i] );
+ }
+ }
+ break;
+ }
+ }
+ }
+ return value;
+}
+
+Toolkit::ScrollBar ScrollBar::New(Toolkit::ScrollBar::Direction direction)