END_TEST;
}
+int UtcDaliControlAccessibilityValue(void)
+{
+ ToolkitTestApplication application;
+
+ auto control = Control::New();
+
+ auto q = Dali::Accessibility::Accessible::Get(control);
+ DALI_TEST_CHECK(q);
+
+ DALI_TEST_EQUALS("", q->GetValue(), TEST_LOCATION);
+
+ control.SetProperty(DevelControl::Property::ACCESSIBILITY_VALUE, "Accessibility_Value");
+ DALI_TEST_EQUALS("Accessibility_Value", q->GetValue(), TEST_LOCATION);
+
+ auto property = control.GetProperty(DevelControl::Property::ACCESSIBILITY_VALUE).Get<std::string>();
+ DALI_TEST_EQUALS("Accessibility_Value", property, TEST_LOCATION);
+
+ Dali::Accessibility::TestEnableSC(true);
+
+ auto i = dynamic_cast<Dali::Accessibility::Component*>(q);
+
+ DALI_TEST_CHECK(i);
+ i->GrabHighlight();
+
+ control.SetProperty(DevelControl::Property::ACCESSIBILITY_VALUE, "Changed_Accessiblity_Value");
+ DALI_TEST_EQUALS("Changed_Accessiblity_Value", q->GetValue(), TEST_LOCATION);
+ DALI_TEST_EQUALS(control.GetProperty(DevelControl::Property::ACCESSIBILITY_VALUE).Get<std::string>(), "Changed_Accessiblity_Value", TEST_LOCATION);
+
+ //TODO test emission of description change signal
+ Dali::Accessibility::TestEnableSC(false);
+
+ END_TEST;
+}
+
int UtcDaliControlAccessibilityRole(void)
{
ToolkitTestApplication application;
END_TEST;
}
-int UtcDaliControlPropertyAccessibilityTranslationDomain(void)
-{
- ToolkitTestApplication application;
-
- auto control = Control::New();
-
- auto accessibility_translation_domain = DevelControl::Property::ACCESSIBILITY_TRANSLATION_DOMAIN;
- DALI_TEST_EQUALS("", control.GetProperty<std::string>(accessibility_translation_domain), TEST_LOCATION);
-
- control.SetProperty(accessibility_translation_domain, "translation_domain_test_1");
- DALI_TEST_EQUALS("translation_domain_test_1", control.GetProperty(accessibility_translation_domain).Get<std::string>(), TEST_LOCATION);
-
- control.SetProperty(accessibility_translation_domain, "translation_domain_test_2");
- DALI_TEST_EQUALS("translation_domain_test_2", control.GetProperty(accessibility_translation_domain).Get<std::string>(), TEST_LOCATION);
-
- END_TEST;
-}
-
// This test shows that when the accessibility bridge is
// not up, there is no possibility to grab or clear highlight
int UtcDaliControlAccessibilityHighlight(void)
{
controlImpl.mAccessibilityGetNameSignal.Emit(name);
}
- else if(!controlImpl.mAccessibilityName.empty())
+ else if(!controlImpl.mAccessibilityProps.name.empty())
{
- name = controlImpl.mAccessibilityName;
+ name = controlImpl.mAccessibilityProps.name;
}
else if(auto raw = GetNameRaw(); !raw.empty())
{
name = Self().GetProperty<std::string>(Actor::Property::NAME);
}
- if(!controlImpl.mAccessibilityTranslationDomain.empty())
- {
- return GetLocaleText(name, controlImpl.mAccessibilityTranslationDomain.c_str());
- }
-
return GetLocaleText(name);
}
{
controlImpl.mAccessibilityGetDescriptionSignal.Emit(description);
}
- else if(!controlImpl.mAccessibilityDescription.empty())
+ else if(!controlImpl.mAccessibilityProps.description.empty())
{
- description = controlImpl.mAccessibilityDescription;
+ description = controlImpl.mAccessibilityProps.description;
}
else
{
description = GetDescriptionRaw();
}
- if(!controlImpl.mAccessibilityTranslationDomain.empty())
- {
- return GetLocaleText(description, controlImpl.mAccessibilityTranslationDomain.c_str());
- }
-
return GetLocaleText(description);
}
return {};
}
+std::string ControlAccessible::GetValue() const
+{
+ return Self().GetProperty<std::string>(Toolkit::DevelControl::Property::ACCESSIBILITY_VALUE);
+}
+
Dali::Accessibility::Role ControlAccessible::GetRole() const
{
return Self().GetProperty<Dali::Accessibility::Role>(Toolkit::DevelControl::Property::ACCESSIBILITY_ROLE);
Internal::Control& internalControl = Toolkit::Internal::GetImplementation(control);
Internal::Control::Impl& controlImpl = Internal::Control::Impl::Get(internalControl);
- return controlImpl.mAccessibilityHidden;
+ return controlImpl.mAccessibilityProps.isHidden;
}
bool ControlAccessible::GrabFocus()
*/
virtual std::string GetDescriptionRaw() const;
+ /**
+ * @copydoc Dali::Accessibility::Accessible::GetValue()
+ */
+ std::string GetValue() const override;
+
/**
* @copydoc Dali::Accessibility::Accessible::GetRole()
*/
{
if(auto destinationAccessible = Accessibility::Accessible::Get(destination))
{
- GetControlImplementation(control).mAccessibilityRelations[relation].insert(destinationAccessible);
+ GetControlImplementation(control).mAccessibilityProps.relations[relation].insert(destinationAccessible);
}
}
{
if(auto destinationAccessible = Accessibility::Accessible::Get(destination))
{
- auto& relations = GetControlImplementation(control).mAccessibilityRelations;
+ auto& relations = GetControlImplementation(control).mAccessibilityProps.relations;
relations[relation].erase(destinationAccessible);
std::vector<Accessibility::Relation> GetAccessibilityRelations(Toolkit::Control control)
{
- const auto& relations = GetControlImplementation(control).mAccessibilityRelations;
+ const auto& relations = GetControlImplementation(control).mAccessibilityProps.relations;
std::vector<Accessibility::Relation> result;
for(auto& relation : relations)
void ClearAccessibilityRelations(Toolkit::Control control)
{
- GetControlImplementation(control).mAccessibilityRelations.clear();
+ GetControlImplementation(control).mAccessibilityProps.relations.clear();
}
void AppendAccessibilityAttribute(Toolkit::Control control, const std::string& key, const std::string& value)
ACCESSIBILITY_DESCRIPTION,
/**
- * @brief Current translation domain for accessibility clients.
+ * @brief Deprecated. Current translation domain for accessibility clients.
* @details Name "accessibilityTranslationDomain", type Property::STRING.
*/
ACCESSIBILITY_TRANSLATION_DOMAIN,
* It will also appear in the AT-SPI tree under the key "automationId".
*/
AUTOMATION_ID,
+
+ /**
+ * @brief The accessibility value represented by the control. For example, "60%" for a slider object.
+ * @details Name "accessibilityValue", type Property::STRING.
+ */
+ ACCESSIBILITY_VALUE,
};
} // namespace Property
const PropertyRegistration Control::Impl::PROPERTY_24(typeRegistration, "clockwiseFocusableActorId", Toolkit::DevelControl::Property::CLOCKWISE_FOCUSABLE_ACTOR_ID, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
const PropertyRegistration Control::Impl::PROPERTY_25(typeRegistration, "counterClockwiseFocusableActorId", Toolkit::DevelControl::Property::COUNTER_CLOCKWISE_FOCUSABLE_ACTOR_ID, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
const PropertyRegistration Control::Impl::PROPERTY_26(typeRegistration, "automationId", Toolkit::DevelControl::Property::AUTOMATION_ID, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
+const PropertyRegistration Control::Impl::PROPERTY_27(typeRegistration, "accessibilityValue", Toolkit::DevelControl::Property::ACCESSIBILITY_VALUE, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
// clang-format on
{
if(mAccessibilityGetNameSignal.Empty())
{
- if(index == DevelControl::Property::ACCESSIBILITY_NAME || (mAccessibilityName.empty() && index == accessible->GetNamePropertyIndex()))
+ if(index == DevelControl::Property::ACCESSIBILITY_NAME || (mAccessibilityProps.name.empty() && index == accessible->GetNamePropertyIndex()))
{
accessible->Emit(Dali::Accessibility::ObjectPropertyChangeEvent::NAME);
}
if(mAccessibilityGetDescriptionSignal.Empty())
{
- if(index == DevelControl::Property::ACCESSIBILITY_DESCRIPTION || (mAccessibilityDescription.empty() && index == accessible->GetDescriptionPropertyIndex()))
+ if(index == DevelControl::Property::ACCESSIBILITY_DESCRIPTION || (mAccessibilityProps.description.empty() && index == accessible->GetDescriptionPropertyIndex()))
{
accessible->Emit(Dali::Accessibility::ObjectPropertyChangeEvent::DESCRIPTION);
}
void Control::Impl::AppendAccessibilityAttribute(const std::string& key, const std::string value)
{
- Property::Value* checkedValue = mAccessibilityAttributes.Find(key);
+ Property::Value* checkedValue = mAccessibilityProps.extraAttributes.Find(key);
if(checkedValue)
{
- mAccessibilityAttributes[key] = Property::Value(value);
+ mAccessibilityProps.extraAttributes[key] = Property::Value(value);
}
else
{
- mAccessibilityAttributes.Insert(key, value);
+ mAccessibilityProps.extraAttributes.Insert(key, value);
}
}
std::string name;
if(value.Get(name))
{
- controlImpl.mImpl->mAccessibilityName = name;
+ controlImpl.mImpl->mAccessibilityProps.name = std::move(name);
}
break;
}
std::string text;
if(value.Get(text))
{
- controlImpl.mImpl->mAccessibilityDescription = text;
- }
- break;
- }
-
- case Toolkit::DevelControl::Property::ACCESSIBILITY_TRANSLATION_DOMAIN:
- {
- std::string text;
- if(value.Get(text))
- {
- controlImpl.mImpl->mAccessibilityTranslationDomain = text;
+ controlImpl.mImpl->mAccessibilityProps.description = std::move(text);
}
break;
}
Dali::Accessibility::Role role;
if(value.Get(role))
{
- controlImpl.mImpl->mAccessibilityRole = role;
+ controlImpl.mImpl->mAccessibilityProps.role = role;
}
break;
}
bool highlightable;
if(value.Get(highlightable))
{
- controlImpl.mImpl->mAccessibilityHighlightable = highlightable;
+ controlImpl.mImpl->mAccessibilityProps.isHighlightable = highlightable;
}
break;
}
const Property::Map* map = value.GetMap();
if(map && !map->Empty())
{
- controlImpl.mImpl->mAccessibilityAttributes = *map;
+ controlImpl.mImpl->mAccessibilityProps.extraAttributes = *map;
}
break;
}
bool hidden;
if(value.Get(hidden))
{
- controlImpl.mImpl->mAccessibilityHidden = hidden;
+ controlImpl.mImpl->mAccessibilityProps.isHidden = hidden;
auto accessible = controlImpl.GetAccessibleObject();
if(DALI_LIKELY(accessible))
std::string automationId;
if(value.Get(automationId))
{
- controlImpl.mImpl->mAutomationId = automationId;
+ controlImpl.mImpl->mAccessibilityProps.automationId = std::move(automationId);
+ }
+ break;
+ }
+
+ case Toolkit::DevelControl::Property::ACCESSIBILITY_VALUE:
+ {
+ std::string accessibilityValue;
+ if(value.Get(accessibilityValue))
+ {
+ controlImpl.mImpl->mAccessibilityProps.value = std::move(accessibilityValue);
}
break;
}
case Toolkit::DevelControl::Property::ACCESSIBILITY_NAME:
{
- value = controlImpl.mImpl->mAccessibilityName;
+ value = controlImpl.mImpl->mAccessibilityProps.name;
break;
}
case Toolkit::DevelControl::Property::ACCESSIBILITY_DESCRIPTION:
{
- value = controlImpl.mImpl->mAccessibilityDescription;
- break;
- }
-
- case Toolkit::DevelControl::Property::ACCESSIBILITY_TRANSLATION_DOMAIN:
- {
- value = controlImpl.mImpl->mAccessibilityTranslationDomain;
+ value = controlImpl.mImpl->mAccessibilityProps.description;
break;
}
case Toolkit::DevelControl::Property::ACCESSIBILITY_ROLE:
{
- value = Property::Value(controlImpl.mImpl->mAccessibilityRole);
+ value = Property::Value(controlImpl.mImpl->mAccessibilityProps.role);
break;
}
case Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE:
{
- value = controlImpl.mImpl->mAccessibilityHighlightable;
+ value = controlImpl.mImpl->mAccessibilityProps.isHighlightable;
break;
}
case Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES:
{
- value = controlImpl.mImpl->mAccessibilityAttributes;
+ value = controlImpl.mImpl->mAccessibilityProps.extraAttributes;
break;
}
case Toolkit::DevelControl::Property::ACCESSIBILITY_HIDDEN:
{
- value = controlImpl.mImpl->mAccessibilityHidden;
+ value = controlImpl.mImpl->mAccessibilityProps.isHidden;
break;
}
case Toolkit::DevelControl::Property::AUTOMATION_ID:
{
- value = controlImpl.mImpl->mAutomationId;
+ value = controlImpl.mImpl->mAccessibilityProps.automationId;
+ break;
+ }
+
+ case Toolkit::DevelControl::Property::ACCESSIBILITY_VALUE:
+ {
+ value = controlImpl.mImpl->mAccessibilityProps.value;
break;
}
}
void Control::Impl::RemoveAccessibilityAttribute(const std::string& key)
{
- Property::Value* value = mAccessibilityAttributes.Find(key);
+ Property::Value* value = mAccessibilityProps.extraAttributes.Find(key);
if(value)
{
- mAccessibilityAttributes[key] = Property::Value();
+ mAccessibilityProps.extraAttributes[key] = Property::Value();
}
}
void Control::Impl::ClearAccessibilityAttributes()
{
- mAccessibilityAttributes.Clear();
+ mAccessibilityProps.extraAttributes.Clear();
}
void Control::Impl::SetAccessibilityReadingInfoType(const Dali::Accessibility::ReadingInfoTypes types)
Dali::Accessibility::ReadingInfoTypes Control::Impl::GetAccessibilityReadingInfoType() const
{
std::string value{};
- auto place = mAccessibilityAttributes.Find(READING_INFO_TYPE_ATTRIBUTE_NAME);
+ auto place = mAccessibilityProps.extraAttributes.Find(READING_INFO_TYPE_ATTRIBUTE_NAME);
if(place)
{
place->Get(value);
Control& mControlImpl;
DevelControl::State mState;
std::string mSubStateName;
- Property::Map mAccessibilityAttributes;
int mLeftFocusableActorId; ///< Actor ID of Left focusable control.
int mRightFocusableActorId; ///< Actor ID of Right focusable control.
Toolkit::DevelControl::AccessibilityGetDescriptionSignalType mAccessibilityGetDescriptionSignal;
Toolkit::DevelControl::AccessibilityDoGestureSignalType mAccessibilityDoGestureSignal;
- std::string mAccessibilityName;
- std::string mAccessibilityDescription;
- std::string mAccessibilityTranslationDomain;
- std::string mAutomationId;
-
- bool mAccessibilityHighlightable = false;
- bool mAccessibilityHidden = false;
- bool mAccessibleCreatable = true;
-
- Dali::Accessibility::Role mAccessibilityRole = Dali::Accessibility::Role::UNKNOWN;
-
- std::map<Dali::Accessibility::RelationType, std::set<Accessibility::Accessible*>> mAccessibilityRelations;
- std::shared_ptr<Toolkit::DevelControl::ControlAccessible> mAccessibleObject;
+ struct AccessibilityProps
+ {
+ std::string name{};
+ std::string description{};
+ std::string value{};
+ std::string automationId{};
+ Dali::Accessibility::Role role = Dali::Accessibility::Role::UNKNOWN;
+ std::map<Dali::Accessibility::RelationType, std::set<Accessibility::Accessible*>> relations;
+ Property::Map extraAttributes{};
+ bool isHighlightable = false;
+ bool isHidden = false;
+ } mAccessibilityProps;
+
+ bool mAccessibleCreatable = true;
// Gesture Detection
PinchGestureDetector mPinchGestureDetector;
static const PropertyRegistration PROPERTY_24;
static const PropertyRegistration PROPERTY_25;
static const PropertyRegistration PROPERTY_26;
+ static const PropertyRegistration PROPERTY_27;
private:
// Accessibility - notification for highlighted object to check if it is showing.
bool mIsAccessibilityPropertySetSignalRegistered{false};
Dali::PropertyNotification mAccessibilityPositionNotification;
Dali::Accessibility::ScreenRelativeMoveType mAccessibilityLastScreenRelativeMoveType{Accessibility::ScreenRelativeMoveType::OUTSIDE};
+
+ std::shared_ptr<Toolkit::DevelControl::ControlAccessible> mAccessibleObject;
+
};
} // namespace Internal