/*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 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.
controlDataImpl.DoAction(visualIndex, actionId, attributes);
}
+void DoActionExtension(Control& control, Dali::Property::Index visualIndex, Dali::Property::Index actionId, Dali::Any attributes)
+{
+ Internal::Control& controlInternal = Toolkit::Internal::GetImplementation(control);
+ Internal::Control::Impl& controlDataImpl = Internal::Control::Impl::Get(controlInternal);
+ controlDataImpl.DoActionExtension(visualIndex, actionId, attributes);
+}
+
void SetInputMethodContext(Internal::Control& control, InputMethodContext& inputMethodContext)
{
Internal::Control::Impl::Get(control).SetInputMethodContext(inputMethodContext);
}
}
-std::vector<std::vector<Accessibility::Address>> GetAccessibilityRelations(Toolkit::Control control)
+std::vector<Accessibility::Relation> GetAccessibilityRelations(Toolkit::Control control)
{
- std::vector<std::vector<Accessibility::Address>> result(static_cast<std::size_t>(Accessibility::RelationType::MAX_COUNT));
+ const auto& relations = GetControlImplementation(control).mAccessibilityRelations;
+ std::vector<Accessibility::Relation> result;
- // Map every Accessible* to its Address
- for(auto& relation : GetControlImplementation(control).mAccessibilityRelations)
+ for(auto& relation : relations)
{
- auto index = static_cast<std::size_t>(relation.first);
auto& targets = relation.second;
- std::transform(targets.begin(), targets.end(), std::back_inserter(result[index]), [](auto* x) {
- return x->GetAddress();
- });
+ result.emplace_back(Accessibility::Relation{relation.first, {}});
+ std::copy(targets.begin(), targets.end(), std::back_inserter(result.back().mTargets));
}
return result;
GetControlImplementation(control).mAccessibilityRelations.clear();
}
-void SetAccessibilityConstructor(Dali::Actor control, std::function<std::unique_ptr<Dali::Accessibility::Accessible>(Dali::Actor)> constructor)
-{
- GetControlImplementation(Toolkit::Control::DownCast(control)).mAccessibilityConstructor = constructor;
-}
-
void AppendAccessibilityAttribute(Toolkit::Control control, const std::string& key, const std::string& value)
{
GetControlImplementation(control).AppendAccessibilityAttribute(key, value);
bool ClearAccessibilityHighlight(Toolkit::Control control)
{
- auto* accessible = Dali::Accessibility::Component::DownCast(GetControlImplementation(control).GetAccessibilityObject());
-
- return accessible ? accessible->ClearHighlight() : false;
+ auto* controlAccessible = GetControlImplementation(control).GetAccessibleObject();
+ if(DALI_LIKELY(controlAccessible))
+ {
+ return controlAccessible->ClearHighlight();
+ }
+ return false;
}
bool GrabAccessibilityHighlight(Toolkit::Control control)
{
- auto* accessible = Dali::Accessibility::Component::DownCast(GetControlImplementation(control).GetAccessibilityObject());
-
- return accessible ? accessible->GrabHighlight() : false;
+ auto* controlAccessible = GetControlImplementation(control).GetAccessibleObject();
+ if(DALI_LIKELY(controlAccessible))
+ {
+ return controlAccessible->GrabHighlight();
+ }
+ return false;
}
Dali::Accessibility::States GetAccessibilityStates(Toolkit::Control control)
{
- auto* accessible = GetControlImplementation(control).GetAccessibilityObject();
-
- return accessible->GetStates();
+ auto* controlAccessible = GetControlImplementation(control).GetAccessibleObject();
+ if(DALI_LIKELY(controlAccessible))
+ {
+ return controlAccessible->GetStates();
+ }
+ return Dali::Accessibility::States{};
}
void NotifyAccessibilityStateChange(Toolkit::Control control, Dali::Accessibility::States states, bool recurse)
{
- GetControlImplementation(control).GetAccessibilityObject()->NotifyAccessibilityStateChange(std::move(states), recurse);
+ auto* controlAccessible = GetControlImplementation(control).GetAccessibleObject();
+ if(DALI_LIKELY(controlAccessible))
+ {
+ controlAccessible->NotifyAccessibilityStateChange(std::move(states), recurse);
+ }
+}
+
+bool IsAccessibleCreated(Toolkit::Control control)
+{
+ return GetControlImplementation(control).IsAccessibleCreated();
+}
+
+void EnableCreateAccessible(Toolkit::Control control, bool enable)
+{
+ GetControlImplementation(control).EnableCreateAccessible(enable);
+}
+
+bool IsCreateAccessibleEnabled(Toolkit::Control control)
+{
+ return GetControlImplementation(control).IsCreateAccessibleEnabled();
}
} // namespace DevelControl