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/form_component_modifier.h"
17
18 #include "core/components/common/layout/constants.h"
19 #include "core/components_ng/base/frame_node.h"
20 #include "core/components_ng/pattern/form/form_model_ng.h"
21 #include "core/pipeline/base/element_register.h"
22 #include "base/geometry/dimension.h"
23
24 namespace OHOS::Ace::NG {
25 const int32_t DEFAULT_VISIBILITY = 0;
26 const int32_t DEFAULT_FORM_DIM = 1;
27 const bool DEFAULT_ALLOW_UPDATE = true;
SetFormVisibility(ArkUINodeHandle node,ArkUI_Int32 visible)28 void SetFormVisibility(ArkUINodeHandle node, ArkUI_Int32 visible)
29 {
30 auto* frameNode = reinterpret_cast<FrameNode*>(node);
31 CHECK_NULL_VOID(frameNode);
32 VisibleType visibility = static_cast<VisibleType>(visible);
33 FormModelNG::SetVisibility(frameNode, visibility);
34 }
35
AllowUpdate(ArkUINodeHandle node,ArkUI_Bool value)36 void AllowUpdate(ArkUINodeHandle node, ArkUI_Bool value)
37 {
38 auto* frameNode = reinterpret_cast<FrameNode*>(node);
39 CHECK_NULL_VOID(frameNode);
40 FormModelNG::AllowUpdate(frameNode, value);
41 }
42
SetDimension(ArkUINodeHandle node,ArkUI_Int32 dimension)43 void SetDimension(ArkUINodeHandle node, ArkUI_Int32 dimension)
44 {
45 auto* frameNode = reinterpret_cast<FrameNode*>(node);
46 CHECK_NULL_VOID(frameNode);
47 FormModelNG::SetDimension(frameNode, dimension);
48 }
49
SetModuleName(ArkUINodeHandle node,const char * value)50 void SetModuleName(ArkUINodeHandle node, const char* value)
51 {
52 auto* frameNode = reinterpret_cast<FrameNode*>(node);
53 CHECK_NULL_VOID(frameNode);
54 std::string moduleName(value);
55 FormModelNG::SetModuleName(frameNode, moduleName);
56 }
57
SetFormSize(ArkUINodeHandle node,ArkUI_Float32 widthValue,ArkUI_Int32 widthUnit,ArkUI_Float32 heightValue,ArkUI_Int32 heightUnit)58 void SetFormSize(ArkUINodeHandle node, ArkUI_Float32 widthValue, ArkUI_Int32 widthUnit,
59 ArkUI_Float32 heightValue, ArkUI_Int32 heightUnit)
60 {
61 auto* frameNode = reinterpret_cast<FrameNode*>(node);
62 CHECK_NULL_VOID(frameNode);
63 FormModelNG::SetSize(frameNode,
64 Dimension(widthValue, static_cast<OHOS::Ace::DimensionUnit>(widthUnit)),
65 Dimension(heightValue, static_cast<OHOS::Ace::DimensionUnit>(heightUnit)));
66 }
67
ResetFormVisibility(ArkUINodeHandle node)68 void ResetFormVisibility(ArkUINodeHandle node)
69 {
70 auto* frameNode = reinterpret_cast<FrameNode*>(node);
71 CHECK_NULL_VOID(frameNode);
72 VisibleType visibility = static_cast<VisibleType>(DEFAULT_VISIBILITY);
73 FormModelNG::SetVisibility(frameNode, visibility);
74 }
75
DisallowUpdate(ArkUINodeHandle node)76 void DisallowUpdate(ArkUINodeHandle node)
77 {
78 auto* frameNode = reinterpret_cast<FrameNode*>(node);
79 CHECK_NULL_VOID(frameNode);
80 FormModelNG::AllowUpdate(frameNode, DEFAULT_ALLOW_UPDATE);
81 }
82
ResetDimension(ArkUINodeHandle node)83 void ResetDimension(ArkUINodeHandle node)
84 {
85 auto* frameNode = reinterpret_cast<FrameNode*>(node);
86 CHECK_NULL_VOID(frameNode);
87 FormModelNG::SetDimension(frameNode, DEFAULT_FORM_DIM);
88 }
89
ResetModuleName(ArkUINodeHandle node)90 void ResetModuleName(ArkUINodeHandle node) {}
91
ResetFormSize(ArkUINodeHandle node)92 void ResetFormSize(ArkUINodeHandle node)
93 {
94 auto* frameNode = reinterpret_cast<FrameNode*>(node);
95 CHECK_NULL_VOID(frameNode);
96 Dimension width = 0.0_vp;
97 Dimension height = 0.0_vp;
98 FormModelNG::SetSize(frameNode, width, height);
99 }
100
101 namespace NodeModifier {
GetFormComponentModifier()102 const ArkUIFormComponentModifier* GetFormComponentModifier()
103 {
104 static const ArkUIFormComponentModifier modifier = { SetFormVisibility, AllowUpdate, SetDimension,
105 SetModuleName, SetFormSize, ResetFormVisibility, DisallowUpdate, ResetDimension, ResetModuleName,
106 ResetFormSize };
107
108 return &modifier;
109 }
110
GetCJUIFormComponentModifier()111 const CJUIFormComponentModifier* GetCJUIFormComponentModifier()
112 {
113 static const CJUIFormComponentModifier modifier = { SetFormVisibility, AllowUpdate, SetDimension,
114 SetModuleName, SetFormSize, ResetFormVisibility, DisallowUpdate, ResetDimension, ResetModuleName,
115 ResetFormSize };
116
117 return &modifier;
118 }
119 }
120 } // namespace OHOS::Ace::NG