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/api.h"
16 #include "bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_grid_item_bridge.h"
17
18 namespace OHOS::Ace::NG {
19 constexpr int32_t NUM_0 = 0;
20 constexpr int32_t NUM_1 = 1;
21
SetGridItemSelectable(ArkUIRuntimeCallInfo * runtimeCallInfo)22 ArkUINativeModuleValue GridItemBridge::SetGridItemSelectable(ArkUIRuntimeCallInfo *runtimeCallInfo)
23 {
24 EcmaVM* vm = runtimeCallInfo->GetVM();
25 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
26 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
27 Local<JSValueRef> selectabledArg = runtimeCallInfo->GetCallArgRef(NUM_1); // selectabled value
28 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
29 if (selectabledArg->IsBoolean()) {
30 bool selectable = selectabledArg->ToBoolean(vm)->Value();
31 GetArkUIInternalNodeAPI()->GetGridItemModifier().SetGridItemSelectable(nativeNode, selectable);
32 } else {
33 GetArkUIInternalNodeAPI()->GetGridItemModifier().ResetGridItemSelectable(nativeNode);
34 }
35 return panda::JSValueRef::Undefined(vm);
36 }
37
ResetGridItemSelectable(ArkUIRuntimeCallInfo * runtimeCallInfo)38 ArkUINativeModuleValue GridItemBridge::ResetGridItemSelectable(ArkUIRuntimeCallInfo *runtimeCallInfo)
39 {
40 EcmaVM *vm = runtimeCallInfo->GetVM();
41 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
42 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
43 void *nativeNode = firstArg->ToNativePointer(vm)->Value();
44 GetArkUIInternalNodeAPI()->GetGridItemModifier().ResetGridItemSelectable(nativeNode);
45 return panda::JSValueRef::Undefined(vm);
46 }
47
SetGridItemSelected(ArkUIRuntimeCallInfo * runtimeCallInfo)48 ArkUINativeModuleValue GridItemBridge::SetGridItemSelected(ArkUIRuntimeCallInfo* runtimeCallInfo)
49 {
50 EcmaVM* vm = runtimeCallInfo->GetVM();
51 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
52 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
53 Local<JSValueRef> selectedArg = runtimeCallInfo->GetCallArgRef(NUM_1); // selected value
54 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
55 if (selectedArg->IsBoolean()) {
56 bool selected = selectedArg->ToBoolean(vm)->Value();
57 GetArkUIInternalNodeAPI()->GetGridItemModifier().SetGridItemSelected(nativeNode, selected);
58 } else {
59 GetArkUIInternalNodeAPI()->GetGridItemModifier().ResetGridItemSelected(nativeNode);
60 }
61
62 return panda::JSValueRef::Undefined(vm);
63 }
ResetGridItemSelected(ArkUIRuntimeCallInfo * runtimeCallInfo)64 ArkUINativeModuleValue GridItemBridge::ResetGridItemSelected(ArkUIRuntimeCallInfo* runtimeCallInfo)
65 {
66 EcmaVM *vm = runtimeCallInfo->GetVM();
67 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
68 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
69 void *nativeNode = firstArg->ToNativePointer(vm)->Value();
70 GetArkUIInternalNodeAPI()->GetGridItemModifier().ResetGridItemSelected(nativeNode);
71 return panda::JSValueRef::Undefined(vm);
72 }
73
SetGridItemRowStart(ArkUIRuntimeCallInfo * runtimeCallInfo)74 ArkUINativeModuleValue GridItemBridge::SetGridItemRowStart(ArkUIRuntimeCallInfo* runtimeCallInfo)
75 {
76 EcmaVM* vm = runtimeCallInfo->GetVM();
77 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
78 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
79 Local<JSValueRef> rowStartArg = runtimeCallInfo->GetCallArgRef(NUM_1); // rowStart value
80 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
81 if (rowStartArg->IsNumber()) {
82 int32_t stars = rowStartArg->Int32Value(vm);
83 GetArkUIInternalNodeAPI()->GetGridItemModifier().SetGridItemRowStart(nativeNode, stars);
84 } else {
85 GetArkUIInternalNodeAPI()->GetGridItemModifier().ResetGridItemRowStart(nativeNode);
86 }
87 return panda::JSValueRef::Undefined(vm);
88 }
89
ResetGridItemRowStart(ArkUIRuntimeCallInfo * runtimeCallInfo)90 ArkUINativeModuleValue GridItemBridge::ResetGridItemRowStart(ArkUIRuntimeCallInfo* runtimeCallInfo)
91 {
92 EcmaVM* vm = runtimeCallInfo->GetVM();
93 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
94 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
95 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
96 GetArkUIInternalNodeAPI()->GetGridItemModifier().ResetGridItemRowStart(nativeNode);
97 return panda::JSValueRef::Undefined(vm);
98 }
99
SetGridItemRowEnd(ArkUIRuntimeCallInfo * runtimeCallInfo)100 ArkUINativeModuleValue GridItemBridge::SetGridItemRowEnd(ArkUIRuntimeCallInfo* runtimeCallInfo)
101 {
102 EcmaVM* vm = runtimeCallInfo->GetVM();
103 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
104 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
105 Local<JSValueRef> rowEndArg = runtimeCallInfo->GetCallArgRef(NUM_1); // rowEnd value
106 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
107 if (rowEndArg->IsNumber()) {
108 int32_t end = rowEndArg->Int32Value(vm);
109 GetArkUIInternalNodeAPI()->GetGridItemModifier().SetGridItemRowEnd(nativeNode, end);
110 } else {
111 GetArkUIInternalNodeAPI()->GetGridItemModifier().ResetGridItemRowEnd(nativeNode);
112 }
113 return panda::JSValueRef::Undefined(vm);
114 }
115
ResetGridItemRowEnd(ArkUIRuntimeCallInfo * runtimeCallInfo)116 ArkUINativeModuleValue GridItemBridge::ResetGridItemRowEnd(ArkUIRuntimeCallInfo* runtimeCallInfo)
117 {
118 EcmaVM* vm = runtimeCallInfo->GetVM();
119 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
120 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
121 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
122 GetArkUIInternalNodeAPI()->GetGridItemModifier().ResetGridItemRowEnd(nativeNode);
123 return panda::JSValueRef::Undefined(vm);
124 }
125
SetGridItemColumnStart(ArkUIRuntimeCallInfo * runtimeCallInfo)126 ArkUINativeModuleValue GridItemBridge::SetGridItemColumnStart(ArkUIRuntimeCallInfo* runtimeCallInfo)
127 {
128 EcmaVM* vm = runtimeCallInfo->GetVM();
129 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
130 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
131 Local<JSValueRef> columnStartArg = runtimeCallInfo->GetCallArgRef(NUM_1); // columnStart value
132 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
133 if (columnStartArg->IsNumber()) {
134 int32_t stars = columnStartArg->Int32Value(vm);
135 GetArkUIInternalNodeAPI()->GetGridItemModifier().SetGridItemColumnStart(nativeNode, stars);
136 } else {
137 GetArkUIInternalNodeAPI()->GetGridItemModifier().ResetGridItemColumnStart(nativeNode);
138 }
139 return panda::JSValueRef::Undefined(vm);
140 }
141
ResetGridItemColumnStart(ArkUIRuntimeCallInfo * runtimeCallInfo)142 ArkUINativeModuleValue GridItemBridge::ResetGridItemColumnStart(ArkUIRuntimeCallInfo* runtimeCallInfo)
143 {
144 EcmaVM* vm = runtimeCallInfo->GetVM();
145 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
146 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
147 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
148 GetArkUIInternalNodeAPI()->GetGridItemModifier().ResetGridItemColumnStart(nativeNode);
149 return panda::JSValueRef::Undefined(vm);
150 }
151
SetGridItemColumnEnd(ArkUIRuntimeCallInfo * runtimeCallInfo)152 ArkUINativeModuleValue GridItemBridge::SetGridItemColumnEnd(ArkUIRuntimeCallInfo* runtimeCallInfo)
153 {
154 EcmaVM* vm = runtimeCallInfo->GetVM();
155 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
156 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
157 Local<JSValueRef> columnEndArg = runtimeCallInfo->GetCallArgRef(NUM_1); // columnEnd value
158 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
159 if (columnEndArg->IsNumber()) {
160 int32_t columnEnd = columnEndArg->Int32Value(vm);
161 GetArkUIInternalNodeAPI()->GetGridItemModifier().SetGridItemColumnEnd(nativeNode, columnEnd);
162 } else {
163 GetArkUIInternalNodeAPI()->GetGridItemModifier().ResetGridItemColumnEnd(nativeNode);
164 }
165 return panda::JSValueRef::Undefined(vm);
166 }
167
ResetGridItemColumnEnd(ArkUIRuntimeCallInfo * runtimeCallInfo)168 ArkUINativeModuleValue GridItemBridge::ResetGridItemColumnEnd(ArkUIRuntimeCallInfo* runtimeCallInfo)
169 {
170 EcmaVM* vm = runtimeCallInfo->GetVM();
171 CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
172 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(NUM_0);
173 void* nativeNode = firstArg->ToNativePointer(vm)->Value();
174 GetArkUIInternalNodeAPI()->GetGridItemModifier().ResetGridItemColumnEnd(nativeNode);
175 return panda::JSValueRef::Undefined(vm);
176 }
177
178 } // namespace OHOS::Ace::NG