X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Fdevel-api%2Fcontrols%2Fcontrol-accessible.cpp;h=85b3c6aae285d003758c52050b4fa8aa6fabc185;hp=7010a6ce1a8d4643eea3bdfacebd766140457f76;hb=ff6ce970724ccc8bee65f7c93411b274907c09d7;hpb=9a5ce98a301f74f8df8a3be6d223b525c8839b0b diff --git a/dali-toolkit/devel-api/controls/control-accessible.cpp b/dali-toolkit/devel-api/controls/control-accessible.cpp index 7010a6c..85b3c6a 100644 --- a/dali-toolkit/devel-api/controls/control-accessible.cpp +++ b/dali-toolkit/devel-api/controls/control-accessible.cpp @@ -66,26 +66,21 @@ static Dali::Actor CreateHighlightIndicatorActor() } } // unnamed namespace -ControlAccessible::ControlAccessible(Dali::Actor self, Dali::Accessibility::Role role, bool modal) -: mSelf(self), - mIsModal(modal) +ControlAccessible::ControlAccessible(Dali::Actor self) +: ActorAccessible(self) { - auto control = Dali::Toolkit::Control::DownCast(Self()); + auto control = Toolkit::Control::DownCast(self); Internal::Control& internalControl = Toolkit::Internal::GetImplementation(control); Internal::Control::Impl& controlImpl = Internal::Control::Impl::Get(internalControl); - if(controlImpl.mAccessibilityRole == Dali::Accessibility::Role::UNKNOWN) - { - controlImpl.mAccessibilityRole = role; - } - Self().PropertySetSignal().Connect(&controlImpl, [this, &controlImpl](Dali::Handle& handle, Dali::Property::Index index, Dali::Property::Value value) { + self.PropertySetSignal().Connect(&controlImpl, [this, &controlImpl](Dali::Handle& handle, Dali::Property::Index index, Dali::Property::Value value) { if(this->Self() != Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor()) { return; } - if(index == DevelControl::Property::ACCESSIBILITY_NAME || (index == GetNamePropertyIndex() && !controlImpl.mAccessibilityNameSet)) + if(index == DevelControl::Property::ACCESSIBILITY_NAME || (index == GetNamePropertyIndex() && controlImpl.mAccessibilityName.empty())) { if(controlImpl.mAccessibilityGetNameSignal.Empty()) { @@ -93,7 +88,7 @@ ControlAccessible::ControlAccessible(Dali::Actor self, Dali::Accessibility::Role } } - if(index == DevelControl::Property::ACCESSIBILITY_DESCRIPTION || (index == GetDescriptionPropertyIndex() && !controlImpl.mAccessibilityDescriptionSet)) + if(index == DevelControl::Property::ACCESSIBILITY_DESCRIPTION || (index == GetDescriptionPropertyIndex() && controlImpl.mAccessibilityDescription.empty())) { if(controlImpl.mAccessibilityGetDescriptionSignal.Empty()) { @@ -115,7 +110,7 @@ std::string ControlAccessible::GetName() const { controlImpl.mAccessibilityGetNameSignal.Emit(name); } - else if(controlImpl.mAccessibilityNameSet) + else if(!controlImpl.mAccessibilityName.empty()) { name = controlImpl.mAccessibilityName; } @@ -128,7 +123,7 @@ std::string ControlAccessible::GetName() const name = Self().GetProperty(Actor::Property::NAME); } - if(controlImpl.mAccessibilityTranslationDomainSet) + if(!controlImpl.mAccessibilityTranslationDomain.empty()) { return GetLocaleText(name, controlImpl.mAccessibilityTranslationDomain.c_str()); } @@ -153,7 +148,7 @@ std::string ControlAccessible::GetDescription() const { controlImpl.mAccessibilityGetDescriptionSignal.Emit(description); } - else if(controlImpl.mAccessibilityDescriptionSet) + else if(!controlImpl.mAccessibilityDescription.empty()) { description = controlImpl.mAccessibilityDescription; } @@ -161,7 +156,8 @@ std::string ControlAccessible::GetDescription() const { description = GetDescriptionRaw(); } - if(controlImpl.mAccessibilityTranslationDomainSet) + + if(!controlImpl.mAccessibilityTranslationDomain.empty()) { return GetLocaleText(description, controlImpl.mAccessibilityTranslationDomain.c_str()); } @@ -174,40 +170,6 @@ std::string ControlAccessible::GetDescriptionRaw() const return {}; } -Dali::Accessibility::Accessible* ControlAccessible::GetParent() -{ - return Dali::Accessibility::Accessible::Get(Self().GetParent()); -} - -size_t ControlAccessible::GetChildCount() const -{ - return Self().GetChildCount(); -} - -Dali::Accessibility::Accessible* ControlAccessible::GetChildAtIndex(size_t index) -{ - return Dali::Accessibility::Accessible::Get(Self().GetChildAt(static_cast(index))); -} - -size_t ControlAccessible::GetIndexInParent() -{ - auto self = Self(); - auto parent = self.GetParent(); - DALI_ASSERT_ALWAYS(parent && "can't call GetIndexInParent on object without parent"); - - auto count = parent.GetChildCount(); - for(auto i = 0u; i < count; ++i) - { - auto child = parent.GetChildAt(i); - if(child == self) - { - return i; - } - } - DALI_ASSERT_ALWAYS(false && "object isn't child of it's parent"); - return static_cast(-1); -} - Dali::Accessibility::Role ControlAccessible::GetRole() const { return Self().GetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_ROLE); @@ -255,32 +217,22 @@ bool ControlAccessible::IsShowing() Dali::Accessibility::States ControlAccessible::CalculateStates() { - Dali::Actor self = Self(); - Dali::Accessibility::States state; - state[Dali::Accessibility::State::FOCUSABLE] = self.GetProperty(Actor::Property::KEYBOARD_FOCUSABLE); - state[Dali::Accessibility::State::FOCUSED] = Toolkit::KeyboardFocusManager::Get().GetCurrentFocusActor() == self; + using Dali::Accessibility::State; - if(self.GetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE).GetType() == Dali::Property::NONE) - { - state[Dali::Accessibility::State::HIGHLIGHTABLE] = false; - } - else - { - state[Dali::Accessibility::State::HIGHLIGHTABLE] = self.GetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE).Get(); - } + Dali::Actor self = Self(); + Dali::Accessibility::States states; - state[Dali::Accessibility::State::HIGHLIGHTED] = GetCurrentlyHighlightedActor() == self; - state[Dali::Accessibility::State::ENABLED] = true; - state[Dali::Accessibility::State::SENSITIVE] = true; - state[Dali::Accessibility::State::VISIBLE] = self.GetProperty(Actor::Property::VISIBLE); + states[State::FOCUSABLE] = self.GetProperty(Actor::Property::KEYBOARD_FOCUSABLE); + states[State::FOCUSED] = Toolkit::KeyboardFocusManager::Get().GetCurrentFocusActor() == self; + states[State::HIGHLIGHTABLE] = self.GetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE); + states[State::HIGHLIGHTED] = GetCurrentlyHighlightedActor() == self; + states[State::ENABLED] = true; + states[State::SENSITIVE] = true; + states[State::VISIBLE] = self.GetProperty(Actor::Property::VISIBLE); + states[State::SHOWING] = IsShowing(); + states[State::DEFUNCT] = !self.GetProperty(Dali::DevelActor::Property::CONNECTED_TO_SCENE).Get(); - if(mIsModal) - { - state[Dali::Accessibility::State::MODAL] = true; - } - state[Dali::Accessibility::State::SHOWING] = IsShowing(); - state[Dali::Accessibility::State::DEFUNCT] = !self.GetProperty(Dali::DevelActor::Property::CONNECTED_TO_SCENE).Get(); - return state; + return states; } Dali::Accessibility::States ControlAccessible::GetStates() @@ -316,41 +268,14 @@ Dali::Accessibility::Attributes ControlAccessible::GetAttributes() const return attributeMap; } -Dali::Accessibility::ComponentLayer ControlAccessible::GetLayer() const +bool ControlAccessible::IsHidden() const { - return Dali::Accessibility::ComponentLayer::WINDOW; -} - -Dali::Rect<> ControlAccessible::GetExtents(Dali::Accessibility::CoordinateType type) const -{ - Dali::Actor self = Self(); - - Vector2 screenPosition = self.GetProperty(Dali::DevelActor::Property::SCREEN_POSITION).Get(); - auto size = self.GetCurrentProperty(Actor::Property::SIZE) * self.GetCurrentProperty(Actor::Property::WORLD_SCALE); - bool positionUsesAnchorPoint = self.GetProperty(Dali::DevelActor::Property::POSITION_USES_ANCHOR_POINT).Get(); - Vector3 anchorPointOffSet = size * (positionUsesAnchorPoint ? self.GetCurrentProperty(Actor::Property::ANCHOR_POINT) : AnchorPoint::TOP_LEFT); - Vector2 position = Vector2((screenPosition.x - anchorPointOffSet.x), (screenPosition.y - anchorPointOffSet.y)); - - if(type == Dali::Accessibility::CoordinateType::WINDOW) - { - return {position.x, position.y, size.x, size.y}; - } - else // Dali::Accessibility::CoordinateType::SCREEN - { - auto window = Dali::DevelWindow::Get(self); - auto windowPosition = window.GetPosition(); - return {position.x + windowPosition.GetX(), position.y + windowPosition.GetY(), size.x, size.y}; - } -} + auto control = Dali::Toolkit::Control::DownCast(Self()); -int16_t ControlAccessible::GetMdiZOrder() const -{ - return 0; -} + Internal::Control& internalControl = Toolkit::Internal::GetImplementation(control); + Internal::Control::Impl& controlImpl = Internal::Control::Impl::Get(internalControl); -double ControlAccessible::GetAlpha() const -{ - return 0; + return controlImpl.mAccessibilityHidden; } bool ControlAccessible::GrabFocus() @@ -408,10 +333,10 @@ bool ControlAccessible::GrabHighlight() // Clear the old highlight. if(oldHighlightedActor) { - auto oldHighlightObject = dynamic_cast(Internal::Control::Impl::GetAccessibilityObject(oldHighlightedActor)); - if(oldHighlightObject) + auto oldHighlightedObject = Dali::Accessibility::Component::DownCast(Accessible::Get(oldHighlightedActor)); + if(oldHighlightedObject) { - oldHighlightObject->ClearHighlight(); + oldHighlightedObject->ClearHighlight(); } } @@ -532,29 +457,7 @@ std::vector ControlAccessible::GetRelationSet() { auto control = Dali::Toolkit::Control::DownCast(Self()); - Internal::Control& internalControl = Toolkit::Internal::GetImplementation(control); - Internal::Control::Impl& controlImpl = Internal::Control::Impl::Get(internalControl); - - std::vector ret; - - for(auto& relation : controlImpl.mAccessibilityRelations) - { - auto& targets = relation.second; - - ret.emplace_back(Accessibility::Relation{relation.first, {}}); - - // Map every Accessible* to its Address - std::transform(targets.begin(), targets.end(), std::back_inserter(ret.back().targets), [](auto* x) { - return x->GetAddress(); - }); - } - - return ret; -} - -Dali::Actor ControlAccessible::GetInternalActor() -{ - return Dali::Actor{}; + return DevelControl::GetAccessibilityRelations(control); } bool ControlAccessible::ScrollToChild(Actor child)