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.cpp;h=792cd7dbcb8d4c9539e2b3a8ed023bc5063bfbf9;hp=19c26c590a1b6424b73140c5b3458e9b77b4216d;hb=d239b109fc055baea71d712bf469fc9434c3e022;hpb=77cfccf524aa92099d786a8ee13528b597593d48 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 19c26c5..792cd7d 100644 --- a/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp @@ -147,10 +147,12 @@ DALI_DEVEL_PROPERTY_REGISTRATION_READ_ONLY(Toolkit, TextEditor, "selectedText", DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit, TextEditor, "fontSizeScale", FLOAT, FONT_SIZE_SCALE ) DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit, TextEditor, "primaryCursorPosition", INTEGER, PRIMARY_CURSOR_POSITION ) DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit, TextEditor, "grabHandleColor", VECTOR4, GRAB_HANDLE_COLOR ) +DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit, TextEditor, "enableGrabHandlePopup", BOOLEAN, ENABLE_GRAB_HANDLE_POPUP ) DALI_SIGNAL_REGISTRATION(Toolkit, TextEditor, "textChanged", SIGNAL_TEXT_CHANGED ) DALI_SIGNAL_REGISTRATION(Toolkit, TextEditor, "inputStyleChanged", SIGNAL_INPUT_STYLE_CHANGED) DALI_SIGNAL_REGISTRATION(Toolkit, TextEditor, "maxLengthReached", SIGNAL_MAX_LENGTH_REACHED ) +DALI_SIGNAL_REGISTRATION(Toolkit, TextEditor, "anchorClicked", SIGNAL_ANCHOR_CLICKED ) DALI_TYPE_REGISTRATION_END() // clang-format on @@ -774,6 +776,14 @@ void TextEditor::SetProperty(BaseObject* object, Property::Index index, const Pr impl.RequestTextRelayout(); break; } + case Toolkit::DevelTextEditor::Property::ENABLE_GRAB_HANDLE_POPUP: + { + const bool grabHandlePopupEnabled = value.Get(); + DALI_LOG_INFO(gLogFilter, Debug::General, "TextEditor %p ENABLE_GRAB_HANDLE_POPUP %d\n", impl.mController.Get(), grabHandlePopupEnabled); + + impl.mController->SetGrabHandlePopupEnabled(grabHandlePopupEnabled); + break; + } } // switch } // texteditor } @@ -1135,6 +1145,11 @@ Property::Value TextEditor::GetProperty(BaseObject* object, Property::Index inde value = impl.mDecorator->GetHandleColor(); break; } + case Toolkit::DevelTextEditor::Property::ENABLE_GRAB_HANDLE_POPUP: + { + value = impl.mController->IsGrabHandlePopupEnabled(); + break; + } } //switch } @@ -1204,6 +1219,11 @@ DevelTextEditor::MaxLengthReachedSignalType& TextEditor::MaxLengthReachedSignal( return mMaxLengthReachedSignal; } +DevelTextEditor::AnchorClickedSignalType& TextEditor::AnchorClickedSignal() +{ + return mAnchorClickedSignal; +} + Text::ControllerPtr TextEditor::getController() { return mController; @@ -1232,6 +1252,14 @@ bool TextEditor::DoConnectSignal(BaseObject* object, ConnectionTrackerInterface* editorImpl.MaxLengthReachedSignal().Connect(tracker, functor); } } + else if(0 == strcmp(signalName.c_str(), SIGNAL_ANCHOR_CLICKED)) + { + if(editor) + { + Internal::TextEditor& editorImpl(GetImpl(editor)); + editorImpl.AnchorClickedSignal().Connect(tracker, functor); + } + } else { // signalName does not match any signal @@ -1260,7 +1288,7 @@ void TextEditor::OnInitialize() { Actor self = Self(); - mController = Text::Controller::New(this, this, this); + mController = Text::Controller::New(this, this, this, this); mDecorator = Text::Decorator::New(*mController, *mController); @@ -1465,9 +1493,7 @@ void TextEditor::OnRelayout(const Vector2& size, RelayoutContainer& container) // If there is text changed, callback is called. if(mTextChanged) { - Dali::Toolkit::TextEditor handle(GetOwner()); - mTextChangedSignal.Emit(handle); - mTextChanged = false; + EmitTextChangedSignal(); } } @@ -1612,6 +1638,7 @@ void TextEditor::OnTap(const TapGesture& gesture) padding = Self().GetProperty(Toolkit::Control::Property::PADDING); const Vector2& localPoint = gesture.GetLocalPoint(); mController->TapEvent(gesture.GetNumberOfTaps(), localPoint.x - padding.start, localPoint.y - padding.top); + mController->AnchorEvent(localPoint.x - padding.start, localPoint.y - padding.top); SetKeyInputFocus(); } @@ -1682,9 +1709,23 @@ void TextEditor::CaretMoved(unsigned int position) } } -void TextEditor::TextChanged() +void TextEditor::TextChanged(bool immediate) +{ + if(immediate) // Emits TextChangedSignal immediately + { + EmitTextChangedSignal(); + } + else + { + mTextChanged = true; + } +} + +void TextEditor::EmitTextChangedSignal() { - mTextChanged = true; + Dali::Toolkit::TextEditor handle(GetOwner()); + mTextChangedSignal.Emit(handle); + mTextChanged = false; } void TextEditor::MaxLengthReached() @@ -1747,6 +1788,12 @@ void TextEditor::InputStyleChanged(Text::InputStyle::Mask inputStyleMask) mInputStyleChangedSignal.Emit(handle, editorInputStyleMask); } +void TextEditor::AnchorClicked(const std::string& href) +{ + Dali::Toolkit::TextEditor handle(GetOwner()); + mAnchorClickedSignal.Emit(handle, href.c_str(), href.length()); +} + void TextEditor::AddDecoration(Actor& actor, bool needsClipping) { if(actor) @@ -2024,7 +2071,7 @@ TextEditor::~TextEditor() std::string TextEditor::AccessibleImpl::GetName() { - auto slf = Toolkit::TextEditor::DownCast(self); + auto slf = Toolkit::TextEditor::DownCast(Self()); return slf.GetProperty(Toolkit::TextEditor::Property::TEXT) .Get(); } @@ -2035,7 +2082,7 @@ std::string TextEditor::AccessibleImpl::GetText(size_t startOffset, if(endOffset <= startOffset) return {}; - auto slf = Toolkit::TextEditor::DownCast(self); + auto slf = Toolkit::TextEditor::DownCast(Self()); auto txt = slf.GetProperty(Toolkit::TextEditor::Property::TEXT).Get(); @@ -2047,7 +2094,7 @@ std::string TextEditor::AccessibleImpl::GetText(size_t startOffset, size_t TextEditor::AccessibleImpl::GetCharacterCount() { - auto slf = Toolkit::TextEditor::DownCast(self); + auto slf = Toolkit::TextEditor::DownCast(Self()); auto txt = slf.GetProperty(Toolkit::TextEditor::Property::TEXT).Get(); @@ -2056,13 +2103,13 @@ size_t TextEditor::AccessibleImpl::GetCharacterCount() size_t TextEditor::AccessibleImpl::GetCaretOffset() { - auto slf = Toolkit::TextEditor::DownCast(self); + auto slf = Toolkit::TextEditor::DownCast(Self()); return Dali::Toolkit::GetImpl(slf).getController()->GetCursorPosition(); } bool TextEditor::AccessibleImpl::SetCaretOffset(size_t offset) { - auto slf = Toolkit::TextEditor::DownCast(self); + auto slf = Toolkit::TextEditor::DownCast(Self()); auto txt = slf.GetProperty(Toolkit::TextEditor::Property::TEXT).Get(); if(offset > txt.size()) return false; @@ -2076,7 +2123,7 @@ bool TextEditor::AccessibleImpl::SetCaretOffset(size_t offset) Dali::Accessibility::Range TextEditor::AccessibleImpl::GetTextAtOffset( size_t offset, Dali::Accessibility::TextBoundary boundary) { - auto slf = Toolkit::TextEditor::DownCast(self); + auto slf = Toolkit::TextEditor::DownCast(Self()); auto txt = slf.GetProperty(Toolkit::TextEditor::Property::TEXT).Get(); auto txt_size = txt.size(); @@ -2156,7 +2203,7 @@ TextEditor::AccessibleImpl::GetSelection(size_t selectionNum) if(selectionNum > 0) return {}; - auto slf = Toolkit::TextEditor::DownCast(self); + auto slf = Toolkit::TextEditor::DownCast(Self()); auto ctrl = Dali::Toolkit::GetImpl(slf).getController(); std::string ret; ctrl->RetrieveSelection(ret); @@ -2171,7 +2218,7 @@ bool TextEditor::AccessibleImpl::RemoveSelection(size_t selectionNum) if(selectionNum > 0) return false; - auto slf = Toolkit::TextEditor::DownCast(self); + auto slf = Toolkit::TextEditor::DownCast(Self()); Dali::Toolkit::GetImpl(slf).getController()->SetSelection(0, 0); return true; } @@ -2184,7 +2231,7 @@ bool TextEditor::AccessibleImpl::SetSelection(size_t selectionNum, if(selectionNum > 0) return false; - auto slf = Toolkit::TextEditor::DownCast(self); + auto slf = Toolkit::TextEditor::DownCast(Self()); Dali::Toolkit::GetImpl(slf).getController()->SetSelection(startOffset, endOffset); return true; @@ -2196,7 +2243,7 @@ bool TextEditor::AccessibleImpl::CopyText(size_t startPosition, if(endPosition <= startPosition) return false; - auto slf = Toolkit::TextEditor::DownCast(self); + auto slf = Toolkit::TextEditor::DownCast(Self()); auto txt = slf.GetProperty(Toolkit::TextEditor::Property::TEXT).Get(); Dali::Toolkit::GetImpl(slf).getController()->CopyStringToClipboard(txt.substr(startPosition, endPosition - startPosition)); @@ -2209,7 +2256,7 @@ bool TextEditor::AccessibleImpl::CutText(size_t startPosition, if(endPosition <= startPosition) return false; - auto slf = Toolkit::TextEditor::DownCast(self); + auto slf = Toolkit::TextEditor::DownCast(Self()); auto txt = slf.GetProperty(Toolkit::TextEditor::Property::TEXT).Get(); Dali::Toolkit::GetImpl(slf).getController()->CopyStringToClipboard(txt.substr(startPosition, endPosition - startPosition));