1 /* 2 * Copyright (c) 2022-2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_SEARCH_SEARCH_MODEL_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_SEARCH_SEARCH_MODEL_H 18 19 #include <mutex> 20 21 #include "core/components_ng/pattern/search/search_event_hub.h" 22 #include "core/components_ng/pattern/search/search_node.h" 23 #include "core/components_ng/pattern/text_field/text_field_controller.h" 24 25 namespace OHOS::Ace { 26 27 class ACE_FORCE_EXPORT SearchModel { 28 public: 29 static SearchModel* GetInstance(); 30 virtual ~SearchModel() = default; 31 32 virtual RefPtr<TextFieldControllerBase> Create(const std::optional<std::string>& value, 33 const std::optional<std::string>& placeholder, const std::optional<std::string>& icon); 34 virtual void RequestKeyboardOnFocus(bool needToRequest) = 0; 35 virtual void SetSearchButton(const std::string& text); 36 virtual void SetCaretWidth(const Dimension& value); 37 virtual void SetCaretColor(const Color& color); 38 virtual void SetSearchIconSize(const Dimension& value); 39 virtual void SetSearchIconColor(const Color& color); 40 virtual void SetSearchSrcPath(const std::string& src, const std::string& bundleName, const std::string& moduleName); 41 virtual void SetSearchSymbolIcon(std::function<void(WeakPtr<NG::FrameNode>)> iconSymbol); 42 virtual void SetSearchDefaultIcon(); 43 virtual void SetSearchImageIcon(NG::IconOptions& iconOptions); 44 virtual void SetCancelSymbolIcon(std::function<void(WeakPtr<NG::FrameNode>)> iconSymbol); 45 virtual void SetCancelDefaultIcon(); 46 virtual void SetCancelImageIcon(NG::IconOptions &iconOptions); 47 virtual void SetRightIconSrcPath(const std::string& src); 48 virtual void SetCancelButtonStyle(CancelButtonStyle cancelButtonStyle); 49 virtual void SetCancelIconSize(const Dimension& value); 50 virtual void SetCancelIconColor(const Color& color); 51 virtual void SetSearchButtonFontSize(const Dimension& value); 52 virtual void SetSearchButtonFontColor(const Color& color); 53 virtual void SetPlaceholderColor(const Color& color); 54 virtual void SetPlaceholderFont(const Font& font); 55 virtual void SetTextFont(const Font& font); 56 virtual void SetTextColor(const Color& color); 57 virtual void SetTextAlign(const TextAlign& textAlign); 58 virtual void SetCopyOption(const CopyOptions& copyOptions); SetFocusable(bool focusable)59 virtual void SetFocusable(bool focusable) {}; SetFocusNode(bool isFocusNode)60 virtual void SetFocusNode(bool isFocusNode) {}; 61 virtual void SetHeight(const Dimension& height); SetBackBorder()62 virtual void SetBackBorder() {}; 63 virtual void SetOnSubmit(std::function<void(const std::string&)>&& onSubmit); 64 virtual void SetOnSubmit(std::function<void(const std::string&, NG::TextFieldCommonEvent&)>&& onSubmit); 65 virtual void SetOnChange(std::function<void(const std::string&, PreviewText&)>&& onChange); 66 virtual void SetOnTextSelectionChange(std::function<void(int32_t, int32_t)>&& func) = 0; 67 virtual void SetOnScroll(std::function<void(float, float)>&& func) = 0; 68 virtual void SetOnCopy(std::function<void(const std::string&)>&& func); 69 virtual void SetOnCut(std::function<void(const std::string&)>&& func); 70 virtual void SetOnPaste(std::function<void(const std::string&)>&& func); 71 virtual void SetOnPasteWithEvent(std::function<void(const std::string&, NG::TextCommonEvent&)>&& func); 72 virtual void SetOnWillInsertValueEvent(std::function<bool(const InsertValueInfo&)>&& func); 73 virtual void SetOnDidInsertValueEvent(std::function<void(const InsertValueInfo&)>&& func); 74 virtual void SetOnWillDeleteEvent(std::function<bool(const DeleteValueInfo&)>&& func); 75 virtual void SetOnDidDeleteEvent(std::function<void(const DeleteValueInfo&)>&& func); 76 virtual void SetOnChangeEvent(std::function<void(const std::string&)>&& onChangeEvent); 77 virtual void SetSelectionMenuHidden(bool selectionMenuHidden) = 0; SetLetterSpacing(const Dimension & value)78 virtual void SetLetterSpacing(const Dimension& value) {}; SetLineHeight(const Dimension & value)79 virtual void SetLineHeight(const Dimension& value) {}; SetAdaptMinFontSize(const Dimension & value)80 virtual void SetAdaptMinFontSize(const Dimension& value) {}; SetAdaptMaxFontSize(const Dimension & value)81 virtual void SetAdaptMaxFontSize(const Dimension& value) {}; SetTextDecoration(Ace::TextDecoration value)82 virtual void SetTextDecoration(Ace::TextDecoration value) {}; SetTextDecorationColor(const Color & value)83 virtual void SetTextDecorationColor(const Color& value) {}; SetTextDecorationStyle(Ace::TextDecorationStyle value)84 virtual void SetTextDecorationStyle(Ace::TextDecorationStyle value) {}; 85 virtual void SetCustomKeyboard(const std::function<void ()> &&buildFunc, bool supportAvoidance = false); 86 virtual void SetSearchEnterKeyType(TextInputAction value); 87 virtual void SetMaxLength(uint32_t value); 88 virtual void ResetMaxLength(); 89 virtual void SetFontFeature(const std::list<std::pair<std::string, int32_t>>& value) = 0; 90 virtual void SetType(TextInputType value); SetDragPreviewOptions(const NG::DragPreviewOption option)91 virtual void SetDragPreviewOptions(const NG::DragPreviewOption option) {}; SetSelectedBackgroundColor(const Color & value)92 virtual void SetSelectedBackgroundColor(const Color& value) {}; UpdateInspectorId(const std::string & key)93 virtual void UpdateInspectorId(const std::string& key) {}; 94 SetInputFilter(const std::string & value,const std::function<void (const std::string &)> & onError)95 virtual void SetInputFilter(const std::string& value, const std::function<void(const std::string&)>& onError) {}; SetOnEditChanged(std::function<void (bool)> && func)96 virtual void SetOnEditChanged(std::function<void(bool)>&& func) {}; SetTextIndent(const Dimension & value)97 virtual void SetTextIndent(const Dimension& value) {}; SetSelectionMenuOptions(const NG::OnCreateMenuCallback && onCreateMenuCallback,const NG::OnMenuItemClickCallback && onMenuItemClick)98 virtual void SetSelectionMenuOptions( 99 const NG::OnCreateMenuCallback&& onCreateMenuCallback, const NG::OnMenuItemClickCallback&& onMenuItemClick) {}; 100 virtual void SetEnablePreviewText(bool enablePreviewText) = 0; 101 virtual void SetEnableHapticFeedback(bool state) = 0; 102 private: 103 static std::unique_ptr<SearchModel> instance_; 104 static std::mutex mutex_; 105 }; 106 107 } // namespace OHOS::Ace 108 109 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_SEARCH_SEARCH_MODEL_H 110