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_NG_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_SEARCH_SEARCH_MODEL_NG_H 18 19 #include "base/memory/referenced.h" 20 #include "core/components_ng/base/frame_node.h" 21 #include "core/components_ng/pattern/search/search_model.h" 22 #include "core/components_ng/pattern/search/search_node.h" 23 24 namespace OHOS::Ace::NG { 25 26 class ACE_EXPORT SearchModelNG : public OHOS::Ace::SearchModel { 27 public: 28 RefPtr<TextFieldControllerBase> Create(const std::optional<std::string>& value, 29 const std::optional<std::string>& placeholder, const std::optional<std::string>& icon) override; 30 void RequestKeyboardOnFocus(bool needToRequest) override; 31 void SetSearchButton(const std::string& text) override; 32 void SetCaretWidth(const Dimension& value) override; 33 void SetCaretColor(const Color& color) override; 34 void SetSearchIconSize(const Dimension& value) override; 35 void SetSearchIconColor(const Color& color) override; 36 void SetSearchSrcPath( 37 const std::string& src, const std::string& bundleName, const std::string& moduleName) override; 38 void SetSearchSymbolIcon(std::function<void(WeakPtr<NG::FrameNode>)> iconSymbol) override; 39 void SetSearchDefaultIcon() override; 40 void SetSearchImageIcon(NG::IconOptions& iconOptions) override; 41 void SetCancelSymbolIcon(std::function<void(WeakPtr<NG::FrameNode>)> iconSymbol) override; 42 void SetCancelDefaultIcon() override; 43 void SetCancelImageIcon(NG::IconOptions& iconOptions) override; 44 void SetRightIconSrcPath(const std::string& src) override; 45 void SetCancelButtonStyle(CancelButtonStyle cancelButtonStyle) override; 46 void SetCancelIconSize(const Dimension& value) override; 47 void SetCancelIconColor(const Color& color) override; 48 void SetSearchButtonFontSize(const Dimension& value) override; 49 void SetSearchButtonFontColor(const Color& color) override; 50 void SetPlaceholderColor(const Color& color) override; 51 void SetPlaceholderFont(const Font& font) override; 52 void SetTextFont(const Font& font) override; 53 void SetTextColor(const Color& color) override; 54 void SetTextAlign(const TextAlign& textAlign) override; 55 void SetCopyOption(const CopyOptions& copyOptions) override; 56 void SetHeight(const Dimension& height) override; SetOnSubmit(std::function<void (const std::string &)> && onSubmit)57 void SetOnSubmit(std::function<void(const std::string&)>&& onSubmit) override {}; 58 void SetOnSubmit(std::function<void(const std::string&, NG::TextFieldCommonEvent&)>&& onSubmit) override; 59 void SetOnChange(std::function<void(const std::string&, PreviewText&)>&& onChange) override; 60 void SetOnTextSelectionChange(std::function<void(int32_t, int32_t)>&& func) override; 61 void SetOnScroll(std::function<void(float, float)>&& func) override; 62 void SetOnCopy(std::function<void(const std::string&)>&& func) override; 63 void SetOnCut(std::function<void(const std::string&)>&& func) override; 64 void SetOnWillInsertValueEvent(std::function<bool(const InsertValueInfo&)>&& func) override; 65 void SetOnDidInsertValueEvent(std::function<void(const InsertValueInfo&)>&& func) override; 66 void SetOnWillDeleteEvent(std::function<bool(const DeleteValueInfo&)>&& func) override; 67 void SetOnDidDeleteEvent(std::function<void(const DeleteValueInfo&)>&& func) override; 68 void SetOnPaste(std::function<void(const std::string&)>&& func) override; 69 void SetOnPasteWithEvent(std::function<void(const std::string&, NG::TextCommonEvent&)>&& func) override; 70 void SetOnChangeEvent(std::function<void(const std::string&)>&& onChangeEvent) override; 71 void SetSelectionMenuHidden(bool selectionMenuHidden) override; 72 void SetCustomKeyboard(const std::function<void ()> &&buildFunc, bool supportAvoidance = false) override; 73 void SetSearchEnterKeyType(TextInputAction value) override; 74 void SetInputFilter(const std::string& value, const std::function<void(const std::string&)>& onError) override; 75 void SetOnEditChanged(std::function<void(bool)>&& func) override; 76 void SetTextIndent(const Dimension& value) override; 77 void SetMaxLength(uint32_t value) override; 78 void ResetMaxLength() override; 79 void SetFontFeature(const FONT_FEATURES_LIST& value) override; 80 void SetType(TextInputType value) override; 81 void SetLetterSpacing(const Dimension& value) override; 82 void SetLineHeight(const Dimension& value) override; 83 void SetAdaptMinFontSize(const Dimension& value) override; 84 void SetAdaptMaxFontSize(const Dimension& value) override; 85 void SetTextDecoration(Ace::TextDecoration value) override; 86 void SetTextDecorationColor(const Color& value) override; 87 void SetTextDecorationStyle(Ace::TextDecorationStyle value) override; 88 void SetDragPreviewOptions(const NG::DragPreviewOption option) override; 89 void SetSelectedBackgroundColor(const Color& value) override; 90 void SetEnablePreviewText(bool enablePreviewText) override; 91 void SetSelectionMenuOptions(const NG::OnCreateMenuCallback&& onCreateMenuCallback, 92 const NG::OnMenuItemClickCallback&& onMenuItemClick) override; 93 void SetEnableHapticFeedback(bool state) override; 94 static RefPtr<SearchNode> CreateFrameNode(int32_t nodeId); 95 static void SetTextValue(FrameNode* frameNode, const std::optional<std::string>& value); 96 static void SetPlaceholder(FrameNode* frameNode, const std::optional<std::string>& placeholder); 97 static void SetIcon(FrameNode* frameNode, const std::optional<std::string>& icon); 98 static void SetCaretPosition(FrameNode* frameNode, const int32_t& value); 99 static void SetAdaptMinFontSize(FrameNode* frameNode, const Dimension& value); 100 static void SetInputFilter( 101 FrameNode* frameNode, const std::string& value, const std::function<void(const std::string&)>& onError); 102 static void SetAdaptMaxFontSize(FrameNode* frameNode, const Dimension& value); 103 static void SetTextIndent(FrameNode* frameNode, const Dimension& value); 104 static void RequestKeyboardOnFocus(FrameNode* frameNode, bool needToRequest); 105 void UpdateInspectorId(const std::string& key) override; 106 static void SetPlaceholderFont(FrameNode* frameNode, const Font& font); 107 static void SetSearchIconSize(FrameNode* frameNode, const Dimension& value); 108 static void SetSearchSrcPath(FrameNode* frameNode, const std::string& src); 109 static void SetSearchIconColor(FrameNode* frameNode, const Color& color); 110 static void SetSearchImageIcon(FrameNode* frameNode, IconOptions& iconOptions); 111 static void SetSearchButton(FrameNode* frameNode, const std::string& text); 112 static void SetSearchButtonFontSize(FrameNode* frameNode, const Dimension& value); 113 static void SetSearchButtonFontColor(FrameNode* frameNode, const Color& color); 114 static void SetTextColor(FrameNode* frameNode, const Color& color); 115 static void SetCopyOption(FrameNode* frameNode, const CopyOptions& copyOptions); 116 static void SetTextFont(FrameNode* frameNode, const Font& font); 117 static void SetPlaceholderColor(FrameNode* frameNode, const Color& color); 118 static void SetSelectionMenuHidden(FrameNode* frameNode, bool selectionMenuHidden); 119 static void SetCaretWidth(FrameNode* frameNode, const Dimension& value); 120 static void SetCaretColor(FrameNode* frameNode, const Color& color); 121 static void SetTextAlign(FrameNode* frameNode, const TextAlign& textAlign); 122 static void SetRightIconSrcPath(FrameNode* frameNode, const std::string& src); 123 static void SetCancelIconColor(FrameNode* frameNode, const Color& color); 124 static void SetCancelIconSize(FrameNode* frameNode, const Dimension& value); 125 static void SetCancelButtonStyle(FrameNode* frameNode, CancelButtonStyle style); 126 static void SetCancelImageIcon(FrameNode* frameNode, IconOptions& iconOptions); 127 static void SetHeight(FrameNode* frameNode, const Dimension& height); 128 static void SetFontFeature(FrameNode* frameNode, const FONT_FEATURES_LIST& value); 129 static void SetSearchEnterKeyType(FrameNode* frameNode, TextInputAction value); 130 static void SetTextDecoration(FrameNode* frameNode, Ace::TextDecoration value); 131 static void SetTextDecorationColor(FrameNode* frameNode, const Color& value); 132 static void SetTextDecorationStyle(FrameNode* frameNode, Ace::TextDecorationStyle value); 133 static void SetLetterSpacing(FrameNode* frameNode, const Dimension& value); 134 static void SetLineHeight(FrameNode* frameNode, const Dimension& value); 135 static void SetSelectedBackgroundColor(FrameNode* frameNode, const Color& value); 136 static void SetOnSubmit(FrameNode* frameNode, 137 std::function<void(const std::string&, NG::TextFieldCommonEvent&)>&& onSubmit); 138 static void SetOnChange(FrameNode* frameNode, std::function<void(const std::string&, PreviewText&)>&& onChange); 139 static void SetOnCopy(FrameNode* frameNode, std::function<void(const std::string&)>&& func); 140 static void SetOnCut(FrameNode* frameNode, std::function<void(const std::string&)>&& func); 141 static void SetOnPasteWithEvent(FrameNode* frameNode, 142 std::function<void(const std::string&, NG::TextCommonEvent&)>&& func); 143 static void SetMaxLength(FrameNode* frameNode, uint32_t value); 144 static void ResetMaxLength(FrameNode* frameNode); 145 static void SetType(FrameNode* frameNode, TextInputType value); 146 static void SetOnEditChange(FrameNode* frameNode, std::function<void(bool)>&& func); 147 static void SetOnTextSelectionChange(FrameNode* frameNode, std::function<void(int32_t, int32_t)>&& func); 148 static void SetOnContentScroll(FrameNode* frameNode, std::function<void(float, float)>&& func); 149 static void SetShowCounter(FrameNode* frameNode, bool value); 150 static void SetCounterType(FrameNode* frameNode, int32_t value); 151 static void SetShowCounterBorder(FrameNode* frameNode, bool value); 152 static RefPtr<TextFieldControllerBase> GetSearchController(FrameNode* frameNode); 153 static void SetOnWillInsertValueEvent(FrameNode* frameNode, std::function<bool(const InsertValueInfo&)>&& func); 154 static void SetOnDidInsertValueEvent(FrameNode* frameNode, std::function<void(const InsertValueInfo&)>&& func); 155 static void SetOnWillDeleteEvent(FrameNode* frameNode, std::function<bool(const DeleteValueInfo&)>&& func); 156 static void SetOnDidDeleteEvent(FrameNode* frameNode, std::function<void(const DeleteValueInfo&)>&& func); 157 static void SetEnablePreviewText(FrameNode* frameNode, bool enablePreviewText); 158 static void OnCreateMenuCallbackUpdate(FrameNode* frameNode, const NG::OnCreateMenuCallback&& onCreateMenuCallback); 159 static void OnMenuItemClickCallbackUpdate( 160 FrameNode* frameNode, const NG::OnMenuItemClickCallback&& onMenuItemClick); 161 static void SetId(FrameNode* frameNode, const std::string& key); 162 static void SetEnableHapticFeedback(FrameNode* frameNode, bool state); 163 164 private: 165 static void CreateTextField(const RefPtr<SearchNode>& parentNode, 166 const std::optional<std::string>& placeholder, const std::optional<std::string>& value, bool hasTextFieldNode); 167 static RefPtr<SearchNode> CreateSearchNode(int32_t nodeId, const std::optional<std::string>& value, 168 const std::optional<std::string>& placeholder, const std::optional<std::string>& icon); 169 static void CreateButton(const RefPtr<SearchNode>& parentNode, bool hasButtonNode); 170 static void CreateCancelButton(const RefPtr<SearchNode>& parentNode, bool hasCancelButtonNode); 171 static RefPtr<SearchNode> GetOrCreateSearchNode( 172 const std::string& tag, int32_t nodeId, const std::function<RefPtr<Pattern>(void)>& patternCreator); 173 RefPtr<FrameNode> GetSearchTextFieldFrameNode() const; 174 static void TextFieldUpdateContext(const RefPtr<FrameNode>& frameNode); 175 static void CreateDivider(const RefPtr<SearchNode>& parentNode, bool hasDividerNode); 176 }; 177 178 } // namespace OHOS::Ace::NG 179 180 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_SEARCH_SEARCH_MODEL_NG_H 181