X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Ftext-controls%2Ftext-editor-impl.h;h=aaa58f7e604e6c855d2a842d6ea3514ffce3ce24;hp=6ea1cc86f5244e2f510c0e056b29daee9529e480;hb=020b07151378db83ab8e12eb3e2d51db0ed69996;hpb=74e9803017d7ca8f0b57046c5da107b9a7a49205 diff --git a/dali-toolkit/internal/controls/text-controls/text-editor-impl.h b/dali-toolkit/internal/controls/text-controls/text-editor-impl.h index 6ea1cc8..aaa58f7 100644 --- a/dali-toolkit/internal/controls/text-controls/text-editor-impl.h +++ b/dali-toolkit/internal/controls/text-controls/text-editor-impl.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_INTERNAL_TEXT_EDITOR_H /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,11 +32,12 @@ #include #include #include +#include #include #include #include #include -#include +#include #include #include #include @@ -116,6 +117,11 @@ public: DevelTextEditor::SelectionClearedSignalType& SelectionClearedSignal(); /** + * @copydoc Dali::Toollkit::TextEditor::SelectionStartedSignal() + */ + DevelTextEditor::SelectionStartedSignalType& SelectionStartedSignal(); + + /** * Connects a callback function with the object's signals. * @param[in] object The object providing the signal. * @param[in] tracker Used to disconnect the signal. @@ -155,6 +161,11 @@ private: // From Control void OnInitialize() override; /** + * @copydoc Toolkit::Internal::Control::CreateAccessibleObject() + */ + DevelControl::ControlAccessible* CreateAccessibleObject() override; + + /** * @copydoc Control::OnStyleChange() */ void OnStyleChange(Toolkit::StyleManager styleManager, StyleChange::Type change) override; @@ -210,6 +221,11 @@ private: // From Control void OnSceneConnection(int depth) override; /** + * @copydoc Control::OnPropertySet() + */ + void OnPropertySet(Property::Index index, const Property::Value& propertyValue) override; + + /** * @copydoc Dali::CustomActorImpl::OnKeyEvent(const KeyEvent&) */ bool OnKeyEvent(const KeyEvent& event) override; @@ -261,7 +277,7 @@ private: // From Control /** * @copydoc Text::EditableControlInterface::AddDecoration() */ - void AddDecoration(Actor& actor, bool needsClipping) override; + void AddDecoration(Actor& actor, Toolkit::Text::DecorationType type, bool needsClipping) override; /** * @copydoc Text::EditableControlInterface::InputFiltered() @@ -448,6 +464,11 @@ private: // Implementation void EmitSelectionClearedSignal(); /** + * @brief Emits SelectionStarted signal. + */ + void EmitSelectionStartedSignal(); + + /** * @brief set RenderActor's position with new scrollPosition * * Apply updated scroll position or start scroll animation if VerticalScrollAnimation is enabled @@ -469,6 +490,13 @@ private: // Implementation void OnLayoutDirectionChanged(Actor actor, LayoutDirection::Type type); /** + * @brief Add a layer for active or cursor. + * @param[in] layer The actor in which to store the layer. + * @param[in] actor The new layer to add. + */ + void AddLayer(Actor& layer, Actor& actor); + + /** * Construct a new TextEditor. */ TextEditor(); @@ -512,6 +540,7 @@ private: // Data Toolkit::DevelTextEditor::CursorPositionChangedSignalType mCursorPositionChangedSignal; Toolkit::DevelTextEditor::SelectionChangedSignalType mSelectionChangedSignal; Toolkit::DevelTextEditor::SelectionClearedSignalType mSelectionClearedSignal; + Toolkit::DevelTextEditor::SelectionStartedSignalType mSelectionStartedSignal; InputMethodContext mInputMethodContext; Text::ControllerPtr mController; @@ -528,6 +557,7 @@ private: // Data Actor mRenderableActor; Actor mActiveLayer; + Actor mCursorLayer; Actor mBackgroundActor; CallbackBase* mIdleCallback; @@ -551,106 +581,38 @@ private: // Data uint32_t mOldSelectionStart; uint32_t mOldSelectionEnd; + bool mSelectionStarted : 1; ///< If true, emits SelectionStartedSignal at the end of OnRelayout(). + struct PropertyHandler; /** * @brief This structure is to connect TextEditor with Accessible functions. */ - struct AccessibleImpl : public DevelControl::ControlAccessible, - public virtual Dali::Accessibility::EditableText, - public virtual Dali::Accessibility::Hypertext + class TextEditorAccessible : public EditableTextControlAccessible { - using DevelControl::ControlAccessible::ControlAccessible; + public: + using EditableTextControlAccessible::EditableTextControlAccessible; /** * @copydoc Dali::Accessibility::Accessible::GetName() */ std::string GetName() const override; + protected: /** - * @copydoc Dali::Accessibility::Text::GetText() - */ - std::string GetText(size_t startOffset, size_t endOffset) const override; - - /** - * @copydoc Dali::Accessibility::Text::GetCharacterCount() - */ - size_t GetCharacterCount() const override; - - /** - * @copydoc Dali::Accessibility::Text::GetCursorOffset() - */ - size_t GetCursorOffset() const 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) const override; - - /** - * @copydoc Dali::Accessibility::Text::GetRangeOfSelection() - */ - Accessibility::Range GetRangeOfSelection(size_t selectionIndex) const 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; - - /** - * @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; - - /** - * @copydoc Dali::Accessibility::Hypertext::GetLink() + * @copydoc Dali::Toolkit::Internal::TextControlAccessible::GetTextAnchors() */ - Accessibility::Hyperlink* GetLink(int32_t linkIndex) const override; + const std::vector& GetTextAnchors() const override; /** - * @copydoc Dali::Accessibility::Hypertext::GetLinkIndex() + * @copydoc Dali::Toolkit::Internal::TextControlAccessible::GetTextController() */ - int32_t GetLinkIndex(int32_t characterOffset) const override; + Toolkit::Text::ControllerPtr GetTextController() const override; /** - * @copydoc Dali::Accessibility::Hypertext::GetLinkCount() + * @copydoc Dali::Toolkit::Internal::EditableTextControlAccessible::RequestTextRelayout() */ - int32_t GetLinkCount() const override; + void RequestTextRelayout() override; }; };