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