1 /*
2 * Copyright (c) 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 #include "core/interfaces/native/node/pattern_lock_modifier.h"
17 #include "core/components_v2/pattern_lock/pattern_lock_theme.h"
18 #include "core/components/common/layout/constants.h"
19 #include "core/components/common/properties/alignment.h"
20 #include "core/components_ng/base/frame_node.h"
21 #include "core/components_ng/base/view_abstract.h"
22 #include "core/components_ng/pattern/patternlock/patternlock_model_ng.h"
23 #include "core/pipeline/base/element_register.h"
24 namespace OHOS::Ace::NG {
SetPatternLockActiveColor(ArkUINodeHandle node,uint32_t value)25 void SetPatternLockActiveColor(ArkUINodeHandle node, uint32_t value)
26 {
27 auto *frameNode = reinterpret_cast<FrameNode*>(node);
28 CHECK_NULL_VOID(frameNode);
29 PatternLockModelNG::SetActiveColor(frameNode, Color(value));
30 }
31
ResetPatternLockActiveColor(ArkUINodeHandle node)32 void ResetPatternLockActiveColor(ArkUINodeHandle node)
33 {
34 auto *frameNode = reinterpret_cast<FrameNode*>(node);
35 CHECK_NULL_VOID(frameNode);
36 auto patternLockTheme = GetTheme<V2::PatternLockTheme>();
37 CHECK_NULL_VOID(patternLockTheme);
38 Color activeColor = patternLockTheme->GetActiveColor();
39 PatternLockModelNG::SetActiveColor(frameNode, activeColor);
40 }
41
ResetPatternLockCircleRadius(ArkUINodeHandle node)42 void ResetPatternLockCircleRadius(ArkUINodeHandle node)
43 {
44 auto *frameNode = reinterpret_cast<FrameNode*>(node);
45 CHECK_NULL_VOID(frameNode);
46 auto patternLockTheme = GetTheme<V2::PatternLockTheme>();
47 CHECK_NULL_VOID(patternLockTheme);
48 CalcDimension radius = patternLockTheme->GetCircleRadius();
49 PatternLockModelNG::SetCircleRadius(frameNode, Dimension(radius.Value(), radius.Unit()));
50 }
51
SetPatternLockCircleRadius(ArkUINodeHandle node,ArkUI_Float32 number,ArkUI_Int32 unit)52 void SetPatternLockCircleRadius(ArkUINodeHandle node, ArkUI_Float32 number, ArkUI_Int32 unit)
53 {
54 auto *frameNode = reinterpret_cast<FrameNode*>(node);
55 CHECK_NULL_VOID(frameNode);
56 PatternLockModelNG::SetCircleRadius(frameNode, Dimension(number, static_cast<DimensionUnit>(unit)));
57 }
58
SetPatternLockSelectedColor(ArkUINodeHandle node,uint32_t value)59 void SetPatternLockSelectedColor(ArkUINodeHandle node, uint32_t value)
60 {
61 auto *frameNode = reinterpret_cast<FrameNode*>(node);
62 CHECK_NULL_VOID(frameNode);
63 PatternLockModelNG::SetSelectedColor(frameNode, Color(value));
64 }
65
ResetPatternLockSelectedColor(ArkUINodeHandle node)66 void ResetPatternLockSelectedColor(ArkUINodeHandle node)
67 {
68 auto *frameNode = reinterpret_cast<FrameNode*>(node);
69 CHECK_NULL_VOID(frameNode);
70 auto patternLockTheme = GetTheme<V2::PatternLockTheme>();
71 CHECK_NULL_VOID(patternLockTheme);
72 Color selectedColor = patternLockTheme->GetSelectedColor();
73 PatternLockModelNG::SetSelectedColor(frameNode, selectedColor);
74 }
75
SetPatternLockSideLength(ArkUINodeHandle node,ArkUI_Float32 number,ArkUI_Int32 unit)76 void SetPatternLockSideLength(ArkUINodeHandle node, ArkUI_Float32 number, ArkUI_Int32 unit)
77 {
78 auto *frameNode = reinterpret_cast<FrameNode*>(node);
79 CHECK_NULL_VOID(frameNode);
80 PatternLockModelNG::SetSideLength(frameNode, Dimension(number, static_cast<DimensionUnit>(unit)));
81 }
82
ResetPatternLockSideLength(ArkUINodeHandle node)83 void ResetPatternLockSideLength(ArkUINodeHandle node)
84 {
85 auto *frameNode = reinterpret_cast<FrameNode*>(node);
86 CHECK_NULL_VOID(frameNode);
87 auto patternLockTheme = GetTheme<V2::PatternLockTheme>();
88 CHECK_NULL_VOID(patternLockTheme);
89 CalcDimension sideLength = patternLockTheme->GetSideLength();
90 PatternLockModelNG::SetSideLength(frameNode, Dimension(sideLength.Value(), sideLength.Unit()));
91 }
92
SetPatternLockAutoReset(ArkUINodeHandle node,uint32_t value)93 void SetPatternLockAutoReset(ArkUINodeHandle node, uint32_t value)
94 {
95 auto *frameNode = reinterpret_cast<FrameNode*>(node);
96 CHECK_NULL_VOID(frameNode);
97 PatternLockModelNG::SetAutoReset(frameNode, static_cast<bool>(value));
98 }
99
ResetPatternLockAutoReset(ArkUINodeHandle node)100 void ResetPatternLockAutoReset(ArkUINodeHandle node)
101 {
102 auto *frameNode = reinterpret_cast<FrameNode*>(node);
103 CHECK_NULL_VOID(frameNode);
104 PatternLockModelNG::SetAutoReset(frameNode, true);
105 }
106
SetPatternLockPathStrokeWidth(ArkUINodeHandle node,ArkUI_Float32 number,ArkUI_Int32 unit)107 void SetPatternLockPathStrokeWidth(ArkUINodeHandle node, ArkUI_Float32 number, ArkUI_Int32 unit)
108 {
109 auto *frameNode = reinterpret_cast<FrameNode*>(node);
110 CHECK_NULL_VOID(frameNode);
111 PatternLockModelNG::SetStrokeWidth(frameNode, Dimension(number, static_cast<DimensionUnit>(unit)));
112 }
113
ResetPatternLockPathStrokeWidth(ArkUINodeHandle node)114 void ResetPatternLockPathStrokeWidth(ArkUINodeHandle node)
115 {
116 auto *frameNode = reinterpret_cast<FrameNode*>(node);
117 CHECK_NULL_VOID(frameNode);
118 auto patternLockTheme = GetTheme<V2::PatternLockTheme>();
119 CHECK_NULL_VOID(patternLockTheme);
120 CalcDimension lineWidth = patternLockTheme->GetPathStrokeWidth();
121 PatternLockModelNG::SetStrokeWidth(frameNode, lineWidth);
122 }
123
SetPatternLockRegularColor(ArkUINodeHandle node,uint32_t color)124 void SetPatternLockRegularColor(ArkUINodeHandle node, uint32_t color)
125 {
126 auto *frameNode = reinterpret_cast<FrameNode*>(node);
127 CHECK_NULL_VOID(frameNode);
128 PatternLockModelNG::SetRegularColor(frameNode, Color(color));
129 }
130
ResetPatternLockRegularColor(ArkUINodeHandle node)131 void ResetPatternLockRegularColor(ArkUINodeHandle node)
132 {
133 auto *frameNode = reinterpret_cast<FrameNode*>(node);
134 CHECK_NULL_VOID(frameNode);
135 auto patternLockTheme = GetTheme<V2::PatternLockTheme>();
136 CHECK_NULL_VOID(patternLockTheme);
137 Color regularColor = patternLockTheme->GetRegularColor();
138 PatternLockModelNG::SetRegularColor(frameNode, regularColor);
139 }
140
SetPatternLockPathColor(ArkUINodeHandle node,uint32_t color)141 void SetPatternLockPathColor(ArkUINodeHandle node, uint32_t color)
142 {
143 auto *frameNode = reinterpret_cast<FrameNode*>(node);
144 CHECK_NULL_VOID(frameNode);
145 PatternLockModelNG::SetPathColor(frameNode, Color(color));
146 }
147
ResetPatternLockPathColor(ArkUINodeHandle node)148 void ResetPatternLockPathColor(ArkUINodeHandle node)
149 {
150 auto *frameNode = reinterpret_cast<FrameNode*>(node);
151 CHECK_NULL_VOID(frameNode);
152 auto patternLockTheme = GetTheme<V2::PatternLockTheme>();
153 CHECK_NULL_VOID(patternLockTheme);
154 Color pathColor = patternLockTheme->GetPathColor();
155 PatternLockModelNG::SetPathColor(frameNode, pathColor);
156 }
157
SetPatternLockActiveCircleColor(ArkUINodeHandle node,uint32_t value)158 void SetPatternLockActiveCircleColor(ArkUINodeHandle node, uint32_t value)
159 {
160 auto *frameNode = reinterpret_cast<FrameNode*>(node);
161 CHECK_NULL_VOID(frameNode);
162 PatternLockModelNG::SetActiveCircleColor(frameNode, Color(value));
163 }
164
ResetPatternLockActiveCircleColor(ArkUINodeHandle node)165 void ResetPatternLockActiveCircleColor(ArkUINodeHandle node)
166 {
167 auto *frameNode = reinterpret_cast<FrameNode*>(node);
168 CHECK_NULL_VOID(frameNode);
169 PatternLockModelNG::SetActiveCircleColor(frameNode, Color::TRANSPARENT);
170 }
171
SetPatternLockActiveCircleRadius(ArkUINodeHandle node,ArkUI_Float32 number,ArkUI_Int32 unit)172 void SetPatternLockActiveCircleRadius(ArkUINodeHandle node, ArkUI_Float32 number, ArkUI_Int32 unit)
173 {
174 auto *frameNode = reinterpret_cast<FrameNode*>(node);
175 CHECK_NULL_VOID(frameNode);
176 PatternLockModelNG::SetActiveCircleRadius(frameNode, Dimension(number, static_cast<DimensionUnit>(unit)));
177 }
178
ResetPatternLockActiveCircleRadius(ArkUINodeHandle node)179 void ResetPatternLockActiveCircleRadius(ArkUINodeHandle node)
180 {
181 auto *frameNode = reinterpret_cast<FrameNode*>(node);
182 CHECK_NULL_VOID(frameNode);
183 auto patternLockTheme = GetTheme<V2::PatternLockTheme>();
184 CHECK_NULL_VOID(patternLockTheme);
185 CalcDimension radius = patternLockTheme->GetCircleRadius();
186 PatternLockModelNG::SetActiveCircleRadius(frameNode, Dimension(0.0f, DimensionUnit::VP));
187 }
188
SetPatternLockEnableWaveEffect(ArkUINodeHandle node,uint32_t value)189 void SetPatternLockEnableWaveEffect(ArkUINodeHandle node, uint32_t value)
190 {
191 auto *frameNode = reinterpret_cast<FrameNode*>(node);
192 CHECK_NULL_VOID(frameNode);
193 PatternLockModelNG::SetEnableWaveEffect(frameNode, static_cast<bool>(value));
194 }
195
ResetPatternLockEnableWaveEffect(ArkUINodeHandle node)196 void ResetPatternLockEnableWaveEffect(ArkUINodeHandle node)
197 {
198 auto *frameNode = reinterpret_cast<FrameNode*>(node);
199 CHECK_NULL_VOID(frameNode);
200 PatternLockModelNG::SetEnableWaveEffect(frameNode, true);
201 }
202
SetPatternLockEnableForeground(ArkUINodeHandle node,uint32_t value)203 void SetPatternLockEnableForeground(ArkUINodeHandle node, uint32_t value)
204 {
205 auto *frameNode = reinterpret_cast<FrameNode*>(node);
206 CHECK_NULL_VOID(frameNode);
207 PatternLockModelNG::SetEnableForeground(frameNode, static_cast<bool>(value));
208 }
209
ResetPatternLockEnableForeground(ArkUINodeHandle node)210 void ResetPatternLockEnableForeground(ArkUINodeHandle node)
211 {
212 auto *frameNode = reinterpret_cast<FrameNode*>(node);
213 CHECK_NULL_VOID(frameNode);
214 PatternLockModelNG::SetEnableForeground(frameNode, false);
215 }
216
SetPatternLockSkipUnselectedPoint(ArkUINodeHandle node,uint32_t value)217 void SetPatternLockSkipUnselectedPoint(ArkUINodeHandle node, uint32_t value)
218 {
219 auto *frameNode = reinterpret_cast<FrameNode*>(node);
220 CHECK_NULL_VOID(frameNode);
221 PatternLockModelNG::SetSkipUnselectedPoint(frameNode, static_cast<bool>(value));
222 }
223
ResetPatternLockSkipUnselectedPoint(ArkUINodeHandle node)224 void ResetPatternLockSkipUnselectedPoint(ArkUINodeHandle node)
225 {
226 auto *frameNode = reinterpret_cast<FrameNode*>(node);
227 CHECK_NULL_VOID(frameNode);
228 PatternLockModelNG::SetSkipUnselectedPoint(frameNode, false);
229 }
230
231 namespace NodeModifier {
GetPatternLockModifier()232 const ArkUIPatternLockModifier* GetPatternLockModifier()
233 {
234 static const ArkUIPatternLockModifier modifier = {
235 SetPatternLockActiveColor, ResetPatternLockActiveColor, SetPatternLockCircleRadius,
236 ResetPatternLockCircleRadius, SetPatternLockSelectedColor, ResetPatternLockSelectedColor,
237 SetPatternLockSideLength, ResetPatternLockSideLength, SetPatternLockAutoReset,
238 ResetPatternLockAutoReset, SetPatternLockPathStrokeWidth, ResetPatternLockPathStrokeWidth,
239 SetPatternLockRegularColor, ResetPatternLockRegularColor, SetPatternLockPathColor,
240 ResetPatternLockPathColor, SetPatternLockActiveCircleColor, ResetPatternLockActiveCircleColor,
241 SetPatternLockActiveCircleRadius, ResetPatternLockActiveCircleRadius, SetPatternLockEnableWaveEffect,
242 ResetPatternLockEnableWaveEffect, SetPatternLockEnableForeground, ResetPatternLockEnableForeground,
243 SetPatternLockSkipUnselectedPoint, ResetPatternLockSkipUnselectedPoint
244 };
245 return &modifier;
246 }
247
GetCJUIPatternLockModifier()248 const CJUIPatternLockModifier* GetCJUIPatternLockModifier()
249 {
250 static const CJUIPatternLockModifier modifier = {
251 SetPatternLockActiveColor, ResetPatternLockActiveColor, SetPatternLockCircleRadius,
252 ResetPatternLockCircleRadius, SetPatternLockSelectedColor, ResetPatternLockSelectedColor,
253 SetPatternLockSideLength, ResetPatternLockSideLength, SetPatternLockAutoReset,
254 ResetPatternLockAutoReset, SetPatternLockPathStrokeWidth, ResetPatternLockPathStrokeWidth,
255 SetPatternLockRegularColor, ResetPatternLockRegularColor, SetPatternLockPathColor,
256 ResetPatternLockPathColor, SetPatternLockActiveCircleColor, ResetPatternLockActiveCircleColor,
257 SetPatternLockActiveCircleRadius, ResetPatternLockActiveCircleRadius, SetPatternLockEnableWaveEffect,
258 ResetPatternLockEnableWaveEffect, SetPatternLockEnableForeground, ResetPatternLockEnableForeground,
259 SetPatternLockSkipUnselectedPoint, ResetPatternLockSkipUnselectedPoint
260 };
261 return &modifier;
262 }
263 }
264 } // namespace OHOS::Ace::NG