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.cpp;h=7fc3eca9c72c073b620c1064c05e26bf32be08a9;hp=d12a708eb8c3d04a74b8a15f74239d7d97ac8fdb;hb=92cbca2f5bd2e15fa589448d4c884b71f4fef03c;hpb=fd25921c0f007bcedae97c5c130529f6646ee647 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 d12a708..7fc3eca 100644 --- a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp @@ -142,6 +142,7 @@ DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit, TextField, "grabHandleColor" DALI_SIGNAL_REGISTRATION(Toolkit, TextField, "textChanged", SIGNAL_TEXT_CHANGED ) DALI_SIGNAL_REGISTRATION(Toolkit, TextField, "maxLengthReached", SIGNAL_MAX_LENGTH_REACHED ) DALI_SIGNAL_REGISTRATION(Toolkit, TextField, "inputStyleChanged", SIGNAL_INPUT_STYLE_CHANGED) +DALI_SIGNAL_REGISTRATION(Toolkit, TextField, "anchorClicked", SIGNAL_ANCHOR_CLICKED ) DALI_TYPE_REGISTRATION_END() // clang-format on @@ -1195,6 +1196,14 @@ bool TextField::DoConnectSignal(BaseObject* object, ConnectionTrackerInterface* { field.InputStyleChangedSignal().Connect(tracker, functor); } + else if(0 == strcmp(signalName.c_str(), SIGNAL_ANCHOR_CLICKED)) + { + if(field) + { + Internal::TextField& fieldImpl(GetImpl(field)); + fieldImpl.AnchorClickedSignal().Connect(tracker, functor); + } + } else { // signalName does not match any signal @@ -1219,11 +1228,16 @@ Toolkit::TextField::InputStyleChangedSignalType& TextField::InputStyleChangedSig return mInputStyleChangedSignal; } +DevelTextField::AnchorClickedSignalType& TextField::AnchorClickedSignal() +{ + return mAnchorClickedSignal; +} + void TextField::OnInitialize() { Actor self = Self(); - mController = Text::Controller::New(this, this, this); + mController = Text::Controller::New(this, this, this, this); // When using the vector-based rendering, the size of the GLyphs are different TextAbstraction::GlyphType glyphType = (DevelText::RENDERING_VECTOR_BASED == mRenderingBackend) ? TextAbstraction::VECTOR_GLYPH : TextAbstraction::BITMAP_GLYPH; @@ -1619,6 +1633,7 @@ void TextField::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(); } @@ -1783,6 +1798,12 @@ void TextField::InputStyleChanged(Text::InputStyle::Mask inputStyleMask) mInputStyleChangedSignal.Emit(handle, fieldInputStyleMask); } +void TextField::AnchorClicked(const std::string& href) +{ + Dali::Toolkit::TextField handle(GetOwner()); + mAnchorClickedSignal.Emit(handle, href.c_str(), href.length()); +} + void TextField::AddDecoration(Actor& actor, bool needsClipping) { if(actor) @@ -1918,7 +1939,7 @@ TextField::~TextField() std::string TextField::AccessibleImpl::GetName() { - auto slf = Toolkit::TextField::DownCast(self); + auto slf = Toolkit::TextField::DownCast(Self()); return slf.GetProperty(Toolkit::TextField::Property::TEXT).Get(); } @@ -1928,7 +1949,7 @@ std::string TextField::AccessibleImpl::GetText(size_t startOffset, if(endOffset <= startOffset) return {}; - auto slf = Toolkit::TextField::DownCast(self); + auto slf = Toolkit::TextField::DownCast(Self()); auto txt = slf.GetProperty(Toolkit::TextField::Property::TEXT).Get(); @@ -1940,7 +1961,7 @@ std::string TextField::AccessibleImpl::GetText(size_t startOffset, size_t TextField::AccessibleImpl::GetCharacterCount() { - auto slf = Toolkit::TextField::DownCast(self); + auto slf = Toolkit::TextField::DownCast(Self()); auto txt = slf.GetProperty(Toolkit::TextField::Property::TEXT).Get(); @@ -1949,13 +1970,13 @@ size_t TextField::AccessibleImpl::GetCharacterCount() size_t TextField::AccessibleImpl::GetCaretOffset() { - auto slf = Toolkit::TextField::DownCast(self); + auto slf = Toolkit::TextField::DownCast(Self()); return Dali::Toolkit::GetImpl(slf).getController()->GetCursorPosition(); } bool TextField::AccessibleImpl::SetCaretOffset(size_t offset) { - auto slf = Toolkit::TextField::DownCast(self); + auto slf = Toolkit::TextField::DownCast(Self()); auto txt = slf.GetProperty(Toolkit::TextField::Property::TEXT).Get(); if(offset > txt.size()) return false; @@ -1969,7 +1990,7 @@ bool TextField::AccessibleImpl::SetCaretOffset(size_t offset) Dali::Accessibility::Range TextField::AccessibleImpl::GetTextAtOffset( size_t offset, Dali::Accessibility::TextBoundary boundary) { - auto slf = Toolkit::TextField::DownCast(self); + auto slf = Toolkit::TextField::DownCast(Self()); auto txt = slf.GetProperty(Toolkit::TextField::Property::TEXT).Get(); auto txt_size = txt.size(); @@ -2049,7 +2070,7 @@ TextField::AccessibleImpl::GetSelection(size_t selectionNum) if(selectionNum > 0) return {}; - auto slf = Toolkit::TextField::DownCast(self); + auto slf = Toolkit::TextField::DownCast(Self()); auto ctrl = Dali::Toolkit::GetImpl(slf).getController(); std::string ret; ctrl->RetrieveSelection(ret); @@ -2064,7 +2085,7 @@ bool TextField::AccessibleImpl::RemoveSelection(size_t selectionNum) if(selectionNum > 0) return false; - auto slf = Toolkit::TextField::DownCast(self); + auto slf = Toolkit::TextField::DownCast(Self()); Dali::Toolkit::GetImpl(slf).getController()->SetSelection(0, 0); return true; } @@ -2077,7 +2098,7 @@ bool TextField::AccessibleImpl::SetSelection(size_t selectionNum, if(selectionNum > 0) return false; - auto slf = Toolkit::TextField::DownCast(self); + auto slf = Toolkit::TextField::DownCast(Self()); Dali::Toolkit::GetImpl(slf).getController()->SetSelection(startOffset, endOffset); return true; @@ -2089,7 +2110,7 @@ bool TextField::AccessibleImpl::CopyText(size_t startPosition, if(endPosition <= startPosition) return false; - auto slf = Toolkit::TextField::DownCast(self); + auto slf = Toolkit::TextField::DownCast(Self()); auto txt = slf.GetProperty(Toolkit::TextField::Property::TEXT).Get(); Dali::Toolkit::GetImpl(slf).getController()->CopyStringToClipboard(txt.substr(startPosition, endPosition - startPosition)); @@ -2102,7 +2123,7 @@ bool TextField::AccessibleImpl::CutText(size_t startPosition, if(endPosition <= startPosition) return false; - auto slf = Toolkit::TextField::DownCast(self); + auto slf = Toolkit::TextField::DownCast(Self()); auto txt = slf.GetProperty(Toolkit::TextField::Property::TEXT).Get(); Dali::Toolkit::GetImpl(slf).getController()->CopyStringToClipboard(txt.substr(startPosition, endPosition - startPosition));