1 /*
2 * Copyright (c) 2025 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 <cstring>
17
18 #include "node_model.h"
19 #include "securec.h"
20 #include "style_modifier.h"
21
22 #include "base/error/error_code.h"
23 #include "base/utils/utils.h"
24 #include "core/interfaces/arkoala/arkoala_api.h"
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29
OH_ArkUI_TextPickerRangeContentArray_Create(int32_t length)30 ArkUI_TextPickerRangeContentArray* OH_ArkUI_TextPickerRangeContentArray_Create(int32_t length)
31 {
32 if (length <= 0) {
33 return nullptr;
34 }
35 ArkUI_TextPickerRangeContentArray* array = new ArkUI_TextPickerRangeContentArray;
36 array->rangeContent = new RangeContent[length];
37 array->rangeContentArraySize = length;
38 for (int32_t i = 0; i < length; i++) {
39 array->rangeContent[i].icon = nullptr;
40 array->rangeContent[i].text = nullptr;
41 }
42 return array;
43 }
44
OH_ArkUI_TextPickerRangeContentArray_SetIconAtIndex(ArkUI_TextPickerRangeContentArray * handle,char * icon,int32_t index)45 void OH_ArkUI_TextPickerRangeContentArray_SetIconAtIndex(
46 ArkUI_TextPickerRangeContentArray* handle, char* icon, int32_t index)
47 {
48 if (handle == nullptr || index < 0 || index >= handle->rangeContentArraySize || icon == nullptr) {
49 return;
50 }
51 if (handle->rangeContent[index].icon != nullptr) {
52 delete[] handle->rangeContent[index].icon;
53 handle->rangeContent[index].icon = nullptr;
54 }
55 uint32_t len = strlen(icon) + 1;
56 handle->rangeContent[index].icon = new char[len];
57 strcpy_s(const_cast<char*>(handle->rangeContent[index].icon), len, icon);
58 }
59
OH_ArkUI_TextPickerRangeContentArray_SetTextAtIndex(ArkUI_TextPickerRangeContentArray * handle,char * text,int32_t index)60 void OH_ArkUI_TextPickerRangeContentArray_SetTextAtIndex(
61 ArkUI_TextPickerRangeContentArray* handle, char* text, int32_t index)
62 {
63 if (handle == nullptr || index < 0 || index >= handle->rangeContentArraySize || text == nullptr) {
64 return;
65 }
66 if (handle->rangeContent[index].text != nullptr) {
67 delete[] handle->rangeContent[index].text;
68 handle->rangeContent[index].text = nullptr;
69 }
70 uint32_t len = strlen(text) + 1;
71 handle->rangeContent[index].text = new char[len];
72 strcpy_s(const_cast<char*>(handle->rangeContent[index].text), len, text);
73 }
74
OH_ArkUI_TextPickerRangeContentArray_Destroy(ArkUI_TextPickerRangeContentArray * handle)75 void OH_ArkUI_TextPickerRangeContentArray_Destroy(ArkUI_TextPickerRangeContentArray* handle)
76 {
77 if (handle == nullptr) {
78 return;
79 }
80 if (handle->rangeContent->icon != nullptr) {
81 delete[] handle->rangeContent->icon;
82 handle->rangeContent->icon = nullptr;
83 }
84 if (handle->rangeContent->text != nullptr) {
85 delete[] handle->rangeContent->text;
86 handle->rangeContent->text = nullptr;
87 }
88 if (handle->rangeContent != nullptr) {
89 delete[] handle->rangeContent;
90 handle->rangeContent = nullptr;
91 }
92 handle->rangeContentArraySize = 0;
93 delete handle;
94 }
OH_ArkUI_TextCascadePickerRangeContentArray_Create(int32_t length)95 ArkUI_TextCascadePickerRangeContentArray* OH_ArkUI_TextCascadePickerRangeContentArray_Create(int32_t length)
96 {
97 if (length <= 0) {
98 return nullptr;
99 }
100 ArkUI_TextCascadePickerRangeContentArray* handle = new ArkUI_TextCascadePickerRangeContentArray[length];
101 for (int32_t i = 0; i < length; i++) {
102 handle[i].text = nullptr;
103 handle[i].rangeContentArraySize = 0;
104 handle[i].children = nullptr;
105 }
106 handle->rangeContentArraySize = length;
107 return handle;
108 }
109
OH_ArkUI_TextCascadePickerRangeContentArray_SetTextAtIndex(ArkUI_TextCascadePickerRangeContentArray * handle,char * text,int32_t index)110 void OH_ArkUI_TextCascadePickerRangeContentArray_SetTextAtIndex(
111 ArkUI_TextCascadePickerRangeContentArray* handle, char* text, int32_t index)
112 {
113 if (handle == nullptr || index < 0 || index >= handle->rangeContentArraySize || text == nullptr) {
114 return;
115 }
116 if (handle[index].text != nullptr) {
117 delete[] handle[index].text;
118 handle[index].text = nullptr;
119 }
120 uint32_t len = strlen(text) + 1;
121 handle[index].text = new char[len];
122 strcpy_s(const_cast<char*>(handle[index].text), len, text);
123 }
124
OH_ArkUI_TextCascadePickerRangeContentArray_Destroy(ArkUI_TextCascadePickerRangeContentArray * handle)125 void OH_ArkUI_TextCascadePickerRangeContentArray_Destroy(ArkUI_TextCascadePickerRangeContentArray* handle)
126 {
127 if (handle == nullptr) {
128 return;
129 }
130 if (handle->children != nullptr) {
131 OH_ArkUI_TextCascadePickerRangeContentArray_Destroy(handle->children);
132 handle->children = nullptr;
133 }
134 if (handle->text != nullptr) {
135 delete[] handle->text;
136 handle->text = nullptr;
137 }
138 delete[] handle;
139 }
140
OH_ArkUI_TextCascadePickerRangeContentArray_SetChildAtIndex(ArkUI_TextCascadePickerRangeContentArray * handle,ArkUI_TextCascadePickerRangeContentArray * child,int32_t index)141 void OH_ArkUI_TextCascadePickerRangeContentArray_SetChildAtIndex(
142 ArkUI_TextCascadePickerRangeContentArray* handle, ArkUI_TextCascadePickerRangeContentArray* child, int32_t index)
143 {
144 if (handle == nullptr || index < 0 || index >= handle->rangeContentArraySize || child == nullptr) {
145 return;
146 }
147 if (handle[index].children != nullptr) {
148 OH_ArkUI_TextCascadePickerRangeContentArray_Destroy(handle[index].children);
149 }
150 handle[index].children = child;
151 }
152 #ifdef __cplusplus
153 };
154 #endif
155