[AT-SPI] Add notification for a11y name/description change
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / buttons / button-impl.cpp
index d840e96..1f5510d 100644 (file)
@@ -619,6 +619,7 @@ void Button::OnInitialize()
   mTapDetector.DetectedSignal().Connect(this, &Button::OnTap);
 
   self.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE, true );
+  self.SetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, true );
 
   self.TouchedSignal().Connect( this, &Button::OnTouch );
 }
@@ -1313,6 +1314,39 @@ Padding Button::GetForegroundPadding()
   return mForegroundPadding;
 }
 
+std::string Button::AccessibleImpl::GetNameRaw()
+{
+  auto slf = Toolkit::Button::DownCast( self );
+
+  Property::Map label = slf.GetProperty<Property::Map>( Toolkit::Button::Property::LABEL );
+
+  std::string labelText;
+  label.Find( Toolkit::TextVisual::Property::TEXT )->Get( labelText );
+
+  return labelText;
+}
+
+Property::Index Button::AccessibleImpl::GetNamePropertyIndex()
+{
+  Property::Index label = Toolkit::Button::Property::LABEL;
+  Property::Map labelMap = self.GetProperty<Property::Map>(label);
+
+  if (MapContainsTextString(labelMap))
+    return label;
+  else
+    return Property::INVALID_INDEX;
+}
+
+Dali::Accessibility::States Button::AccessibleImpl::CalculateStates()
+{
+  auto tmp = Control::Impl::AccessibleImpl::CalculateStates();
+  tmp[Dali::Accessibility::State::SELECTABLE] = true;
+  auto slf = Toolkit::Button::DownCast( self );
+  tmp[Dali::Accessibility::State::ENABLED] = !slf.GetProperty<bool>( Toolkit::Button::Property::DISABLED );
+  tmp[Dali::Accessibility::State::CHECKED] = slf.GetProperty<bool>( Toolkit::Button::Property::SELECTED );
+  return tmp;
+}
+
 } // namespace Internal
 
 } // namespace Toolkit