X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Fdevel-api%2Fcontrols%2Faccessible-impl.cpp;h=5f2a15732d753b80d3f7165d25f5c61eb1597924;hp=fd3e72edd9626b9f629f6c4225b67c26c1eb1063;hb=5005e599ae0a49d2bd92f001be5fce4f85ebe3f0;hpb=dc784926413b23f29d0719578d310fc3a24e46fe diff --git a/dali-toolkit/devel-api/controls/accessible-impl.cpp b/dali-toolkit/devel-api/controls/accessible-impl.cpp index fd3e72e..5f2a157 100644 --- a/dali-toolkit/devel-api/controls/accessible-impl.cpp +++ b/dali-toolkit/devel-api/controls/accessible-impl.cpp @@ -19,6 +19,10 @@ #include "accessible-impl.h" // EXTERNAL INCLUDES +#ifdef DGETTEXT_ENABLED +#include +#endif + #include // INTERNAL INCLUDES @@ -31,6 +35,17 @@ namespace Dali::Toolkit::DevelControl { +static std::string GetLocaleText(std::string string, const char *domain = "dali-toolkit") +{ +#ifdef DGETTEXT_ENABLED + /*TODO: currently non-localized string is used as a key for translation lookup. In case the lookup key formatting is forced + consider calling utility function for converting non-localized string into well-formatted key before lookup. */ + return dgettext(domain, string.c_str()); +#else + return string; +#endif +} + AccessibleImpl::AccessibleImpl(Dali::Actor self, Dali::Accessibility::Role role, bool modal) : self(self), modal(modal) @@ -72,21 +87,31 @@ std::string AccessibleImpl::GetName() Internal::Control& internalControl = Toolkit::Internal::GetImplementation(control); Internal::Control::Impl& controlImpl = Internal::Control::Impl::Get(internalControl); + std::string name; if(!controlImpl.mAccessibilityGetNameSignal.Empty()) { - std::string ret; - controlImpl.mAccessibilityGetNameSignal.Emit(ret); - return ret; + controlImpl.mAccessibilityGetNameSignal.Emit(name); + } + else if(controlImpl.mAccessibilityNameSet) + { + name = controlImpl.mAccessibilityName; + } + else if(auto raw = GetNameRaw(); !raw.empty()) + { + name = raw; + } + else + { + name = Self().GetProperty(Actor::Property::NAME); } - if(controlImpl.mAccessibilityNameSet) - return controlImpl.mAccessibilityName; - - if(auto raw = GetNameRaw(); !raw.empty()) - return raw; + if(controlImpl.mAccessibilityTranslationDomainSet) + { + return GetLocaleText(name, controlImpl.mAccessibilityTranslationDomain.c_str()); + } - return Self().GetProperty(Actor::Property::NAME); + return GetLocaleText(name); } std::string AccessibleImpl::GetNameRaw() @@ -100,23 +125,31 @@ std::string AccessibleImpl::GetDescription() Internal::Control& internalControl = Toolkit::Internal::GetImplementation(control); Internal::Control::Impl& controlImpl = Internal::Control::Impl::Get(internalControl); + std::string description; if(!controlImpl.mAccessibilityGetDescriptionSignal.Empty()) { - std::string ret; - controlImpl.mAccessibilityGetDescriptionSignal.Emit(ret); - return ret; + controlImpl.mAccessibilityGetDescriptionSignal.Emit(description); + } + else if(controlImpl.mAccessibilityDescriptionSet) + { + description = controlImpl.mAccessibilityDescription; + } + else + { + description = GetDescriptionRaw(); + } + if(controlImpl.mAccessibilityTranslationDomainSet) + { + return GetLocaleText(description, controlImpl.mAccessibilityTranslationDomain.c_str()); } - if(controlImpl.mAccessibilityDescriptionSet) - return controlImpl.mAccessibilityDescription; - - return GetDescriptionRaw(); + return GetLocaleText(description); } std::string AccessibleImpl::GetDescriptionRaw() { - return ""; + return {}; } Dali::Accessibility::Accessible* AccessibleImpl::GetParent() @@ -155,6 +188,11 @@ Dali::Accessibility::Role AccessibleImpl::GetRole() return Self().GetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_ROLE); } +std::string AccessibleImpl::GetLocalizedRoleName() +{ + return GetLocaleText(GetRoleName()); +} + Dali::Accessibility::States AccessibleImpl::CalculateStates() { Dali::Actor self = Self(); @@ -260,7 +298,7 @@ static Dali::Actor CreateHighlightIndicatorActor() // keyboard focusable actors auto actor = Toolkit::ImageView::New(focusBorderImagePath); actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); - DevelControl::AppendAccessibilityAttribute(actor, "highlight", ""); + DevelControl::AppendAccessibilityAttribute(actor, "highlight", std::string()); actor.SetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, false); return actor; @@ -339,7 +377,7 @@ bool AccessibleImpl::ClearHighlight() std::string AccessibleImpl::GetActionName(size_t index) { - if(index >= GetActionCount()) return ""; + if(index >= GetActionCount()) return {}; Dali::TypeInfo type; Self().GetTypeInfo(type); DALI_ASSERT_ALWAYS(type && "no TypeInfo object"); @@ -348,13 +386,12 @@ std::string AccessibleImpl::GetActionName(size_t index) std::string AccessibleImpl::GetLocalizedActionName(size_t index) { - // TODO: add localization - return GetActionName(index); + return GetLocaleText(GetActionName(index)); } std::string AccessibleImpl::GetActionDescription(size_t index) { - return ""; + return {}; } size_t AccessibleImpl::GetActionCount() @@ -367,7 +404,7 @@ size_t AccessibleImpl::GetActionCount() std::string AccessibleImpl::GetActionKeyBinding(size_t index) { - return ""; + return {}; } bool AccessibleImpl::DoAction(size_t index)