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=c347676db102733a762d73f50063c68a1727ad48;hp=419d222acd035aacf002e485368836e7d2741fdc;hb=f546dd5d83a968e573f8f053a01ce43df32c71a0;hpb=d9d91f29650b038915c668a8433a65b01e9d0f2a 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 419d222..c347676 --- a/dali-toolkit/internal/controls/slider/slider-impl.cpp +++ b/dali-toolkit/internal/controls/slider/slider-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 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. @@ -22,7 +22,7 @@ #include // for strcmp #include #include -#include +#include #include #include @@ -201,10 +201,15 @@ void Slider::OnInitialize() DisplayValue( mValue, false ); // Run this last to display the correct value // Size the Slider actor to a default - self.SetSize( DEFAULT_HIT_REGION.x, DEFAULT_HIT_REGION.y ); + self.SetProperty( Actor::Property::SIZE, Vector2( DEFAULT_HIT_REGION.x, DEFAULT_HIT_REGION.y ) ); // Connect to the touch signal - self.TouchSignal().Connect( this, &Slider::OnTouch ); + self.TouchedSignal().Connect( this, &Slider::OnTouch ); + + DevelControl::SetAccessibilityConstructor( self, []( Dali::Actor actor ) { + return std::unique_ptr< Dali::Accessibility::Accessible >( + new AccessibleImpl( actor, Dali::Accessibility::Role::SLIDER ) ); + } ); } void Slider::OnRelayout( const Vector2& size, RelayoutContainer& container ) @@ -215,7 +220,7 @@ void Slider::OnRelayout( const Vector2& size, RelayoutContainer& container ) Control::OnRelayout( size, container ); } -bool Slider::OnTouch(Actor actor, const TouchData& touch) +bool Slider::OnTouch(Actor actor, const TouchEvent& touch) { if( mState != DISABLED ) { @@ -240,7 +245,7 @@ bool Slider::OnTouch(Actor actor, const TouchData& touch) } } - return true; + return false; } void Slider::OnPan( Actor actor, const PanGesture& gesture ) @@ -248,25 +253,25 @@ void Slider::OnPan( Actor actor, const PanGesture& gesture ) // gesture.position is in local actor coordinates if( mState != DISABLED ) { - switch( gesture.state ) + switch( gesture.GetState() ) { - case Gesture::Continuing: + case GestureState::CONTINUING: { if( mState == PRESSED ) { - float value = MapBounds( MarkFilter ( MapPercentage( gesture.position ) ), GetLowerBound(), GetUpperBound() ); + float value = MapBounds( MarkFilter ( MapPercentage( gesture.GetPosition() ) ), GetLowerBound(), GetUpperBound() ); SetValue( value ); DisplayPopup( value ); } break; } - case Gesture::Finished: + case GestureState::FINISHED: { if( mState == PRESSED ) { if( GetSnapToMarks() ) { - float value = MapBounds( SnapToMark( MapPercentage( gesture.position ) ), GetLowerBound(), GetUpperBound() ); + float value = MapBounds( SnapToMark( MapPercentage( gesture.GetPosition() ) ), GetLowerBound(), GetUpperBound() ); SetValue( value ); DisplayPopup( value ); } @@ -321,12 +326,12 @@ void Slider::DisplayValue( float value, bool raiseSignals ) float x = mDomain.from.x + percent * ( mDomain.to.x - mDomain.from.x ); - mHandle.SetX( x ); + mHandle.SetProperty( Actor::Property::POSITION_X, x ); // Progress bar if( mProgress ) { - mProgress.SetSize( x, GetTrackRegion().y ); + mProgress.SetProperty( Actor::Property::SIZE, Vector2( x, GetTrackRegion().y ) ); } // Signals @@ -379,9 +384,9 @@ bool Slider::GetSnapToMarks() const Actor Slider::CreateHitRegion() { Actor hitRegion = Actor::New(); - hitRegion.SetParentOrigin( ParentOrigin::CENTER ); - hitRegion.SetAnchorPoint( AnchorPoint::CENTER ); - hitRegion.TouchSignal().Connect( this, &Slider::OnTouch ); + hitRegion.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + hitRegion.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); + hitRegion.TouchedSignal().Connect( this, &Slider::OnTouch ); return hitRegion; } @@ -389,9 +394,9 @@ Actor Slider::CreateHitRegion() Toolkit::ImageView Slider::CreateTrack() { Toolkit::ImageView track = Toolkit::ImageView::New(); - track.SetName("SliderTrack"); - track.SetParentOrigin( ParentOrigin::CENTER ); - track.SetAnchorPoint( AnchorPoint::CENTER ); + track.SetProperty( Dali::Actor::Property::NAME,"SliderTrack"); + track.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + track.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); return track; } @@ -430,7 +435,7 @@ void Slider::SetTrackVisual( Property::Map map ) mTrackRegion = size; if( mTrack ) { - mTrack.SetSize( mTrackRegion ); + mTrack.SetProperty( Actor::Property::SIZE, mTrackRegion ); } ResizeProgressRegion( Vector2( 0.0f, mTrackRegion.y ) ); @@ -451,9 +456,9 @@ std::string Slider::GetTrackVisual() Toolkit::ImageView Slider::CreateProgress() { Toolkit::ImageView progress = Toolkit::ImageView::New(); - progress.SetName("SliderProgress"); - progress.SetParentOrigin( ParentOrigin::CENTER_LEFT ); - progress.SetAnchorPoint( AnchorPoint::CENTER_LEFT ); + progress.SetProperty( Dali::Actor::Property::NAME,"SliderProgress"); + progress.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER_LEFT ); + progress.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER_LEFT ); return progress; } @@ -570,16 +575,16 @@ void Slider::ResizeProgressRegion( const Vector2& region ) { if( mProgress ) { - mProgress.SetSize( region ); + mProgress.SetProperty( Actor::Property::SIZE, region ); } } Toolkit::ImageView Slider::CreateHandle() { Toolkit::ImageView handle = Toolkit::ImageView::New(); - handle.SetName("SliderHandle"); - handle.SetParentOrigin( ParentOrigin::CENTER_LEFT ); - handle.SetAnchorPoint( AnchorPoint::CENTER ); + handle.SetProperty( Dali::Actor::Property::NAME,"SliderHandle"); + handle.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER_LEFT ); + handle.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); return handle; } @@ -588,9 +593,9 @@ Toolkit::ImageView Slider::CreatePopupArrow() { Toolkit::ImageView arrow = Toolkit::ImageView::New(); arrow.SetStyleName("SliderPopupArrow"); - arrow.SetName("SliderPopupArrow"); - arrow.SetParentOrigin( ParentOrigin::BOTTOM_CENTER ); - arrow.SetAnchorPoint( AnchorPoint::BOTTOM_CENTER ); + arrow.SetProperty( Dali::Actor::Property::NAME,"SliderPopupArrow"); + arrow.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::BOTTOM_CENTER ); + arrow.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_CENTER ); return arrow; } @@ -598,23 +603,23 @@ Toolkit::ImageView Slider::CreatePopupArrow() Toolkit::TextLabel Slider::CreatePopupText() { Toolkit::TextLabel textLabel = Toolkit::TextLabel::New(); - textLabel.SetName( "SliderPopupTextLabel" ); + textLabel.SetProperty( Dali::Actor::Property::NAME, "SliderPopupTextLabel" ); textLabel.SetStyleName( "SliderPopupTextLabel" ); - textLabel.SetParentOrigin( ParentOrigin::CENTER ); - textLabel.SetAnchorPoint( AnchorPoint::CENTER ); + textLabel.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + textLabel.SetProperty( Actor::Property::ANCHOR_POINT, 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.SetPadding( Padding( POPUP_TEXT_PADDING, POPUP_TEXT_PADDING, 0.0f, 0.0f ) ); + textLabel.SetProperty( Actor::Property::PADDING, Padding( POPUP_TEXT_PADDING, POPUP_TEXT_PADDING, 0.0f, 0.0f ) ); return textLabel; } Toolkit::ImageView Slider::CreatePopup() { Toolkit::ImageView popup = Toolkit::ImageView::New(); - popup.SetName( "SliderPopup" ); - popup.SetParentOrigin( ParentOrigin::TOP_CENTER ); - popup.SetAnchorPoint( AnchorPoint::BOTTOM_CENTER ); + popup.SetProperty( Dali::Actor::Property::NAME, "SliderPopup" ); + popup.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER ); + popup.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_CENTER ); popup.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::WIDTH ); mValueTextLabel = CreatePopupText(); @@ -674,7 +679,7 @@ void Slider::ResizeHandleSize( const Vector2& size ) { if( mHandle ) { - mHandle.SetSize( size ); + mHandle.SetProperty( Actor::Property::SIZE, size ); } } @@ -683,10 +688,10 @@ void Slider::CreateHandleValueDisplay() if( mHandle && !mHandleValueTextLabel ) { mHandleValueTextLabel = Toolkit::TextLabel::New(); - mHandleValueTextLabel.SetName("SliderHandleTextLabel"); + mHandleValueTextLabel.SetProperty( Dali::Actor::Property::NAME,"SliderHandleTextLabel"); mHandleValueTextLabel.SetStyleName("SliderHandleTextLabel"); - mHandleValueTextLabel.SetParentOrigin( ParentOrigin::CENTER ); - mHandleValueTextLabel.SetAnchorPoint( AnchorPoint::CENTER ); + mHandleValueTextLabel.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + mHandleValueTextLabel.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); mHandleValueTextLabel.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); mHandleValueTextLabel.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" ); mHandle.Add( mHandleValueTextLabel ); @@ -701,14 +706,14 @@ void Slider::DestroyHandleValueDisplay() Actor Slider::CreateValueDisplay() { Actor popup = Actor::New(); - popup.SetParentOrigin( ParentOrigin::TOP_CENTER ); - popup.SetAnchorPoint( AnchorPoint::BOTTOM_CENTER ); + popup.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER ); + popup.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_CENTER ); mPopupArrow = CreatePopupArrow(); popup.Add( mPopupArrow ); mPopup = CreatePopup(); - mPopup.SetSize( 0.0f, VALUE_POPUP_HEIGHT ); + mPopup.SetProperty( Actor::Property::SIZE, Vector2( 0.0f, VALUE_POPUP_HEIGHT ) ); mPopupArrow.Add( mPopup ); return popup; @@ -735,17 +740,17 @@ void Slider::UpdateSkin() { case NORMAL: { - mTrack.SetColor( Color::WHITE ); - mHandle.SetColor( Color::WHITE ); - mProgress.SetColor( Color::WHITE ); + mTrack.SetProperty( Actor::Property::COLOR, Color::WHITE ); + mHandle.SetProperty( Actor::Property::COLOR, Color::WHITE ); + mProgress.SetProperty( Actor::Property::COLOR, Color::WHITE ); break; } case DISABLED: { Vector4 disabledColor = GetDisabledColor(); - mTrack.SetColor( disabledColor ); - mHandle.SetColor( disabledColor ); - mProgress.SetColor( disabledColor ); + mTrack.SetProperty( Actor::Property::COLOR, disabledColor ); + mHandle.SetProperty( Actor::Property::COLOR, disabledColor ); + mProgress.SetProperty( Actor::Property::COLOR, disabledColor ); break; } case PRESSED: @@ -789,7 +794,7 @@ void Slider::SetHitRegion( const Vector2& size ) if( mHitArea ) { - mHitArea.SetSize( mHitRegion ); + mHitArea.SetProperty( Actor::Property::SIZE, mHitRegion ); } } @@ -803,7 +808,7 @@ void Slider::AddPopup() if( !mValueDisplay ) { mValueDisplay = CreateValueDisplay(); - mValueDisplay.SetVisible( false ); + mValueDisplay.SetProperty( Actor::Property::VISIBLE, false ); mHandle.Add( mValueDisplay ); CreatePopupImage( GetPopupVisual() ); @@ -918,7 +923,7 @@ bool Slider::HideValueView() { if( mValueDisplay ) { - mValueDisplay.SetVisible( false ); + mValueDisplay.SetProperty( Actor::Property::VISIBLE, false ); } return false; @@ -963,7 +968,7 @@ void Slider::SetTrackRegion( const Vector2& region ) if( mTrack ) { - mTrack.SetSize( mTrackRegion ); + mTrack.SetProperty( Actor::Property::SIZE, mTrackRegion ); } ResizeProgressRegion( Vector2( 0.0f, mTrackRegion.y ) ); @@ -1121,7 +1126,7 @@ void Slider::DisplayPopup( float value ) if( mValueDisplay ) { - mValueDisplay.SetVisible( true ); + mValueDisplay.SetProperty( Actor::Property::VISIBLE, true ); mValueTimer.SetInterval( VALUE_VIEW_SHOW_DURATION ); } @@ -1409,6 +1414,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