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