From 1ba57e7c93c9162de5de46b85eb1d716a9f78296 Mon Sep 17 00:00:00 2001 From: Seoyeon Kim Date: Fri, 16 Jun 2017 14:06:01 +0900 Subject: [PATCH] Add ENABLE_SELECTION property to TextField and TextEditor - ENABLE_SELECTION property is to enable or disable the text selection and clipboard. Change-Id: Iff778b4dc414415b83d04aff8bccdc2d8f3a93a3 Signed-off-by: Seoyeon Kim --- .../src/dali-toolkit/utc-Dali-TextEditor.cpp | 5 +++++ .../src/dali-toolkit/utc-Dali-TextField.cpp | 5 +++++ .../controls/text-controls/text-editor-devel.h | 8 +++++++- .../controls/text-controls/text-field-devel.h | 6 ++++++ .../controls/text-controls/text-editor-impl.cpp | 19 +++++++++++++++++++ .../controls/text-controls/text-field-impl.cpp | 19 +++++++++++++++++++ dali-toolkit/internal/text/text-controller.cpp | 10 ++++++++++ dali-toolkit/internal/text/text-controller.h | 12 ++++++++++++ .../styles/1920x1080/dali-toolkit-default-theme.json | 6 ++++-- .../styles/480x800/dali-toolkit-default-theme.json | 6 ++++-- .../styles/720x1280/dali-toolkit-default-theme.json | 6 ++++-- 11 files changed, 95 insertions(+), 7 deletions(-) diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp index bb9ae72..66805cc 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp @@ -96,6 +96,7 @@ const char* const PROPERTY_NAME_PIXEL_SIZE = "pixelSiz const char* const PROPERTY_NAME_LINE_COUNT = "lineCount"; const char* const PROPERTY_NAME_PLACEHOLDER_TEXT = "placeholderText"; const char* const PROPERTY_NAME_PLACEHOLDER_TEXT_COLOR = "placeholderTextColor"; +const char* const PROPERTY_NAME_ENABLE_SELECTION = "enableSelection"; const int DEFAULT_RENDERING_BACKEND = Dali::Toolkit::Text::DEFAULT_RENDERING_BACKEND; @@ -465,6 +466,7 @@ int UtcDaliTextEditorGetPropertyP(void) DALI_TEST_CHECK( editor.GetPropertyIndex( PROPERTY_NAME_LINE_COUNT) == DevelTextEditor::Property::LINE_COUNT ); DALI_TEST_CHECK( editor.GetPropertyIndex( PROPERTY_NAME_PLACEHOLDER_TEXT ) == DevelTextEditor::Property::PLACEHOLDER_TEXT ); DALI_TEST_CHECK( editor.GetPropertyIndex( PROPERTY_NAME_PLACEHOLDER_TEXT_COLOR ) == DevelTextEditor::Property::PLACEHOLDER_TEXT_COLOR ); + DALI_TEST_CHECK( editor.GetPropertyIndex( PROPERTY_NAME_ENABLE_SELECTION ) == DevelTextEditor::Property::ENABLE_SELECTION ); END_TEST; } @@ -771,6 +773,9 @@ int UtcDaliTextEditorSetPropertyP(void) editor.SetProperty( DevelTextEditor::Property::PLACEHOLDER_TEXT_COLOR, Color::RED ); DALI_TEST_EQUALS( editor.GetProperty( DevelTextEditor::Property::PLACEHOLDER_TEXT_COLOR ), Color::RED, TEST_LOCATION ); + editor.SetProperty( DevelTextEditor::Property::ENABLE_SELECTION, false ); + DALI_TEST_EQUALS( editor.GetProperty( DevelTextEditor::Property::ENABLE_SELECTION ), false, TEST_LOCATION ); + END_TEST; } diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp index 2c1aa44..38bd841 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp @@ -98,6 +98,7 @@ const char* const PROPERTY_NAME_INPUT_OUTLINE = "inputOut const char* const PROPERTY_NAME_HIDDEN_INPUT_SETTINGS = "hiddenInputSettings"; const char* const PROPERTY_NAME_PIXEL_SIZE = "pixelSize"; +const char* const PROPERTY_NAME_ENABLE_SELECTION = "enableSelection"; const int DEFAULT_RENDERING_BACKEND = Dali::Toolkit::Text::DEFAULT_RENDERING_BACKEND; @@ -507,6 +508,7 @@ int UtcDaliTextFieldGetPropertyP(void) DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_INPUT_OUTLINE ) == TextField::Property::INPUT_OUTLINE ); DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_HIDDEN_INPUT_SETTINGS ) == DevelTextField::Property::HIDDEN_INPUT_SETTINGS ); DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_PIXEL_SIZE ) == DevelTextField::Property::PIXEL_SIZE ); + DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_ENABLE_SELECTION ) == DevelTextField::Property::ENABLE_SELECTION ); END_TEST; } @@ -845,6 +847,9 @@ int UtcDaliTextFieldSetPropertyP(void) field.SetProperty( DevelTextField::Property::PIXEL_SIZE, 20.f ); DALI_TEST_EQUALS( field.GetProperty( DevelTextField::Property::PIXEL_SIZE ), 20.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + field.SetProperty( DevelTextField::Property::ENABLE_SELECTION, false ); + DALI_TEST_EQUALS( field.GetProperty( DevelTextField::Property::ENABLE_SELECTION ), false, TEST_LOCATION ); + END_TEST; } diff --git a/dali-toolkit/devel-api/controls/text-controls/text-editor-devel.h b/dali-toolkit/devel-api/controls/text-controls/text-editor-devel.h index 3c4f287..6acc30b 100644 --- a/dali-toolkit/devel-api/controls/text-controls/text-editor-devel.h +++ b/dali-toolkit/devel-api/controls/text-controls/text-editor-devel.h @@ -131,7 +131,13 @@ namespace Property * @brief The placeholder-text color. * @details name "placeholderTextColor", type vector4 */ - PLACEHOLDER_TEXT_COLOR + PLACEHOLDER_TEXT_COLOR, + + /** + * @brief Enables Text selection, such as the cursor, handle, clipboard, and highlight color. + * @details name "enableSelection", type bool + */ + ENABLE_SELECTION }; } // namespace Property diff --git a/dali-toolkit/devel-api/controls/text-controls/text-field-devel.h b/dali-toolkit/devel-api/controls/text-controls/text-field-devel.h index 34dee16..f98ea63 100644 --- a/dali-toolkit/devel-api/controls/text-controls/text-field-devel.h +++ b/dali-toolkit/devel-api/controls/text-controls/text-field-devel.h @@ -98,6 +98,12 @@ namespace Property * @details name "pixelSize", type float */ PIXEL_SIZE = INPUT_OUTLINE + 2, + + /** + * @brief Enables Text selection, such as the cursor, handle, clipboard, and highlight color. + * @details name "enableSelection", type bool + */ + ENABLE_SELECTION = INPUT_OUTLINE + 3 }; } // namespace Property diff --git a/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp index fb97a76..0f4f0e2 100644 --- a/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp @@ -139,6 +139,7 @@ DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextEditor, "pixelSize", DALI_DEVEL_PROPERTY_REGISTRATION_READ_ONLY( Toolkit, TextEditor, "lineCount", INTEGER, LINE_COUNT ) DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextEditor, "placeholderText", STRING, PLACEHOLDER_TEXT ) DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextEditor, "placeholderTextColor", VECTOR4, PLACEHOLDER_TEXT_COLOR ) +DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextEditor, "enableSelection", BOOLEAN, ENABLE_SELECTION ) DALI_SIGNAL_REGISTRATION( Toolkit, TextEditor, "textChanged", SIGNAL_TEXT_CHANGED ) DALI_SIGNAL_REGISTRATION( Toolkit, TextEditor, "inputStyleChanged", SIGNAL_INPUT_STYLE_CHANGED ) @@ -691,6 +692,16 @@ void TextEditor::SetProperty( BaseObject* object, Property::Index index, const P } break; } + case Toolkit::DevelTextEditor::Property::ENABLE_SELECTION: + { + if( impl.mController ) + { + const bool enableSelection = value.Get< bool >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextEditor %p ENABLE_SELECTION %d\n", impl.mController.Get(), enableSelection ); + impl.mController->SetSelectionEnabled( enableSelection ); + } + break; + } } // switch } // texteditor } @@ -1052,6 +1063,14 @@ Property::Value TextEditor::GetProperty( BaseObject* object, Property::Index ind } break; } + case Toolkit::DevelTextEditor::Property::ENABLE_SELECTION: + { + if( impl.mController ) + { + value = impl.mController->IsSelectionEnabled(); + } + break; + } } //switch } diff --git a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp index 6083974..134d144 100644 --- a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp @@ -140,6 +140,7 @@ DALI_PROPERTY_REGISTRATION( Toolkit, TextField, "outline", DALI_PROPERTY_REGISTRATION( Toolkit, TextField, "inputOutline", MAP, INPUT_OUTLINE ) DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextField, "hiddenInputSettings", MAP, HIDDEN_INPUT_SETTINGS ) DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextField, "pixelSize", FLOAT, PIXEL_SIZE ) +DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextField, "enableSelection", BOOLEAN, ENABLE_SELECTION ) DALI_SIGNAL_REGISTRATION( Toolkit, TextField, "textChanged", SIGNAL_TEXT_CHANGED ) DALI_SIGNAL_REGISTRATION( Toolkit, TextField, "maxLengthReached", SIGNAL_MAX_LENGTH_REACHED ) @@ -751,6 +752,16 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr } break; } + case Toolkit::DevelTextField::Property::ENABLE_SELECTION: + { + if( impl.mController ) + { + const bool enableSelection = value.Get< bool >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p ENABLE_SELECTION %d\n", impl.mController.Get(), enableSelection ); + impl.mController->SetSelectionEnabled( enableSelection ); + } + break; + } } // switch } // textfield } @@ -1129,6 +1140,14 @@ Property::Value TextField::GetProperty( BaseObject* object, Property::Index inde } break; } + case Toolkit::DevelTextField::Property::ENABLE_SELECTION: + { + if( impl.mController ) + { + value = impl.mController->IsSelectionEnabled(); + } + break; + } } //switch } diff --git a/dali-toolkit/internal/text/text-controller.cpp b/dali-toolkit/internal/text/text-controller.cpp index f9445b5..c472fe6 100644 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@ -392,6 +392,16 @@ bool Controller::IsTextElideEnabled() const return mImpl->mModel->mElideEnabled; } +void Controller::SetSelectionEnabled( bool enabled ) +{ + mImpl->mEventData->mSelectionEnabled = enabled; +} + +bool Controller::IsSelectionEnabled() const +{ + return mImpl->mEventData->mSelectionEnabled; +} + // public : Update void Controller::SetText( const std::string& text ) diff --git a/dali-toolkit/internal/text/text-controller.h b/dali-toolkit/internal/text/text-controller.h index c6b01a4..efd6d1a 100644 --- a/dali-toolkit/internal/text/text-controller.h +++ b/dali-toolkit/internal/text/text-controller.h @@ -355,6 +355,18 @@ public: // Configure the text controller. bool IsTextElideEnabled() const; /** + * @brief Enable or disable the text selection. + * @param[in] enabled Whether to enable the text selection. + */ + void SetSelectionEnabled( bool enabled ); + + /** + * @brief Whether the text selection is enabled or not. + * @return True if the text selection is enabled + */ + bool IsSelectionEnabled() const; + + /** * @brief Sets input type to password * * @note The string is displayed hidden character diff --git a/dali-toolkit/styles/1920x1080/dali-toolkit-default-theme.json b/dali-toolkit/styles/1920x1080/dali-toolkit-default-theme.json index 8179db5..7e86b0d 100644 --- a/dali-toolkit/styles/1920x1080/dali-toolkit-default-theme.json +++ b/dali-toolkit/styles/1920x1080/dali-toolkit-default-theme.json @@ -93,7 +93,8 @@ "selectionHighlightColor":[0.75,0.96,1.0,1.0], "grabHandleImage" : "{DALI_STYLE_IMAGE_DIR}cursor_handler_drop_center.png", "selectionHandleImageLeft" : {"filename":"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_left.png" }, - "selectionHandleImageRight": {"filename":"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_right.png" } + "selectionHandleImageRight": {"filename":"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_right.png" }, + "enableSelection":false }, "TextFieldFontSize0": @@ -208,7 +209,8 @@ "selectionHandleImageRight": {"filename":"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_right.png" }, "enableScrollBar":true, "scrollBarShowDuration":0.8, - "scrollBarFadeDuration":0.5 + "scrollBarFadeDuration":0.5, + "enableSelection":false }, "ProgressBar": { diff --git a/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json b/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json index 95d2d01..6e1db0b 100644 --- a/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json +++ b/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json @@ -92,7 +92,8 @@ "selectionHighlightColor":[0.75,0.96,1.0,1.0], "grabHandleImage" : "{DALI_STYLE_IMAGE_DIR}cursor_handler_drop_center.png", "selectionHandleImageLeft" : {"filename":"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_left.png" }, - "selectionHandleImageRight": {"filename":"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_right.png" } + "selectionHandleImageRight": {"filename":"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_right.png" }, + "enableSelection":true }, "TextFieldFontSize0": @@ -215,7 +216,8 @@ "selectionHandleImageRight": {"filename":"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_right.png" }, "enableScrollBar":true, "scrollBarShowDuration":0.8, - "scrollBarFadeDuration":0.5 + "scrollBarFadeDuration":0.5, + "enableSelection":true }, "Popup": { diff --git a/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json b/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json index fdd8182..e84bc65 100644 --- a/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json +++ b/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json @@ -66,7 +66,8 @@ "selectionHighlightColor":[0.75,0.96,1.0,1.0], "grabHandleImage" : "{DALI_STYLE_IMAGE_DIR}cursor_handler_drop_center.png", "selectionHandleImageLeft" : {"filename":"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_left.png" }, - "selectionHandleImageRight": {"filename":"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_right.png" } + "selectionHandleImageRight": {"filename":"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_right.png" }, + "enableSelection":true }, "TextFieldFontSize0": @@ -181,7 +182,8 @@ "selectionHandleImageRight": {"filename":"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_right.png" }, "enableScrollBar":true, "scrollBarShowDuration":0.8, - "scrollBarFadeDuration":0.5 + "scrollBarFadeDuration":0.5, + "enableSelection":true }, "Popup": { -- 2.7.4