1 /*
2  * Copyright (c) 2021 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_DIALOG_TWEEN_DIALOG_TWEEN_COMPONENT_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DIALOG_TWEEN_DIALOG_TWEEN_COMPONENT_H
18 
19 #include "core/animation/animator.h"
20 #include "core/components/common/properties/edge.h"
21 #include "core/pipeline/base/sole_child_component.h"
22 
23 namespace OHOS::Ace {
24 
25 class DialogTweenComponent : public SoleChildComponent {
26     DECLARE_ACE_TYPE(DialogTweenComponent, SoleChildComponent);
27 
28 public:
29     RefPtr<Element> CreateElement() override;
30     RefPtr<RenderNode> CreateRenderNode() override;
31 
SetAutoCancel(bool autoCancel)32     void SetAutoCancel(bool autoCancel)
33     {
34         autoCancel_ = autoCancel;
35     }
36 
SetOnSuccessId(const EventMarker & onSuccessId)37     void SetOnSuccessId(const EventMarker& onSuccessId)
38     {
39         onSuccessId_ = onSuccessId;
40     }
41 
SetOnCancelId(const EventMarker & onCancelId)42     void SetOnCancelId(const EventMarker& onCancelId)
43     {
44         onCancelId_ = onCancelId;
45     }
46 
SetOnCompleteId(const EventMarker & onCompleteId)47     void SetOnCompleteId(const EventMarker& onCompleteId)
48     {
49         onCompleteId_ = onCompleteId;
50     }
51 
SetOnPositiveSuccessId(const EventMarker & onPositiveSuccessId)52     void SetOnPositiveSuccessId(const EventMarker& onPositiveSuccessId)
53     {
54         onPositiveSuccessId_ = onPositiveSuccessId;
55     }
56 
SetOnNegativeSuccessId(const EventMarker & onNegativeSuccessId)57     void SetOnNegativeSuccessId(const EventMarker& onNegativeSuccessId)
58     {
59         onNegativeSuccessId_ = onNegativeSuccessId;
60     }
61 
SetOnNeutralSuccessId(const EventMarker & onNeutralSuccessId)62     void SetOnNeutralSuccessId(const EventMarker& onNeutralSuccessId)
63     {
64         onNeutralSuccessId_ = onNeutralSuccessId;
65     }
66 
SetAnimator(const RefPtr<Animator> & animator)67     void SetAnimator(const RefPtr<Animator>& animator)
68     {
69         animator_ = animator;
70     }
71 
SetParentAnimator(const RefPtr<Animator> & parentAnimator)72     void SetParentAnimator(const RefPtr<Animator>& parentAnimator)
73     {
74         parentAnimator_ = parentAnimator;
75     }
76 
GetAutoCancel()77     bool GetAutoCancel() const
78     {
79         return autoCancel_;
80     }
81 
GetOnSuccessId()82     const EventMarker& GetOnSuccessId() const
83     {
84         return onSuccessId_;
85     }
86 
GetOnCancelId()87     const EventMarker& GetOnCancelId() const
88     {
89         return onCancelId_;
90     }
91 
GetOnCompleteId()92     const EventMarker& GetOnCompleteId() const
93     {
94         return onCompleteId_;
95     }
96 
GetOnPositiveSuccessId()97     const EventMarker& GetOnPositiveSuccessId() const
98     {
99         return onPositiveSuccessId_;
100     }
101 
GetOnNegativeSuccessId()102     const EventMarker& GetOnNegativeSuccessId() const
103     {
104         return onNegativeSuccessId_;
105     }
106 
GetOnNeutralSuccessId()107     const EventMarker& GetOnNeutralSuccessId() const
108     {
109         return onNeutralSuccessId_;
110     }
111 
GetAnimator()112     const RefPtr<Animator>& GetAnimator() const
113     {
114         return animator_;
115     }
116 
GetParentAnimator()117     const RefPtr<Animator>& GetParentAnimator() const
118     {
119         return parentAnimator_;
120     }
121 
SetComposedId(int32_t composedId)122     void SetComposedId(int32_t composedId)
123     {
124         composedId_ = composedId;
125     }
126 
GetComposedId()127     int32_t GetComposedId() const
128     {
129         return composedId_;
130     }
131 
132     // used for inspector node in PC preview
SetCustomDialogId(int32_t dialogId)133     void SetCustomDialogId(int32_t dialogId)
134     {
135         customDialogId_ = dialogId;
136     }
137 
138     // used for inspector node in PC preview
GetCustomDialogId()139     int32_t GetCustomDialogId()
140     {
141         return customDialogId_;
142     }
143 
SetDialogId(int32_t dialogId)144     void SetDialogId(int32_t dialogId)
145     {
146         dialogId_ = dialogId;
147     }
148 
GetDialogId()149     int32_t GetDialogId()
150     {
151         return dialogId_;
152     }
153 
SetData(const std::string & data)154     void SetData(const std::string& data)
155     {
156         data_ = data;
157     }
158 
GetData()159     const std::string& GetData() const
160     {
161         return data_;
162     }
163 
SetMargin(const Edge & edge)164     void SetMargin(const Edge& edge)
165     {
166         margin_ = edge;
167         isSetMargin_ = true;
168     }
169 
GetMargin()170     const Edge& GetMargin() const
171     {
172         return margin_;
173     }
174 
SetDialogLimit(bool flag)175     void SetDialogLimit(bool flag)
176     {
177         isLimit_ = flag;
178     }
179 
GetDialogLimit()180     bool GetDialogLimit() const
181     {
182         return isLimit_;
183     }
184 
IsSetMargin()185     bool IsSetMargin() const
186     {
187         return isSetMargin_;
188     }
189 
SetDragable(bool dragable)190     void SetDragable(bool dragable)
191     {
192         isDragable_ = dragable;
193     }
194 
IsDragable()195     bool IsDragable() const
196     {
197         return isDragable_;
198     }
199 
SetIsMenu(bool isMenu)200     void SetIsMenu(bool isMenu)
201     {
202         isMenu_ = isMenu;
203     }
204 
IsMenu()205     bool IsMenu() const
206     {
207         return isMenu_;
208     }
209 
SetMenuSuccessId(const std::vector<EventMarker> & menuSuccessId)210     void SetMenuSuccessId(const std::vector<EventMarker>& menuSuccessId)
211     {
212         menuSuccessId_ = menuSuccessId;
213     }
214 
GetMenuSuccessId()215     std::vector<EventMarker>& GetMenuSuccessId()
216     {
217         return menuSuccessId_;
218     }
219 
SetOnStatusChanged(const std::function<void (bool)> & onStatusChanged)220     void SetOnStatusChanged(const std::function<void(bool)>& onStatusChanged)
221     {
222         onStatusChanged_ = onStatusChanged;
223     }
224 
GetOnStatusChanged()225     const std::function<void(bool)>& GetOnStatusChanged() const
226     {
227         return onStatusChanged_;
228     }
229 
SetAlignment(DialogAlignment alignment)230     void SetAlignment(DialogAlignment alignment)
231     {
232         alignment_ = alignment;
233     }
234 
GetAlignment()235     DialogAlignment GetAlignment() const
236     {
237         return alignment_;
238     }
239 
SetOffset(const DimensionOffset & offset)240     void SetOffset(const DimensionOffset& offset)
241     {
242         offset_ = offset;
243     }
244 
GetOffset()245     const DimensionOffset& GetOffset() const
246     {
247         return offset_;
248     }
249 
SetGridCount(int32_t gridCount)250     void SetGridCount(int32_t gridCount)
251     {
252         gridCount_ = gridCount;
253     }
254 
GetGridCount()255     int32_t GetGridCount() const
256     {
257         return gridCount_;
258     }
259 
260 private:
261     bool autoCancel_ = true;
262     RefPtr<Animator> animator_;
263     RefPtr<Animator> parentAnimator_;
264     EventMarker onSuccessId_;
265     EventMarker onCancelId_;
266     EventMarker onCompleteId_;
267     EventMarker onPositiveSuccessId_;
268     EventMarker onNegativeSuccessId_;
269     EventMarker onNeutralSuccessId_;
270     std::vector<EventMarker> menuSuccessId_;
271     int32_t composedId_ = 0;
272     // used for inspector node in PC preview
273     int32_t customDialogId_ = -1;
274     // Used when pop dialog.
275     int32_t dialogId_ = -1;
276     int32_t gridCount_ = 0;
277     std::string data_;
278     std::function<void(bool)> onStatusChanged_;
279 
280     // Alignment and offset can control the position of dialog.
281     DialogAlignment alignment_ = DialogAlignment::DEFAULT;
282     DimensionOffset offset_;
283 
284     Edge margin_;
285     bool isSetMargin_ = false;
286     bool isLimit_ = true;
287     bool isMenu_ = false;
288     bool isDragable_ = false;
289 };
290 
291 } // namespace OHOS::Ace
292 
293 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DIALOG_TWEEN_DIALOG_TWEEN_COMPONENT_H
294