X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fslider%2Fslider-impl.cpp;h=ca94e9190f5f3e16bad379acc4862beca0e72eed;hp=56bbd339ea3b3f8880a401d0d83b96a98bf10796;hb=f3da11c2818c6d17706fbb2417f21b602b3190f5;hpb=b458e407eba11c73f38da68bce8e967a30ea03e2 diff --git a/dali-toolkit/internal/controls/slider/slider-impl.cpp b/dali-toolkit/internal/controls/slider/slider-impl.cpp index 56bbd33..ca94e91 100755 --- a/dali-toolkit/internal/controls/slider/slider-impl.cpp +++ b/dali-toolkit/internal/controls/slider/slider-impl.cpp @@ -19,10 +19,12 @@ #include // EXTERNAL INCLUDES +#include // for strcmp #include +#include #include #include -#include +#include #include // INTERNAL INCLUDES @@ -50,29 +52,29 @@ BaseHandle Create() // 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_PROPERTY_REGISTRATION( Toolkit, Slider, "lowerBound", FLOAT, LOWER_BOUND ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "upperBound", FLOAT, UPPER_BOUND ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "value", FLOAT, VALUE ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "hitRegion", VECTOR2, HIT_REGION ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "backingRegion", VECTOR2, BACKING_REGION ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "handleRegion", VECTOR2, HANDLE_REGION ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "backingImageName", STRING, BACKING_IMAGE_NAME ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "handleImageName", STRING, HANDLE_IMAGE_NAME ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "progressImageName", STRING, PROGRESS_IMAGE_NAME ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "popupImageName", STRING, POPUP_IMAGE_NAME ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "popupArrowImageName", STRING, POPUP_ARROW_IMAGE_NAME ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "disableColor", VECTOR4, DISABLE_COLOR ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "popupTextColor", VECTOR4, POPUP_TEXT_COLOR ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "valuePrecision", INTEGER, VALUE_PRECISION ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "showPopup", BOOLEAN, SHOW_POPUP ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "showValue", BOOLEAN, SHOW_VALUE ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "enabled", BOOLEAN, ENABLED ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "marks", ARRAY, MARKS ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "snapToMarks", BOOLEAN, SNAP_TO_MARKS ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "markTolerance", FLOAT, MARK_TOLERANCE ) + +DALI_SIGNAL_REGISTRATION( Toolkit, Slider, "valueChanged", SIGNAL_VALUE_CHANGED ) +DALI_SIGNAL_REGISTRATION( Toolkit, Slider, "mark", SIGNAL_MARK ) DALI_TYPE_REGISTRATION_END() @@ -94,6 +96,7 @@ const float DEFAULT_WIDTH = 0.0f; const float DEFAULT_HEIGHT = 27.0f; const float DEFAULT_HIT_HEIGHT = 72.0f; const float DEFAULT_HANDLE_HEIGHT = DEFAULT_HIT_HEIGHT; +const float POPUP_TEXT_PADDING = 10.0f; const char* SKINNED_BACKING_IMAGE_NAME = DALI_IMAGE_DIR "slider-skin.9.png"; const char* SKINNED_HANDLE_IMAGE_NAME = DALI_IMAGE_DIR "slider-skin-handle.png";; @@ -206,7 +209,7 @@ void Slider::OnInitialize() self.SetSize( DEFAULT_HIT_REGION.x, DEFAULT_HIT_REGION.y ); } -void Slider::OnControlSizeSet( const Vector3& size ) +void Slider::OnSizeSet( const Vector3& size ) { // Factor in handle overshoot into size of backing SetHitRegion( Vector2( size.x, GetHitRegion().y ) ); @@ -324,15 +327,7 @@ void Slider::DisplayValue( float value, bool raiseSignals ) // Progress bar if( mProgress ) { - if( clampledValue > 0.0f ) - { - mProgress.SetVisible( true ); // Deliberately set this in case multiple SetValues are fired at once - mProgress.SetSize( x, GetBackingRegion().y ); - } - else - { - mProgress.SetVisible( false ); - } + mProgress.SetSize( x, GetBackingRegion().y ); } // Signals @@ -348,25 +343,19 @@ void Slider::DisplayValue( float value, bool raiseSignals ) } } - if( mHandleValueTextView ) + if( mHandleValueTextLabel ) { std::stringstream ss; ss.precision( GetValuePrecision() ); ss << std::fixed << clampledValue; - mHandleValueTextView.SetText( ss.str() ); + + mHandleValueTextLabel.SetProperty( Toolkit::TextLabel::Property::TEXT, ss.str() ); } } void Slider::SetMarks( const MarkList& marks ) { - float value; - for( MarkList::const_iterator it = marks.begin(), itEnd = marks.end(); it != itEnd; ++it ) - { - const Property::Value& propertyValue = *it; - propertyValue.Get( value ); - - mMarks.push_back( value ); - } + mMarks = marks; } const Slider::MarkList& Slider::GetMarks() const @@ -518,14 +507,18 @@ ImageActor Slider::CreatePopupArrow() return arrow; } -Toolkit::TextView Slider::CreatePopupText() +Toolkit::TextLabel Slider::CreatePopupText() { - 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; + Toolkit::TextLabel textLabel = Toolkit::TextLabel::New(); + textLabel.SetParentOrigin( ParentOrigin::CENTER ); + textLabel.SetAnchorPoint( AnchorPoint::CENTER ); + textLabel.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS ); + textLabel.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); + textLabel.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" ); + textLabel.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, DEFAULT_POPUP_TEXT_COLOR ); + textLabel.SetZ( VALUE_DISPLAY_TEXT_Z ); + textLabel.SetPadding( Padding( POPUP_TEXT_PADDING, POPUP_TEXT_PADDING, 0.0f, 0.0f ) ); + return textLabel; } ImageActor Slider::CreatePopup() @@ -533,9 +526,10 @@ ImageActor Slider::CreatePopup() ImageActor popup = ImageActor::New(); popup.SetParentOrigin( ParentOrigin::TOP_CENTER ); popup.SetAnchorPoint( AnchorPoint::BOTTOM_CENTER ); + popup.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::WIDTH ); - mValueTextView = CreatePopupText(); - popup.Add( mValueTextView ); + mValueTextLabel = CreatePopupText(); + popup.Add( mValueTextLabel ); return popup; } @@ -569,24 +563,20 @@ void Slider::ResizeHandleRegion( const Vector2& region ) void Slider::CreateHandleValueDisplay() { - if( mHandle && !mHandleValueTextView ) + if( mHandle && !mHandleValueTextLabel ) { - mHandleValueTextView = Toolkit::TextView::New(); - mHandleValueTextView.SetParentOrigin( ParentOrigin::CENTER ); - mHandleValueTextView.SetAnchorPoint( AnchorPoint::CENTER ); - mHandleValueTextView.SetSize( GetHandleRegion() ); - mHandleValueTextView.SetZ( HANDLE_VALUE_DISPLAY_TEXT_Z ); - mHandle.Add( mHandleValueTextView ); + mHandleValueTextLabel = Toolkit::TextLabel::New(); + mHandleValueTextLabel.SetParentOrigin( ParentOrigin::CENTER ); + mHandleValueTextLabel.SetAnchorPoint( AnchorPoint::CENTER ); + mHandleValueTextLabel.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); + mHandleValueTextLabel.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" ); + mHandle.Add( mHandleValueTextLabel ); } } void Slider::DestroyHandleValueDisplay() { - if(mHandleValueTextView) - { - mHandleValueTextView.Unparent(); - mHandleValueTextView.Reset(); - } + UnparentAndReset(mHandleValueTextLabel); } void Slider::SetPopupTextColor( const Vector4& color ) @@ -734,9 +724,9 @@ float Slider::MarkFilter( float value ) const float MARK_TOLERANCE = GetMarkTolerance(); float mark; - for( MarkList::iterator it = mMarks.begin(), itEnd = mMarks.end(); it != itEnd; ++it ) + for( MarkList::SizeType i = 0; i < mMarks.Count(); ++i) { - const Property::Value& propertyValue = *it; + const Property::Value& propertyValue = mMarks[i]; propertyValue.Get( mark ); mark = MapValuePercentage( mark ); @@ -756,9 +746,9 @@ float Slider::SnapToMark( float value ) float closestDist = std::numeric_limits::max(); float mark; - for( MarkList::iterator it = mMarks.begin(), itEnd = mMarks.end(); it != itEnd; ++it ) + for( MarkList::SizeType i = 0; i < mMarks.Count(); ++i) { - const Property::Value& propertyValue = *it; + const Property::Value& propertyValue = mMarks[i]; propertyValue.Get( mark ); mark = MapValuePercentage( mark ); @@ -779,7 +769,7 @@ bool Slider::MarkReached( float value, int& outIndex ) // Binary search int head = 0, - tail = mMarks.size() - 1; + tail = mMarks.Size() - 1; int current; float mark; @@ -1013,26 +1003,15 @@ bool Slider::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tr void Slider::DisplayPopup( float value ) { // Value displayDoConnectSignal - if( mValueTextView ) + if( mValueTextLabel ) { std::stringstream ss; ss.precision( GetValuePrecision() ); ss << std::fixed << value; - mValueTextView.SetText( ss.str() ); - TextStyle style; - style.SetTextColor( GetPopupTextColor() ); - mValueTextView.SetStyleToCurrentText( style, TextStyle::COLOR); + mValueTextLabel.SetProperty( Toolkit::TextLabel::Property::TEXT, ss.str() ); if( mValueDisplay ) { - Font font = Font::New(); - float popupWidth = font.MeasureText( ss.str() ).x + VALUE_POPUP_MARGIN * 2.0f; - if( popupWidth < VALUE_POPUP_MIN_WIDTH ) - { - popupWidth = VALUE_POPUP_MIN_WIDTH; - } - - mPopup.SetSize( popupWidth, VALUE_POPUP_HEIGHT ); mValueDisplay.SetVisible( true ); mValueTimer.SetInterval( VALUE_VIEW_SHOW_DURATION );