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 #include "core/interfaces/native/node/panel_modifier.h"
16 #include "core/pipeline/base/element_register.h"
17 #include "core/components_ng/base/frame_node.h"
18 #include "core/components_ng/pattern/panel/sliding_panel_model_ng.h"
19 #include "core/components/common/layout/constants.h"
20
21 namespace OHOS::Ace::NG {
22 constexpr int32_t DEFAULT_PANEL_MODE = 1;
23 constexpr double DEFAULT_HEIGHT = 48;
24 constexpr uint32_t DEFAULT_PANEL_BACKGROUND_COLOR = 0x08182431;
25 constexpr int32_t DEFAULT_PANEL_TYPE = 1;
26 constexpr double DEFAULT_CUSTOM_HEIGHT = 0;
27
SetPanelMode(ArkUINodeHandle node,int32_t value)28 void SetPanelMode(ArkUINodeHandle node, int32_t value)
29 {
30 auto* frameNode = reinterpret_cast<FrameNode*>(node);
31 CHECK_NULL_VOID(frameNode);
32 auto mode = static_cast<PanelMode>(value);
33 SlidingPanelModelNG::SetPanelMode(frameNode, mode);
34 }
35
ResetPanelMode(ArkUINodeHandle node)36 void ResetPanelMode(ArkUINodeHandle node)
37 {
38 auto* frameNode = reinterpret_cast<FrameNode*>(node);
39 CHECK_NULL_VOID(frameNode);
40 auto mode = static_cast<PanelMode>(DEFAULT_PANEL_MODE);
41 SlidingPanelModelNG::SetPanelMode(frameNode, mode);
42 }
43
SetPanelFullHeight(ArkUINodeHandle node,ArkUI_Float32 value,int unit)44 void SetPanelFullHeight(ArkUINodeHandle node, ArkUI_Float32 value, int unit)
45 {
46 auto* frameNode = reinterpret_cast<FrameNode*>(node);
47 CHECK_NULL_VOID(frameNode);
48 SlidingPanelModelNG::SetPanelFullHeight(frameNode, Dimension(value, static_cast<OHOS::Ace::DimensionUnit>(unit)));
49 }
ResetPanelFullHeight(ArkUINodeHandle node)50 void ResetPanelFullHeight(ArkUINodeHandle node)
51 {
52 auto* frameNode = reinterpret_cast<FrameNode*>(node);
53 CHECK_NULL_VOID(frameNode);
54 SlidingPanelModelNG::ResetPanelFullHeight(frameNode);
55 }
56
SetPanelHalfHeight(ArkUINodeHandle node,ArkUI_Float32 value,int unit)57 void SetPanelHalfHeight(ArkUINodeHandle node, ArkUI_Float32 value, int unit)
58 {
59 auto* frameNode = reinterpret_cast<FrameNode*>(node);
60 CHECK_NULL_VOID(frameNode);
61 SlidingPanelModelNG::SetPanelHalfHeight(frameNode, Dimension(value, static_cast<OHOS::Ace::DimensionUnit>(unit)));
62 }
ResetPanelHalfHeight(ArkUINodeHandle node)63 void ResetPanelHalfHeight(ArkUINodeHandle node)
64 {
65 auto* frameNode = reinterpret_cast<FrameNode*>(node);
66 CHECK_NULL_VOID(frameNode);
67 SlidingPanelModelNG::ResetPanelHalfHeight(frameNode);
68 }
69
SetPanelMiniHeight(ArkUINodeHandle node,ArkUI_Float32 value,int unit)70 void SetPanelMiniHeight(ArkUINodeHandle node, ArkUI_Float32 value, int unit)
71 {
72 auto* frameNode = reinterpret_cast<FrameNode*>(node);
73 CHECK_NULL_VOID(frameNode);
74 SlidingPanelModelNG::SetPanelMiniHeight(frameNode, Dimension(value, static_cast<OHOS::Ace::DimensionUnit>(unit)));
75 }
76
ResetPanelMiniHeight(ArkUINodeHandle node)77 void ResetPanelMiniHeight(ArkUINodeHandle node)
78 {
79 auto* frameNode = reinterpret_cast<FrameNode*>(node);
80 CHECK_NULL_VOID(frameNode);
81 SlidingPanelModelNG::SetPanelMiniHeight(frameNode, Dimension(DEFAULT_HEIGHT, DimensionUnit::VP));
82 }
83
SetPanelBackgroundMask(ArkUINodeHandle node,uint32_t color)84 void SetPanelBackgroundMask(ArkUINodeHandle node, uint32_t color)
85 {
86 auto* frameNode = reinterpret_cast<FrameNode*>(node);
87 CHECK_NULL_VOID(frameNode);
88 SlidingPanelModelNG::SetPanelBackgroundMask(frameNode, Color(color));
89 }
90
ResetPanelBackgroundMask(ArkUINodeHandle node)91 void ResetPanelBackgroundMask(ArkUINodeHandle node)
92 {
93 auto* frameNode = reinterpret_cast<FrameNode*>(node);
94 CHECK_NULL_VOID(frameNode);
95 SlidingPanelModelNG::SetPanelBackgroundMask(frameNode, Color(DEFAULT_PANEL_BACKGROUND_COLOR));
96 }
97
SetPanelType(ArkUINodeHandle node,int32_t value)98 void SetPanelType(ArkUINodeHandle node, int32_t value)
99 {
100 auto* frameNode = reinterpret_cast<FrameNode*>(node);
101 CHECK_NULL_VOID(frameNode);
102 auto type = static_cast<PanelType>(value);
103 SlidingPanelModelNG::SetPanelType(frameNode, type);
104 }
105
ResetPanelType(ArkUINodeHandle node)106 void ResetPanelType(ArkUINodeHandle node)
107 {
108 auto* frameNode = reinterpret_cast<FrameNode*>(node);
109 CHECK_NULL_VOID(frameNode);
110 auto type = static_cast<PanelType>(DEFAULT_PANEL_TYPE);
111 SlidingPanelModelNG::SetPanelType(frameNode, type);
112 }
113
SetPanelCustomHeight(ArkUINodeHandle node,ArkUI_Float32 value,int unit)114 void SetPanelCustomHeight(ArkUINodeHandle node, ArkUI_Float32 value, int unit)
115 {
116 auto* frameNode = reinterpret_cast<FrameNode*>(node);
117 CHECK_NULL_VOID(frameNode);
118 SlidingPanelModelNG::SetPanelCustomHeight(
119 frameNode, CalcDimension(value, static_cast<OHOS::Ace::DimensionUnit>(unit)));
120 }
121
SetPanelCustomHeightByString(ArkUINodeHandle node,const char * value)122 void SetPanelCustomHeightByString(ArkUINodeHandle node, const char* value)
123 {
124 auto* frameNode = reinterpret_cast<FrameNode*>(node);
125 CHECK_NULL_VOID(frameNode);
126 SlidingPanelModelNG::SetPanelCustomHeight(frameNode, CalcDimension(value));
127 }
128
ResetPanelCustomHeight(ArkUINodeHandle node)129 void ResetPanelCustomHeight(ArkUINodeHandle node)
130 {
131 auto* frameNode = reinterpret_cast<FrameNode*>(node);
132 CHECK_NULL_VOID(frameNode);
133 SlidingPanelModelNG::SetPanelCustomHeight(frameNode, CalcDimension(DEFAULT_CUSTOM_HEIGHT));
134 }
135
SetShowCloseIcon(ArkUINodeHandle node,ArkUI_Bool value)136 void SetShowCloseIcon(ArkUINodeHandle node, ArkUI_Bool value)
137 {
138 auto* frameNode = reinterpret_cast<FrameNode*>(node);
139 CHECK_NULL_VOID(frameNode);
140 SlidingPanelModelNG::SetShowCloseIcon(frameNode, value);
141 }
142
ResetShowCloseIcon(ArkUINodeHandle node)143 void ResetShowCloseIcon(ArkUINodeHandle node)
144 {
145 auto* frameNode = reinterpret_cast<FrameNode*>(node);
146 CHECK_NULL_VOID(frameNode);
147 SlidingPanelModelNG::SetShowCloseIcon(frameNode, false);
148 }
149
SetDragBar(ArkUINodeHandle node,ArkUI_Bool value)150 void SetDragBar(ArkUINodeHandle node, ArkUI_Bool value)
151 {
152 auto* frameNode = reinterpret_cast<FrameNode*>(node);
153 CHECK_NULL_VOID(frameNode);
154 SlidingPanelModelNG::SetHasDragBar(frameNode, value);
155 }
156
ResetDragBar(ArkUINodeHandle node)157 void ResetDragBar(ArkUINodeHandle node)
158 {
159 auto* frameNode = reinterpret_cast<FrameNode*>(node);
160 CHECK_NULL_VOID(frameNode);
161 SlidingPanelModelNG::SetHasDragBar(frameNode, true);
162 }
163
SetShow(ArkUINodeHandle node,ArkUI_Bool value)164 void SetShow(ArkUINodeHandle node, ArkUI_Bool value)
165 {
166 auto* frameNode = reinterpret_cast<FrameNode*>(node);
167 CHECK_NULL_VOID(frameNode);
168 SlidingPanelModelNG::SetIsShow(frameNode, value);
169 }
170
ResetShow(ArkUINodeHandle node)171 void ResetShow(ArkUINodeHandle node)
172 {
173 auto* frameNode = reinterpret_cast<FrameNode*>(node);
174 CHECK_NULL_VOID(frameNode);
175 SlidingPanelModelNG::SetIsShow(frameNode, true);
176 }
177
178 namespace NodeModifier {
GetPanelModifier()179 const ArkUIPanelModifier* GetPanelModifier()
180 {
181 static const ArkUIPanelModifier modifier = { SetPanelMode, ResetPanelMode, SetPanelFullHeight,
182 ResetPanelFullHeight, SetPanelHalfHeight, ResetPanelHalfHeight, SetPanelMiniHeight, ResetPanelMiniHeight,
183 SetPanelBackgroundMask, ResetPanelBackgroundMask, SetPanelType, ResetPanelType, SetPanelCustomHeight,
184 SetPanelCustomHeightByString, ResetPanelCustomHeight, SetShowCloseIcon, ResetShowCloseIcon, SetDragBar,
185 ResetDragBar, SetShow, ResetShow };
186
187 return &modifier;
188 }
189
GetCJUIPanelModifier()190 const CJUIPanelModifier* GetCJUIPanelModifier()
191 {
192 static const CJUIPanelModifier modifier = { SetPanelMode, ResetPanelMode, SetPanelFullHeight,
193 ResetPanelFullHeight, SetPanelHalfHeight, ResetPanelHalfHeight, SetPanelMiniHeight, ResetPanelMiniHeight,
194 SetPanelBackgroundMask, ResetPanelBackgroundMask, SetPanelType, ResetPanelType, SetPanelCustomHeight,
195 SetPanelCustomHeightByString, ResetPanelCustomHeight, SetShowCloseIcon, ResetShowCloseIcon, SetDragBar,
196 ResetDragBar, SetShow, ResetShow };
197
198 return &modifier;
199 }
200 }
201 } // namespace OHOS::Ace::NG