X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Ftext-controls%2Ftext-field-impl.cpp;h=27eae92fd068a7da93e85c32adb465195059d362;hb=6217e54055ab9eb0bd2863cc4eb1e51621045792;hp=c0d790394f63be1c776ec3a1d0713c67f60c83eb;hpb=7923c3d4f1d8ef3866e07eb43e5f6806cb108ef2;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git 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 c0d7903..27eae92 100644 --- a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp @@ -138,11 +138,13 @@ DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit, TextField, "enableEditing", DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit, TextField, "fontSizeScale", FLOAT, FONT_SIZE_SCALE ) DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit, TextField, "primaryCursorPosition", INTEGER, PRIMARY_CURSOR_POSITION ) DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit, TextField, "grabHandleColor", VECTOR4, GRAB_HANDLE_COLOR ) +DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit, TextField, "inputFilter", MAP, INPUT_FILTER ) 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_SIGNAL_REGISTRATION(Toolkit, TextField, "inputFiltered", SIGNAL_INPUT_FILTERED ) DALI_TYPE_REGISTRATION_END() // clang-format on @@ -765,6 +767,15 @@ void TextField::SetProperty(BaseObject* object, Property::Index index, const Pro impl.RequestTextRelayout(); break; } + case Toolkit::DevelTextField::Property::INPUT_FILTER: + { + const Property::Map* map = value.GetMap(); + if(map) + { + impl.mController->SetInputFilterOption(*map); + } + break; + } } // switch } // textfield } @@ -1120,6 +1131,13 @@ Property::Value TextField::GetProperty(BaseObject* object, Property::Index index value = impl.mDecorator->GetHandleColor(); break; } + case Toolkit::DevelTextField::Property::INPUT_FILTER: + { + Property::Map map; + impl.mController->GetInputFilterOption(map); + value = map; + break; + } } //switch } @@ -1204,6 +1222,14 @@ bool TextField::DoConnectSignal(BaseObject* object, ConnectionTrackerInterface* fieldImpl.AnchorClickedSignal().Connect(tracker, functor); } } + else if(0 == strcmp(signalName.c_str(), SIGNAL_INPUT_FILTERED)) + { + if(field) + { + Internal::TextField& fieldImpl(GetImpl(field)); + fieldImpl.InputFilteredSignal().Connect(tracker, functor); + } + } else { // signalName does not match any signal @@ -1233,6 +1259,11 @@ DevelTextField::AnchorClickedSignalType& TextField::AnchorClickedSignal() return mAnchorClickedSignal; } +DevelTextField::InputFilteredSignalType& TextField::InputFilteredSignal() +{ + return mInputFilteredSignal; +} + void TextField::OnInitialize() { Actor self = Self(); @@ -1804,6 +1835,12 @@ void TextField::AnchorClicked(const std::string& href) mAnchorClickedSignal.Emit(handle, href.c_str(), href.length()); } +void TextField::InputFiltered(Toolkit::InputFilter::Property::Type type) +{ + Dali::Toolkit::TextField handle(GetOwner()); + mInputFilteredSignal.Emit(handle, type); +} + void TextField::AddDecoration(Actor& actor, bool needsClipping) { if(actor) @@ -1822,6 +1859,18 @@ void TextField::AddDecoration(Actor& actor, bool needsClipping) } } +void TextField::GetControlBackgroundColor(Vector4& color) const +{ + Property::Value propValue = Self().GetProperty(Toolkit::Control::Property::BACKGROUND); + Property::Map* resultMap = propValue.GetMap(); + + Property::Value* colorValue = nullptr; + if(resultMap && (colorValue = resultMap->Find(ColorVisual::Property::MIX_COLOR))) + { + colorValue->Get(color); + } +} + void TextField::OnSceneConnect(Dali::Actor actor) { if(mHasBeenStaged) @@ -2128,7 +2177,22 @@ bool TextField::AccessibleImpl::CutText(size_t startPosition, Dali::Toolkit::GetImpl(slf).getController()->CopyStringToClipboard(txt.substr(startPosition, endPosition - startPosition)); slf.SetProperty(Toolkit::TextField::Property::TEXT, - txt.substr(0, startPosition) + txt.substr(endPosition - startPosition, txt.size())); + txt.substr(0, startPosition) + txt.substr(endPosition)); + + return true; +} + +bool TextField::AccessibleImpl::DeleteText(size_t startPosition, + size_t endPosition) +{ + if(endPosition <= startPosition) + return false; + + auto slf = Toolkit::TextField::DownCast(Self()); + auto txt = slf.GetProperty(Toolkit::TextField::Property::TEXT).Get(); + + slf.SetProperty(Toolkit::TextField::Property::TEXT, + txt.substr(0, startPosition) + txt.substr(endPosition)); return true; } @@ -2151,6 +2215,26 @@ Dali::Accessibility::States TextField::AccessibleImpl::CalculateStates() return states; } +bool TextField::AccessibleImpl::InsertText(size_t startPosition, + std::string text) +{ + auto slf = Toolkit::TextField::DownCast(Self()); + auto txt = slf.GetProperty(Toolkit::TextField::Property::TEXT).Get(); + + txt.insert(startPosition, text); + + slf.SetProperty(Toolkit::TextField::Property::TEXT, std::move(txt)); + + return true; +} + +bool TextField::AccessibleImpl::SetTextContents(std::string newContents) +{ + auto slf = Toolkit::TextField::DownCast(Self()); + slf.SetProperty(Toolkit::TextField::Property::TEXT, std::move(newContents)); + return true; +} + } // namespace Internal } // namespace Toolkit