1 #include "BridgeText.hpp"
3 #include <dali/internal/input/common/imf-manager-impl.h>
5 using namespace Dali::Accessibility;
7 void BridgeText::RegisterInterfaces()
9 DBus::DBusInterfaceDescription desc{ATSPI_DBUS_INTERFACE_TEXT};
10 AddFunctionToInterface( desc, "GetText", &BridgeText::GetText );
11 AddGetPropertyToInterface( desc, "CharacterCount", &BridgeText::GetCharacterCount );
12 AddGetPropertyToInterface( desc, "CaretOffset", &BridgeText::GetCaretOffset );
13 AddFunctionToInterface( desc, "SetCaretOffset", &BridgeText::SetCaretOffset );
14 AddFunctionToInterface( desc, "GetTextAtOffset", &BridgeText::GetTextAtOffset );
15 AddFunctionToInterface( desc, "GetSelection", &BridgeText::GetSelection );
16 AddFunctionToInterface( desc, "SetSelection", &BridgeText::SetSelection );
17 AddFunctionToInterface( desc, "RemoveSelection", &BridgeText::RemoveSelection );
18 dbusServer.addInterface( "/", desc, true );
21 Text* BridgeText::FindSelf() const
23 auto s = BridgeBase::FindSelf();
25 auto s2 = dynamic_cast< Text* >( s );
27 throw AccessibleError{"object " + s->GetAddress().ToString() + " doesn't have Text interface"};
31 DBus::ValueOrError< std::string > BridgeText::GetText( int startOffset, int endOffset )
33 return FindSelf()->GetText( startOffset, endOffset );
36 DBus::ValueOrError< int32_t > BridgeText::GetCharacterCount()
38 return FindSelf()->GetCharacterCount();
41 DBus::ValueOrError< int32_t > BridgeText::GetCaretOffset()
43 auto imfManager = Dali::Internal::Adaptor::ImfManager::Get();
44 return imfManager.GetCursorPosition();
47 DBus::ValueOrError< bool > BridgeText::SetCaretOffset( int32_t offset )
49 auto imfManager = Dali::Internal::Adaptor::ImfManager::Get();
50 imfManager.SetCursorPosition( offset );
54 DBus::ValueOrError< std::string, int, int > BridgeText::GetTextAtOffset( int32_t offset, uint32_t boundary )
56 auto r = FindSelf()->GetTextAtOffset( offset, static_cast< TextBoundary >( boundary ) );
57 return {r.content, static_cast< int >( r.startOffset ), static_cast< int >( r.endOffset )};
60 DBus::ValueOrError< int, int > BridgeText::GetSelection( int32_t selectionNum )
62 auto r = FindSelf()->GetSelection( selectionNum );
63 return {static_cast< int >( r.startOffset ), static_cast< int >( r.endOffset )};
66 DBus::ValueOrError< bool > BridgeText::RemoveSelection( int32_t selectionNum )
68 return FindSelf()->RemoveSelection( selectionNum );
71 DBus::ValueOrError< bool > BridgeText::SetSelection( int32_t selectionNum, int32_t startOffset, int32_t endOffset )
73 return FindSelf()->SetSelection( selectionNum, startOffset, endOffset );