// EXTERNAL INCLUDES
#include <dali/integration-api/debug.h>
#include <dali/public-api/object/type-registry.h>
-#include <dali/public-api/images/resource-image.h>
#if defined(DEBUG_ENABLED)
extern Debug::Filter* gLogButtonFilter;
void RadioButton::OnInitialize()
{
Button::OnInitialize();
+
+ DevelControl::SetAccessibilityConstructor( Self(), []( Dali::Actor actor ) {
+ return std::unique_ptr< Dali::Accessibility::Accessible >(
+ new AccessibleImpl( actor, Dali::Accessibility::Role::RADIO_BUTTON ) );
+ } );
}
bool RadioButton::OnToggleReleased()
{
// Radio button overrides toggle release (button up) as doesn't allow un-selection to be performed on it directly.
- bool stateChanged = false;
- if( !IsSelected() )
- {
- Button::SetSelected( true ); // Set button to selected as previously unselected
- stateChanged = true;
- }
- return stateChanged;
+ return false;
}
void RadioButton::OnStateChange( State newState )
}
}
}
+ // TODO: replace it with OnPropertySet hook once Button::Property::SELECTED will be consistently used
+ if (Dali::Accessibility::IsUp() && (newState == SELECTED_STATE || newState == UNSELECTED_STATE))
+ {
+ Dali::Accessibility::Accessible::Get(Self())->EmitStateChanged(
+ Dali::Accessibility::State::CHECKED, newState == SELECTED_STATE ? 1 : 0, 0
+ );
+ }
+}
+
+Dali::Accessibility::States RadioButton::AccessibleImpl::CalculateStates()
+{
+ auto tmp = Button::AccessibleImpl::CalculateStates();
+ auto slf = Toolkit::Button::DownCast( self );
+ if( slf.GetProperty<bool>( Toolkit::Button::Property::SELECTED ) )
+ tmp[Dali::Accessibility::State::CHECKED] = true;
+ tmp[Dali::Accessibility::State::SELECTABLE] = true;
+ return tmp;
}
} // namespace Internal