1 #include "BridgeAction.hpp"
4 using namespace Dali::Accessibility;
6 void BridgeAction::RegisterInterfaces()
8 DBus::DBusInterfaceDescription desc{ATSPI_DBUS_INTERFACE_ACTION};
10 AddGetPropertyToInterface( desc, "NActions", &BridgeAction::GetActionCount );
12 AddFunctionToInterface( desc, "GetName", &BridgeAction::GetActionName );
13 AddFunctionToInterface( desc, "GetLocalizedName", &BridgeAction::GetLocalizedActionName );
14 AddFunctionToInterface( desc, "GetDescription", &BridgeAction::GetActionDescription );
15 AddFunctionToInterface( desc, "GetKeyBinding", &BridgeAction::GetActionKeyBinding );
16 AddFunctionToInterface( desc, "DoAction", &BridgeAction::DoAction );
17 AddFunctionToInterface( desc, "DoActionName", &BridgeAction::DoActionName );
18 dbusServer.addInterface( "/", desc, true );
21 Action* BridgeAction::FindSelf() const
23 auto s = BridgeBase::FindSelf();
25 auto s2 = dynamic_cast< Action* >( s );
27 throw AccessibleError{"object " + s->GetAddress().ToString() + " doesn't have Action interface"};
31 DBus::ValueOrError< std::string > BridgeAction::GetActionName( int32_t index )
33 auto self = FindSelf();
34 return self->GetActionName( index );
37 DBus::ValueOrError< std::string > BridgeAction::GetLocalizedActionName( int32_t index )
39 auto self = FindSelf();
40 return self->GetLocalizedActionName( index );
43 DBus::ValueOrError< std::string > BridgeAction::GetActionDescription( int32_t index )
45 auto self = FindSelf();
46 return self->GetActionDescription( index );
49 DBus::ValueOrError< std::string > BridgeAction::GetActionKeyBinding( int32_t index )
51 auto self = FindSelf();
52 return self->GetActionKeyBinding( index );
55 DBus::ValueOrError< int32_t > BridgeAction::GetActionCount()
57 auto self = FindSelf();
58 return self->GetActionCount();
62 DBus::ValueOrError< bool > BridgeAction::DoAction( int32_t index )
64 auto self = FindSelf();
65 return self->DoAction( index );
68 DBus::ValueOrError< bool > BridgeAction::DoActionName( std::string name )
70 auto self = FindSelf();
71 auto cnt = self->GetActionCount();
72 for( auto i = 0u; i < cnt; ++i )
74 if( self->GetActionName( i ) == name )
76 return self->DoAction( i );
79 throw AccessibleError{"object " + self->GetAddress().ToString() + " doesn't have action '" + name + "'"};