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
203 namespace NodeModifier {
GetPatternLockModifier()204 const ArkUIPatternLockModifier* GetPatternLockModifier()
205 {
206 static const ArkUIPatternLockModifier modifier = {
207 SetPatternLockActiveColor, ResetPatternLockActiveColor, SetPatternLockCircleRadius,
208 ResetPatternLockCircleRadius, SetPatternLockSelectedColor, ResetPatternLockSelectedColor,
209 SetPatternLockSideLength, ResetPatternLockSideLength, SetPatternLockAutoReset,
210 ResetPatternLockAutoReset, SetPatternLockPathStrokeWidth, ResetPatternLockPathStrokeWidth,
211 SetPatternLockRegularColor, ResetPatternLockRegularColor, SetPatternLockPathColor,
212 ResetPatternLockPathColor, SetPatternLockActiveCircleColor, ResetPatternLockActiveCircleColor,
213 SetPatternLockActiveCircleRadius, ResetPatternLockActiveCircleRadius, SetPatternLockEnableWaveEffect,
214 ResetPatternLockEnableWaveEffect
215 };
216 return &modifier;
217 }
218
GetCJUIPatternLockModifier()219 const CJUIPatternLockModifier* GetCJUIPatternLockModifier()
220 {
221 static const CJUIPatternLockModifier modifier = {
222 SetPatternLockActiveColor, ResetPatternLockActiveColor, SetPatternLockCircleRadius,
223 ResetPatternLockCircleRadius, SetPatternLockSelectedColor, ResetPatternLockSelectedColor,
224 SetPatternLockSideLength, ResetPatternLockSideLength, SetPatternLockAutoReset,
225 ResetPatternLockAutoReset, SetPatternLockPathStrokeWidth, ResetPatternLockPathStrokeWidth,
226 SetPatternLockRegularColor, ResetPatternLockRegularColor, SetPatternLockPathColor,
227 ResetPatternLockPathColor, SetPatternLockActiveCircleColor, ResetPatternLockActiveCircleColor,
228 SetPatternLockActiveCircleRadius, ResetPatternLockActiveCircleRadius, SetPatternLockEnableWaveEffect,
229 ResetPatternLockEnableWaveEffect
230 };
231 return &modifier;
232 }
233 }
234 } // namespace OHOS::Ace::NG