• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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