#include <dali-toolkit/internal/controls/slider/slider-impl.h>
// EXTERNAL INCLUDES
+#include <sstream>
#include <dali/public-api/events/touch-event.h>
#include <dali/public-api/object/type-registry.h>
-
-// EXTERNAL INCLUDES
-#include <dali-toolkit/public-api/controls/control-impl.h>
+#include <dali/public-api/object/type-registry-helper.h>
#include <dali/public-api/images/resource-image.h>
-#include <sstream>
+// INTERNAL INCLUDES
+#include <dali-toolkit/public-api/controls/control-impl.h>
using namespace Dali;
namespace Toolkit
{
-// Properties
-const Property::Index Slider::LOWER_BOUND_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX;
-const Property::Index Slider::UPPER_BOUND_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 1;
-
-const Property::Index Slider::VALUE_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 2;
-const Property::Index Slider::HIT_REGION_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 3;
-const Property::Index Slider::BACKING_REGION_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 4;
-const Property::Index Slider::HANDLE_REGION_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 5;
-
-const Property::Index Slider::BACKING_IMAGE_NAME_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 6;
-const Property::Index Slider::HANDLE_IMAGE_NAME_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 7;
-const Property::Index Slider::PROGRESS_IMAGE_NAME_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 8;
-const Property::Index Slider::POPUP_IMAGE_NAME_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 9;
-const Property::Index Slider::POPUP_ARROW_IMAGE_NAME_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 10;
-
-const Property::Index Slider::DISABLE_COLOR_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 11;
-const Property::Index Slider::POPUP_TEXT_COLOR_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 12;
-
-const Property::Index Slider::VALUE_PRECISION_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 13;
-
-const Property::Index Slider::SHOW_POPUP_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 14;
-const Property::Index Slider::SHOW_VALUE_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 15;
-
-const Property::Index Slider::ENABLED_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 16;
-
-const Property::Index Slider::MARKS_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 17;
-const Property::Index Slider::SNAP_TO_MARKS_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 18;
-const Property::Index Slider::MARK_TOLERANCE_PROPERTY = Internal::Slider::SLIDER_PROPERTY_START_INDEX + 19;
-
namespace Internal
{
-namespace
+namespace // Unnamed namespace
+{
+
+BaseHandle Create()
{
+ return Dali::Toolkit::Slider::New();
+}
+
+// Setup properties, signals and actions using the type-registry.
+DALI_TYPE_REGISTRATION_BEGIN( Toolkit::Slider, Toolkit::Control, Create )
+
+DALI_PROPERTY_REGISTRATION( Slider, "lower-bound", FLOAT, LOWER_BOUND )
+DALI_PROPERTY_REGISTRATION( Slider, "upper-bound", FLOAT, UPPER_BOUND )
+DALI_PROPERTY_REGISTRATION( Slider, "value", FLOAT, VALUE )
+DALI_PROPERTY_REGISTRATION( Slider, "hit-region", VECTOR2, HIT_REGION )
+DALI_PROPERTY_REGISTRATION( Slider, "backing-region", VECTOR2, BACKING_REGION )
+DALI_PROPERTY_REGISTRATION( Slider, "handle-region", VECTOR2, HANDLE_REGION )
+DALI_PROPERTY_REGISTRATION( Slider, "backing-image-name", STRING, BACKING_IMAGE_NAME )
+DALI_PROPERTY_REGISTRATION( Slider, "handle-image-name", STRING, HANDLE_IMAGE_NAME )
+DALI_PROPERTY_REGISTRATION( Slider, "progress-image-name", STRING, PROGRESS_IMAGE_NAME )
+DALI_PROPERTY_REGISTRATION( Slider, "popup-image-name", STRING, POPUP_IMAGE_NAME )
+DALI_PROPERTY_REGISTRATION( Slider, "popup-arrow-image-name", STRING, POPUP_ARROW_IMAGE_NAME )
+DALI_PROPERTY_REGISTRATION( Slider, "disable-color", VECTOR4, DISABLE_COLOR )
+DALI_PROPERTY_REGISTRATION( Slider, "popup-text-color", VECTOR4, POPUP_TEXT_COLOR )
+DALI_PROPERTY_REGISTRATION( Slider, "value-precision", INTEGER, VALUE_PRECISION )
+DALI_PROPERTY_REGISTRATION( Slider, "show-popup", BOOLEAN, SHOW_POPUP )
+DALI_PROPERTY_REGISTRATION( Slider, "show-value", BOOLEAN, SHOW_VALUE )
+DALI_PROPERTY_REGISTRATION( Slider, "enabled", BOOLEAN, ENABLED )
+DALI_PROPERTY_REGISTRATION( Slider, "marks", ARRAY, MARKS )
+DALI_PROPERTY_REGISTRATION( Slider, "snap-to-marks", BOOLEAN, SNAP_TO_MARKS )
+DALI_PROPERTY_REGISTRATION( Slider, "mark-tolerance", FLOAT, MARK_TOLERANCE )
+
+DALI_SIGNAL_REGISTRATION( Slider, "value-changed", SIGNAL_VALUE_CHANGED )
+DALI_SIGNAL_REGISTRATION( Slider, "mark", SIGNAL_MARK )
+
+DALI_TYPE_REGISTRATION_END()
+
const float BACKING_Z = -0.1f;
const float PROGRESS_Z = 0.1f;
const float HANDLE_Z = 1.0f;
const bool DEFAULT_ENABLED = true;
const bool DEFAULT_SNAP_TO_MARKS = false;
-// Signals
-
-const char* const SIGNAL_VALUE_CHANGED = "value-changed";
-const char* const SIGNAL_MARK = "mark";
-
-BaseHandle Create()
-{
- return Dali::Toolkit::Slider::New();
-}
-
-TypeRegistration typeRegistration( typeid( Dali::Toolkit::Slider ), typeid( Dali::Toolkit::Control ), Create );
-
-SignalConnectorType signalConnector1( typeRegistration, SIGNAL_VALUE_CHANGED, &Toolkit::Internal::Slider::DoConnectSignal );
-SignalConnectorType signalConnector2( typeRegistration, SIGNAL_MARK, &Toolkit::Internal::Slider::DoConnectSignal );
-
-PropertyRegistration property1( typeRegistration, "lower-bound", Toolkit::Slider::LOWER_BOUND_PROPERTY, Property::FLOAT, &Slider::SetProperty, &Slider::GetProperty );
-PropertyRegistration property2( typeRegistration, "upper-bound", Toolkit::Slider::UPPER_BOUND_PROPERTY, Property::FLOAT, &Slider::SetProperty, &Slider::GetProperty );
-PropertyRegistration property3( typeRegistration, "value", Toolkit::Slider::VALUE_PROPERTY, Property::FLOAT, &Slider::SetProperty, &Slider::GetProperty );
-
-PropertyRegistration property4( typeRegistration, "hit-region", Toolkit::Slider::HIT_REGION_PROPERTY, Property::VECTOR2, &Slider::SetProperty, &Slider::GetProperty );
-PropertyRegistration property5( typeRegistration, "backing-region", Toolkit::Slider::BACKING_REGION_PROPERTY, Property::VECTOR2, &Slider::SetProperty, &Slider::GetProperty );
-PropertyRegistration property6( typeRegistration, "handle-region", Toolkit::Slider::HANDLE_REGION_PROPERTY, Property::VECTOR2, &Slider::SetProperty, &Slider::GetProperty );
-
-PropertyRegistration property7( typeRegistration, "backing-image-name", Toolkit::Slider::BACKING_IMAGE_NAME_PROPERTY, Property::STRING, &Slider::SetProperty, &Slider::GetProperty );
-PropertyRegistration property8( typeRegistration, "handle-image-name", Toolkit::Slider::HANDLE_IMAGE_NAME_PROPERTY, Property::STRING, &Slider::SetProperty, &Slider::GetProperty );
-PropertyRegistration property9( typeRegistration, "progress-image-name", Toolkit::Slider::PROGRESS_IMAGE_NAME_PROPERTY, Property::STRING, &Slider::SetProperty, &Slider::GetProperty );
-PropertyRegistration property10( typeRegistration, "popup-image-name", Toolkit::Slider::POPUP_IMAGE_NAME_PROPERTY, Property::STRING, &Slider::SetProperty, &Slider::GetProperty );
-PropertyRegistration property11( typeRegistration, "popup-arrow-image-name", Toolkit::Slider::POPUP_ARROW_IMAGE_NAME_PROPERTY, Property::STRING, &Slider::SetProperty, &Slider::GetProperty );
-
-PropertyRegistration property12( typeRegistration, "disable-color", Toolkit::Slider::DISABLE_COLOR_PROPERTY, Property::VECTOR4, &Slider::SetProperty, &Slider::GetProperty );
-PropertyRegistration property13( typeRegistration, "popup-text-color", Toolkit::Slider::POPUP_TEXT_COLOR_PROPERTY, Property::VECTOR4, &Slider::SetProperty, &Slider::GetProperty );
-
-PropertyRegistration property14( typeRegistration, "value-precision", Toolkit::Slider::VALUE_PRECISION_PROPERTY, Property::INTEGER, &Slider::SetProperty, &Slider::GetProperty );
-
-PropertyRegistration property15( typeRegistration, "show-popup", Toolkit::Slider::SHOW_POPUP_PROPERTY, Property::BOOLEAN, &Slider::SetProperty, &Slider::GetProperty );
-PropertyRegistration property16( typeRegistration, "show-value", Toolkit::Slider::SHOW_VALUE_PROPERTY, Property::BOOLEAN, &Slider::SetProperty, &Slider::GetProperty );
-
-PropertyRegistration property17( typeRegistration, "enabled", Toolkit::Slider::ENABLED_PROPERTY, Property::BOOLEAN, &Slider::SetProperty, &Slider::GetProperty );
-
-PropertyRegistration property18( typeRegistration, "marks", Toolkit::Slider::MARKS_PROPERTY, Property::ARRAY, &Slider::SetProperty, &Slider::GetProperty );
-PropertyRegistration property19( typeRegistration, "snap-to-marks", Toolkit::Slider::SNAP_TO_MARKS_PROPERTY, Property::BOOLEAN, &Slider::SetProperty, &Slider::GetProperty );
-PropertyRegistration property20( typeRegistration, "mark-tolerance", Toolkit::Slider::MARK_TOLERANCE_PROPERTY, Property::FLOAT, &Slider::SetProperty, &Slider::GetProperty );
-
-} // namespace
+} // Unnamed namespace
///////////////////////////////////////////////////////////////////////////////////////////////////
// Slider
std::stringstream ss;
ss.precision( GetValuePrecision() );
ss << std::fixed << clampledValue;
+
mHandleValueTextView.SetText( ss.str() );
}
}
ImageActor Slider::CreateBacking()
{
ImageActor backing = ImageActor::New();
+ backing.SetRelayoutEnabled( false );
backing.SetParentOrigin( ParentOrigin::CENTER );
backing.SetAnchorPoint( AnchorPoint::CENTER );
backing.SetZ( BACKING_Z );
void Slider::SetBackingImageName( const std::string& imageName )
{
- if( mBacking && imageName != String::EMPTY )
+ if( mBacking && ( imageName.size() > 0 ) )
{
Image image = ResourceImage::New( imageName );
mBacking.SetImage( image );
ImageActor Slider::CreateProgress()
{
ImageActor progress = ImageActor::New();
+ progress.SetRelayoutEnabled( false );
progress.SetParentOrigin( ParentOrigin::CENTER_LEFT );
progress.SetAnchorPoint( AnchorPoint::CENTER_LEFT );
progress.SetZ( PROGRESS_Z );
void Slider::SetProgressImageName( const std::string& imageName )
{
- if( mProgress && imageName != String::EMPTY )
+ if( mProgress && ( imageName.size() > 0 ) )
{
Image image = ResourceImage::New( imageName );
mProgress.SetImage( image );
void Slider::CreatePopupImage( const std::string& imageName )
{
- if( mPopup && imageName != String::EMPTY )
+ if( mPopup && ( imageName.size() > 0 ) )
{
Image image = ResourceImage::New( imageName );
mPopup.SetImage( image );
void Slider::CreatePopupArrowImage( const std::string& imageName )
{
- if( mPopupArrow && imageName != String::EMPTY )
+ if( mPopupArrow && ( imageName.size() > 0 ) )
{
Image image = ResourceImage::New( imageName );
mPopupArrow.SetImage( image );
ImageActor Slider::CreateHandle()
{
ImageActor handle = ImageActor::New();
+ handle.SetRelayoutEnabled( false );
handle.SetParentOrigin( ParentOrigin::CENTER_LEFT );
handle.SetAnchorPoint( AnchorPoint::CENTER );
handle.SetZ( HANDLE_Z );
ImageActor Slider::CreatePopupArrow()
{
ImageActor arrow = ImageActor::New();
+ arrow.SetRelayoutEnabled( false );
arrow.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
arrow.SetAnchorPoint( AnchorPoint::BOTTOM_CENTER );
arrow.SetZ( HANDLE_Z );
Toolkit::TextView textView = Toolkit::TextView::New();
textView.SetParentOrigin( ParentOrigin::CENTER );
textView.SetAnchorPoint( AnchorPoint::CENTER );
- textView.SetSizePolicy( Toolkit::Control::Flexible, Toolkit::Control::Flexible );
textView.SetZ( VALUE_DISPLAY_TEXT_Z );
return textView;
}
ImageActor Slider::CreatePopup()
{
ImageActor popup = ImageActor::New();
+ popup.SetRelayoutEnabled( false );
popup.SetParentOrigin( ParentOrigin::TOP_CENTER );
popup.SetAnchorPoint( AnchorPoint::BOTTOM_CENTER );
void Slider::SetHandleImageName( const std::string& imageName )
{
- if( mHandle && imageName != String::EMPTY )
+ if( mHandle && ( imageName.size() > 0 ) )
{
Image image = ResourceImage::New( imageName );
mHandle.SetImage( image );
outIndex = current;
return true;
}
+
+ if( value < mark )
+ {
+ tail = current - 1;
+ }
else
{
- if( value < mark )
- {
- tail = current - 1;
- }
- else
- {
- head = current + 1;
- }
+ head = current + 1;
}
}
switch ( propertyIndex )
{
- case Toolkit::Slider::LOWER_BOUND_PROPERTY:
+ case Toolkit::Slider::Property::LOWER_BOUND:
{
sliderImpl.SetLowerBound( value.Get< float >() );
break;
}
- case Toolkit::Slider::UPPER_BOUND_PROPERTY:
+ case Toolkit::Slider::Property::UPPER_BOUND:
{
sliderImpl.SetUpperBound( value.Get< float >() );
break;
}
- case Toolkit::Slider::VALUE_PROPERTY:
+ case Toolkit::Slider::Property::VALUE:
{
sliderImpl.SetValue( value.Get< float >() );
break;
}
- case Toolkit::Slider::HIT_REGION_PROPERTY:
+ case Toolkit::Slider::Property::HIT_REGION:
{
sliderImpl.SetHitRegion( value.Get< Vector2 >() );
break;
}
- case Toolkit::Slider::BACKING_REGION_PROPERTY:
+ case Toolkit::Slider::Property::BACKING_REGION:
{
sliderImpl.SetBackingRegion( value.Get< Vector2 >() );
break;
}
- case Toolkit::Slider::HANDLE_REGION_PROPERTY:
+ case Toolkit::Slider::Property::HANDLE_REGION:
{
sliderImpl.SetHandleRegion( value.Get< Vector2 >() );
break;
}
- case Toolkit::Slider::BACKING_IMAGE_NAME_PROPERTY:
+ case Toolkit::Slider::Property::BACKING_IMAGE_NAME:
{
sliderImpl.SetBackingImageName( value.Get< std::string >() );
break;
}
- case Toolkit::Slider::HANDLE_IMAGE_NAME_PROPERTY:
+ case Toolkit::Slider::Property::HANDLE_IMAGE_NAME:
{
sliderImpl.SetHandleImageName( value.Get< std::string >() );
break;
}
- case Toolkit::Slider::PROGRESS_IMAGE_NAME_PROPERTY:
+ case Toolkit::Slider::Property::PROGRESS_IMAGE_NAME:
{
sliderImpl.SetProgressImageName( value.Get< std::string >() );
break;
}
- case Toolkit::Slider::POPUP_IMAGE_NAME_PROPERTY:
+ case Toolkit::Slider::Property::POPUP_IMAGE_NAME:
{
sliderImpl.SetPopupImageName( value.Get< std::string >() );
break;
}
- case Toolkit::Slider::POPUP_ARROW_IMAGE_NAME_PROPERTY:
+ case Toolkit::Slider::Property::POPUP_ARROW_IMAGE_NAME:
{
sliderImpl.SetPopupArrowImageName( value.Get< std::string >() );
break;
}
- case Toolkit::Slider::DISABLE_COLOR_PROPERTY:
+ case Toolkit::Slider::Property::DISABLE_COLOR:
{
sliderImpl.SetDisableColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::Slider::POPUP_TEXT_COLOR_PROPERTY:
+ case Toolkit::Slider::Property::POPUP_TEXT_COLOR:
{
sliderImpl.SetPopupTextColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::Slider::VALUE_PRECISION_PROPERTY:
+ case Toolkit::Slider::Property::VALUE_PRECISION:
{
sliderImpl.SetValuePrecision( value.Get< int >() );
break;
}
- case Toolkit::Slider::SHOW_POPUP_PROPERTY:
+ case Toolkit::Slider::Property::SHOW_POPUP:
{
sliderImpl.SetShowPopup( value.Get< bool >() );
break;
}
- case Toolkit::Slider::SHOW_VALUE_PROPERTY:
+ case Toolkit::Slider::Property::SHOW_VALUE:
{
sliderImpl.SetShowValue( value.Get< bool >() );
break;
}
- case Toolkit::Slider::ENABLED_PROPERTY:
+ case Toolkit::Slider::Property::ENABLED:
{
sliderImpl.SetEnabled( value.Get< bool >() );
break;
}
- case Toolkit::Slider::MARKS_PROPERTY:
+ case Toolkit::Slider::Property::MARKS:
{
sliderImpl.SetMarks( value.Get< Property::Array >() );
break;
}
- case Toolkit::Slider::SNAP_TO_MARKS_PROPERTY:
+ case Toolkit::Slider::Property::SNAP_TO_MARKS:
{
sliderImpl.SetSnapToMarks( value.Get< bool >() );
break;
}
- case Toolkit::Slider::MARK_TOLERANCE_PROPERTY:
+ case Toolkit::Slider::Property::MARK_TOLERANCE:
{
sliderImpl.SetMarkTolerance( value.Get< float >() );
break;
switch ( propertyIndex )
{
- case Toolkit::Slider::LOWER_BOUND_PROPERTY:
+ case Toolkit::Slider::Property::LOWER_BOUND:
{
value = sliderImpl.GetLowerBound();
break;
}
- case Toolkit::Slider::UPPER_BOUND_PROPERTY:
+ case Toolkit::Slider::Property::UPPER_BOUND:
{
value = sliderImpl.GetUpperBound();
break;
}
- case Toolkit::Slider::VALUE_PROPERTY:
+ case Toolkit::Slider::Property::VALUE:
{
value = sliderImpl.GetValue();
break;
}
- case Toolkit::Slider::HIT_REGION_PROPERTY:
+ case Toolkit::Slider::Property::HIT_REGION:
{
value = sliderImpl.GetHitRegion();
break;
}
- case Toolkit::Slider::BACKING_REGION_PROPERTY:
+ case Toolkit::Slider::Property::BACKING_REGION:
{
value = sliderImpl.GetBackingRegion();
break;
}
- case Toolkit::Slider::HANDLE_REGION_PROPERTY:
+ case Toolkit::Slider::Property::HANDLE_REGION:
{
value = sliderImpl.GetHandleRegion();
break;
}
- case Toolkit::Slider::BACKING_IMAGE_NAME_PROPERTY:
+ case Toolkit::Slider::Property::BACKING_IMAGE_NAME:
{
value = sliderImpl.GetBackingImageName();
break;
}
- case Toolkit::Slider::HANDLE_IMAGE_NAME_PROPERTY:
+ case Toolkit::Slider::Property::HANDLE_IMAGE_NAME:
{
value = sliderImpl.GetHandleImageName();
break;
}
- case Toolkit::Slider::PROGRESS_IMAGE_NAME_PROPERTY:
+ case Toolkit::Slider::Property::PROGRESS_IMAGE_NAME:
{
value = sliderImpl.GetProgressImageName();
break;
}
- case Toolkit::Slider::POPUP_IMAGE_NAME_PROPERTY:
+ case Toolkit::Slider::Property::POPUP_IMAGE_NAME:
{
value = sliderImpl.GetPopupImageName();
break;
}
- case Toolkit::Slider::POPUP_ARROW_IMAGE_NAME_PROPERTY:
+ case Toolkit::Slider::Property::POPUP_ARROW_IMAGE_NAME:
{
value = sliderImpl.GetPopupArrowImageName();
break;
}
- case Toolkit::Slider::DISABLE_COLOR_PROPERTY:
+ case Toolkit::Slider::Property::DISABLE_COLOR:
{
value = sliderImpl.GetDisableColor();
break;
}
- case Toolkit::Slider::POPUP_TEXT_COLOR_PROPERTY:
+ case Toolkit::Slider::Property::POPUP_TEXT_COLOR:
{
value = sliderImpl.GetPopupTextColor();
break;
}
- case Toolkit::Slider::VALUE_PRECISION_PROPERTY:
+ case Toolkit::Slider::Property::VALUE_PRECISION:
{
value = sliderImpl.GetValuePrecision();
break;
}
- case Toolkit::Slider::SHOW_POPUP_PROPERTY:
+ case Toolkit::Slider::Property::SHOW_POPUP:
{
value = sliderImpl.GetShowPopup();
break;
}
- case Toolkit::Slider::SHOW_VALUE_PROPERTY:
+ case Toolkit::Slider::Property::SHOW_VALUE:
{
value = sliderImpl.GetShowValue();
break;
}
- case Toolkit::Slider::ENABLED_PROPERTY:
+ case Toolkit::Slider::Property::ENABLED:
{
value = sliderImpl.IsEnabled();
break;
}
- case Toolkit::Slider::MARKS_PROPERTY:
+ case Toolkit::Slider::Property::MARKS:
{
// TODO: Need to be able to return a PropertyArray
// value = sliderImpl.GetMarks();
break;
}
- case Toolkit::Slider::SNAP_TO_MARKS_PROPERTY:
+ case Toolkit::Slider::Property::SNAP_TO_MARKS:
{
value = sliderImpl.GetSnapToMarks();
break;
}
- case Toolkit::Slider::MARK_TOLERANCE_PROPERTY:
+ case Toolkit::Slider::Property::MARK_TOLERANCE:
{
value = sliderImpl.GetMarkTolerance();
break;