X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fslider%2Fslider-impl.cpp;h=b4ed78ddb25c242ea73d564118783419b76430b2;hb=26efc210fc636e51a4d3df9ae7fbcc1d2a8bac40;hp=de7e5c6e8f13e6068d34c727b285d0f2ed2c6179;hpb=50b8303be7bab724f3dfc62f54e3eb1a915fc849;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/slider/slider-impl.cpp b/dali-toolkit/internal/controls/slider/slider-impl.cpp old mode 100755 new mode 100644 index de7e5c6..b4ed78d --- a/dali-toolkit/internal/controls/slider/slider-impl.cpp +++ b/dali-toolkit/internal/controls/slider/slider-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * 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. @@ -25,7 +25,7 @@ #include #include #include -#include +#include // INTERNAL INCLUDES #include @@ -134,7 +134,7 @@ Dali::Toolkit::Slider Slider::New() } Slider::Slider() -: Control( ControlBehaviour( REQUIRES_STYLE_CHANGE_SIGNALS ) ), +: Control( ControlBehaviour( CONTROL_BEHAVIOUR_DEFAULT ) ), mState( NORMAL ), mPopupVisual(""), mPopupArrowVisual(""), @@ -158,6 +158,10 @@ Slider::Slider() mShowValue( false ), mSnapToMarks( false ) { + DevelControl::SetAccessibilityConstructor( Self(), []( Dali::Actor actor ) { + return std::unique_ptr< Dali::Accessibility::Accessible >( + new AccessibleImpl( actor, Dali::Accessibility::Role::SLIDER ) ); + } ); } Slider::~Slider() @@ -205,10 +209,6 @@ void Slider::OnInitialize() self.TouchSignal().Connect( this, &Slider::OnTouch ); } -void Slider::OnSizeSet( const Vector3& size ) -{ -} - void Slider::OnRelayout( const Vector2& size, RelayoutContainer& container ) { SetHitRegion( Vector2( size.x, GetHitRegion().y ) ); @@ -317,9 +317,9 @@ Slider::Domain Slider::CalcDomain( const Vector2& currentSize ) void Slider::DisplayValue( float value, bool raiseSignals ) { - float clampledValue = Clamp( value, GetLowerBound(), GetUpperBound() ); + float clampedValue = Clamp( value, GetLowerBound(), GetUpperBound() ); - float percent = MapValuePercentage( clampledValue ); + float percent = MapValuePercentage( clampedValue ); float x = mDomain.from.x + percent * ( mDomain.to.x - mDomain.from.x ); @@ -335,7 +335,7 @@ void Slider::DisplayValue( float value, bool raiseSignals ) if( raiseSignals ) { Toolkit::Slider self = Toolkit::Slider::DownCast( Self() ); - mValueChangedSignal.Emit( self, clampledValue ); + mValueChangedSignal.Emit( self, clampedValue ); int markIndex; if( MarkReached( percent, markIndex ) ) @@ -348,9 +348,13 @@ void Slider::DisplayValue( float value, bool raiseSignals ) { std::stringstream ss; ss.precision( GetValuePrecision() ); - ss << std::fixed << clampledValue; + ss << std::fixed << clampedValue; - mHandleValueTextLabel.SetProperty( Toolkit::TextLabel::Property::TEXT, ss.str() ); + std::string label = mHandleValueTextLabel.GetProperty( Toolkit::TextLabel::Property::TEXT ); + if( label.compare(ss.str()) ) + { + mHandleValueTextLabel.SetProperty( Toolkit::TextLabel::Property::TEXT, ss.str() ); + } } } @@ -520,8 +524,9 @@ void Slider::CreatePopupImage( const std::string& filename ) { if( mPopup && ( filename.size() > 0 ) ) { - Image image = ResourceImage::New( filename ); - mPopup.SetImage( image ); + Property::Map map; + map[Toolkit::ImageVisual::Property::URL] = filename; + mPopup.SetProperty( Toolkit::ImageView::Property::IMAGE, map ); } } @@ -557,8 +562,9 @@ void Slider::CreatePopupArrowImage( const std::string& filename ) { if( mPopupArrow && ( filename.size() > 0 ) ) { - Image image = ResourceImage::New( filename ); - mPopupArrow.SetImage( image ); + Property::Map map; + map[Toolkit::ImageVisual::Property::URL] = filename; + mPopupArrow.SetProperty( Toolkit::ImageView::Property::IMAGE, map ); } } @@ -1376,8 +1382,15 @@ Property::Value Slider::GetProperty( BaseObject* object, Property::Index propert case Toolkit::Slider::Property::MARKS: { - // TODO: Need to be able to return a PropertyArray - // value = sliderImpl.GetMarks(); + Property::Value value1( Property::ARRAY ); + Property::Array* markArray = value1.GetArray(); + + if( markArray ) + { + *markArray = sliderImpl.GetMarks(); + } + + value = value1; break; } @@ -1398,6 +1411,39 @@ Property::Value Slider::GetProperty( BaseObject* object, Property::Index propert return value; } +double Slider::AccessibleImpl::GetMinimum() +{ + auto p = Toolkit::Slider::DownCast( self ); + return p.GetProperty( Toolkit::Slider::Property::LOWER_BOUND ).Get< float >(); +} + +double Slider::AccessibleImpl::GetCurrent() +{ + auto p = Toolkit::Slider::DownCast( self ); + return p.GetProperty( Toolkit::Slider::Property::VALUE ).Get< float >(); +} + +double Slider::AccessibleImpl::GetMaximum() +{ + auto p = Toolkit::Slider::DownCast( self ); + return p.GetProperty( Toolkit::Slider::Property::UPPER_BOUND ).Get< float >(); +} + +bool Slider::AccessibleImpl::SetCurrent( double current ) +{ + if( current < GetMinimum() || current > GetMaximum() ) + return false; + auto p = Toolkit::Slider::DownCast( self ); + p.SetProperty( Toolkit::Slider::Property::VALUE, static_cast< float >( current ) ); + return true; +} + +double Slider::AccessibleImpl::GetMinimumIncrement() +{ + auto p = Toolkit::Slider::DownCast( self ); + return p.GetProperty( Toolkit::Slider::Property::MARK_TOLERANCE ).Get< float >(); +} + } // namespace Internal } // namespace Toolkit