• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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_TEXT_FIELD_TEXT_FIELD_EVENT_HUB_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_TEXT_FIELD_TEXT_FIELD_EVENT_HUB_H
18 
19 #include <cstdint>
20 #include <utility>
21 
22 #include "base/memory/ace_type.h"
23 #include "base/utils/noncopyable.h"
24 #include "core/components_ng/event/event_hub.h"
25 #include "core/components_ng/pattern/scrollable/scrollable_properties.h"
26 
27 namespace OHOS::Ace::NG {
28 class TextFieldEventHub : public EventHub {
29     DECLARE_ACE_TYPE(TextFieldEventHub, EventHub)
30 
31 public:
32     TextFieldEventHub() = default;
33     ~TextFieldEventHub() override = default;
34 
SetOnInputFilterError(const std::function<void (const std::string &)> & onInputFilterError)35     void SetOnInputFilterError(const std::function<void(const std::string&)>& onInputFilterError)
36     {
37         onInputFilterError_ = onInputFilterError;
38     }
39 
FireOnInputFilterError(const std::string & value)40     void FireOnInputFilterError(const std::string& value) const
41     {
42         if (onInputFilterError_) {
43             LOGI("On filter error %{private}s", value.c_str());
44             onInputFilterError_(value);
45         }
46     }
47 
SetOnEditChanged(std::function<void (bool)> && func)48     void SetOnEditChanged(std::function<void(bool)>&& func)
49     {
50         onEditChanged_ = std::move(func);
51     }
52 
FireOnEditChanged(bool value)53     void FireOnEditChanged(bool value)
54     {
55         if (onEditChanged_) {
56             LOGI("On edit change %{private}d", value);
57             onEditChanged_(value);
58         }
59     }
60 
SetOnSubmit(std::function<void (int32_t)> && func)61     void SetOnSubmit(std::function<void(int32_t)>&& func)
62     {
63         onSubmit_ = std::move(func);
64     }
65 
FireOnSubmit(int32_t value)66     void FireOnSubmit(int32_t value)
67     {
68         if (onSubmit_) {
69             LOGI("On submit %{private}d", value);
70             onSubmit_(value);
71         }
72     }
73 
SetOnChange(std::function<void (const std::string &)> && func)74     void SetOnChange(std::function<void(const std::string&)>&& func)
75     {
76         onChange_ = std::move(func);
77     }
78 
FireOnChange(const std::string & value)79     void FireOnChange(const std::string& value)
80     {
81         if (lastValue_.has_value() && lastValue_.value() == value) {
82             return;
83         }
84         if (onValueChangeEvent_) {
85             LOGI("On change event %{private}s", value.c_str());
86             onValueChangeEvent_(value);
87         }
88         if (onChange_) {
89             LOGI("On change %{private}s", value.c_str());
90             onChange_(value);
91         }
92         lastValue_ = value;
93     }
94 
SetOnSelectionChange(std::function<void (int32_t,int32_t)> && func)95     void SetOnSelectionChange(std::function<void(int32_t, int32_t)>&& func)
96     {
97         onSelectionChange_ = std::move(func);
98     }
99 
FireOnSelectionChange(int32_t selectionStart,int32_t selectionEnd)100     void FireOnSelectionChange(int32_t selectionStart, int32_t selectionEnd)
101     {
102         if (onSelectionChange_) {
103             LOGI("On selection change start %{private}d, end %{private}d", selectionStart, selectionEnd);
104             onSelectionChange_(selectionStart, selectionEnd);
105         }
106     }
107 
SetOnCopy(std::function<void (const std::string &)> && func)108     void SetOnCopy(std::function<void(const std::string&)>&& func)
109     {
110         onCopy_ = std::move(func);
111     }
112 
FireOnCopy(const std::string & value)113     void FireOnCopy(const std::string& value)
114     {
115         if (onCopy_) {
116             LOGI("On copy %{private}s", value.c_str());
117             onCopy_(value);
118         }
119     }
120 
SetOnCut(std::function<void (const std::string &)> && func)121     void SetOnCut(std::function<void(const std::string&)>&& func)
122     {
123         onCut_ = std::move(func);
124     }
125 
FireOnCut(const std::string & value)126     void FireOnCut(const std::string& value)
127     {
128         if (onCut_) {
129             LOGI("On cut %{private}s", value.c_str());
130             onCut_(value);
131         }
132     }
133 
SetOnPaste(std::function<void (const std::string &)> && func)134     void SetOnPaste(std::function<void(const std::string&)>&& func)
135     {
136         onPaste_ = std::move(func);
137     }
138 
FireOnPaste(const std::string & value)139     void FireOnPaste(const std::string& value)
140     {
141         if (onPaste_) {
142             LOGI("On paste %{private}s", value.c_str());
143             onPaste_(value);
144         }
145     }
146 
SetOnScroll(OnScrollEvent && onScroll)147     void SetOnScroll(OnScrollEvent&& onScroll)
148     {
149         onScrollEvent_ = std::move(onScroll);
150     }
151 
GetOnScroll()152     const OnScrollEvent& GetOnScroll() const
153     {
154         return onScrollEvent_;
155     }
156 
SetOnScrollBegin(OnScrollBeginEvent && onScrollBegin)157     void SetOnScrollBegin(OnScrollBeginEvent&& onScrollBegin)
158     {
159         onScrollBeginEvent_ = std::move(onScrollBegin);
160     }
161 
GetOnScrollBegin()162     const OnScrollBeginEvent& GetOnScrollBegin() const
163     {
164         return onScrollBeginEvent_;
165     }
166 
SetOnScrollFrameBegin(OnScrollFrameBeginEvent && onScrollFrameBegin)167     void SetOnScrollFrameBegin(OnScrollFrameBeginEvent&& onScrollFrameBegin)
168     {
169         onScrollFrameBeginEvent_ = std::move(onScrollFrameBegin);
170     }
171 
GetOnScrollFrameBegin()172     const OnScrollFrameBeginEvent& GetOnScrollFrameBegin() const
173     {
174         return onScrollFrameBeginEvent_;
175     }
176 
SetOnScrollStart(OnScrollStartEvent && onScrollStart)177     void SetOnScrollStart(OnScrollStartEvent&& onScrollStart)
178     {
179         onScrollStartEvent_ = std::move(onScrollStart);
180     }
181 
GetOnScrollStart()182     const OnScrollStartEvent& GetOnScrollStart() const
183     {
184         return onScrollStartEvent_;
185     }
186 
SetOnScrollStop(OnScrollStopEvent && onScrollStop)187     void SetOnScrollStop(OnScrollStopEvent&& onScrollStop)
188     {
189         onScrollStopEvent_ = std::move(onScrollStop);
190     }
191 
GetOnScrollStop()192     const OnScrollStopEvent& GetOnScrollStop() const
193     {
194         return onScrollStopEvent_;
195     }
196 
SetOnScrollIndex(OnScrollIndexEvent && onScrollIndex)197     void SetOnScrollIndex(OnScrollIndexEvent&& onScrollIndex)
198     {
199         onScrollIndexEvent_ = std::move(onScrollIndex);
200     }
201 
GetOnScrollIndex()202     const OnScrollIndexEvent& GetOnScrollIndex() const
203     {
204         return onScrollIndexEvent_;
205     }
206 
SetOnChangeEvent(std::function<void (const std::string &)> && func)207     void SetOnChangeEvent(std::function<void(const std::string&)>&& func)
208     {
209         onValueChangeEvent_ = std::move(func);
210     }
211 
SetOnScrollChangeEvent(std::function<void (float,float)> && func)212     void SetOnScrollChangeEvent(std::function<void(float, float)>&& func)
213     {
214         onScrollChangeEvent_ = std::move(func);
215     }
216 
FireOnScrollChangeEvent(float offsetX,float offsetY)217     void FireOnScrollChangeEvent(float offsetX, float offsetY)
218     {
219         if (onScrollChangeEvent_) {
220             onScrollChangeEvent_(offsetX, offsetY);
221         }
222     }
223 
224 private:
225     std::optional<std::string> lastValue_;
226 
227     OnScrollEvent onScrollEvent_;
228     OnScrollBeginEvent onScrollBeginEvent_;
229     OnScrollFrameBeginEvent onScrollFrameBeginEvent_;
230     OnScrollStartEvent onScrollStartEvent_;
231     OnScrollStopEvent onScrollStopEvent_;
232     OnScrollIndexEvent onScrollIndexEvent_;
233     std::function<void(float, float)> onScrollChangeEvent_;
234 
235     std::function<void(const std::string&)> onInputFilterError_;
236     std::function<void(bool)> onEditChanged_;
237     std::function<void(int32_t)> onSubmit_;
238     std::function<void(const std::string&)> onChange_;
239     std::function<void(int32_t, int32_t)> onSelectionChange_;
240 
241     std::function<void(const std::string&)> onCopy_;
242     std::function<void(const std::string&)> onCut_;
243     std::function<void(const std::string&)> onPaste_;
244     std::function<void(const std::string&)> onValueChangeEvent_;
245     ACE_DISALLOW_COPY_AND_MOVE(TextFieldEventHub);
246 };
247 
248 } // namespace OHOS::Ace::NG
249 
250 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_TEXT_FIELD_TEXT_FIELD_EVENT_HUB_H
251