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-field-impl.h;h=b1f59915c930aff40967e5597dd74108386a7156;hp=87f406054425de880bbc8f08b8959f533521cbe0;hb=699c8c5f00b8ea4bba12b4e6e6f91b022cb261b4;hpb=d0b0cfa4a44953be9af9128885eb6ef5d83a214e diff --git a/dali-toolkit/internal/controls/text-controls/text-field-impl.h b/dali-toolkit/internal/controls/text-controls/text-field-impl.h index 87f4060..b1f5991 100644 --- a/dali-toolkit/internal/controls/text-controls/text-field-impl.h +++ b/dali-toolkit/internal/controls/text-controls/text-field-impl.h @@ -23,9 +23,12 @@ #include // INTERNAL INCLUDES +#include +#include #include #include #include +#include #include #include #include @@ -42,7 +45,7 @@ namespace Internal /** * @brief A control which renders a short text string. */ -class TextField : public Control, public Text::ControlInterface, public Text::EditableControlInterface, public Text::SelectableControlInterface +class TextField : public Control, public Text::ControlInterface, public Text::EditableControlInterface, public Text::SelectableControlInterface, public Text::AnchorControlInterface { public: /** @@ -87,6 +90,13 @@ public: 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(); @@ -101,7 +111,15 @@ public: */ Toolkit::TextField::InputStyleChangedSignalType& InputStyleChangedSignal(); - Text::ControllerPtr getController(); + /** + * @copydoc TextField::AnchorClickedSignal() + */ + DevelTextField::AnchorClickedSignalType& AnchorClickedSignal(); + + /** + * @copydoc TextField::InputFilteredSignal() + */ + DevelTextField::InputFilteredSignalType& InputFilteredSignal(); private: // From Control /** @@ -189,14 +207,14 @@ private: // From Control 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 TextChanged() override; + void TextChanged(bool immediate) override; /** * @copydoc Text::EditableControlInterface::MaxLengthReached() @@ -213,6 +231,16 @@ private: // From Control */ void AddDecoration(Actor& actor, bool needsClipping) override; + /** + * @copydoc Text::EditableControlInterface::InputFiltered() + */ + void InputFiltered(Toolkit::InputFilter::Property::Type type) override; + + /** + * @copydoc Text::EditableControlInterface::GetControlBackgroundColor() + */ + void GetControlBackgroundColor(Vector4& color) const override; + // From SelectableControlInterface public: /** @@ -236,6 +264,11 @@ public: void SelectNone() override; /** + * @copydoc Text::SelectableControlInterface::SelectText() + */ + void SelectText(const uint32_t start, const uint32_t end) override; + + /** * @copydoc Text::SelectableControlInterface::GetSelectedText() */ string GetSelectedText() const override; @@ -250,6 +283,13 @@ public: */ void SetEditable(bool editable) override; + // From AnchorControlInterface + + /** + * @copydoc Text::AnchorControlInterface::AnchorClicked() + */ + void AnchorClicked(const std::string& href) override; + private: // Implementation /** * @copydoc Dali::Toolkit::Text::Controller::(InputMethodContext& inputMethodContext, const InputMethodContext::EventData& inputMethodContextEvent) @@ -298,6 +338,18 @@ private: // Implementation void OnIdleSignal(); /** + * @brief Emits TextChanged signal. + */ + void EmitTextChangedSignal(); + + /** + * @brief Callback function for when the layout is changed. + * @param[in] actor The actor whose layoutDirection is changed. + * @param[in] type The layoutDirection. + */ + void OnLayoutDirectionChanged(Actor actor, LayoutDirection::Type type); + + /** * Construct a new TextField. */ TextField(); @@ -312,6 +364,14 @@ private: // Implementation TextField& operator=(const TextField& rhs); /** + * @brief Resize actor to the given size. + * + * @param[in] actor The actor to be resized. + * @param[in] size Size to change. + */ + void ResizeActor(Actor& actor, const Vector2& size); + + /** * @brief Render view, create and attach actor(s) to this Text Field. */ void RenderText(Text::Controller::UpdateTextType updateTextType); @@ -319,17 +379,13 @@ private: // Implementation // 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; - Toolkit::TextField::MaxLengthReachedSignalType mMaxLengthReachedSignal; - Toolkit::TextField::InputStyleChangedSignalType mInputStyleChangedSignal; + Toolkit::TextField::TextChangedSignalType mTextChangedSignal; + Toolkit::TextField::MaxLengthReachedSignalType mMaxLengthReachedSignal; + Toolkit::TextField::InputStyleChangedSignalType mInputStyleChangedSignal; + Toolkit::DevelTextField::AnchorClickedSignalType mAnchorClickedSignal; + Toolkit::DevelTextField::InputFilteredSignalType mInputFilteredSignal; InputMethodContext mInputMethodContext; Text::ControllerPtr mController; @@ -348,26 +404,92 @@ private: // Data int mRenderingBackend; int mExceedPolicy; bool mHasBeenStaged : 1; + bool mTextChanged : 1; ///< If true, emits TextChangedSignal in next OnRelayout(). protected: - struct AccessibleImpl : public Control::Impl::AccessibleImpl, + /** + * @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 Control::Impl::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; + using DevelControl::AccessibleImpl::AccessibleImpl; + + /** + * @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; + + /** + * @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; }; };