1 /*
2 * Copyright (c) 2023-2024 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/grid_item_modifier.h"
16
17 #include "core/components/common/layout/constants.h"
18 #include "core/components_ng/base/frame_node.h"
19 #include "core/components_ng/pattern/grid/grid_item_model_ng.h"
20 #include "core/components_ng/pattern/grid/grid_item_theme.h"
21 #include "core/pipeline/base/element_register.h"
22
23 namespace OHOS::Ace::NG {
24
25 constexpr int32_t DEFAULT_GRID_ITEM_VALUE = 0;
26
SetGridItemSelectable(ArkUINodeHandle node,ArkUI_Bool selectable)27 void SetGridItemSelectable(ArkUINodeHandle node, ArkUI_Bool selectable)
28 {
29 auto* frameNode = reinterpret_cast<FrameNode*>(node);
30 CHECK_NULL_VOID(frameNode);
31 GridItemModelNG::SetSelectable(frameNode, selectable);
32 }
33
ResetGridItemSelectable(ArkUINodeHandle node)34 void ResetGridItemSelectable(ArkUINodeHandle node)
35 {
36 auto* frameNode = reinterpret_cast<FrameNode*>(node);
37 CHECK_NULL_VOID(frameNode);
38 GridItemModelNG::SetSelectable(frameNode, true);
39 }
40
SetGridItemSelected(ArkUINodeHandle node,ArkUI_Bool selected)41 void SetGridItemSelected(ArkUINodeHandle node, ArkUI_Bool selected)
42 {
43 auto* frameNode = reinterpret_cast<FrameNode*>(node);
44 CHECK_NULL_VOID(frameNode);
45 GridItemModelNG::SetSelected(frameNode, selected);
46 }
47
ResetGridItemSelected(ArkUINodeHandle node)48 void ResetGridItemSelected(ArkUINodeHandle node)
49 {
50 auto* frameNode = reinterpret_cast<FrameNode*>(node);
51 CHECK_NULL_VOID(frameNode);
52 GridItemModelNG::SetSelected(frameNode, false);
53 }
54
SetGridItemRowStart(ArkUINodeHandle node,int32_t rowStart)55 void SetGridItemRowStart(ArkUINodeHandle node, int32_t rowStart)
56 {
57 auto* frameNode = reinterpret_cast<FrameNode*>(node);
58 CHECK_NULL_VOID(frameNode);
59 GridItemModelNG::SetRowStart(frameNode, rowStart);
60 }
61
ResetGridItemRowStart(ArkUINodeHandle node)62 void ResetGridItemRowStart(ArkUINodeHandle node)
63 {
64 auto* frameNode = reinterpret_cast<FrameNode*>(node);
65 CHECK_NULL_VOID(frameNode);
66 GridItemModelNG::SetRowStart(frameNode, DEFAULT_GRID_ITEM_VALUE);
67 }
68
SetGridItemRowEnd(ArkUINodeHandle node,int32_t rowEnd)69 void SetGridItemRowEnd(ArkUINodeHandle node, int32_t rowEnd)
70 {
71 auto* frameNode = reinterpret_cast<FrameNode*>(node);
72 CHECK_NULL_VOID(frameNode);
73 GridItemModelNG::SetRowEnd(frameNode, rowEnd);
74 }
75
ResetGridItemRowEnd(ArkUINodeHandle node)76 void ResetGridItemRowEnd(ArkUINodeHandle node)
77 {
78 auto* frameNode = reinterpret_cast<FrameNode*>(node);
79 CHECK_NULL_VOID(frameNode);
80 GridItemModelNG::SetRowEnd(frameNode, DEFAULT_GRID_ITEM_VALUE);
81 }
82
SetGridItemColumnStart(ArkUINodeHandle node,int32_t columnStart)83 void SetGridItemColumnStart(ArkUINodeHandle node, int32_t columnStart)
84 {
85 auto* frameNode = reinterpret_cast<FrameNode*>(node);
86 CHECK_NULL_VOID(frameNode);
87 GridItemModelNG::SetColumnStart(frameNode, columnStart);
88 }
89
ResetGridItemColumnStart(ArkUINodeHandle node)90 void ResetGridItemColumnStart(ArkUINodeHandle node)
91 {
92 auto* frameNode = reinterpret_cast<FrameNode*>(node);
93 CHECK_NULL_VOID(frameNode);
94 GridItemModelNG::SetColumnStart(frameNode, DEFAULT_GRID_ITEM_VALUE);
95 }
96
SetGridItemColumnEnd(ArkUINodeHandle node,int32_t columnEnd)97 void SetGridItemColumnEnd(ArkUINodeHandle node, int32_t columnEnd)
98 {
99 auto* frameNode = reinterpret_cast<FrameNode*>(node);
100 CHECK_NULL_VOID(frameNode);
101 GridItemModelNG::SetColumnEnd(frameNode, columnEnd);
102 }
103
ResetGridItemColumnEnd(ArkUINodeHandle node)104 void ResetGridItemColumnEnd(ArkUINodeHandle node)
105 {
106 auto* frameNode = reinterpret_cast<FrameNode*>(node);
107 CHECK_NULL_VOID(frameNode);
108 GridItemModelNG::SetColumnEnd(frameNode, DEFAULT_GRID_ITEM_VALUE);
109 }
110
SetGridItemOptions(ArkUINodeHandle node,ArkUI_Int32 style)111 void SetGridItemOptions(ArkUINodeHandle node, ArkUI_Int32 style)
112 {
113 auto* frameNode = reinterpret_cast<FrameNode*>(node);
114 CHECK_NULL_VOID(frameNode);
115 GridItemModelNG::SetGridItemStyle(frameNode, static_cast<GridItemStyle>(style));
116 }
117
118 namespace NodeModifier {
GetGridItemModifier()119 const ArkUIGridItemModifier* GetGridItemModifier()
120 {
121 static const ArkUIGridItemModifier modifier = { SetGridItemSelectable, ResetGridItemSelectable,
122 SetGridItemSelected, ResetGridItemSelected, SetGridItemRowStart, ResetGridItemRowStart,
123 SetGridItemRowEnd, ResetGridItemRowEnd, SetGridItemColumnStart, ResetGridItemColumnStart,
124 SetGridItemColumnEnd, ResetGridItemColumnEnd, SetGridItemOptions };
125 return &modifier;
126 }
127
GetCJUIGridItemModifier()128 const CJUIGridItemModifier* GetCJUIGridItemModifier()
129 {
130 static const CJUIGridItemModifier modifier = { SetGridItemSelectable, ResetGridItemSelectable,
131 SetGridItemSelected, ResetGridItemSelected, SetGridItemRowStart, ResetGridItemRowStart,
132 SetGridItemRowEnd, ResetGridItemRowEnd, SetGridItemColumnStart, ResetGridItemColumnStart,
133 SetGridItemColumnEnd, ResetGridItemColumnEnd };
134 return &modifier;
135 }
136 }
137 } // namespace OHOS::Ace::NG