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=a48ddbec9c5e35c8cc1b7ad1d64d89d6d9b7f9f7;hp=fdbbbd9307f84040c9594112dc19ec69505ad3bc;hb=36b6c48b03fa926529904947f222aadebbf0c1ff;hpb=c857a82d2a092fe17e654baf70afd454143310de diff --git a/dali-toolkit/internal/controls/slider/slider-impl.cpp b/dali-toolkit/internal/controls/slider/slider-impl.cpp index fdbbbd9..a48ddbe 100644 --- a/dali-toolkit/internal/controls/slider/slider-impl.cpp +++ b/dali-toolkit/internal/controls/slider/slider-impl.cpp @@ -202,16 +202,17 @@ void Slider::OnInitialize() // Size the Slider actor to a default self.SetProperty(Actor::Property::SIZE, Vector2(DEFAULT_HIT_REGION.x, DEFAULT_HIT_REGION.y)); - // Set the Slider to be highlightable in Screen Reader mode - self.SetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, true); - // Connect to the touch signal self.TouchedSignal().Connect(this, &Slider::OnTouch); - DevelControl::SetAccessibilityConstructor(self, [](Dali::Actor actor) { - return std::unique_ptr( - new AccessibleImpl(actor, Dali::Accessibility::Role::SLIDER)); - }); + // Accessibility + self.SetProperty(DevelControl::Property::ACCESSIBILITY_ROLE, Dali::Accessibility::Role::SLIDER); + self.SetProperty(DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, true); +} + +DevelControl::ControlAccessible* Slider::CreateAccessibleObject() +{ + return new SliderAccessible(Self()); } void Slider::OnRelayout(const Vector2& size, RelayoutContainer& container) @@ -950,7 +951,7 @@ void Slider::SetValue(float value) DisplayValue(mValue, true); if(Self() == Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor()) { - Control::Impl::GetAccessibilityObject(Self())->Emit(Dali::Accessibility::ObjectPropertyChangeEvent::VALUE); + GetAccessibleObject()->Emit(Dali::Accessibility::ObjectPropertyChangeEvent::VALUE); } } @@ -1411,42 +1412,42 @@ Property::Value Slider::GetProperty(BaseObject* object, Property::Index property return value; } -double Slider::AccessibleImpl::GetMinimum() +double Slider::SliderAccessible::GetMinimum() const { - auto p = Toolkit::Slider::DownCast(Self()); - return p.GetProperty(Toolkit::Slider::Property::LOWER_BOUND).Get(); + auto self = Toolkit::Slider::DownCast(Self()); + return self.GetProperty(Toolkit::Slider::Property::LOWER_BOUND).Get(); } -double Slider::AccessibleImpl::GetCurrent() +double Slider::SliderAccessible::GetCurrent() const { - auto p = Toolkit::Slider::DownCast(Self()); - return p.GetProperty(Toolkit::Slider::Property::VALUE).Get(); + auto self = Toolkit::Slider::DownCast(Self()); + return self.GetProperty(Toolkit::Slider::Property::VALUE).Get(); } -double Slider::AccessibleImpl::GetMaximum() +double Slider::SliderAccessible::GetMaximum() const { - auto p = Toolkit::Slider::DownCast(Self()); - return p.GetProperty(Toolkit::Slider::Property::UPPER_BOUND).Get(); + auto self = Toolkit::Slider::DownCast(Self()); + return self.GetProperty(Toolkit::Slider::Property::UPPER_BOUND).Get(); } -bool Slider::AccessibleImpl::SetCurrent(double current) +bool Slider::SliderAccessible::SetCurrent(double current) { if(current < GetMinimum() || current > GetMaximum()) return false; - auto p = Toolkit::Slider::DownCast(Self()); - auto& impl = Toolkit::GetImpl(p); + auto self = Toolkit::Slider::DownCast(Self()); + auto& impl = Toolkit::GetImpl(self); - const float prev = p.GetProperty(Toolkit::Slider::Property::VALUE); + const float prev = self.GetProperty(Toolkit::Slider::Property::VALUE); float next = static_cast(current); if(fabsf(next - prev) < Math::MACHINE_EPSILON_0) { // do nothing } - else if(p.GetProperty(Toolkit::Slider::Property::SNAP_TO_MARKS)) + else if(self.GetProperty(Toolkit::Slider::Property::SNAP_TO_MARKS)) { - auto marks = p.GetProperty(Toolkit::Slider::Property::MARKS); + auto marks = self.GetProperty(Toolkit::Slider::Property::MARKS); int prevIdx; if(impl.MarkReached(impl.MapValuePercentage(prev), prevIdx)) @@ -1455,7 +1456,9 @@ bool Slider::AccessibleImpl::SetCurrent(double current) nextIdx += (next > prev) ? 1 : -1; if(nextIdx < 0 || nextIdx >= static_cast(marks.Count())) + { return false; + } next = marks[nextIdx].Get(); } @@ -1475,15 +1478,17 @@ bool Slider::AccessibleImpl::SetCurrent(double current) return true; } -double Slider::AccessibleImpl::GetMinimumIncrement() +double Slider::SliderAccessible::GetMinimumIncrement() const { - auto p = Toolkit::Slider::DownCast(Self()); + auto self = Toolkit::Slider::DownCast(Self()); - bool hasMarks = !p.GetProperty(Toolkit::Slider::Property::MARKS).Empty(); - float tolerance = p.GetProperty(Toolkit::Slider::Property::MARK_TOLERANCE); + bool hasMarks = !self.GetProperty(Toolkit::Slider::Property::MARKS).Empty(); + float tolerance = self.GetProperty(Toolkit::Slider::Property::MARK_TOLERANCE); if(!hasMarks || fabsf(tolerance) < 0.01) + { return 0.0; // let screen-reader choose the increment + } return Math::MACHINE_EPSILON_10000 + tolerance * (GetMaximum() - GetMinimum()); }