DBUS_DEBUG( "registering interface %p (%d)", v, fallback ? 1 : 0 );
destructors.push_back([=]() {
DBUS_DEBUG( "unregistering interface %p", v );
+ {
+ std::lock_guard< std::mutex > lock( globalEntriesMutex );
+ globalEntries.erase( v );
+ }
eldbus_service_interface_unregister( v );
- std::lock_guard< std::mutex > lock( globalEntriesMutex );
- globalEntries.erase( v );
});
}
}
auto a = Dali::Accessibility::Accessible::Get( control );
auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
- auto extents = a_component->GetExtents(Dali::Accessibility::CoordType::SCREEN);
+ auto extents = a_component->GetExtents(Dali::Accessibility::CoordinateType::SCREEN);
DALI_TEST_EQUALS( extents.x, 5.0f, TEST_LOCATION );
DALI_TEST_EQUALS( extents.y, 5.0f, TEST_LOCATION );
DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION );
application.SendNotification();
application.Render( 1 );
- extents = a_component->GetExtents(Dali::Accessibility::CoordType::SCREEN);
+ extents = a_component->GetExtents(Dali::Accessibility::CoordinateType::SCREEN);
DALI_TEST_EQUALS( extents.x, 10.0f, TEST_LOCATION );
DALI_TEST_EQUALS( extents.y, 10.0f, TEST_LOCATION );
DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION );
Dali::Accessibility::TestEnableSC( false );
END_TEST;
-}
\ No newline at end of file
+}
auto text = dynamic_cast< Dali::Accessibility::Text* >( accessible );
DALI_TEST_CHECK( text );
DALI_TEST_EQUALS( text->GetText( 0, 10 ), "", TEST_LOCATION );
- DALI_TEST_EQUALS( text->SetCaretOffset(100), false, TEST_LOCATION );
- DALI_TEST_EQUALS( text->SetCaretOffset(2), true, TEST_LOCATION );
- DALI_TEST_EQUALS( text->GetCaretOffset(), 2, TEST_LOCATION );
+ DALI_TEST_EQUALS( text->SetCursorOffset(100), false, TEST_LOCATION );
+ DALI_TEST_EQUALS( text->SetCursorOffset(2), true, TEST_LOCATION );
+ DALI_TEST_EQUALS( text->GetCursorOffset(), 2, TEST_LOCATION );
auto editabletext = dynamic_cast< Dali::Accessibility::EditableText* >( accessible );
DALI_TEST_CHECK( editabletext );
DALI_TEST_EQUALS( editabletext->CutText( 1, 3 ), true, TEST_LOCATION );
DALI_TEST_EQUALS( text->GetText( 0, 1 ), "t", TEST_LOCATION );
- auto range = text->GetSelection( 1 );
+ auto range = text->GetRangeOfSelection( 1 );
DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
- DALI_TEST_EQUALS( text->SetSelection( 1, 0, 1 ), false, TEST_LOCATION );
+ DALI_TEST_EQUALS( text->SetRangeOfSelection( 1, 0, 1 ), false, TEST_LOCATION );
DALI_TEST_EQUALS( text->RemoveSelection( 1 ), false, TEST_LOCATION );
DALI_TEST_EQUALS(editabletext->SetTextContents("adef"), true, TEST_LOCATION);
auto text = dynamic_cast< Dali::Accessibility::Text* >( accessible );
DALI_TEST_CHECK( text );
DALI_TEST_EQUALS( text->GetText( 0, 10 ), "", TEST_LOCATION );
- DALI_TEST_EQUALS( text->SetCaretOffset(100), false, TEST_LOCATION );
- DALI_TEST_EQUALS( text->SetCaretOffset(2), true, TEST_LOCATION );
- DALI_TEST_EQUALS( text->GetCaretOffset(), 2, TEST_LOCATION );
+ DALI_TEST_EQUALS( text->SetCursorOffset(100), false, TEST_LOCATION );
+ DALI_TEST_EQUALS( text->SetCursorOffset(2), true, TEST_LOCATION );
+ DALI_TEST_EQUALS( text->GetCursorOffset(), 2, TEST_LOCATION );
auto editabletext = dynamic_cast< Dali::Accessibility::EditableText* >( accessible );
DALI_TEST_CHECK( editabletext );
DALI_TEST_EQUALS( editabletext->CutText( 1, 3 ), true, TEST_LOCATION );
DALI_TEST_EQUALS( text->GetText( 0, 1 ), "t", TEST_LOCATION );
- auto range = text->GetSelection( 1 );
+ auto range = text->GetRangeOfSelection( 1 );
DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
- DALI_TEST_EQUALS( text->SetSelection( 1, 0, 1 ), false, TEST_LOCATION );
+ DALI_TEST_EQUALS( text->SetRangeOfSelection( 1, 0, 1 ), false, TEST_LOCATION );
DALI_TEST_EQUALS( text->RemoveSelection( 1 ), false, TEST_LOCATION );
DALI_TEST_EQUALS(editabletext->SetTextContents("adef"), true, TEST_LOCATION);
DALI_TEST_CHECK( text );
DALI_TEST_EQUALS( text->GetText( 0, 10 ), "", TEST_LOCATION );
DALI_TEST_EQUALS( text->GetText( 0, 4 ), "test", TEST_LOCATION );
- DALI_TEST_EQUALS( text->SetCaretOffset(0), false, TEST_LOCATION );
- DALI_TEST_EQUALS( text->GetCaretOffset(), 0, TEST_LOCATION );
+ DALI_TEST_EQUALS( text->SetCursorOffset(0), false, TEST_LOCATION );
+ DALI_TEST_EQUALS( text->GetCursorOffset(), 0, TEST_LOCATION );
- auto range = text->GetSelection( 1 );
+ auto range = text->GetRangeOfSelection( 1 );
DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
- DALI_TEST_EQUALS( text->SetSelection( 1, 0, 1 ), false, TEST_LOCATION );
+ DALI_TEST_EQUALS( text->SetRangeOfSelection( 1, 0, 1 ), false, TEST_LOCATION );
DALI_TEST_EQUALS( text->RemoveSelection( 1 ), false, TEST_LOCATION );
Dali::Accessibility::TestEnableSC( false );
END_TEST;
}
-int utcDaliAccessibilityTextEditorGetSetSelection(void)
+int utcDaliAccessibilityTextEditorGetSetRangeOfSelection(void)
{
ToolkitTestApplication application;
DALI_TEST_CHECK( x );
if( x )
{
- auto range = x->GetSelection( 0 );
+ auto range = x->GetRangeOfSelection( 0 );
DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
- x->SetSelection( 0, 4, 9 );
+ x->SetRangeOfSelection( 0, 4, 9 );
editor.SetProperty( Toolkit::TextEditor::Property::TEXT, "exemplary_text" );
- range = x->GetSelection( 0 );
+ range = x->GetRangeOfSelection( 0 );
DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
DALI_TEST_CHECK( x );
if( x )
{
- auto range = x->GetSelection( 0 );
+ auto range = x->GetRangeOfSelection( 0 );
DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
- x->SetSelection( 0, 4, 9 );
- range = x->GetSelection( 0 );
+ x->SetRangeOfSelection( 0, 4, 9 );
+ range = x->GetRangeOfSelection( 0 );
DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
x->RemoveSelection( 0 );
- range = x->GetSelection( 0 );
+ range = x->GetRangeOfSelection( 0 );
DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
}
END_TEST;
}
-int utcDaliAccessibilityTextFieldGetSetSelection(void)
+int utcDaliAccessibilityTextFieldGetSetRangeOfSelection(void)
{
ToolkitTestApplication application;
DALI_TEST_CHECK( x );
if( x )
{
- auto range = x->GetSelection( 0 );
+ auto range = x->GetRangeOfSelection( 0 );
DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
- x->SetSelection( 0, 4, 9 );
+ x->SetRangeOfSelection( 0, 4, 9 );
field.SetProperty( Toolkit::TextEditor::Property::TEXT, "exemplary_text" );
- range = x->GetSelection( 0 );
+ range = x->GetRangeOfSelection( 0 );
DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
DALI_TEST_CHECK( x );
if( x )
{
- auto range = x->GetSelection( 0 );
+ auto range = x->GetRangeOfSelection( 0 );
DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
- x->SetSelection( 0, 4, 9 );
- range = x->GetSelection( 0 );
+ x->SetRangeOfSelection( 0, 4, 9 );
+ range = x->GetRangeOfSelection( 0 );
DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
x->RemoveSelection( 0 );
- range = x->GetSelection( 0 );
+ range = x->GetRangeOfSelection( 0 );
DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
}
DALI_TEST_CHECK( x );
if( x )
{
- auto range = x->GetSelection( 0 );
+ auto range = x->GetRangeOfSelection( 0 );
DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
- x->SetSelection( 0, 4, 9 );
- range = x->GetSelection( 0 );
+ x->SetRangeOfSelection( 0, 4, 9 );
+ range = x->GetRangeOfSelection( 0 );
DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
x->RemoveSelection( 0 );
- range = x->GetSelection( 0 );
+ range = x->GetRangeOfSelection( 0 );
DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
}
// Creates a temporary text-field to use mEditableControlInterface.
TextField field = TextField::New();
Toolkit::Internal::TextField& fieldImpl = GetImpl(field);
- ControllerPtr fieldController = fieldImpl.getController();
+ ControllerPtr fieldController = fieldImpl.GetTextController();
Controller::Impl& fieldControllerImpl = Controller::Impl::GetImplementation(*fieldController.Get());
Controller::Impl& controllerImpl = Controller::Impl::GetImplementation(*controller.Get());
uint32_t expectedNumberOfUnderlinedGlyphs = 5u;
Toolkit::Internal::TextEditor& textEditorImpl = GetImpl( textEditor );
- const Text::Length numberOfUnderlineRuns = textEditorImpl.getController()->GetTextModel()->GetNumberOfUnderlineRuns();
+ const Text::Length numberOfUnderlineRuns = textEditorImpl.GetTextController()->GetTextModel()->GetNumberOfUnderlineRuns();
DALI_TEST_EQUALS( numberOfUnderlineRuns, expectedNumberOfUnderlinedGlyphs, TEST_LOCATION );
Vector<GlyphRun> underlineRuns;
underlineRuns.Resize(numberOfUnderlineRuns);
- textEditorImpl.getController()->GetTextModel()->GetUnderlineRuns(underlineRuns.Begin(), 0u, numberOfUnderlineRuns);
+ textEditorImpl.GetTextController()->GetTextModel()->GetUnderlineRuns(underlineRuns.Begin(), 0u, numberOfUnderlineRuns);
//ABC are underlined
DALI_TEST_EQUALS( underlineRuns[0u].glyphIndex, 0u, TEST_LOCATION);
application.Render();
Toolkit::Internal::TextEditor& editorImpl = GetImpl( editor );
- const ColorIndex* const backgroundColorIndicesBuffer = editorImpl.getController()->GetTextModel()->GetBackgroundColorIndices();
+ const ColorIndex* const backgroundColorIndicesBuffer = editorImpl.GetTextController()->GetTextModel()->GetBackgroundColorIndices();
DALI_TEST_CHECK( backgroundColorIndicesBuffer );
DALI_TEST_GREATER(spanSize.width, originalSize.width, TEST_LOCATION);
Toolkit::Internal::TextEditor& editorImpl = GetImpl( editor );
- const ColorIndex* const colorIndicesBuffer1 = editorImpl.getController()->GetTextModel()->GetColorIndices();
+ const ColorIndex* const colorIndicesBuffer1 = editorImpl.GetTextController()->GetTextModel()->GetColorIndices();
DALI_TEST_CHECK( colorIndicesBuffer1 );
application.SendNotification();
application.Render();
- const ColorIndex* const colorIndicesBuffer2 = editorImpl.getController()->GetTextModel()->GetColorIndices();
+ const ColorIndex* const colorIndicesBuffer2 = editorImpl.GetTextController()->GetTextModel()->GetColorIndices();
DALI_TEST_CHECK( colorIndicesBuffer2 );
application.Render();
Toolkit::Internal::TextEditor& editorImpl = GetImpl(editor);
- ControllerPtr controller = editorImpl.getController();
+ ControllerPtr controller = editorImpl.GetTextController();
Controller::Impl& controllerImpl = Controller::Impl::GetImplementation(*controller.Get());
// Default color is transparent
DALI_TEST_EQUALS(backgroundColor, Color::RED, TEST_LOCATION);
END_TEST;
-}
\ No newline at end of file
+}
uint32_t expectedNumberOfUnderlinedGlyphs = 5u;
Toolkit::Internal::TextField& textFieldImpl = GetImpl( textField );
- const Text::Length numberOfUnderlineRuns = textFieldImpl.getController()->GetTextModel()->GetNumberOfUnderlineRuns();
+ const Text::Length numberOfUnderlineRuns = textFieldImpl.GetTextController()->GetTextModel()->GetNumberOfUnderlineRuns();
DALI_TEST_EQUALS( numberOfUnderlineRuns, expectedNumberOfUnderlinedGlyphs, TEST_LOCATION );
Vector<GlyphRun> underlineRuns;
underlineRuns.Resize(numberOfUnderlineRuns);
- textFieldImpl.getController()->GetTextModel()->GetUnderlineRuns(underlineRuns.Begin(), 0u, numberOfUnderlineRuns);
+ textFieldImpl.GetTextController()->GetTextModel()->GetUnderlineRuns(underlineRuns.Begin(), 0u, numberOfUnderlineRuns);
//ABC are underlined
DALI_TEST_EQUALS( underlineRuns[0u].glyphIndex, 0u, TEST_LOCATION);
application.Render();
Toolkit::Internal::TextField& fieldImpl = GetImpl( field );
- const ColorIndex* const backgroundColorIndicesBuffer = fieldImpl.getController()->GetTextModel()->GetBackgroundColorIndices();
+ const ColorIndex* const backgroundColorIndicesBuffer = fieldImpl.GetTextController()->GetTextModel()->GetBackgroundColorIndices();
DALI_TEST_CHECK( backgroundColorIndicesBuffer );
DALI_TEST_GREATER(spanSize.width, originalSize.width, TEST_LOCATION);
Toolkit::Internal::TextField& fieldImpl = GetImpl( field );
- const ColorIndex* const colorIndicesBuffer1 = fieldImpl.getController()->GetTextModel()->GetColorIndices();
+ const ColorIndex* const colorIndicesBuffer1 = fieldImpl.GetTextController()->GetTextModel()->GetColorIndices();
DALI_TEST_CHECK( colorIndicesBuffer1 );
application.SendNotification();
application.Render();
- const ColorIndex* const colorIndicesBuffer2 = fieldImpl.getController()->GetTextModel()->GetColorIndices();
+ const ColorIndex* const colorIndicesBuffer2 = fieldImpl.GetTextController()->GetTextModel()->GetColorIndices();
DALI_TEST_CHECK( colorIndicesBuffer2 );
application.Render();
Toolkit::Internal::TextField& fieldImpl = GetImpl(field);
- ControllerPtr controller = fieldImpl.getController();
+ ControllerPtr controller = fieldImpl.GetTextController();
Controller::Impl& controllerImpl = Controller::Impl::GetImplementation(*controller.Get());
// Default color is transparent
DALI_TEST_EQUALS(backgroundColor, Color::RED, TEST_LOCATION);
END_TEST;
-}
\ No newline at end of file
+}
uint32_t expectedNumberOfUnderlinedGlyphs = 5u;
Toolkit::Internal::TextLabel& textLabelImpl = GetImpl( textLabel );
- const Text::Length numberOfUnderlineRuns = textLabelImpl.getController()->GetTextModel()->GetNumberOfUnderlineRuns();
+ const Text::Length numberOfUnderlineRuns = textLabelImpl.GetTextController()->GetTextModel()->GetNumberOfUnderlineRuns();
DALI_TEST_EQUALS( numberOfUnderlineRuns, expectedNumberOfUnderlinedGlyphs, TEST_LOCATION );
Vector<GlyphRun> underlineRuns;
underlineRuns.Resize(numberOfUnderlineRuns);
- textLabelImpl.getController()->GetTextModel()->GetUnderlineRuns(underlineRuns.Begin(), 0u, numberOfUnderlineRuns);
+ textLabelImpl.GetTextController()->GetTextModel()->GetUnderlineRuns(underlineRuns.Begin(), 0u, numberOfUnderlineRuns);
//ABC are underlined
DALI_TEST_EQUALS( underlineRuns[0u].glyphIndex, 0u, TEST_LOCATION);
application.Render();
Toolkit::Internal::TextLabel& labelImpl = GetImpl( label );
- const ColorIndex* const backgroundColorIndicesBuffer = labelImpl.getController()->GetTextModel()->GetBackgroundColorIndices();
+ const ColorIndex* const backgroundColorIndicesBuffer = labelImpl.GetTextController()->GetTextModel()->GetBackgroundColorIndices();
DALI_TEST_CHECK( backgroundColorIndicesBuffer );
DALI_TEST_GREATER(spanSize.width, originalSize.width, TEST_LOCATION);
Toolkit::Internal::TextLabel& labelImpl = GetImpl( label );
- const ColorIndex* const colorIndicesBuffer1 = labelImpl.getController()->GetTextModel()->GetColorIndices();
+ const ColorIndex* const colorIndicesBuffer1 = labelImpl.GetTextController()->GetTextModel()->GetColorIndices();
DALI_TEST_CHECK( colorIndicesBuffer1 );
application.SendNotification();
application.Render();
- const ColorIndex* const colorIndicesBuffer2 = labelImpl.getController()->GetTextModel()->GetColorIndices();
+ const ColorIndex* const colorIndicesBuffer2 = labelImpl.GetTextController()->GetTextModel()->GetColorIndices();
DALI_TEST_CHECK( colorIndicesBuffer2 );
DALI_TEST_EQUALS( colorIndicesBuffer2[7], 0u, TEST_LOCATION);
END_TEST;
-}
\ No newline at end of file
+}
#include <dali-toolkit/public-api/controls/image-view/image-view.h>
#include <dali-toolkit/public-api/focus-manager/keyboard-focus-manager.h>
-namespace Dali::Toolkit::DevelControl {
+namespace Dali::Toolkit::DevelControl
+{
static std::string GetLocaleText(std::string string, const char *domain = "dali-toolkit")
{
}
AccessibleImpl::AccessibleImpl(Dali::Actor self, Dali::Accessibility::Role role, bool modal)
-: self(self),
- modal(modal)
+: mSelf(self),
+ mIsModal(modal)
{
auto control = Dali::Toolkit::Control::DownCast(Self());
Internal::Control& internalControl = Toolkit::Internal::GetImplementation(control);
Internal::Control::Impl& controlImpl = Internal::Control::Impl::Get(internalControl);
if(controlImpl.mAccessibilityRole == Dali::Accessibility::Role::UNKNOWN)
+ {
controlImpl.mAccessibilityRole = role;
+ }
Self().PropertySetSignal().Connect(&controlImpl, [this, &controlImpl](Dali::Handle& handle, Dali::Property::Index index, Dali::Property::Value value) {
if(this->Self() != Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor())
size_t AccessibleImpl::GetIndexInParent()
{
- auto s = Self();
- auto parent = s.GetParent();
+ auto self = Self();
+ auto parent = self.GetParent();
DALI_ASSERT_ALWAYS(parent && "can't call GetIndexInParent on object without parent");
+
auto count = parent.GetChildCount();
for(auto i = 0u; i < count; ++i)
{
- auto c = parent.GetChildAt(i);
- if(c == s)
+ auto child = parent.GetChildAt(i);
+ if(child == self)
+ {
return i;
+ }
}
DALI_ASSERT_ALWAYS(false && "object isn't child of it's parent");
return static_cast<size_t>(-1);
Dali::Accessibility::States AccessibleImpl::CalculateStates()
{
Dali::Actor self = Self();
- Dali::Accessibility::States s;
- s[Dali::Accessibility::State::FOCUSABLE] = self.GetProperty<bool>(Actor::Property::KEYBOARD_FOCUSABLE);
- s[Dali::Accessibility::State::FOCUSED] = Toolkit::KeyboardFocusManager::Get().GetCurrentFocusActor() == self;
+ Dali::Accessibility::States state;
+ state[Dali::Accessibility::State::FOCUSABLE] = self.GetProperty<bool>(Actor::Property::KEYBOARD_FOCUSABLE);
+ state[Dali::Accessibility::State::FOCUSED] = Toolkit::KeyboardFocusManager::Get().GetCurrentFocusActor() == self;
+
if(self.GetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE).GetType() == Dali::Property::NONE)
- s[Dali::Accessibility::State::HIGHLIGHTABLE] = false;
+ {
+ state[Dali::Accessibility::State::HIGHLIGHTABLE] = false;
+ }
else
- s[Dali::Accessibility::State::HIGHLIGHTABLE] = self.GetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE).Get<bool>();
- s[Dali::Accessibility::State::HIGHLIGHTED] = GetCurrentlyHighlightedActor() == self;
- s[Dali::Accessibility::State::ENABLED] = true;
- s[Dali::Accessibility::State::SENSITIVE] = true;
- s[Dali::Accessibility::State::VISIBLE] = true;
- if(modal)
{
- s[Dali::Accessibility::State::MODAL] = true;
+ state[Dali::Accessibility::State::HIGHLIGHTABLE] = self.GetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE).Get<bool>();
}
- s[Dali::Accessibility::State::SHOWING] = !self.GetProperty(Dali::DevelActor::Property::CULLED).Get<bool>() && self.GetCurrentProperty<bool>(Actor::Property::VISIBLE);
- s[Dali::Accessibility::State::DEFUNCT] = !self.GetProperty(Dali::DevelActor::Property::CONNECTED_TO_SCENE).Get<bool>();
- return s;
+ state[Dali::Accessibility::State::HIGHLIGHTED] = GetCurrentlyHighlightedActor() == self;
+ state[Dali::Accessibility::State::ENABLED] = true;
+ state[Dali::Accessibility::State::SENSITIVE] = true;
+ state[Dali::Accessibility::State::VISIBLE] = true;
+
+ if(mIsModal)
+ {
+ state[Dali::Accessibility::State::MODAL] = true;
+ }
+ state[Dali::Accessibility::State::SHOWING] = !self.GetProperty(Dali::DevelActor::Property::CULLED).Get<bool>() && self.GetCurrentProperty<bool>(Actor::Property::VISIBLE);
+
+ state[Dali::Accessibility::State::DEFUNCT] = !self.GetProperty(Dali::DevelActor::Property::CONNECTED_TO_SCENE).Get<bool>();
+ return state;
}
Dali::Accessibility::States AccessibleImpl::GetStates()
Dali::Accessibility::Attributes AccessibleImpl::GetAttributes()
{
- std::unordered_map<std::string, std::string> attribute_map;
- auto q = Dali::Toolkit::Control::DownCast(Self());
- auto w =
- q.GetProperty(Dali::Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES);
- auto z = w.GetMap();
+ std::unordered_map<std::string, std::string> attributeMap;
+ auto control = Dali::Toolkit::Control::DownCast(Self());
+ auto attribute = control.GetProperty(Dali::Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES);
+ auto map = attribute.GetMap();
- if(z)
+ if(map)
{
- auto map_size = z->Count();
+ auto mapSize = map->Count();
- for(unsigned int i = 0; i < map_size; i++)
+ for(unsigned int i = 0; i < mapSize; i++)
{
- auto map_key = z->GetKeyAt(i);
- if(map_key.type == Dali::Property::Key::STRING)
+ auto mapKey = map->GetKeyAt(i);
+ if(mapKey.type == Dali::Property::Key::STRING)
{
- std::string map_value;
- if(z->GetValue(i).Get(map_value))
+ std::string mapValue;
+ if(map->GetValue(i).Get(mapValue))
{
- attribute_map.emplace(std::move(map_key.stringKey),
- std::move(map_value));
+ attributeMap.emplace(std::move(mapKey.stringKey), std::move(mapValue));
}
}
}
}
- return attribute_map;
+ return attributeMap;
}
Dali::Accessibility::ComponentLayer AccessibleImpl::GetLayer()
return Dali::Accessibility::ComponentLayer::WINDOW;
}
-Dali::Rect<> AccessibleImpl::GetExtents(Dali::Accessibility::CoordType ctype)
+Dali::Rect<> AccessibleImpl::GetExtents(Dali::Accessibility::CoordinateType type)
{
Dali::Actor self = Self();
- Vector2 screenPosition =
- self.GetProperty(Dali::DevelActor::Property::SCREEN_POSITION)
- .Get<Vector2>();
+
+ Vector2 screenPosition = self.GetProperty(Dali::DevelActor::Property::SCREEN_POSITION).Get<Vector2>();
auto size = self.GetCurrentProperty<Vector3>(Actor::Property::SIZE) * self.GetCurrentProperty<Vector3>(Actor::Property::WORLD_SCALE);
- bool positionUsesAnchorPoint =
- self.GetProperty(Dali::DevelActor::Property::POSITION_USES_ANCHOR_POINT)
- .Get<bool>();
- Vector3 anchorPointOffSet =
- size * (positionUsesAnchorPoint ? self.GetCurrentProperty<Vector3>(Actor::Property::ANCHOR_POINT)
- : AnchorPoint::TOP_LEFT);
- Vector2 position = Vector2(screenPosition.x - anchorPointOffSet.x,
- screenPosition.y - anchorPointOffSet.y);
+ bool positionUsesAnchorPoint = self.GetProperty(Dali::DevelActor::Property::POSITION_USES_ANCHOR_POINT).Get<bool>();
+ Vector3 anchorPointOffSet = size * (positionUsesAnchorPoint ? self.GetCurrentProperty<Vector3>(Actor::Property::ANCHOR_POINT) : AnchorPoint::TOP_LEFT);
+ Vector2 position = Vector2((screenPosition.x - anchorPointOffSet.x), (screenPosition.y - anchorPointOffSet.y));
return {position.x, position.y, size.x, size.y};
}
{
std::string focusBorderImagePath(AssetManager::GetDaliImagePath());
focusBorderImagePath += "/keyboard_focus.9.png";
+
// Create the default if it hasn't been set and one that's shared by all the
// keyboard focusable actors
auto actor = Toolkit::ImageView::New(focusBorderImagePath);
actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
+
DevelControl::AppendAccessibilityAttribute(actor, "highlight", std::string());
actor.SetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, false);
bool AccessibleImpl::GrabHighlight()
{
Dali::Actor self = Self();
- auto old = GetCurrentlyHighlightedActor();
+ auto oldHighlightedActor = GetCurrentlyHighlightedActor();
if(!Dali::Accessibility::IsUp())
+ {
return false;
- if(self == old)
+ }
+
+ if(self == oldHighlightedActor)
+ {
return true;
- if(old)
+ }
+
+ // Clear the old highlight.
+ if(oldHighlightedActor)
{
- auto c = dynamic_cast<Dali::Accessibility::Component*>(Internal::Control::Impl::GetAccessibilityObject(old));
- if(c)
- c->ClearHighlight();
+ auto oldHighlightObject = dynamic_cast<Dali::Accessibility::Component*>(Internal::Control::Impl::GetAccessibilityObject(oldHighlightedActor));
+ if(oldHighlightObject)
+ {
+ oldHighlightObject->ClearHighlight();
+ }
}
+
auto highlight = GetHighlightActor();
if(!highlight)
{
highlight = CreateHighlightIndicatorActor();
SetHighlightActor(highlight);
}
+
highlight.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
highlight.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
highlight.SetProperty(Actor::Property::POSITION_Z, 1.0f);
// Remember the highlight actor, so that when the default is changed with
// SetHighlightActor(), the currently displayed highlight can still be cleared.
- currentHighlightActor = highlight;
+ mCurrentHighlightActor = highlight;
ScrollToSelf();
self.Add(highlight);
SetCurrentlyHighlightedActor(self);
Dali::Actor self = Self();
if(!Dali::Accessibility::IsUp())
+ {
return false;
+ }
+
if(GetCurrentlyHighlightedActor() == self)
{
- self.Remove(currentHighlightActor.GetHandle());
- currentHighlightActor = {};
+ self.Remove(mCurrentHighlightActor.GetHandle());
+ mCurrentHighlightActor = {};
SetCurrentlyHighlightedActor({});
EmitHighlighted(false);
return true;
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");
std::vector<Dali::Accessibility::Relation> ret;
- auto& v = controlImpl.mAccessibilityRelations;
- for(auto i = 0u; i < v.size(); ++i)
+ auto& relation = controlImpl.mAccessibilityRelations;
+ for(auto i = 0u; i < relation.size(); ++i)
{
- if(v[i].empty())
- continue;
+ if(relation[i].empty()) continue;
- ret.emplace_back(Accessibility::Relation{static_cast<Accessibility::RelationType>(i), v[i]});
+ ret.emplace_back(Accessibility::Relation{static_cast<Accessibility::RelationType>(i), relation[i]});
}
return ret;
public virtual Dali::Accessibility::Action
{
protected:
- Dali::WeakHandle<Dali::Actor> self;
- Dali::WeakHandle<Dali::Actor> currentHighlightActor;
- bool modal = false, root = false;
+ Dali::WeakHandle<Dali::Actor> mSelf;
+ Dali::WeakHandle<Dali::Actor> mCurrentHighlightActor;
+ bool mIsModal = false;
+ bool mIsRoot = false;
Dali::Actor Self()
{
- auto handle = self.GetHandle();
+ auto handle = mSelf.GetHandle();
// Control::Impl holds a std::unique_ptr to the Accessible object,
// so that one does not outlive the other.
/**
* @copydoc Dali::Accessibility::Component::GetExtents()
*/
- Dali::Rect<> GetExtents(Dali::Accessibility::CoordType ctype) override;
+ Dali::Rect<> GetExtents(Accessibility::CoordinateType type) override;
/**
* @copydoc Dali::Accessibility::Component::GetLayer()
}
}
-static Toolkit::Internal::Control::Impl* GetControlImplementationIfAny(Dali::Actor actor)
+static Toolkit::Internal::Control::Impl* GetControlImplementation(Dali::Actor actor)
{
- Dali::Toolkit::Control c = Toolkit::Control::DownCast(actor);
- if(c)
+ Dali::Toolkit::Control control = Toolkit::Control::DownCast(actor);
+ if(control)
{
- auto& impl1 = Toolkit::Internal::GetImplementation(c);
- auto& impl2 = Toolkit::Internal::Control::Impl::Get(impl1);
- return &impl2;
+ auto& internalControl = Toolkit::Internal::GetImplementation(control);
+ auto& controlDataImpl = Toolkit::Internal::Control::Impl::Get(internalControl);
+ return &controlDataImpl;
}
return nullptr;
}
Toolkit::DevelControl::AccessibilityActivateSignalType& AccessibilityActivateSignal(Toolkit::Control control)
{
- auto ac = GetControlImplementationIfAny(control);
- return ac->mAccessibilityActivateSignal;
+ return GetControlImplementation(control)->mAccessibilityActivateSignal;
}
Toolkit::DevelControl::AccessibilityReadingSkippedSignalType& AccessibilityReadingSkippedSignal(Toolkit::Control control)
{
- auto ac = GetControlImplementationIfAny(control);
- return ac->mAccessibilityReadingSkippedSignal;
+ return GetControlImplementation(control)->mAccessibilityReadingSkippedSignal;
}
Toolkit::DevelControl::AccessibilityReadingPausedSignalType& AccessibilityReadingPausedSignal(Toolkit::Control control)
{
- auto ac = GetControlImplementationIfAny(control);
- return ac->mAccessibilityReadingPausedSignal;
+ return GetControlImplementation(control)->mAccessibilityReadingPausedSignal;
}
Toolkit::DevelControl::AccessibilityReadingResumedSignalType& AccessibilityReadingResumedSignal(Toolkit::Control control)
{
- auto ac = GetControlImplementationIfAny(control);
- return ac->mAccessibilityReadingResumedSignal;
+ return GetControlImplementation(control)->mAccessibilityReadingResumedSignal;
}
Toolkit::DevelControl::AccessibilityReadingCancelledSignalType& AccessibilityReadingCancelledSignal(Toolkit::Control control)
{
- auto ac = GetControlImplementationIfAny(control);
- return ac->mAccessibilityReadingCancelledSignal;
+ return GetControlImplementation(control)->mAccessibilityReadingCancelledSignal;
}
Toolkit::DevelControl::AccessibilityReadingStoppedSignalType& AccessibilityReadingStoppedSignal(Toolkit::Control control)
{
- auto ac = GetControlImplementationIfAny(control);
- return ac->mAccessibilityReadingStoppedSignal;
+ return GetControlImplementation(control)->mAccessibilityReadingStoppedSignal;
}
Toolkit::DevelControl::AccessibilityGetNameSignalType& AccessibilityGetNameSignal(Toolkit::Control control)
{
- auto ac = GetControlImplementationIfAny(control);
- return ac->mAccessibilityGetNameSignal;
+ return GetControlImplementation(control)->mAccessibilityGetNameSignal;
}
Toolkit::DevelControl::AccessibilityGetDescriptionSignalType& AccessibilityGetDescriptionSignal(Toolkit::Control control)
{
- auto ac = GetControlImplementationIfAny(control);
- return ac->mAccessibilityGetDescriptionSignal;
+ return GetControlImplementation(control)->mAccessibilityGetDescriptionSignal;
}
Toolkit::DevelControl::AccessibilityDoGestureSignalType& AccessibilityDoGestureSignal(Toolkit::Control control)
{
- auto ac = GetControlImplementationIfAny(control);
- return ac->mAccessibilityDoGestureSignal;
+ return GetControlImplementation(control)->mAccessibilityDoGestureSignal;
}
void AppendAccessibilityRelation(Dali::Actor control, Actor destination, Dali::Accessibility::RelationType relation)
{
- if(auto ac = GetControlImplementationIfAny(control))
+ if(auto controlDataImpl = GetControlImplementation(control))
{
auto index = static_cast<Dali::Property::Array::SizeType>(relation);
- if(index >= ac->mAccessibilityRelations.size())
+ if(index >= controlDataImpl->mAccessibilityRelations.size())
{
DALI_LOG_ERROR("Relation index exceeds vector size.");
return;
}
- auto obj = ac->GetAccessibilityObject(destination);
- if(obj)
- ac->mAccessibilityRelations[index].push_back(obj->GetAddress());
+ auto object = controlDataImpl->GetAccessibilityObject(destination);
+ if(object)
+ {
+ controlDataImpl->mAccessibilityRelations[index].push_back(object->GetAddress());
+ }
}
}
void RemoveAccessibilityRelation(Dali::Actor control, Actor destination, Dali::Accessibility::RelationType relation)
{
- if(auto ac = GetControlImplementationIfAny(control))
+ if(auto controlDataImpl = GetControlImplementation(control))
{
auto index = static_cast<Dali::Property::Array::SizeType>(relation);
- if(index >= ac->mAccessibilityRelations.size())
+ if(index >= controlDataImpl->mAccessibilityRelations.size())
{
DALI_LOG_ERROR("Relation index exceeds vector size.");
return;
}
- auto obj = ac->GetAccessibilityObject(destination);
- if(!obj)
+ auto object = controlDataImpl->GetAccessibilityObject(destination);
+ if(!object)
+ {
return;
+ }
- auto address = obj->GetAddress();
+ auto address = object->GetAddress();
- auto& targets = ac->mAccessibilityRelations[index];
+ auto& targets = controlDataImpl->mAccessibilityRelations[index];
for(auto i = 0u; i < targets.size(); ++i)
{
if(targets[i].ToString() == address.ToString())
std::vector<std::vector<Accessibility::Address>> GetAccessibilityRelations(Dali::Actor control)
{
- if(auto ac = GetControlImplementationIfAny(control))
+ if(auto controlDataImpl = GetControlImplementation(control))
{
- return ac->mAccessibilityRelations;
+ return controlDataImpl->mAccessibilityRelations;
}
return {};
}
void ClearAccessibilityRelations(Dali::Actor control)
{
- if(auto ac = GetControlImplementationIfAny(control))
+ if(auto controlDataImpl = GetControlImplementation(control))
{
- for(auto& it : ac->mAccessibilityRelations)
+ for(auto& it : controlDataImpl->mAccessibilityRelations)
+ {
it.clear();
+ }
}
}
-void SetAccessibilityConstructor(Dali::Actor control,
- std::function<std::unique_ptr<Dali::Accessibility::Accessible>(Dali::Actor)> constructor)
+void SetAccessibilityConstructor(Dali::Actor control, std::function<std::unique_ptr<Dali::Accessibility::Accessible>(Dali::Actor)> constructor)
{
- if(auto ac = GetControlImplementationIfAny(control))
+ if(auto controlDataImpl = GetControlImplementation(control))
{
- ac->accessibilityConstructor = constructor;
+ controlDataImpl->mAccessibilityConstructor = constructor;
}
}
void AppendAccessibilityAttribute(Dali::Actor control, const std::string& key, const std::string value)
{
- if(auto ac = GetControlImplementationIfAny(control))
+ if(auto controlDataImpl = GetControlImplementation(control))
{
- ac->AppendAccessibilityAttribute(key, value);
+ controlDataImpl->AppendAccessibilityAttribute(key, value);
}
}
void RemoveAccessibilityAttribute(Dali::Actor control, const std::string& key)
{
- if(auto ac = GetControlImplementationIfAny(control))
+ if(auto controlDataImpl = GetControlImplementation(control))
{
- ac->RemoveAccessibilityAttribute(key);
+ controlDataImpl->RemoveAccessibilityAttribute(key);
}
}
void ClearAccessibilityAttributes(Dali::Actor control)
{
- if(auto ac = GetControlImplementationIfAny(control))
+ if(auto controlDataImpl = GetControlImplementation(control))
{
- ac->ClearAccessibilityAttributes();
+ controlDataImpl->ClearAccessibilityAttributes();
}
}
void SetAccessibilityReadingInfoType(Dali::Actor control, const Dali::Accessibility::ReadingInfoTypes types)
{
- if(auto ac = GetControlImplementationIfAny(control))
+ if(auto controlDataImpl = GetControlImplementation(control))
{
- ac->SetAccessibilityReadingInfoType(types);
+ controlDataImpl->SetAccessibilityReadingInfoType(types);
}
}
Dali::Accessibility::ReadingInfoTypes GetAccessibilityReadingInfoType(Dali::Actor control)
{
- if(auto ac = GetControlImplementationIfAny(control))
+ if(auto controlDataImpl = GetControlImplementation(control))
{
- return ac->GetAccessibilityReadingInfoType();
+ return controlDataImpl->GetAccessibilityReadingInfoType();
}
return {};
}
bool ClearAccessibilityHighlight(Dali::Actor control)
{
- if(auto ac = GetControlImplementationIfAny(control))
+ if(auto controlDataImpl = GetControlImplementation(control))
{
- auto ptr = dynamic_cast<Dali::Accessibility::Component*>(ac->GetAccessibilityObject());
- if(ptr)
- return ptr->ClearHighlight();
+ auto object = dynamic_cast<Dali::Accessibility::Component*>(controlDataImpl->GetAccessibilityObject());
+ if(object)
+ {
+ return object->ClearHighlight();
+ }
}
return false;
}
bool GrabAccessibilityHighlight(Dali::Actor control)
{
- if(auto ac = GetControlImplementationIfAny(control))
+ if(auto controlDataImpl = GetControlImplementation(control))
{
- auto ptr = dynamic_cast<Dali::Accessibility::Component*>(ac->GetAccessibilityObject());
- if(ptr)
- return ptr->GrabHighlight();
+ auto object = dynamic_cast<Dali::Accessibility::Component*>(controlDataImpl->GetAccessibilityObject());
+ if(object)
+ {
+ return object->GrabHighlight();
+ }
}
return false;
}
Dali::Accessibility::States GetAccessibilityStates(Dali::Actor control)
{
- if(auto ac = GetControlImplementationIfAny(control))
+ if(auto controlDataImpl = GetControlImplementation(control))
{
- auto ptr = dynamic_cast<Dali::Accessibility::Component*>(ac->GetAccessibilityObject());
- if(ptr)
- return ptr->GetStates();
+ auto object = dynamic_cast<Dali::Accessibility::Component*>(controlDataImpl->GetAccessibilityObject());
+ if(object)
+ {
+ return object->GetStates();
+ }
}
return {};
}
-void NotifyAccessibilityStateChange(Dali::Actor control, Dali::Accessibility::States states, bool doRecursive)
+void NotifyAccessibilityStateChange(Dali::Actor control, Dali::Accessibility::States states, bool isRecursive)
{
- if(auto ac = GetControlImplementationIfAny(control))
+ if(auto controlDataImpl = GetControlImplementation(control))
{
- ac->GetAccessibilityObject()->NotifyAccessibilityStateChange(std::move(states), doRecursive);
+ controlDataImpl->GetAccessibilityObject()->NotifyAccessibilityStateChange(std::move(states), isRecursive);
}
}
*
* @param control object to append attribute to
* @param states mask with states expected to broadcast
- * @param doRecursive flag pointing if notifications of children's state would be sent
+ * @param isRecursive flag pointing if notifications of children's state would be sent
*/
-DALI_TOOLKIT_API void NotifyAccessibilityStateChange(Dali::Actor control, Dali::Accessibility::States states, bool doRecursive);
+DALI_TOOLKIT_API void NotifyAccessibilityStateChange(Dali::Actor control, Dali::Accessibility::States states, bool isRecursive);
/**
* The method allows to set specific constructor for creating accessibility structure
Property::Map labelMap = Self().GetProperty<Property::Map>(label);
if(MapContainsTextString(labelMap))
+ {
return label;
+ }
else
+ {
return Property::INVALID_INDEX;
+ }
}
Dali::Accessibility::States Button::AccessibleImpl::CalculateStates()
Dali::Accessibility::States CheckBoxButton::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;
- return tmp;
+ auto state = Button::AccessibleImpl::CalculateStates();
+ auto self = Toolkit::Button::DownCast(Self());
+ if(self.GetProperty<bool>(Toolkit::Button::Property::SELECTED))
+ {
+ state[Dali::Accessibility::State::CHECKED] = true;
+ }
+ return state;
}
void CheckBoxButton::OnStateChange(State newState)
if(Dali::Accessibility::IsUp() && (Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor() == Self())
&& (newState == SELECTED_STATE || newState == UNSELECTED_STATE))
{
- Dali::Accessibility::Accessible::Get(Self())->EmitStateChanged(
- Dali::Accessibility::State::CHECKED, newState == SELECTED_STATE ? 1 : 0, 0);
+ Dali::Accessibility::Accessible::Get(Self())->EmitStateChanged(Dali::Accessibility::State::CHECKED, newState == SELECTED_STATE ? 1 : 0, 0);
}
}
Dali::Accessibility::States PushButton::AccessibleImpl::CalculateStates()
{
- auto tmp = Button::AccessibleImpl::CalculateStates();
- auto slf = Toolkit::Button::DownCast(Self());
- tmp[Dali::Accessibility::State::PRESSED] = slf.GetProperty<bool>(Toolkit::Button::Property::SELECTED);
- return tmp;
+ auto state = Button::AccessibleImpl::CalculateStates();
+ auto self = Toolkit::Button::DownCast(Self());
+ state[Dali::Accessibility::State::PRESSED] = self.GetProperty<bool>(Toolkit::Button::Property::SELECTED);
+ return state;
}
void PushButton::OnStateChange(State newState)
if(Dali::Accessibility::IsUp() && (Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor() == Self())
&& (newState == SELECTED_STATE || newState == UNSELECTED_STATE))
{
- Dali::Accessibility::Accessible::Get(Self())->EmitStateChanged(
- Dali::Accessibility::State::PRESSED, newState == SELECTED_STATE ? 1 : 0, 0);
+ Dali::Accessibility::Accessible::Get(Self())->EmitStateChanged(Dali::Accessibility::State::PRESSED, newState == SELECTED_STATE ? 1 : 0, 0);
if(Self().GetProperty<bool>(Toolkit::Button::Property::TOGGLABLE))
{
- Dali::Accessibility::Accessible::Get(Self())->EmitStateChanged(
- Dali::Accessibility::State::CHECKED, newState == SELECTED_STATE ? 1 : 0, 0);
+ Dali::Accessibility::Accessible::Get(Self())->EmitStateChanged(Dali::Accessibility::State::CHECKED, newState == SELECTED_STATE ? 1 : 0, 0);
}
}
}
}
}
}
+
// TODO: replace it with OnPropertySet hook once Button::Property::SELECTED will be consistently used
if(Dali::Accessibility::IsUp() && (Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor() == Self())
&& (newState == SELECTED_STATE || newState == UNSELECTED_STATE))
{
- Dali::Accessibility::Accessible::Get(Self())->EmitStateChanged(
- Dali::Accessibility::State::CHECKED, newState == SELECTED_STATE ? 1 : 0, 0);
+ 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;
+ auto state = Button::AccessibleImpl::CalculateStates();
+ auto self = Toolkit::Button::DownCast(Self());
+
+ if(self.GetProperty<bool>(Toolkit::Button::Property::SELECTED))
+ {
+ state[Dali::Accessibility::State::CHECKED] = true;
+ }
+
+ state[Dali::Accessibility::State::SELECTABLE] = true;
+ return state;
}
} // namespace Internal
auto states = Button::AccessibleImpl::CalculateStates();
auto button = Toolkit::ToggleButton::DownCast(Self());
if(button.GetProperty<int>(Toolkit::ToggleButton::Property::CURRENT_STATE_INDEX))
+ {
states[Dali::Accessibility::State::CHECKED] = true;
+ }
return states;
}
if(Dali::Accessibility::IsUp() && (Self() == Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor())
&& (newState == SELECTED_STATE || newState == UNSELECTED_STATE))
{
- Dali::Accessibility::Accessible::Get(Self())->EmitStateChanged(
- Dali::Accessibility::State::CHECKED, mCurrentToggleIndex ? 1 : 0, 0);
- Dali::Accessibility::Accessible::Get(Self())->Emit(Dali::Accessibility::ObjectPropertyChangeEvent::DESCRIPTION);
+ Dali::Accessibility::Accessible::Get(Self())->EmitStateChanged(Dali::Accessibility::State::CHECKED, mCurrentToggleIndex ? 1 : 0, 0);
+ Dali::Accessibility::Accessible::Get(Self())->Emit(Dali::Accessibility::ObjectPropertyChangeEvent::DESCRIPTION);
}
}
DALI_ASSERT_ALWAYS(control);
- if(0 == strcmp(actionName.c_str(), ACTION_ACCESSIBILITY_ACTIVATED) ||
- actionName == "activate")
+ if(0 == strcmp(actionName.c_str(), ACTION_ACCESSIBILITY_ACTIVATED) || actionName == "activate")
{
// if cast succeeds there is an implementation so no need to check
if(!DevelControl::AccessibilityActivateSignal(control).Empty())
+ {
DevelControl::AccessibilityActivateSignal(control).Emit();
+ }
else
+ {
ret = Internal::GetImplementation(control).OnAccessibilityActivated();
+ }
}
else if(0 == strcmp(actionName.c_str(), ACTION_ACCESSIBILITY_READING_SKIPPED))
{
// if cast succeeds there is an implementation so no need to check
if(!DevelControl::AccessibilityReadingSkippedSignal(control).Empty())
+ {
DevelControl::AccessibilityReadingSkippedSignal(control).Emit();
+ }
}
else if(0 == strcmp(actionName.c_str(), ACTION_ACCESSIBILITY_READING_PAUSED))
{
// if cast succeeds there is an implementation so no need to check
if(!DevelControl::AccessibilityReadingPausedSignal(control).Empty())
+ {
DevelControl::AccessibilityReadingPausedSignal(control).Emit();
+ }
}
else if(0 == strcmp(actionName.c_str(), ACTION_ACCESSIBILITY_READING_RESUMED))
{
// if cast succeeds there is an implementation so no need to check
if(!DevelControl::AccessibilityReadingResumedSignal(control).Empty())
+ {
DevelControl::AccessibilityReadingResumedSignal(control).Emit();
+ }
}
else if(0 == strcmp(actionName.c_str(), ACTION_ACCESSIBILITY_READING_CANCELLED))
{
// if cast succeeds there is an implementation so no need to check
if(!DevelControl::AccessibilityReadingCancelledSignal(control).Empty())
+ {
DevelControl::AccessibilityReadingCancelledSignal(control).Emit();
+ }
}
else if(0 == strcmp(actionName.c_str(), ACTION_ACCESSIBILITY_READING_STOPPED))
{
// if cast succeeds there is an implementation so no need to check
if(!DevelControl::AccessibilityReadingStoppedSignal(control).Empty())
+ {
DevelControl::AccessibilityReadingStoppedSignal(control).Emit();
+ }
}
else
{
const PropertyRegistration Control::Impl::PROPERTY_13(typeRegistration, "upFocusableActorId", Toolkit::DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
const PropertyRegistration Control::Impl::PROPERTY_14(typeRegistration, "downFocusableActorId", Toolkit::DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
const PropertyRegistration Control::Impl::PROPERTY_15(typeRegistration, "shadow", Toolkit::DevelControl::Property::SHADOW, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
-const PropertyRegistration Control::Impl::PROPERTY_16(typeRegistration, "accessibilityAttributes", Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
-const PropertyRegistration Control::Impl::PROPERTY_17(typeRegistration, "accessibilityName", Toolkit::DevelControl::Property::ACCESSIBILITY_NAME, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
-const PropertyRegistration Control::Impl::PROPERTY_18(typeRegistration, "accessibilityDescription", Toolkit::DevelControl::Property::ACCESSIBILITY_DESCRIPTION, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
-const PropertyRegistration Control::Impl::PROPERTY_19(typeRegistration, "accessibilityTranslationDomain", Toolkit::DevelControl::Property::ACCESSIBILITY_TRANSLATION_DOMAIN, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
-const PropertyRegistration Control::Impl::PROPERTY_20(typeRegistration, "accessibilityRole", Toolkit::DevelControl::Property::ACCESSIBILITY_ROLE, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
-const PropertyRegistration Control::Impl::PROPERTY_21(typeRegistration, "accessibilityHighlightable", Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
+const PropertyRegistration Control::Impl::PROPERTY_16(typeRegistration, "accessibilityName", Toolkit::DevelControl::Property::ACCESSIBILITY_NAME, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
+const PropertyRegistration Control::Impl::PROPERTY_17(typeRegistration, "accessibilityDescription", Toolkit::DevelControl::Property::ACCESSIBILITY_DESCRIPTION, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
+const PropertyRegistration Control::Impl::PROPERTY_18(typeRegistration, "accessibilityTranslationDomain", Toolkit::DevelControl::Property::ACCESSIBILITY_TRANSLATION_DOMAIN, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
+const PropertyRegistration Control::Impl::PROPERTY_19(typeRegistration, "accessibilityRole", Toolkit::DevelControl::Property::ACCESSIBILITY_ROLE, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
+const PropertyRegistration Control::Impl::PROPERTY_20(typeRegistration, "accessibilityHighlightable", Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
+const PropertyRegistration Control::Impl::PROPERTY_21(typeRegistration, "accessibilityAttributes", Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
// clang-format on
Control::Impl::Impl(Control& controlImpl)
return Control::Impl::GetAccessibilityObject(actor);
});
- accessibilityConstructor = [](Dali::Actor actor) -> std::unique_ptr<Dali::Accessibility::Accessible> {
- return std::unique_ptr<Dali::Accessibility::Accessible>(new DevelControl::AccessibleImpl(actor,
- Dali::Accessibility::Role::UNKNOWN));
+ mAccessibilityConstructor = [](Dali::Actor actor) -> std::unique_ptr<Dali::Accessibility::Accessible> {
+ return std::unique_ptr<Dali::Accessibility::Accessible>(new DevelControl::AccessibleImpl(actor, Dali::Accessibility::Role::UNKNOWN));
};
- size_t len = static_cast<size_t>(Dali::Accessibility::RelationType::MAX_COUNT);
- mAccessibilityRelations.reserve(len);
- for(auto i = 0u; i < len; ++i)
+ size_t length = static_cast<size_t>(Dali::Accessibility::RelationType::MAX_COUNT);
+ mAccessibilityRelations.reserve(length);
+ for(auto i = 0u; i < length; ++i)
{
mAccessibilityRelations.push_back({});
}
}
}
-void Control::Impl::AppendAccessibilityAttribute(const std::string& key,
- const std::string value)
+void Control::Impl::AppendAccessibilityAttribute(const std::string& key, const std::string value)
{
- Property::Value* val = mAccessibilityAttributes.Find(key);
- if(val)
+ Property::Value* checkedValue = mAccessibilityAttributes.Find(key);
+ if(checkedValue)
{
mAccessibilityAttributes[key] = Property::Value(value);
}
}
break;
- case Toolkit::DevelControl::Property::ACCESSIBILITY_NAME:
- {
- std::string name;
- if(value.Get(name))
- {
- controlImpl.mImpl->mAccessibilityName = name;
- controlImpl.mImpl->mAccessibilityNameSet = true;
- }
- else
- {
- controlImpl.mImpl->mAccessibilityNameSet = false;
- }
- }
- break;
-
- case Toolkit::DevelControl::Property::ACCESSIBILITY_DESCRIPTION:
- {
- std::string txt;
- if(value.Get(txt))
- {
- controlImpl.mImpl->mAccessibilityDescription = txt;
- controlImpl.mImpl->mAccessibilityDescriptionSet = true;
- }
- else
- {
- controlImpl.mImpl->mAccessibilityDescriptionSet = false;
- }
- }
- break;
-
- case Toolkit::DevelControl::Property::ACCESSIBILITY_TRANSLATION_DOMAIN:
- {
- std::string txt;
- if(value.Get(txt))
- {
- controlImpl.mImpl->mAccessibilityTranslationDomain = txt;
- controlImpl.mImpl->mAccessibilityTranslationDomainSet = true;
- }
- else
- {
- controlImpl.mImpl->mAccessibilityTranslationDomainSet = false;
- }
- }
- break;
-
- case Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE:
- {
- bool highlightable;
- if(value.Get(highlightable))
- {
- controlImpl.mImpl->mAccessibilityHighlightable = highlightable;
- controlImpl.mImpl->mAccessibilityHighlightableSet = true;
- }
- else
- {
- controlImpl.mImpl->mAccessibilityHighlightableSet = false;
- }
- }
- break;
-
- case Toolkit::DevelControl::Property::ACCESSIBILITY_ROLE:
- {
- Dali::Accessibility::Role val;
- if(value.Get(val))
- {
- controlImpl.mImpl->mAccessibilityRole = val;
- }
- }
- break;
-
case Toolkit::DevelControl::Property::UP_FOCUSABLE_ACTOR_ID:
{
int focusId;
break;
}
+ case Toolkit::DevelControl::Property::ACCESSIBILITY_NAME:
+ {
+ std::string name;
+ if(value.Get(name))
+ {
+ controlImpl.mImpl->mAccessibilityName = name;
+ controlImpl.mImpl->mAccessibilityNameSet = true;
+ }
+ else
+ {
+ controlImpl.mImpl->mAccessibilityNameSet = false;
+ }
+ }
+ break;
+
+ case Toolkit::DevelControl::Property::ACCESSIBILITY_DESCRIPTION:
+ {
+ std::string text;
+ if(value.Get(text))
+ {
+ controlImpl.mImpl->mAccessibilityDescription = text;
+ controlImpl.mImpl->mAccessibilityDescriptionSet = true;
+ }
+ else
+ {
+ controlImpl.mImpl->mAccessibilityDescriptionSet = false;
+ }
+ }
+ break;
+
+ case Toolkit::DevelControl::Property::ACCESSIBILITY_TRANSLATION_DOMAIN:
+ {
+ std::string text;
+ if(value.Get(text))
+ {
+ controlImpl.mImpl->mAccessibilityTranslationDomain = text;
+ controlImpl.mImpl->mAccessibilityTranslationDomainSet = true;
+ }
+ else
+ {
+ controlImpl.mImpl->mAccessibilityTranslationDomainSet = false;
+ }
+ }
+ break;
+
+ case Toolkit::DevelControl::Property::ACCESSIBILITY_ROLE:
+ {
+ Dali::Accessibility::Role role;
+ if(value.Get(role))
+ {
+ controlImpl.mImpl->mAccessibilityRole = role;
+ }
+ }
+ break;
+
+ case Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE:
+ {
+ bool highlightable;
+ if(value.Get(highlightable))
+ {
+ controlImpl.mImpl->mAccessibilityHighlightable = highlightable;
+ controlImpl.mImpl->mAccessibilityHighlightableSet = true;
+ }
+ else
+ {
+ controlImpl.mImpl->mAccessibilityHighlightableSet = false;
+ }
+ }
+ break;
+
case Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES:
{
const Property::Map* map = value.GetMap();
break;
}
- case Toolkit::DevelControl::Property::ACCESSIBILITY_NAME:
- {
- if(controlImpl.mImpl->mAccessibilityNameSet)
- {
- value = controlImpl.mImpl->mAccessibilityName;
- }
- break;
- }
-
- case Toolkit::DevelControl::Property::ACCESSIBILITY_DESCRIPTION:
- {
- if(controlImpl.mImpl->mAccessibilityDescriptionSet)
- {
- value = controlImpl.mImpl->mAccessibilityDescription;
- }
- break;
- }
-
- case Toolkit::DevelControl::Property::ACCESSIBILITY_TRANSLATION_DOMAIN:
- {
- if(controlImpl.mImpl->mAccessibilityTranslationDomainSet)
- {
- value = controlImpl.mImpl->mAccessibilityTranslationDomain;
- }
- break;
- }
-
- case Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE:
- {
- if(controlImpl.mImpl->mAccessibilityHighlightableSet)
- {
- value = controlImpl.mImpl->mAccessibilityHighlightable;
- }
- break;
- }
-
- case Toolkit::DevelControl::Property::ACCESSIBILITY_ROLE:
- {
- value = Property::Value(controlImpl.mImpl->mAccessibilityRole);
- break;
- }
-
case Toolkit::DevelControl::Property::UP_FOCUSABLE_ACTOR_ID:
{
value = controlImpl.mImpl->mUpFocusableActorId;
break;
}
+ case Toolkit::DevelControl::Property::ACCESSIBILITY_NAME:
+ {
+ if(controlImpl.mImpl->mAccessibilityNameSet)
+ {
+ value = controlImpl.mImpl->mAccessibilityName;
+ }
+ break;
+ }
+
+ case Toolkit::DevelControl::Property::ACCESSIBILITY_DESCRIPTION:
+ {
+ if(controlImpl.mImpl->mAccessibilityDescriptionSet)
+ {
+ value = controlImpl.mImpl->mAccessibilityDescription;
+ }
+ break;
+ }
+
+ case Toolkit::DevelControl::Property::ACCESSIBILITY_TRANSLATION_DOMAIN:
+ {
+ if(controlImpl.mImpl->mAccessibilityTranslationDomainSet)
+ {
+ value = controlImpl.mImpl->mAccessibilityTranslationDomain;
+ }
+ break;
+ }
+
+ case Toolkit::DevelControl::Property::ACCESSIBILITY_ROLE:
+ {
+ value = Property::Value(controlImpl.mImpl->mAccessibilityRole);
+ break;
+ }
+
+ case Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE:
+ {
+ if(controlImpl.mImpl->mAccessibilityHighlightableSet)
+ {
+ value = controlImpl.mImpl->mAccessibilityHighlightable;
+ }
+ break;
+ }
+
case Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES:
{
value = controlImpl.mImpl->mAccessibilityAttributes;
void Control::Impl::RemoveAccessibilityAttribute(const std::string& key)
{
- Property::Value* val = mAccessibilityAttributes.Find(key);
- if(val)
+ Property::Value* value = mAccessibilityAttributes.Find(key);
+ if(value)
+ {
mAccessibilityAttributes[key] = Property::Value();
+ }
}
void Control::Impl::ClearAccessibilityAttributes()
void Control::Impl::SetAccessibilityReadingInfoType(const Dali::Accessibility::ReadingInfoTypes types)
{
- std::string value;
+ std::string value{};
if(types[Dali::Accessibility::ReadingInfoType::NAME])
{
value += READING_INFO_TYPE_NAME;
Dali::Accessibility::ReadingInfoTypes Control::Impl::GetAccessibilityReadingInfoType() const
{
- std::string value;
+ std::string value{};
auto place = mAccessibilityAttributes.Find(READING_INFO_TYPE_ATTRIBUTE_NAME);
if(place)
{
Dali::Accessibility::Accessible* Control::Impl::GetAccessibilityObject()
{
- if(!accessibilityObject)
- accessibilityObject = accessibilityConstructor(mControlImpl.Self());
- return accessibilityObject.get();
+ if(!mAccessibilityObject)
+ {
+ mAccessibilityObject = mAccessibilityConstructor(mControlImpl.Self());
+ }
+ return mAccessibilityObject.get();
}
Dali::Accessibility::Accessible* Control::Impl::GetAccessibilityObject(Dali::Actor actor)
{
if(actor)
{
- auto q = Dali::Toolkit::Control::DownCast(actor);
- if(q)
+ auto control = Dali::Toolkit::Control::DownCast(actor);
+ if(control)
{
- auto q2 = static_cast<Internal::Control*>(&q.GetImplementation());
- return q2->mImpl->GetAccessibilityObject();
+ auto controlImpl = static_cast<Internal::Control*>(&control.GetImplementation());
+ return controlImpl->mImpl->GetAccessibilityObject();
}
}
return nullptr;
* Attribute is added if not existed previously or updated
* if existed.
*/
- void AppendAccessibilityAttribute(const std::string& key,
- const std::string value);
+ void AppendAccessibilityAttribute(const std::string& key, const std::string value);
/**
* @brief Removes accessibility attribute
*/
void MakeVisualTransition(Dali::Animation& animation, Dali::Toolkit::Control source, Dali::Property::Index visualIndex, AlphaFunction alphaFunction, TimePeriod timePeriod);
+ /**
+ * @brief Gets the current control's accessible object.
+ *
+ * @return The handle to Accessible object
+ */
+ Dali::Accessibility::Accessible* GetAccessibilityObject();
+
+ /**
+ * @brief Gets Accessible object handle.
+ *
+ * The method acquires Accessible handle from Actor object
+ * @param actor Actor object
+ * @return The handle to Accessible object
+ */
+ static Dali::Accessibility::Accessible* GetAccessibilityObject(Dali::Actor actor);
+
private:
/**
* Used as an alternative to boolean so that it is obvious whether a visual is enabled/disabled.
Toolkit::Control::KeyInputFocusSignalType mKeyInputFocusLostSignal;
Toolkit::Control::ResourceReadySignalType mResourceReadySignal;
DevelControl::VisualEventSignalType mVisualEventSignal;
+
+ // Accessibility
Toolkit::DevelControl::AccessibilityActivateSignalType mAccessibilityActivateSignal;
Toolkit::DevelControl::AccessibilityReadingSkippedSignalType mAccessibilityReadingSkippedSignal;
Toolkit::DevelControl::AccessibilityReadingPausedSignalType mAccessibilityReadingPausedSignal;
Toolkit::DevelControl::AccessibilityReadingCancelledSignalType mAccessibilityReadingCancelledSignal;
Toolkit::DevelControl::AccessibilityReadingStoppedSignalType mAccessibilityReadingStoppedSignal;
- Toolkit::DevelControl::AccessibilityGetNameSignalType mAccessibilityGetNameSignal;
- Toolkit::DevelControl::AccessibilityGetDescriptionSignalType mAccessibilityGetDescriptionSignal;
- Toolkit::DevelControl::AccessibilityDoGestureSignalType mAccessibilityDoGestureSignal;
+ Toolkit::DevelControl::AccessibilityGetNameSignalType mAccessibilityGetNameSignal;
+ Toolkit::DevelControl::AccessibilityGetDescriptionSignalType mAccessibilityGetDescriptionSignal;
+ Toolkit::DevelControl::AccessibilityDoGestureSignalType mAccessibilityDoGestureSignal;
std::string mAccessibilityName;
- bool mAccessibilityNameSet = false;
-
std::string mAccessibilityDescription;
- bool mAccessibilityDescriptionSet = false;
-
std::string mAccessibilityTranslationDomain;
+ bool mAccessibilityNameSet = false;
+ bool mAccessibilityDescriptionSet = false;
bool mAccessibilityTranslationDomainSet = false;
bool mAccessibilityHighlightable = false;
Dali::Accessibility::Role mAccessibilityRole = Dali::Accessibility::Role::UNKNOWN;
- std::vector<std::vector<Accessibility::Address>> mAccessibilityRelations;
+ std::vector<std::vector<Accessibility::Address>> mAccessibilityRelations;
+ std::function<std::unique_ptr<Dali::Accessibility::Accessible>(Actor)> mAccessibilityConstructor;
+ std::unique_ptr<Dali::Accessibility::Accessible> mAccessibilityObject;
// Gesture Detection
PinchGestureDetector mPinchGestureDetector;
static const PropertyRegistration PROPERTY_20;
static const PropertyRegistration PROPERTY_21;
static const PropertyRegistration PROPERTY_22;
-
- /**
- * The method acquires Accessible handle from Actor object
- * @param actor Actor object
- * @return handle to Accessible object
- */
- static Dali::Accessibility::Accessible* GetAccessibilityObject(Dali::Actor actor);
- Dali::Accessibility::Accessible* GetAccessibilityObject();
-
- std::function<std::unique_ptr<Dali::Accessibility::Accessible>(Actor)> accessibilityConstructor;
- std::unique_ptr<Dali::Accessibility::Accessible> accessibilityObject;
};
} // namespace Internal
double ProgressBar::AccessibleImpl::GetCurrent()
{
- auto p = Toolkit::ProgressBar::DownCast(Self());
- return p.GetProperty(Toolkit::ProgressBar::Property::PROGRESS_VALUE)
- .Get<float>();
+ auto self = Toolkit::ProgressBar::DownCast(Self());
+ return self.GetProperty(Toolkit::ProgressBar::Property::PROGRESS_VALUE).Get<float>();
}
double ProgressBar::AccessibleImpl::GetMaximum()
bool ProgressBar::AccessibleImpl::SetCurrent(double current)
{
if(current < GetMinimum() || current > GetMaximum())
+ {
return false;
- auto p = Toolkit::ProgressBar::DownCast(Self());
- p.SetProperty(Toolkit::ProgressBar::Property::PROGRESS_VALUE,
- static_cast<float>(current));
+ }
+
+ auto self = Toolkit::ProgressBar::DownCast(Self());
+ self.SetProperty(Toolkit::ProgressBar::Property::PROGRESS_VALUE, static_cast<float>(current));
return true;
}
double ScrollBar::AccessibleImpl::GetMinimum()
{
- auto p = Toolkit::ScrollBar::DownCast(Self());
- Handle scrollableHandle = GetImpl(p).mScrollableObject.GetHandle();
- return scrollableHandle ? scrollableHandle.GetCurrentProperty<float>(GetImpl(p).mPropertyMinScrollPosition) : 0.0f;
+ auto self = Toolkit::ScrollBar::DownCast(Self());
+ Handle scrollableHandle = GetImpl(self).mScrollableObject.GetHandle();
+ return scrollableHandle ? scrollableHandle.GetCurrentProperty<float>(GetImpl(self).mPropertyMinScrollPosition) : 0.0f;
}
double ScrollBar::AccessibleImpl::GetCurrent()
{
- auto p = Toolkit::ScrollBar::DownCast(Self());
- Handle scrollableHandle = GetImpl(p).mScrollableObject.GetHandle();
- return scrollableHandle ? scrollableHandle.GetCurrentProperty<float>(GetImpl(p).mPropertyScrollPosition) : 0.0f;
+ auto self = Toolkit::ScrollBar::DownCast(Self());
+ Handle scrollableHandle = GetImpl(self).mScrollableObject.GetHandle();
+ return scrollableHandle ? scrollableHandle.GetCurrentProperty<float>(GetImpl(self).mPropertyScrollPosition) : 0.0f;
}
double ScrollBar::AccessibleImpl::GetMaximum()
{
- auto p = Toolkit::ScrollBar::DownCast(Self());
- Handle scrollableHandle = GetImpl(p).mScrollableObject.GetHandle();
- return scrollableHandle ? scrollableHandle.GetCurrentProperty<float>(GetImpl(p).mPropertyMaxScrollPosition) : 1.0f;
+ auto self = Toolkit::ScrollBar::DownCast(Self());
+ Handle scrollableHandle = GetImpl(self).mScrollableObject.GetHandle();
+ return scrollableHandle ? scrollableHandle.GetCurrentProperty<float>(GetImpl(self).mPropertyMaxScrollPosition) : 1.0f;
}
bool ScrollBar::AccessibleImpl::SetCurrent(double current)
{
if(current < GetMinimum() || current > GetMaximum())
+ {
return false;
+ }
- auto value_before = GetCurrent();
+ auto valueBefore = GetCurrent();
- auto p = Toolkit::ScrollBar::DownCast(Self());
- Handle scrollableHandle = GetImpl(p).mScrollableObject.GetHandle();
+ auto self = Toolkit::ScrollBar::DownCast(Self());
+ Handle scrollableHandle = GetImpl(self).mScrollableObject.GetHandle();
if(!scrollableHandle)
+ {
return false;
- scrollableHandle.SetProperty(GetImpl(p).mPropertyScrollPosition, static_cast<float>(current));
+ }
- auto value_after = GetCurrent();
+ scrollableHandle.SetProperty(GetImpl(self).mPropertyScrollPosition, static_cast<float>(current));
- if((current != value_before) && (value_before == value_after))
+ auto valueAfter = GetCurrent();
+
+ if((current != valueBefore) && (valueBefore == valueAfter))
+ {
return false;
+ }
return true;
}
double Slider::AccessibleImpl::GetMinimum()
{
- auto p = Toolkit::Slider::DownCast(Self());
- return p.GetProperty(Toolkit::Slider::Property::LOWER_BOUND).Get<float>();
+ auto self = Toolkit::Slider::DownCast(Self());
+ return self.GetProperty(Toolkit::Slider::Property::LOWER_BOUND).Get<float>();
}
double Slider::AccessibleImpl::GetCurrent()
{
- auto p = Toolkit::Slider::DownCast(Self());
- return p.GetProperty(Toolkit::Slider::Property::VALUE).Get<float>();
+ auto self = Toolkit::Slider::DownCast(Self());
+ return self.GetProperty(Toolkit::Slider::Property::VALUE).Get<float>();
}
double Slider::AccessibleImpl::GetMaximum()
{
- auto p = Toolkit::Slider::DownCast(Self());
- return p.GetProperty(Toolkit::Slider::Property::UPPER_BOUND).Get<float>();
+ auto self = Toolkit::Slider::DownCast(Self());
+ return self.GetProperty(Toolkit::Slider::Property::UPPER_BOUND).Get<float>();
}
bool Slider::AccessibleImpl::SetCurrent(double current)
if(current < GetMinimum() || current > GetMaximum())
return false;
- auto p = Toolkit::Slider::DownCast(Self());
- auto& impl = Toolkit::GetImpl(p);
+ auto self = Toolkit::Slider::DownCast(Self());
+ auto& impl = Toolkit::GetImpl(self);
- const float prev = p.GetProperty<float>(Toolkit::Slider::Property::VALUE);
+ const float prev = self.GetProperty<float>(Toolkit::Slider::Property::VALUE);
float next = static_cast<float>(current);
if(fabsf(next - prev) < Math::MACHINE_EPSILON_0)
{
// do nothing
}
- else if(p.GetProperty<bool>(Toolkit::Slider::Property::SNAP_TO_MARKS))
+ else if(self.GetProperty<bool>(Toolkit::Slider::Property::SNAP_TO_MARKS))
{
- auto marks = p.GetProperty<Property::Array>(Toolkit::Slider::Property::MARKS);
+ auto marks = self.GetProperty<Property::Array>(Toolkit::Slider::Property::MARKS);
int prevIdx;
if(impl.MarkReached(impl.MapValuePercentage(prev), prevIdx))
nextIdx += (next > prev) ? 1 : -1;
if(nextIdx < 0 || nextIdx >= static_cast<int>(marks.Count()))
+ {
return false;
+ }
next = marks[nextIdx].Get<float>();
}
double Slider::AccessibleImpl::GetMinimumIncrement()
{
- auto p = Toolkit::Slider::DownCast(Self());
+ auto self = Toolkit::Slider::DownCast(Self());
- bool hasMarks = !p.GetProperty<Property::Array>(Toolkit::Slider::Property::MARKS).Empty();
- float tolerance = p.GetProperty<float>(Toolkit::Slider::Property::MARK_TOLERANCE);
+ bool hasMarks = !self.GetProperty<Property::Array>(Toolkit::Slider::Property::MARKS).Empty();
+ float tolerance = self.GetProperty<float>(Toolkit::Slider::Property::MARK_TOLERANCE);
if(!hasMarks || fabsf(tolerance) < 0.01)
+ {
return 0.0; // let screen-reader choose the increment
+ }
return Math::MACHINE_EPSILON_10000 + tolerance * (GetMaximum() - GetMinimum());
}
return mInputFilteredSignal;
}
-Text::ControllerPtr TextEditor::getController()
+Text::ControllerPtr TextEditor::GetTextController()
{
return mController;
}
}
}
-void TextEditor::CaretMoved(unsigned int position)
+void TextEditor::CursorMoved(unsigned int position)
{
if(Accessibility::IsUp())
{
- Control::Impl::GetAccessibilityObject(Self())->EmitTextCaretMoved(position);
+ Control::Impl::GetAccessibilityObject(Self())->EmitTextCursorMoved(position);
}
}
std::string TextEditor::AccessibleImpl::GetName()
{
- auto slf = Toolkit::TextEditor::DownCast(Self());
- return slf.GetProperty(Toolkit::TextEditor::Property::TEXT)
- .Get<std::string>();
+ auto self = Toolkit::TextEditor::DownCast(Self());
+ return self.GetProperty(Toolkit::TextEditor::Property::TEXT).Get<std::string>();
}
-std::string TextEditor::AccessibleImpl::GetText(size_t startOffset,
- size_t endOffset)
+std::string TextEditor::AccessibleImpl::GetText(size_t startOffset, size_t endOffset)
{
if(endOffset <= startOffset)
+ {
return {};
+ }
- auto slf = Toolkit::TextEditor::DownCast(Self());
- auto txt =
- slf.GetProperty(Toolkit::TextEditor::Property::TEXT).Get<std::string>();
+ auto self = Toolkit::TextEditor::DownCast(Self());
+ auto text = self.GetProperty(Toolkit::TextEditor::Property::TEXT).Get<std::string>();
- if(startOffset > txt.size() || endOffset > txt.size())
+ if(startOffset > text.size() || endOffset > text.size())
+ {
return {};
+ }
- return txt.substr(startOffset, endOffset - startOffset);
+ return text.substr(startOffset, endOffset - startOffset);
}
size_t TextEditor::AccessibleImpl::GetCharacterCount()
{
- auto slf = Toolkit::TextEditor::DownCast(Self());
- auto txt =
- slf.GetProperty(Toolkit::TextEditor::Property::TEXT).Get<std::string>();
+ auto self = Toolkit::TextEditor::DownCast(Self());
+ auto text = self.GetProperty(Toolkit::TextEditor::Property::TEXT).Get<std::string>();
- return txt.size();
+ return text.size();
}
-size_t TextEditor::AccessibleImpl::GetCaretOffset()
+size_t TextEditor::AccessibleImpl::GetCursorOffset()
{
auto slf = Toolkit::TextEditor::DownCast(Self());
- return Dali::Toolkit::GetImpl(slf).getController()->GetCursorPosition();
+ return Dali::Toolkit::GetImpl(slf).GetTextController()->GetCursorPosition();
}
-bool TextEditor::AccessibleImpl::SetCaretOffset(size_t offset)
+bool TextEditor::AccessibleImpl::SetCursorOffset(size_t offset)
{
auto slf = Toolkit::TextEditor::DownCast(Self());
auto txt = slf.GetProperty(Toolkit::TextEditor::Property::TEXT).Get<std::string>();
if(offset > txt.size())
+ {
return false;
+ }
auto& slfImpl = Dali::Toolkit::GetImpl(slf);
- slfImpl.getController()->ResetCursorPosition(offset);
+ slfImpl.GetTextController()->ResetCursorPosition(offset);
slfImpl.RequestTextRelayout();
+
return true;
}
-Dali::Accessibility::Range TextEditor::AccessibleImpl::GetTextAtOffset(
- size_t offset, Dali::Accessibility::TextBoundary boundary)
+Dali::Accessibility::Range TextEditor::AccessibleImpl::GetTextAtOffset( size_t offset, Dali::Accessibility::TextBoundary boundary)
{
- auto slf = Toolkit::TextEditor::DownCast(Self());
- auto txt = slf.GetProperty(Toolkit::TextEditor::Property::TEXT).Get<std::string>();
- auto txt_size = txt.size();
+ auto self = Toolkit::TextEditor::DownCast(Self());
+ auto text = self.GetProperty(Toolkit::TextEditor::Property::TEXT).Get<std::string>();
+ auto textSize = text.size();
auto range = Dali::Accessibility::Range{};
{
case Dali::Accessibility::TextBoundary::CHARACTER:
{
- if(offset < txt_size)
+ if(offset < textSize)
{
- range.content = txt[offset];
+ range.content = text[offset];
range.startOffset = offset;
range.endOffset = offset + 1;
}
+ break;
}
- break;
case Dali::Accessibility::TextBoundary::WORD:
case Dali::Accessibility::TextBoundary::LINE:
{
- auto txt_c_string = txt.c_str();
- auto breaks = std::vector<char>(txt_size, 0);
+ auto textString = text.c_str();
+ auto breaks = std::vector<char>(textSize, 0);
+
if(boundary == Dali::Accessibility::TextBoundary::WORD)
- Accessibility::Accessible::FindWordSeparationsUtf8((const utf8_t*)txt_c_string, txt_size, "", breaks.data());
+ {
+ Accessibility::Accessible::FindWordSeparationsUtf8(reinterpret_cast<const utf8_t*>(textString), textSize, "", breaks.data());
+ }
else
- Accessibility::Accessible::FindLineSeparationsUtf8((const utf8_t*)txt_c_string, txt_size, "", breaks.data());
+ {
+ Accessibility::Accessible::FindLineSeparationsUtf8(reinterpret_cast<const utf8_t*>(textString), textSize, "", breaks.data());
+ }
+
auto index = 0u;
auto counter = 0u;
- while(index < txt_size && counter <= offset)
+ while(index < textSize && counter <= offset)
{
auto start = index;
if(breaks[index])
{
while(breaks[index])
+ {
index++;
+ }
counter++;
}
else
{
if(boundary == Dali::Accessibility::TextBoundary::WORD)
+ {
index++;
+ }
if(boundary == Dali::Accessibility::TextBoundary::LINE)
+ {
counter++;
+ }
}
+
if((counter > 0) && ((counter - 1) == offset))
{
- range.content = txt.substr(start, index - start + 1);
+ range.content = text.substr(start, index - start + 1);
range.startOffset = start;
range.endOffset = index + 1;
}
+
if(boundary == Dali::Accessibility::TextBoundary::LINE)
+ {
index++;
+ }
}
+ break;
}
- break;
case Dali::Accessibility::TextBoundary::SENTENCE:
{
- /* not supported by efl */
+ /* not supported by default */
+ break;
}
- break;
case Dali::Accessibility::TextBoundary::PARAGRAPH:
{
/* Paragraph is not supported by libunibreak library */
+ break;
}
- break;
default:
break;
}
return range;
}
-Dali::Accessibility::Range
-TextEditor::AccessibleImpl::GetSelection(size_t selectionNum)
+Dali::Accessibility::Range TextEditor::AccessibleImpl::GetRangeOfSelection(size_t selectionIndex)
{
// Since DALi supports only one selection indexes higher than 0 are ignored
- if(selectionNum > 0)
+ if(selectionIndex > 0)
+ {
return {};
+ }
- auto slf = Toolkit::TextEditor::DownCast(Self());
- auto ctrl = Dali::Toolkit::GetImpl(slf).getController();
- std::string ret;
- ctrl->RetrieveSelection(ret);
- auto r = ctrl->GetSelectionIndexes();
+ auto self = Toolkit::TextEditor::DownCast(Self());
+ auto controller = Dali::Toolkit::GetImpl(self).GetTextController();
+ std::string value{};
+ controller->RetrieveSelection(value);
+ auto indices = controller->GetSelectionIndexes();
- return {static_cast<size_t>(r.first), static_cast<size_t>(r.second), ret};
+ return {static_cast<size_t>(indices.first), static_cast<size_t>(indices.second), value};
}
-bool TextEditor::AccessibleImpl::RemoveSelection(size_t selectionNum)
+bool TextEditor::AccessibleImpl::RemoveSelection(size_t selectionIndex)
{
// Since DALi supports only one selection indexes higher than 0 are ignored
- if(selectionNum > 0)
+ if(selectionIndex > 0)
+ {
return false;
+ }
- auto slf = Toolkit::TextEditor::DownCast(Self());
- Dali::Toolkit::GetImpl(slf).getController()->SetSelection(0, 0);
+ auto self = Toolkit::TextEditor::DownCast(Self());
+ Dali::Toolkit::GetImpl(self).GetTextController()->SetSelection(0, 0);
return true;
}
-bool TextEditor::AccessibleImpl::SetSelection(size_t selectionNum,
- size_t startOffset,
- size_t endOffset)
+bool TextEditor::AccessibleImpl::SetRangeOfSelection(size_t selectionIndex, size_t startOffset, size_t endOffset)
{
// Since DALi supports only one selection indexes higher than 0 are ignored
- if(selectionNum > 0)
+ if(selectionIndex > 0)
+ {
return false;
+ }
- auto slf = Toolkit::TextEditor::DownCast(Self());
- Dali::Toolkit::GetImpl(slf).getController()->SetSelection(startOffset,
- endOffset);
+ auto self = Toolkit::TextEditor::DownCast(Self());
+ Dali::Toolkit::GetImpl(self).GetTextController()->SetSelection(startOffset, endOffset);
return true;
}
-bool TextEditor::AccessibleImpl::CopyText(size_t startPosition,
- size_t endPosition)
+bool TextEditor::AccessibleImpl::CopyText(size_t startPosition, size_t endPosition)
{
if(endPosition <= startPosition)
+ {
return false;
+ }
- auto slf = Toolkit::TextEditor::DownCast(Self());
- auto txt = slf.GetProperty(Toolkit::TextEditor::Property::TEXT).Get<std::string>();
- Dali::Toolkit::GetImpl(slf).getController()->CopyStringToClipboard(txt.substr(startPosition, endPosition - startPosition));
+ auto self = Toolkit::TextEditor::DownCast(Self());
+ auto text = self.GetProperty(Toolkit::TextEditor::Property::TEXT).Get<std::string>();
+ Dali::Toolkit::GetImpl(self).GetTextController()->CopyStringToClipboard(text.substr(startPosition, endPosition - startPosition));
return true;
}
-bool TextEditor::AccessibleImpl::CutText(size_t startPosition,
- size_t endPosition)
+bool TextEditor::AccessibleImpl::CutText(size_t startPosition, size_t endPosition)
{
if(endPosition <= startPosition)
+ {
return false;
+ }
- auto slf = Toolkit::TextEditor::DownCast(Self());
- auto txt = slf.GetProperty(Toolkit::TextEditor::Property::TEXT).Get<std::string>();
- Dali::Toolkit::GetImpl(slf).getController()->CopyStringToClipboard(txt.substr(startPosition, endPosition - startPosition));
+ auto self = Toolkit::TextEditor::DownCast(Self());
+ auto text = self.GetProperty(Toolkit::TextEditor::Property::TEXT).Get<std::string>();
+ Dali::Toolkit::GetImpl(self).GetTextController()->CopyStringToClipboard(text.substr(startPosition, endPosition - startPosition));
- slf.SetProperty(Toolkit::TextEditor::Property::TEXT,
- txt.substr(0, startPosition) + txt.substr(endPosition));
+ self.SetProperty(Toolkit::TextEditor::Property::TEXT, text.substr(0, startPosition) + text.substr(endPosition));
return true;
}
-bool TextEditor::AccessibleImpl::DeleteText(size_t startPosition,
- size_t endPosition)
+bool TextEditor::AccessibleImpl::DeleteText(size_t startPosition, size_t endPosition)
{
if(endPosition <= startPosition)
+ {
return false;
+ }
- auto slf = Toolkit::TextEditor::DownCast(Self());
- auto txt = slf.GetProperty(Toolkit::TextEditor::Property::TEXT).Get<std::string>();
+ auto self = Toolkit::TextEditor::DownCast(Self());
+ auto text = self.GetProperty(Toolkit::TextEditor::Property::TEXT).Get<std::string>();
- slf.SetProperty(Toolkit::TextEditor::Property::TEXT,
- txt.substr(0, startPosition) + txt.substr(endPosition));
+ self.SetProperty(Toolkit::TextEditor::Property::TEXT, text.substr(0, startPosition) + text.substr(endPosition));
return true;
}
{
using namespace Dali::Accessibility;
- auto states = DevelControl::AccessibleImpl::CalculateStates();
+ auto states = DevelControl::AccessibleImpl::CalculateStates();
states[State::EDITABLE] = true;
states[State::FOCUSABLE] = true;
Toolkit::Control focusControl = Toolkit::KeyInputFocusManager::Get().GetCurrentFocusControl();
- if(self == focusControl)
+ if(mSelf == focusControl)
{
states[State::FOCUSED] = true;
}
return states;
}
-bool TextEditor::AccessibleImpl::InsertText(size_t startPosition,
- std::string text)
+bool TextEditor::AccessibleImpl::InsertText(size_t startPosition, std::string text)
{
- auto slf = Toolkit::TextEditor::DownCast(Self());
- auto txt = slf.GetProperty(Toolkit::TextEditor::Property::TEXT).Get<std::string>();
+ auto self = Toolkit::TextEditor::DownCast(Self());
+ auto insertedText = self.GetProperty(Toolkit::TextEditor::Property::TEXT).Get<std::string>();
- txt.insert(startPosition, text);
+ insertedText.insert(startPosition, text);
- slf.SetProperty(Toolkit::TextEditor::Property::TEXT, std::move(txt));
+ self.SetProperty(Toolkit::TextEditor::Property::TEXT, std::move(insertedText));
return true;
}
bool TextEditor::AccessibleImpl::SetTextContents(std::string newContents)
{
- auto slf = Toolkit::TextEditor::DownCast(Self());
- slf.SetProperty(Toolkit::TextEditor::Property::TEXT, std::move(newContents));
+ auto self = Toolkit::TextEditor::DownCast(Self());
+ self.SetProperty(Toolkit::TextEditor::Property::TEXT, std::move(newContents));
return true;
}
static bool DoConnectSignal(BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor);
/**
+ * @brief Gets text controller
+ *
+ * @return The text controller
+ */
+ Text::ControllerPtr GetTextController();
+
+ /**
* @copydoc TextEditor::TextChangedSignal()
*/
Toolkit::TextEditor::TextChangedSignalType& TextChangedSignal();
void TextDeleted(unsigned int position, unsigned int length, const std::string& content) override;
/**
- * @copydoc Text::EditableControlInterface::CaretMoved()
+ * @copydoc Text::EditableControlInterface::CursorMoved()
*/
- void CaretMoved(unsigned int position) override;
+ void CursorMoved(unsigned int position) override;
/**
* @copydoc Text::EditableControlInterface::TextChanged()
*/
void AnchorClicked(const std::string& href) override;
- Text::ControllerPtr getController();
-
private: // Implementation
/**
* @copydoc Dali::Toolkit::Text::Controller::(InputMethodContext& inputMethodContext, const InputMethodContext::EventData& inputMethodContextEvent)
bool mScrollStarted : 1;
bool mTextChanged : 1; ///< If true, emits TextChangedSignal in next OnRelayout().
+ /**
+ * @brief This structure is to connect TextEditor with Accessible functions.
+ */
struct AccessibleImpl : public DevelControl::AccessibleImpl,
public virtual Dali::Accessibility::Text,
public virtual Dali::Accessibility::EditableText
{
using DevelControl::AccessibleImpl::AccessibleImpl;
- std::string GetName() override;
- std::string GetText(size_t startOffset, size_t endOffset) override;
- size_t GetCharacterCount() override;
- size_t GetCaretOffset() override;
- bool SetCaretOffset(size_t offset) override;
- Accessibility::Range GetTextAtOffset(size_t offset, Accessibility::TextBoundary boundary) override;
- Accessibility::Range GetSelection(size_t selectionNum) override;
- bool RemoveSelection(size_t selectionNum) override;
- bool SetSelection(size_t selectionNum, size_t startOffset, size_t endOffset) override;
- bool CopyText(size_t startPosition, size_t endPosition) override;
- bool CutText(size_t startPosition, size_t endPosition) override;
+ /**
+ * @copydoc Dali::Accessibility::Accessible::GetName()
+ */
+ std::string GetName() override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::GetText()
+ */
+ std::string GetText(size_t startOffset, size_t endOffset) override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::GetCharacterCount()
+ */
+ size_t GetCharacterCount() override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::GetCursorOffset()
+ */
+ size_t GetCursorOffset() override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::SetCursorOffset()
+ */
+ bool SetCursorOffset(size_t offset) override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::GetTextAtOffset()
+ */
+ Accessibility::Range GetTextAtOffset(size_t offset, Accessibility::TextBoundary boundary) override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::GetRangeOfSelection()
+ */
+ Accessibility::Range GetRangeOfSelection(size_t selectionIndex) override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::RemoveSelection()
+ */
+ bool RemoveSelection(size_t selectionIndex) override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::SetRangeOfSelection()
+ */
+ bool SetRangeOfSelection(size_t selectionIndex, size_t startOffset, size_t endOffset) override;
+
+ /**
+ * @copydoc Dali::Accessibility::EditableText::CopyText()
+ */
+ bool CopyText(size_t startPosition, size_t endPosition) override;
+
+ /**
+ * @copydoc Dali::Accessibility::EditableText::CutText()
+ */
+ bool CutText(size_t startPosition, size_t endPosition) override;
+
+ /**
+ * @copydoc Dali::Accessibility::Accessible::GetStates()
+ */
Accessibility::States CalculateStates() override;
- bool InsertText(size_t startPosition, std::string text) override;
- bool SetTextContents(std::string newContents) override;
- bool DeleteText(size_t startPosition, size_t endPosition) override;
+
+ /**
+ * @copydoc Dali::Accessibility::EditableText::InsertText()
+ */
+ bool InsertText(size_t startPosition, std::string text) override;
+
+ /**
+ * @copydoc Dali::Accessibility::EditableText::SetTextContents()
+ */
+ bool SetTextContents(std::string newContents) override;
+
+ /**
+ * @copydoc Dali::Accessibility::EditableText::DeleteText()
+ */
+ bool DeleteText(size_t startPosition, size_t endPosition) override;
};
};
}
}
-Text::ControllerPtr TextField::getController()
+Text::ControllerPtr TextField::GetTextController()
{
return mController;
}
}
}
-void TextField::CaretMoved(unsigned int position)
+void TextField::CursorMoved(unsigned int position)
{
if(Accessibility::IsUp())
{
- Control::Impl::GetAccessibilityObject(Self())->EmitTextCaretMoved(position);
+ Control::Impl::GetAccessibilityObject(Self())->EmitTextCursorMoved(position);
}
}
std::string TextField::AccessibleImpl::GetName()
{
- auto slf = Toolkit::TextField::DownCast(Self());
- return slf.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
+ auto self = Toolkit::TextField::DownCast(Self());
+ return self.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
}
-std::string TextField::AccessibleImpl::GetText(size_t startOffset,
- size_t endOffset)
+std::string TextField::AccessibleImpl::GetText(size_t startOffset, size_t endOffset)
{
if(endOffset <= startOffset)
+ {
return {};
+ }
- auto slf = Toolkit::TextField::DownCast(Self());
- auto txt =
- slf.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
+ auto self = Toolkit::TextField::DownCast(Self());
+ auto text = self.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
- if(startOffset > txt.size() || endOffset > txt.size())
+ if(startOffset > text.size() || endOffset > text.size())
+ {
return {};
+ }
- return txt.substr(startOffset, endOffset - startOffset);
+ return text.substr(startOffset, endOffset - startOffset);
}
size_t TextField::AccessibleImpl::GetCharacterCount()
{
- auto slf = Toolkit::TextField::DownCast(Self());
- auto txt =
- slf.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
+ auto self = Toolkit::TextField::DownCast(Self());
+ auto text = self.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
- return txt.size();
+ return text.size();
}
-size_t TextField::AccessibleImpl::GetCaretOffset()
+size_t TextField::AccessibleImpl::GetCursorOffset()
{
- auto slf = Toolkit::TextField::DownCast(Self());
- return Dali::Toolkit::GetImpl(slf).getController()->GetCursorPosition();
+ auto self = Toolkit::TextField::DownCast(Self());
+ return Dali::Toolkit::GetImpl(self).GetTextController()->GetCursorPosition();
}
-bool TextField::AccessibleImpl::SetCaretOffset(size_t offset)
+bool TextField::AccessibleImpl::SetCursorOffset(size_t offset)
{
- auto slf = Toolkit::TextField::DownCast(Self());
- auto txt = slf.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
- if(offset > txt.size())
+ auto self = Toolkit::TextField::DownCast(Self());
+ auto text = self.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
+ if(offset > text.size())
+ {
return false;
+ }
+
+ auto& selfImpl = Dali::Toolkit::GetImpl(self);
+ selfImpl.GetTextController()->ResetCursorPosition(offset);
+ selfImpl.RequestTextRelayout();
- auto& slfImpl = Dali::Toolkit::GetImpl(slf);
- slfImpl.getController()->ResetCursorPosition(offset);
- slfImpl.RequestTextRelayout();
return true;
}
Dali::Accessibility::Range TextField::AccessibleImpl::GetTextAtOffset(
size_t offset, Dali::Accessibility::TextBoundary boundary)
{
- auto slf = Toolkit::TextField::DownCast(Self());
- auto txt = slf.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
- auto txt_size = txt.size();
+ auto self = Toolkit::TextField::DownCast(Self());
+ auto text = self.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
+ auto textSize = text.size();
auto range = Dali::Accessibility::Range{};
{
case Dali::Accessibility::TextBoundary::CHARACTER:
{
- if(offset < txt_size)
+ if(offset < textSize)
{
- range.content = txt[offset];
+ range.content = text[offset];
range.startOffset = offset;
range.endOffset = offset + 1;
}
+ break;
}
- break;
case Dali::Accessibility::TextBoundary::WORD:
case Dali::Accessibility::TextBoundary::LINE:
{
- auto txt_c_string = txt.c_str();
- auto breaks = std::vector<char>(txt_size, 0);
+ auto textString = text.c_str();
+ auto breaks = std::vector<char>(textSize, 0);
+
if(boundary == Dali::Accessibility::TextBoundary::WORD)
- Accessibility::Accessible::FindWordSeparationsUtf8((const utf8_t*)txt_c_string, txt_size, "", breaks.data());
+ {
+ Accessibility::Accessible::FindWordSeparationsUtf8(reinterpret_cast<const utf8_t*>(textString), textSize, "", breaks.data());
+ }
else
- Accessibility::Accessible::FindLineSeparationsUtf8((const utf8_t*)txt_c_string, txt_size, "", breaks.data());
+ {
+ Accessibility::Accessible::FindLineSeparationsUtf8(reinterpret_cast<const utf8_t*>(textString), textSize, "", breaks.data());
+ }
+
auto index = 0u;
auto counter = 0u;
- while(index < txt_size && counter <= offset)
+ while(index < textSize && counter <= offset)
{
auto start = index;
if(breaks[index])
{
while(breaks[index])
+ {
index++;
+ }
counter++;
}
else
{
if(boundary == Dali::Accessibility::TextBoundary::WORD)
+ {
index++;
+ }
if(boundary == Dali::Accessibility::TextBoundary::LINE)
+ {
counter++;
+ }
}
+
if((counter > 0) && ((counter - 1) == offset))
{
- range.content = txt.substr(start, index - start + 1);
+ range.content = text.substr(start, index - start + 1);
range.startOffset = start;
range.endOffset = index + 1;
}
+
if(boundary == Dali::Accessibility::TextBoundary::LINE)
+ {
index++;
+ }
}
+ break;
}
- break;
case Dali::Accessibility::TextBoundary::SENTENCE:
{
- /* not supported by efl */
+ /* not supported by default */
+ break;
}
- break;
case Dali::Accessibility::TextBoundary::PARAGRAPH:
{
/* Paragraph is not supported by libunibreak library */
+ break;
}
- break;
default:
break;
}
return range;
}
-Dali::Accessibility::Range
-TextField::AccessibleImpl::GetSelection(size_t selectionNum)
+Dali::Accessibility::Range TextField::AccessibleImpl::GetRangeOfSelection(size_t selectionIndex)
{
// Since DALi supports only one selection indexes higher than 0 are ignored
- if(selectionNum > 0)
+ if(selectionIndex > 0)
+ {
return {};
+ }
- auto slf = Toolkit::TextField::DownCast(Self());
- auto ctrl = Dali::Toolkit::GetImpl(slf).getController();
- std::string ret;
- ctrl->RetrieveSelection(ret);
- auto r = ctrl->GetSelectionIndexes();
+ auto self = Toolkit::TextField::DownCast(Self());
+ auto controller = Dali::Toolkit::GetImpl(self).GetTextController();
+ std::string value{};
+ controller->RetrieveSelection(value);
+ auto indices = controller->GetSelectionIndexes();
- return {static_cast<size_t>(r.first), static_cast<size_t>(r.second), ret};
+ return {static_cast<size_t>(indices.first), static_cast<size_t>(indices.second), value};
}
-bool TextField::AccessibleImpl::RemoveSelection(size_t selectionNum)
+bool TextField::AccessibleImpl::RemoveSelection(size_t selectionIndex)
{
// Since DALi supports only one selection indexes higher than 0 are ignored
- if(selectionNum > 0)
+ if(selectionIndex > 0)
+ {
return false;
+ }
- auto slf = Toolkit::TextField::DownCast(Self());
- Dali::Toolkit::GetImpl(slf).getController()->SetSelection(0, 0);
+ auto self = Toolkit::TextField::DownCast(Self());
+ Dali::Toolkit::GetImpl(self).GetTextController()->SetSelection(0, 0);
return true;
}
-bool TextField::AccessibleImpl::SetSelection(size_t selectionNum,
- size_t startOffset,
- size_t endOffset)
+bool TextField::AccessibleImpl::SetRangeOfSelection(size_t selectionIndex, size_t startOffset, size_t endOffset)
{
// Since DALi supports only one selection indexes higher than 0 are ignored
- if(selectionNum > 0)
+ if(selectionIndex > 0)
+ {
return false;
+ }
- auto slf = Toolkit::TextField::DownCast(Self());
- Dali::Toolkit::GetImpl(slf).getController()->SetSelection(startOffset,
- endOffset);
+ auto self = Toolkit::TextField::DownCast(Self());
+ Dali::Toolkit::GetImpl(self).GetTextController()->SetSelection(startOffset, endOffset);
return true;
}
-bool TextField::AccessibleImpl::CopyText(size_t startPosition,
- size_t endPosition)
+bool TextField::AccessibleImpl::CopyText(size_t startPosition, size_t endPosition)
{
if(endPosition <= startPosition)
+ {
return false;
+ }
- auto slf = Toolkit::TextField::DownCast(Self());
- auto txt = slf.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
- Dali::Toolkit::GetImpl(slf).getController()->CopyStringToClipboard(txt.substr(startPosition, endPosition - startPosition));
+ auto self = Toolkit::TextField::DownCast(Self());
+ auto text = self.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
+ Dali::Toolkit::GetImpl(self).GetTextController()->CopyStringToClipboard(text.substr(startPosition, endPosition - startPosition));
return true;
}
-bool TextField::AccessibleImpl::CutText(size_t startPosition,
- size_t endPosition)
+bool TextField::AccessibleImpl::CutText(size_t startPosition, size_t endPosition)
{
if(endPosition <= startPosition)
+ {
return false;
+ }
- auto slf = Toolkit::TextField::DownCast(Self());
- auto txt = slf.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
- Dali::Toolkit::GetImpl(slf).getController()->CopyStringToClipboard(txt.substr(startPosition, endPosition - startPosition));
+ auto self = Toolkit::TextField::DownCast(Self());
+ auto text = self.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
+ Dali::Toolkit::GetImpl(self).GetTextController()->CopyStringToClipboard(text.substr(startPosition, endPosition - startPosition));
- slf.SetProperty(Toolkit::TextField::Property::TEXT,
- txt.substr(0, startPosition) + txt.substr(endPosition));
+ self.SetProperty(Toolkit::TextField::Property::TEXT, text.substr(0, startPosition) + text.substr(endPosition));
return true;
}
-bool TextField::AccessibleImpl::DeleteText(size_t startPosition,
- size_t endPosition)
+bool TextField::AccessibleImpl::DeleteText(size_t startPosition, size_t endPosition)
{
if(endPosition <= startPosition)
+ {
return false;
+ }
- auto slf = Toolkit::TextField::DownCast(Self());
- auto txt = slf.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
+ auto self = Toolkit::TextField::DownCast(Self());
+ auto text = self.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
- slf.SetProperty(Toolkit::TextField::Property::TEXT,
- txt.substr(0, startPosition) + txt.substr(endPosition));
+ self.SetProperty(Toolkit::TextField::Property::TEXT, text.substr(0, startPosition) + text.substr(endPosition));
return true;
}
states[State::FOCUSABLE] = true;
Toolkit::Control focusControl = Toolkit::KeyInputFocusManager::Get().GetCurrentFocusControl();
- if(self == focusControl)
+ if(mSelf == focusControl)
{
states[State::FOCUSED] = true;
}
return states;
}
-bool TextField::AccessibleImpl::InsertText(size_t startPosition,
- std::string text)
+bool TextField::AccessibleImpl::InsertText(size_t startPosition, std::string text)
{
- auto slf = Toolkit::TextField::DownCast(Self());
- auto txt = slf.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
+ auto self = Toolkit::TextField::DownCast(Self());
+ auto insertedText = self.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
- txt.insert(startPosition, text);
+ insertedText.insert(startPosition, text);
- slf.SetProperty(Toolkit::TextField::Property::TEXT, std::move(txt));
+ self.SetProperty(Toolkit::TextField::Property::TEXT, std::move(insertedText));
return true;
}
bool TextField::AccessibleImpl::SetTextContents(std::string newContents)
{
- auto slf = Toolkit::TextField::DownCast(Self());
- slf.SetProperty(Toolkit::TextField::Property::TEXT, std::move(newContents));
+ auto self = Toolkit::TextField::DownCast(Self());
+ self.SetProperty(Toolkit::TextField::Property::TEXT, std::move(newContents));
return true;
}
static bool DoConnectSignal(BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor);
/**
+ * @brief Gets text controller
+ *
+ * @return The text controller
+ */
+ Text::ControllerPtr GetTextController();
+
+ /**
* @copydoc TextField::TextChangedSignal()
*/
Toolkit::TextField::TextChangedSignalType& TextChangedSignal();
*/
DevelTextField::InputFilteredSignalType& InputFilteredSignal();
- Text::ControllerPtr getController();
-
private: // From Control
/**
* @copydoc Control::OnInitialize()
void TextDeleted(unsigned int position, unsigned int length, const std::string& content) override;
/**
- * @copydoc Text::EditableControlInterface::CaretMoved()
+ * @copydoc Text::EditableControlInterface::CursorMoved()
*/
- void CaretMoved(unsigned int position) override;
+ void CursorMoved(unsigned int position) override;
/**
* @copydoc Text::EditableControlInterface::TextChanged()
// Connection needed to re-render text, when a Text Field returns to the scene.
void OnSceneConnect(Dali::Actor actor);
-public: // For UTC only
- Text::ControllerPtr GetTextController()
- {
- return mController;
- }
-
private: // Data
// Signals
Toolkit::TextField::TextChangedSignalType mTextChangedSignal;
bool mTextChanged : 1; ///< If true, emits TextChangedSignal in next OnRelayout().
protected:
+ /**
+ * @brief This structure is to connect TextField with Accessible functions.
+ */
struct AccessibleImpl : public DevelControl::AccessibleImpl,
public virtual Dali::Accessibility::Text,
public virtual Dali::Accessibility::EditableText
{
using DevelControl::AccessibleImpl::AccessibleImpl;
- std::string GetName() override;
- std::string GetText(size_t startOffset, size_t endOffset) override;
- size_t GetCharacterCount() override;
- size_t GetCaretOffset() override;
- bool SetCaretOffset(size_t offset) override;
- Accessibility::Range GetTextAtOffset(size_t offset, Accessibility::TextBoundary boundary) override;
- Accessibility::Range GetSelection(size_t selectionNum) override;
- bool RemoveSelection(size_t selectionNum) override;
- bool SetSelection(size_t selectionNum, size_t startOffset, size_t endOffset) override;
- bool CopyText(size_t startPosition, size_t endPosition) override;
- bool CutText(size_t startPosition, size_t endPosition) override;
+ /**
+ * @copydoc Dali::Accessibility::Accessible::GetName()
+ */
+ std::string GetName() override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::GetText()
+ */
+ std::string GetText(size_t startOffset, size_t endOffset) override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::GetCharacterCount()
+ */
+ size_t GetCharacterCount() override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::GetCursorOffset()
+ */
+ size_t GetCursorOffset() override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::SetCursorOffset()
+ */
+ bool SetCursorOffset(size_t offset) override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::GetTextAtOffset()
+ */
+ Accessibility::Range GetTextAtOffset(size_t offset, Accessibility::TextBoundary boundary) override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::GetRangeOfSelection()
+ */
+ Accessibility::Range GetRangeOfSelection(size_t selectionIndex) override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::RemoveSelection()
+ */
+ bool RemoveSelection(size_t selectionIndex) override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::SetRangeOfSelection()
+ */
+ bool SetRangeOfSelection(size_t selectionIndex, size_t startOffset, size_t endOffset) override;
+
+ /**
+ * @copydoc Dali::Accessibility::EditableText::CopyText()
+ */
+ bool CopyText(size_t startPosition, size_t endPosition) override;
+
+ /**
+ * @copydoc Dali::Accessibility::EditableText::CutText()
+ */
+ bool CutText(size_t startPosition, size_t endPosition) override;
+
+ /**
+ * @copydoc Dali::Accessibility::Accessible::GetStates()
+ */
Accessibility::States CalculateStates() override;
- bool InsertText(size_t startPosition, std::string text) override;
- bool SetTextContents(std::string newContents) override;
- bool DeleteText(size_t startPosition, size_t endPosition) override;
+
+ /**
+ * @copydoc Dali::Accessibility::EditableText::InsertText()
+ */
+ bool InsertText(size_t startPosition, std::string text) override;
+
+ /**
+ * @copydoc Dali::Accessibility::EditableText::SetTextContents()
+ */
+ bool SetTextContents(std::string newContents) override;
+
+ /**
+ * @copydoc Dali::Accessibility::EditableText::DeleteText()
+ */
+ bool DeleteText(size_t startPosition, size_t endPosition) override;
};
};
}
}
-Text::ControllerPtr TextLabel::getController()
+Text::ControllerPtr TextLabel::GetTextController()
{
return mController;
}
std::string TextLabel::AccessibleImpl::GetNameRaw()
{
- auto slf = Toolkit::TextLabel::DownCast(Self());
- return slf.GetProperty(Toolkit::TextLabel::Property::TEXT).Get<std::string>();
+ auto self = Toolkit::TextLabel::DownCast(Self());
+ return self.GetProperty(Toolkit::TextLabel::Property::TEXT).Get<std::string>();
}
Property::Index TextLabel::AccessibleImpl::GetNamePropertyIndex()
return Toolkit::TextLabel::Property::TEXT;
}
-std::string TextLabel::AccessibleImpl::GetText(size_t startOffset,
- size_t endOffset)
+std::string TextLabel::AccessibleImpl::GetText(size_t startOffset, size_t endOffset)
{
if(endOffset <= startOffset)
+ {
return {};
+ }
- auto slf = Toolkit::TextLabel::DownCast(Self());
- auto txt =
- slf.GetProperty(Toolkit::TextLabel::Property::TEXT).Get<std::string>();
+ auto self = Toolkit::TextLabel::DownCast(Self());
+ auto text = self.GetProperty(Toolkit::TextLabel::Property::TEXT).Get<std::string>();
- if(startOffset > txt.size() || endOffset > txt.size())
+ if(startOffset > text.size() || endOffset > text.size())
+ {
return {};
+ }
- return txt.substr(startOffset, endOffset - startOffset);
+ return text.substr(startOffset, endOffset - startOffset);
}
size_t TextLabel::AccessibleImpl::GetCharacterCount()
{
- auto slf = Toolkit::TextLabel::DownCast(Self());
- auto txt =
- slf.GetProperty(Toolkit::TextLabel::Property::TEXT).Get<std::string>();
+ auto self = Toolkit::TextLabel::DownCast(Self());
+ auto text = self.GetProperty(Toolkit::TextLabel::Property::TEXT).Get<std::string>();
- return txt.size();
+ return text.size();
}
-size_t TextLabel::AccessibleImpl::GetCaretOffset()
+size_t TextLabel::AccessibleImpl::GetCursorOffset()
{
return {};
}
-bool TextLabel::AccessibleImpl::SetCaretOffset(size_t offset)
+bool TextLabel::AccessibleImpl::SetCursorOffset(size_t offset)
{
return {};
}
-Dali::Accessibility::Range TextLabel::AccessibleImpl::GetTextAtOffset(
- size_t offset, Dali::Accessibility::TextBoundary boundary)
+Dali::Accessibility::Range TextLabel::AccessibleImpl::GetTextAtOffset(size_t offset, Dali::Accessibility::TextBoundary boundary)
{
- auto slf = Toolkit::TextLabel::DownCast(Self());
- auto txt = slf.GetProperty(Toolkit::TextLabel::Property::TEXT).Get<std::string>();
- auto txt_size = txt.size();
+ auto self = Toolkit::TextLabel::DownCast(Self());
+ auto text = self.GetProperty(Toolkit::TextLabel::Property::TEXT).Get<std::string>();
+ auto textSize = text.size();
auto range = Dali::Accessibility::Range{};
{
case Dali::Accessibility::TextBoundary::CHARACTER:
{
- if(offset < txt_size)
+ if(offset < textSize)
{
- range.content = txt[offset];
+ range.content = text[offset];
range.startOffset = offset;
range.endOffset = offset + 1;
}
+ break;
}
- break;
case Dali::Accessibility::TextBoundary::WORD:
case Dali::Accessibility::TextBoundary::LINE:
{
- auto txt_c_string = txt.c_str();
- auto breaks = std::vector<char>(txt_size, 0);
+ auto textString = text.c_str();
+ auto breaks = std::vector<char>(textSize, 0);
+
if(boundary == Dali::Accessibility::TextBoundary::WORD)
- Accessibility::Accessible::FindWordSeparationsUtf8((const utf8_t*)txt_c_string, txt_size, "", breaks.data());
+ {
+ Accessibility::Accessible::FindWordSeparationsUtf8(reinterpret_cast<const utf8_t*>(textString), textSize, "", breaks.data());
+ }
else
- Accessibility::Accessible::FindLineSeparationsUtf8((const utf8_t*)txt_c_string, txt_size, "", breaks.data());
- auto index = 0u;
+ {
+ Accessibility::Accessible::FindLineSeparationsUtf8(reinterpret_cast<const utf8_t*>(textString), textSize, "", breaks.data());
+ }
+
+ auto index = 0u;
auto counter = 0u;
- while(index < txt_size && counter <= offset)
+ while(index < textSize && counter <= offset)
{
auto start = index;
if(breaks[index])
{
while(breaks[index])
+ {
index++;
+ }
counter++;
}
else
{
if(boundary == Dali::Accessibility::TextBoundary::WORD)
+ {
index++;
+ }
if(boundary == Dali::Accessibility::TextBoundary::LINE)
+ {
counter++;
+ }
}
+
if((counter > 0) && ((counter - 1) == offset))
{
- range.content = txt.substr(start, index - start + 1);
+ range.content = text.substr(start, index - start + 1);
range.startOffset = start;
range.endOffset = index + 1;
}
+
if(boundary == Dali::Accessibility::TextBoundary::LINE)
+ {
index++;
+ }
}
+ break;
}
- break;
case Dali::Accessibility::TextBoundary::SENTENCE:
{
- /* not supported by efl */
+ /* not supported by default */
+ break;
}
- break;
case Dali::Accessibility::TextBoundary::PARAGRAPH:
{
/* Paragraph is not supported by libunibreak library */
+ break;
}
- break;
default:
break;
}
return range;
}
-Dali::Accessibility::Range
-TextLabel::AccessibleImpl::GetSelection(size_t selectionNum)
+Dali::Accessibility::Range TextLabel::AccessibleImpl::GetRangeOfSelection(size_t selectionIndex)
{
// Since DALi supports only one selection indexes higher than 0 are ignored
- if(selectionNum > 0)
+ if(selectionIndex > 0)
+ {
return {};
+ }
- auto slf = Toolkit::TextLabel::DownCast(Self());
- auto ctrl = Dali::Toolkit::GetImpl(slf).getController();
- std::string ret;
- ctrl->RetrieveSelection(ret);
- auto r = ctrl->GetSelectionIndexes();
+ auto self = Toolkit::TextLabel::DownCast(Self());
+ auto controller = Dali::Toolkit::GetImpl(self).GetTextController();
+ std::string value{};
+ controller->RetrieveSelection(value);
+ auto indices = controller->GetSelectionIndexes();
- return {static_cast<size_t>(r.first), static_cast<size_t>(r.second), ret};
+ return {static_cast<size_t>(indices.first), static_cast<size_t>(indices.second), value};
}
-bool TextLabel::AccessibleImpl::RemoveSelection(size_t selectionNum)
+bool TextLabel::AccessibleImpl::RemoveSelection(size_t selectionIndex)
{
// Since DALi supports only one selection indexes higher than 0 are ignored
- if(selectionNum > 0)
+ if(selectionIndex > 0)
+ {
return false;
+ }
- auto slf = Toolkit::TextLabel::DownCast(Self());
- Dali::Toolkit::GetImpl(slf).getController()->SetSelection(0, 0);
+ auto self = Toolkit::TextLabel::DownCast(Self());
+ Dali::Toolkit::GetImpl(self).GetTextController()->SetSelection(0, 0);
return true;
}
-bool TextLabel::AccessibleImpl::SetSelection(size_t selectionNum,
- size_t startOffset,
- size_t endOffset)
+bool TextLabel::AccessibleImpl::SetRangeOfSelection(size_t selectionIndex, size_t startOffset, size_t endOffset)
{
// Since DALi supports only one selection indexes higher than 0 are ignored
- if(selectionNum > 0)
+ if(selectionIndex > 0)
+ {
return false;
+ }
- auto slf = Toolkit::TextLabel::DownCast(Self());
- Dali::Toolkit::GetImpl(slf).getController()->SetSelection(startOffset,
- endOffset);
+ auto self = Toolkit::TextLabel::DownCast(Self());
+ Dali::Toolkit::GetImpl(self).GetTextController()->SetSelection(startOffset, endOffset);
return true;
}
*/
static bool DoConnectSignal(BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor);
- Text::ControllerPtr getController();
+ /**
+ * @brief Gets text controller
+ *
+ * @return The text controller
+ */
+ Text::ControllerPtr GetTextController();
private: // From Control
/**
bool mTextUpdateNeeded : 1;
protected:
+ /**
+ * @brief This structure is to connect TextLabel with Accessible functions.
+ */
struct AccessibleImpl : public DevelControl::AccessibleImpl,
public virtual Dali::Accessibility::Text
{
using DevelControl::AccessibleImpl::AccessibleImpl;
- std::string GetText(size_t startOffset, size_t endOffset) override;
- size_t GetCharacterCount() override;
- size_t GetCaretOffset() override;
- bool SetCaretOffset(size_t offset) override;
+ /**
+ * @copydoc Dali::Accessibility::Text::GetText()
+ */
+ std::string GetText(size_t startOffset, size_t endOffset) override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::GetCharacterCount()
+ */
+ size_t GetCharacterCount() override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::GetCursorOffset()
+ */
+ size_t GetCursorOffset() override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::SetCursorOffset()
+ */
+ bool SetCursorOffset(size_t offset) override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::GetTextAtOffset()
+ */
Accessibility::Range GetTextAtOffset(size_t offset, Accessibility::TextBoundary boundary) override;
- Accessibility::Range GetSelection(size_t selectionNum) override;
- bool RemoveSelection(size_t selectionNum) override;
- bool SetSelection(size_t selectionNum, size_t startOffset, size_t endOffset) override;
- std::string GetNameRaw() override;
- Property::Index GetNamePropertyIndex() override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::GetRangeOfSelection()
+ */
+ Accessibility::Range GetRangeOfSelection(size_t selectionIndex) override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::RemoveSelection()
+ */
+ bool RemoveSelection(size_t selectionIndex) override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::SetRangeOfSelection()
+ */
+ bool SetRangeOfSelection(size_t selectionIndex, size_t startOffset, size_t endOffset) override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::GetNameRaw()
+ */
+ std::string GetNameRaw() override;
+
+ /**
+ * @copydoc Dali::Accessibility::Text::GetNamePropertyIndex()
+ */
+ Property::Index GetNamePropertyIndex() override;
};
};
if(nullptr != impl.mEditableControlInterface)
{
- impl.mEditableControlInterface->CaretMoved(eventData->mPrimaryCursorPosition);
+ impl.mEditableControlInterface->CursorMoved(eventData->mPrimaryCursorPosition);
}
if(eventData->mUpdateCursorHookPosition)
/**
* @brief Called to signal that caret (cursor position) has been moved.
*/
- virtual void CaretMoved(unsigned int position) = 0;
+ virtual void CursorMoved(unsigned int position) = 0;
/**
* @brief Called to signal that text has been inserted or deleted.
- *
+ *
* @param[in] immediate If true, it immediately emits the signal, if false, only emits once the signal when OnRelayout() is called next time.
*/
virtual void TextChanged(bool immediate) = 0;