#include <dali-toolkit/dali-toolkit.h>
#include <dali/devel-api/adaptor-framework/accessibility.h>
+#include <dali-toolkit/internal/controls/text-controls/text-field-impl.h>
#include <dali-toolkit/internal/controls/text-controls/text-editor-impl.h>
#include <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/dbus-wrapper.h>
DALI_TEST_EQUALS( x->GetText( 0, 0 ), "", TEST_LOCATION );
field.SetProperty( Toolkit::TextField::Property::TEXT, "exemplary_text" );
DALI_TEST_EQUALS( x->GetText( 0, 9 ), "exemplary", TEST_LOCATION );
+
+ Dali::Property::Map hiddenInputSettings;
+ hiddenInputSettings[ Toolkit::HiddenInput::Property::MODE ] = Toolkit::HiddenInput::Mode::HIDE_ALL;
+
+ field.SetProperty( Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS, hiddenInputSettings );
+
+ DALI_TEST_EQUALS( x->GetName(), "", TEST_LOCATION );
+ DALI_TEST_EQUALS( x->GetText( 0, 9 ), "*********", TEST_LOCATION );
+
+ hiddenInputSettings[ Toolkit::HiddenInput::Property::SUBSTITUTE_CHARACTER ] = 0x23;
+ field.SetProperty( Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS, hiddenInputSettings );
+
+ DALI_TEST_EQUALS( x->GetName(), "", TEST_LOCATION );
+ DALI_TEST_EQUALS( x->GetText( 0, 9 ), "#########", TEST_LOCATION );
}
END_TEST;
DALI_TEST_EQUALS( range.content, " test sentence", TEST_LOCATION );
DALI_TEST_EQUALS( range.startOffset, 25, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 39, TEST_LOCATION );
+
+ Dali::Property::Map hiddenInputSettings;
+ hiddenInputSettings[ Toolkit::HiddenInput::Property::MODE ] = Toolkit::HiddenInput::Mode::HIDE_ALL;
+ hiddenInputSettings[ Toolkit::HiddenInput::Property::SUBSTITUTE_CHARACTER ] = 0x23;
+ field.SetProperty( Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS, hiddenInputSettings );
+ range = x->GetTextAtOffset( 8, Dali::Accessibility::TextBoundary::LINE );
+ DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
+ DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
+ DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
+
}
END_TEST;
DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
DALI_TEST_EQUALS( range.content, "plary", TEST_LOCATION );
+
+ Dali::Property::Map hiddenInputSettings;
+ hiddenInputSettings[ Toolkit::HiddenInput::Property::MODE ] = Toolkit::HiddenInput::Mode::HIDE_ALL;
+ field.SetProperty( Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS, hiddenInputSettings );
+
+ range = x->GetRangeOfSelection( 0 );
+ DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
+ DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
+ DALI_TEST_EQUALS( range.content, "*****", TEST_LOCATION );
}
END_TEST;
return fieldInputStyleMask;
}
+bool IsHiddenInput(Toolkit::TextField textField)
+{
+ Property::Map hiddenInputSettings = textField.GetProperty<Property::Map>(Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS);
+ auto mode = hiddenInputSettings.Find(Toolkit::HiddenInput::Property::MODE);
+ if (mode && (mode->Get<int>() != Toolkit::HiddenInput::Mode::HIDE_NONE))
+ {
+ return true;
+ }
+ return false;
+}
+
+char GetSubstituteCharacter(Toolkit::TextField textField)
+{
+ Property::Map hiddenInputSettings = textField.GetProperty<Property::Map>(Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS);
+ auto substChar = hiddenInputSettings.Find(Toolkit::HiddenInput::Property::SUBSTITUTE_CHARACTER);
+ if (substChar)
+ {
+ return static_cast<char>(substChar->Get<int>());
+ }
+ return STAR;
+}
+
} // namespace
Toolkit::TextField TextField::New()
std::string TextField::AccessibleImpl::GetName()
{
auto self = Toolkit::TextField::DownCast(Self());
+ if (IsHiddenInput(self))
+ {
+ return {};
+ }
+
return self.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
}
{
return {};
}
-
+ if(IsHiddenInput(self))
+ {
+ return std::string(endOffset - startOffset, GetSubstituteCharacter(self));
+ }
return text.substr(startOffset, endOffset - startOffset);
}
size_t offset, Dali::Accessibility::TextBoundary boundary)
{
auto self = Toolkit::TextField::DownCast(Self());
+ auto range = Dali::Accessibility::Range{};
+
+ if(IsHiddenInput(self))
+ {
+ // Returning empty object, as there is no possibility to parse the textfield
+ // when its content is hidden.
+ return range;
+ }
+
auto text = self.GetProperty(Toolkit::TextField::Property::TEXT).Get<std::string>();
auto textSize = text.size();
- auto range = Dali::Accessibility::Range{};
-
switch(boundary)
{
case Dali::Accessibility::TextBoundary::CHARACTER:
return {};
}
- auto self = Toolkit::TextField::DownCast(Self());
- auto controller = Dali::Toolkit::GetImpl(self).GetTextController();
- std::string value{};
- controller->RetrieveSelection(value);
+ auto self = Toolkit::TextField::DownCast(Self());
+ auto controller = Dali::Toolkit::GetImpl(self).GetTextController();
auto indices = controller->GetSelectionIndexes();
- return {static_cast<size_t>(indices.first), static_cast<size_t>(indices.second), value};
+ auto startOffset = static_cast<size_t>(indices.first);
+ auto endOffset = static_cast<size_t>(indices.second);
+
+ if (IsHiddenInput(self))
+ {
+ return {startOffset, endOffset, std::string(endOffset - startOffset, GetSubstituteCharacter(self))};
+ }
+
+ std::string value{};
+ controller->RetrieveSelection(value);
+ return {startOffset, endOffset, value};
}
bool TextField::AccessibleImpl::RemoveSelection(size_t selectionIndex)