• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_form_component_bridge.h"
17 
18 #include "core/interfaces/native/node/api.h"
19 #include "bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_common_bridge.h"
20 #include "bridge/declarative_frontend/engine/jsi/nativeModule/arkts_utils.h"
21 
22 namespace OHOS::Ace::NG {
SetVisibility(ArkUIRuntimeCallInfo * runtimeCallInfo)23 ArkUINativeModuleValue FormComponentBridge::SetVisibility(ArkUIRuntimeCallInfo* runtimeCallInfo)
24 {
25     EcmaVM* vm = runtimeCallInfo->GetVM();
26     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
27     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
28     Local<JSValueRef> visibilityArg = runtimeCallInfo->GetCallArgRef(1);
29     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
30     int32_t visibility = visibilityArg->Int32Value(vm);
31     GetArkUIInternalNodeAPI()->GetFormComponentModifier().SetFormVisibility(nativeNode, visibility);
32     return panda::JSValueRef::Undefined(vm);
33 }
34 
ResetVisibility(ArkUIRuntimeCallInfo * runtimeCallInfo)35 ArkUINativeModuleValue FormComponentBridge::ResetVisibility(ArkUIRuntimeCallInfo* runtimeCallInfo)
36 {
37     EcmaVM* vm = runtimeCallInfo->GetVM();
38     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
39     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
40     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
41     GetArkUIInternalNodeAPI()->GetFormComponentModifier().ResetFormVisibility(nativeNode);
42     return panda::JSValueRef::Undefined(vm);
43 }
44 
AllowUpdate(ArkUIRuntimeCallInfo * runtimeCallInfo)45 ArkUINativeModuleValue FormComponentBridge::AllowUpdate(ArkUIRuntimeCallInfo* runtimeCallInfo)
46 {
47     EcmaVM* vm = runtimeCallInfo->GetVM();
48     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
49     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
50     Local<JSValueRef> allowUpdateArg = runtimeCallInfo->GetCallArgRef(1);
51     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
52     bool allowUpdate = allowUpdateArg->ToBoolean(vm)->Value();
53     GetArkUIInternalNodeAPI()->GetFormComponentModifier().AllowUpdate(nativeNode, allowUpdate);
54     return panda::JSValueRef::Undefined(vm);
55 }
56 
DisallowUpdate(ArkUIRuntimeCallInfo * runtimeCallInfo)57 ArkUINativeModuleValue FormComponentBridge::DisallowUpdate(ArkUIRuntimeCallInfo* runtimeCallInfo)
58 {
59     EcmaVM* vm = runtimeCallInfo->GetVM();
60     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
61     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
62     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
63     GetArkUIInternalNodeAPI()->GetFormComponentModifier().DisallowUpdate(nativeNode);
64     return panda::JSValueRef::Undefined(vm);
65 }
66 
SetDimension(ArkUIRuntimeCallInfo * runtimeCallInfo)67 ArkUINativeModuleValue FormComponentBridge::SetDimension(ArkUIRuntimeCallInfo* runtimeCallInfo)
68 {
69     EcmaVM* vm = runtimeCallInfo->GetVM();
70     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
71     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
72     Local<JSValueRef> dimensionArg = runtimeCallInfo->GetCallArgRef(1);
73     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
74     if (dimensionArg->IsNull() || dimensionArg->IsUndefined()) {
75         GetArkUIInternalNodeAPI()->GetFormComponentModifier().ResetDimension(nativeNode);
76     } else {
77         int32_t dimension = dimensionArg->Int32Value(vm);
78         GetArkUIInternalNodeAPI()->GetFormComponentModifier().SetDimension(nativeNode, dimension);
79     }
80     return panda::JSValueRef::Undefined(vm);
81 }
82 
ResetDimension(ArkUIRuntimeCallInfo * runtimeCallInfo)83 ArkUINativeModuleValue FormComponentBridge::ResetDimension(ArkUIRuntimeCallInfo* runtimeCallInfo)
84 {
85     EcmaVM* vm = runtimeCallInfo->GetVM();
86     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
87     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
88     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
89     GetArkUIInternalNodeAPI()->GetFormComponentModifier().ResetDimension(nativeNode);
90     return panda::JSValueRef::Undefined(vm);
91 }
92 
SetModuleName(ArkUIRuntimeCallInfo * runtimeCallInfo)93 ArkUINativeModuleValue FormComponentBridge::SetModuleName(ArkUIRuntimeCallInfo* runtimeCallInfo)
94 {
95     EcmaVM* vm = runtimeCallInfo->GetVM();
96     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
97     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
98     Local<JSValueRef> moduleNameArg = runtimeCallInfo->GetCallArgRef(1);
99     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
100     if (moduleNameArg->IsNull() || moduleNameArg->IsUndefined()) {
101         GetArkUIInternalNodeAPI()->GetFormComponentModifier().ResetModuleName(nativeNode);
102     } else {
103         std::string moduleName = moduleNameArg->ToString(vm)->ToString();
104         GetArkUIInternalNodeAPI()->GetFormComponentModifier().SetModuleName(nativeNode, moduleName.c_str());
105     }
106     return panda::JSValueRef::Undefined(vm);
107 }
108 
ResetModuleName(ArkUIRuntimeCallInfo * runtimeCallInfo)109 ArkUINativeModuleValue FormComponentBridge::ResetModuleName(ArkUIRuntimeCallInfo* runtimeCallInfo)
110 {
111     EcmaVM* vm = runtimeCallInfo->GetVM();
112     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
113     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
114     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
115     GetArkUIInternalNodeAPI()->GetFormComponentModifier().ResetModuleName(nativeNode);
116     return panda::JSValueRef::Undefined(vm);
117 }
118 
SetSize(ArkUIRuntimeCallInfo * runtimeCallInfo)119 ArkUINativeModuleValue FormComponentBridge::SetSize(ArkUIRuntimeCallInfo* runtimeCallInfo)
120 {
121     EcmaVM* vm = runtimeCallInfo->GetVM();
122     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
123     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
124     Local<JSValueRef> widthValue = runtimeCallInfo->GetCallArgRef(1);
125     Local<JSValueRef> heightValue = runtimeCallInfo->GetCallArgRef(2);
126     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
127     CommonBridge::SetSize(runtimeCallInfo);
128     CalcDimension width = 0.0_vp;
129     CalcDimension height = 0.0_vp;
130     bool hasWidth = (!widthValue->IsNull() && !widthValue->IsUndefined() &&
131         ArkTSUtils::ParseJsDimensionVp(vm, widthValue, width));
132     bool hasHeight = (!heightValue->IsNull() && !heightValue->IsUndefined() &&
133         ArkTSUtils::ParseJsDimensionVp(vm, heightValue, height));
134     if (!hasWidth && !hasHeight) {
135         GetArkUIInternalNodeAPI()->GetFormComponentModifier().ResetFormSize(nativeNode);
136     } else {
137         GetArkUIInternalNodeAPI()->GetFormComponentModifier().SetFormSize(nativeNode,
138             width.Value(), static_cast<int>(width.Unit()), height.Value(), static_cast<int>(height.Unit()));
139     }
140     return panda::JSValueRef::Undefined(vm);
141 }
142 
ResetSize(ArkUIRuntimeCallInfo * runtimeCallInfo)143 ArkUINativeModuleValue FormComponentBridge::ResetSize(ArkUIRuntimeCallInfo* runtimeCallInfo)
144 {
145     EcmaVM* vm = runtimeCallInfo->GetVM();
146     CHECK_NULL_RETURN(vm, panda::NativePointerRef::New(vm, nullptr));
147     Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(0);
148     void* nativeNode = nodeArg->ToNativePointer(vm)->Value();
149     CommonBridge::ResetSize(runtimeCallInfo);
150     GetArkUIInternalNodeAPI()->GetFormComponentModifier().ResetFormSize(nativeNode);
151     return panda::JSValueRef::Undefined(vm);
152 }
153 }