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/navigation_modifier.h"
16
17 #include "base/geometry/calc_dimension.h"
18 #include "core/components/common/layout/constants.h"
19 #include "core/components_ng/base/frame_node.h"
20 #include "core/components_ng/base/view_abstract.h"
21 #include "core/components_ng/pattern/navigation/navigation_declaration.h"
22 #include "core/components_ng/pattern/navigation/navigation_model_ng.h"
23 #include "core/pipeline/base/element_register.h"
24
25 namespace OHOS::Ace::NG {
26 constexpr int32_t NAV_BAR_POSITION_RANGE_MODIFIER = 1;
27 constexpr int32_t NAVIGATION_MODE_RANGE_MODIFIER = 2;
28 constexpr int32_t DEFAULT_NAV_BAR_WIDTH_FOR_MODIFIER = 240;
29 constexpr int32_t DEFAULT_SAFE_AREA_TYPE = 0b1;
30 constexpr int32_t DEFAULT_SAFE_AREA_EDGE = 0b1111;
SetHideToolBar(ArkUINodeHandle node,ArkUI_Bool hide,ArkUI_Bool animated)31 void SetHideToolBar(ArkUINodeHandle node, ArkUI_Bool hide, ArkUI_Bool animated)
32 {
33 auto* frameNode = reinterpret_cast<FrameNode*>(node);
34 CHECK_NULL_VOID(frameNode);
35 NavigationModelNG::SetHideToolBar(frameNode, hide, animated);
36 }
37
ResetHideToolBar(ArkUINodeHandle node)38 void ResetHideToolBar(ArkUINodeHandle node)
39 {
40 auto* frameNode = reinterpret_cast<FrameNode*>(node);
41 CHECK_NULL_VOID(frameNode);
42 NavigationModelNG::SetHideToolBar(frameNode, false, false);
43 }
44
SetEnableModeChangeAnimation(ArkUINodeHandle node,ArkUI_Bool isEnable)45 void SetEnableModeChangeAnimation(ArkUINodeHandle node, ArkUI_Bool isEnable)
46 {
47 auto* frameNode = reinterpret_cast<FrameNode*>(node);
48 CHECK_NULL_VOID(frameNode);
49 NavigationModelNG::SetEnableModeChangeAnimation(frameNode, isEnable);
50 }
51
ResetEnableModeChangeAnimation(ArkUINodeHandle node)52 void ResetEnableModeChangeAnimation(ArkUINodeHandle node)
53 {
54 auto* frameNode = reinterpret_cast<FrameNode*>(node);
55 CHECK_NULL_VOID(frameNode);
56 NavigationModelNG::SetEnableModeChangeAnimation(frameNode, true);
57 }
58
SetMinContentWidth(ArkUINodeHandle node,ArkUI_Float32 value,int unit)59 void SetMinContentWidth(ArkUINodeHandle node, ArkUI_Float32 value, int unit)
60 {
61 auto* frameNode = reinterpret_cast<FrameNode*>(node);
62 CHECK_NULL_VOID(frameNode);
63 CalcDimension width = Dimension(value, static_cast<OHOS::Ace::DimensionUnit>(unit));
64 NavigationModelNG::SetMinContentWidth(frameNode, width);
65 }
66
ResetMinContentWidth(ArkUINodeHandle node)67 void ResetMinContentWidth(ArkUINodeHandle node)
68 {
69 auto* frameNode = reinterpret_cast<FrameNode*>(node);
70 CHECK_NULL_VOID(frameNode);
71 NavigationModelNG::SetMinContentWidth(frameNode, DEFAULT_MIN_CONTENT_WIDTH);
72 }
73
SetMinNavBarWidth(ArkUINodeHandle node,ArkUI_Float32 minValue,int minUnit)74 void SetMinNavBarWidth(ArkUINodeHandle node, ArkUI_Float32 minValue, int minUnit)
75 {
76 auto* frameNode = reinterpret_cast<FrameNode*>(node);
77 CHECK_NULL_VOID(frameNode);
78 CalcDimension minNavBarWidth = Dimension(minValue, static_cast<OHOS::Ace::DimensionUnit>(minUnit));
79 if (LessNotEqual(minNavBarWidth.Value(), 0.0)) {
80 minNavBarWidth = DEFAULT_MIN_NAV_BAR_WIDTH;
81 }
82
83 NavigationModelNG::SetMinNavBarWidth(frameNode, minNavBarWidth);
84 }
85
ResetMinNavBarWidth(ArkUINodeHandle node)86 void ResetMinNavBarWidth(ArkUINodeHandle node)
87 {
88 auto* frameNode = reinterpret_cast<FrameNode*>(node);
89 CHECK_NULL_VOID(frameNode);
90 CalcDimension minNavBarWidth = DEFAULT_MIN_NAV_BAR_WIDTH;
91 NavigationModelNG::SetMinNavBarWidth(frameNode, minNavBarWidth);
92 }
93
SetMaxNavBarWidth(ArkUINodeHandle node,ArkUI_Float32 maxValue,int maxUnit)94 void SetMaxNavBarWidth(ArkUINodeHandle node, ArkUI_Float32 maxValue, int maxUnit)
95 {
96 auto* frameNode = reinterpret_cast<FrameNode*>(node);
97 CHECK_NULL_VOID(frameNode);
98 CalcDimension maxNavBarWidth = Dimension(maxValue, static_cast<OHOS::Ace::DimensionUnit>(maxUnit));
99 if (LessNotEqual(maxNavBarWidth.Value(), 0.0)) {
100 maxNavBarWidth = DEFAULT_MAX_NAV_BAR_WIDTH;
101 }
102
103 NavigationModelNG::SetMaxNavBarWidth(frameNode, maxNavBarWidth);
104 }
105
ResetMaxNavBarWidth(ArkUINodeHandle node)106 void ResetMaxNavBarWidth(ArkUINodeHandle node)
107 {
108 auto* frameNode = reinterpret_cast<FrameNode*>(node);
109 CHECK_NULL_VOID(frameNode);
110 CalcDimension maxNavBarWidth = DEFAULT_MAX_NAV_BAR_WIDTH;
111 NavigationModelNG::SetMaxNavBarWidth(frameNode, maxNavBarWidth);
112 }
113
SetNavBarWidth(ArkUINodeHandle node,ArkUI_Float32 value,int unit)114 void SetNavBarWidth(ArkUINodeHandle node, ArkUI_Float32 value, int unit)
115 {
116 auto* frameNode = reinterpret_cast<FrameNode*>(node);
117 CHECK_NULL_VOID(frameNode);
118 CalcDimension width = Dimension(value, static_cast<OHOS::Ace::DimensionUnit>(unit));
119 NavigationModelNG::SetNavBarWidth(frameNode, width);
120 }
121
ResetNavBarWidth(ArkUINodeHandle node)122 void ResetNavBarWidth(ArkUINodeHandle node)
123 {
124 auto* frameNode = reinterpret_cast<FrameNode*>(node);
125 CHECK_NULL_VOID(frameNode);
126 CalcDimension navBarWidth;
127 navBarWidth.SetValue(DEFAULT_NAV_BAR_WIDTH_FOR_MODIFIER);
128 NavigationModelNG::SetNavBarWidth(frameNode, navBarWidth);
129 }
130
SetNavBarPosition(ArkUINodeHandle node,int32_t value)131 void SetNavBarPosition(ArkUINodeHandle node, int32_t value)
132 {
133 auto* frameNode = reinterpret_cast<FrameNode*>(node);
134 CHECK_NULL_VOID(frameNode);
135 if (value >= 0 && value <= NAV_BAR_POSITION_RANGE_MODIFIER) {
136 NavigationModelNG::SetNavBarPosition(frameNode, static_cast<NG::NavBarPosition>(value));
137 } else {
138 NavigationModelNG::SetNavBarPosition(frameNode, NG::NavBarPosition::START);
139 }
140 }
141
ResetNavBarPosition(ArkUINodeHandle node)142 void ResetNavBarPosition(ArkUINodeHandle node)
143 {
144 auto* frameNode = reinterpret_cast<FrameNode*>(node);
145 CHECK_NULL_VOID(frameNode);
146 NavigationModelNG::SetNavBarPosition(frameNode, NG::NavBarPosition::START);
147 }
148
SetHideNavBar(ArkUINodeHandle node,ArkUI_Bool hideNavBar)149 void SetHideNavBar(ArkUINodeHandle node, ArkUI_Bool hideNavBar)
150 {
151 auto* frameNode = reinterpret_cast<FrameNode*>(node);
152 CHECK_NULL_VOID(frameNode);
153 NavigationModelNG::SetHideNavBar(frameNode, hideNavBar);
154 }
155
ResetHideNavBar(ArkUINodeHandle node)156 void ResetHideNavBar(ArkUINodeHandle node)
157 {
158 auto* frameNode = reinterpret_cast<FrameNode*>(node);
159 CHECK_NULL_VOID(frameNode);
160 NavigationModelNG::SetHideNavBar(frameNode, false);
161 }
162
SetSubtitle(ArkUINodeHandle node,const char * subtitle)163 void SetSubtitle(ArkUINodeHandle node, const char* subtitle)
164 {
165 auto* frameNode = reinterpret_cast<FrameNode*>(node);
166 CHECK_NULL_VOID(frameNode);
167 std::string value = subtitle;
168 NavigationModelNG::SetSubtitle(frameNode, value);
169 }
170
ResetSubtitle(ArkUINodeHandle node)171 void ResetSubtitle(ArkUINodeHandle node)
172 {
173 auto* frameNode = reinterpret_cast<FrameNode*>(node);
174 CHECK_NULL_VOID(frameNode);
175 NavigationModelNG::SetSubtitle(frameNode, "");
176 }
177
SetHideBackButton(ArkUINodeHandle node,ArkUI_Bool hideBackButton)178 void SetHideBackButton(ArkUINodeHandle node, ArkUI_Bool hideBackButton)
179 {
180 auto* frameNode = reinterpret_cast<FrameNode*>(node);
181 CHECK_NULL_VOID(frameNode);
182 NavigationModelNG::SetHideBackButton(frameNode, hideBackButton);
183 }
184
ResetHideBackButton(ArkUINodeHandle node)185 void ResetHideBackButton(ArkUINodeHandle node)
186 {
187 auto* frameNode = reinterpret_cast<FrameNode*>(node);
188 CHECK_NULL_VOID(frameNode);
189 NavigationModelNG::SetHideBackButton(frameNode, false);
190 }
191
SetTitleMode(ArkUINodeHandle node,int32_t value)192 void SetTitleMode(ArkUINodeHandle node, int32_t value)
193 {
194 auto* frameNode = reinterpret_cast<FrameNode*>(node);
195 CHECK_NULL_VOID(frameNode);
196 NavigationModelNG::SetTitleMode(frameNode, static_cast<NG::NavigationTitleMode>(value));
197 }
198
ResetTitleMode(ArkUINodeHandle node)199 void ResetTitleMode(ArkUINodeHandle node)
200 {
201 auto* frameNode = reinterpret_cast<FrameNode*>(node);
202 CHECK_NULL_VOID(frameNode);
203 NavigationModelNG::SetTitleMode(frameNode, NG::NavigationTitleMode::FREE);
204 }
205
SetUsrNavigationMode(ArkUINodeHandle node,int32_t value)206 void SetUsrNavigationMode(ArkUINodeHandle node, int32_t value)
207 {
208 auto* frameNode = reinterpret_cast<FrameNode*>(node);
209 CHECK_NULL_VOID(frameNode);
210 if (value >= 0 && value <= NAVIGATION_MODE_RANGE_MODIFIER) {
211 NavigationModelNG::SetUsrNavigationMode(frameNode, static_cast<NG::NavigationMode>(value));
212 } else {
213 NavigationModelNG::SetUsrNavigationMode(frameNode, NG::NavigationMode::AUTO);
214 }
215 }
ResetUsrNavigationMode(ArkUINodeHandle node)216 void ResetUsrNavigationMode(ArkUINodeHandle node)
217 {
218 auto* frameNode = reinterpret_cast<FrameNode*>(node);
219 CHECK_NULL_VOID(frameNode);
220 NavigationModelNG::SetUsrNavigationMode(frameNode, NG::NavigationMode::AUTO);
221 }
222
SetNavHideTitleBar(ArkUINodeHandle node,ArkUI_Bool hide,ArkUI_Bool animated)223 void SetNavHideTitleBar(ArkUINodeHandle node, ArkUI_Bool hide, ArkUI_Bool animated)
224 {
225 auto* frameNode = reinterpret_cast<FrameNode*>(node);
226 CHECK_NULL_VOID(frameNode);
227 NavigationModelNG::SetHideTitleBar(frameNode, hide, animated);
228 }
229
ResetNavHideTitleBar(ArkUINodeHandle node)230 void ResetNavHideTitleBar(ArkUINodeHandle node)
231 {
232 auto* frameNode = reinterpret_cast<FrameNode*>(node);
233 CHECK_NULL_VOID(frameNode);
234 NavigationModelNG::SetHideTitleBar(frameNode, false, false);
235 }
236
SetEnableDragBar(ArkUINodeHandle node,ArkUI_Bool enableDragBar)237 void SetEnableDragBar(ArkUINodeHandle node, ArkUI_Bool enableDragBar)
238 {
239 auto* frameNode = reinterpret_cast<FrameNode*>(node);
240 CHECK_NULL_VOID(frameNode);
241 NavigationModelNG::SetEnableDragBar(frameNode, enableDragBar);
242 }
243
ResetEnableDragBar(ArkUINodeHandle node)244 void ResetEnableDragBar(ArkUINodeHandle node)
245 {
246 auto* frameNode = reinterpret_cast<FrameNode*>(node);
247 CHECK_NULL_VOID(frameNode);
248 // default value of navigation's enableDragBar is false
249 NavigationModelNG::SetEnableDragBar(frameNode, false);
250 }
251
SetNavIgnoreLayoutSafeArea(ArkUINodeHandle node,const char * typeStr,const char * edgesStr)252 void SetNavIgnoreLayoutSafeArea(ArkUINodeHandle node, const char* typeStr, const char* edgesStr)
253 {
254 auto* frameNode = reinterpret_cast<FrameNode*>(node);
255 CHECK_NULL_VOID(frameNode);
256 NG::SafeAreaExpandOpts opts { .type = NG::SAFE_AREA_TYPE_SYSTEM, .edges = NG::SAFE_AREA_EDGE_ALL };
257 uint32_t safeAreaType = NG::SAFE_AREA_TYPE_NONE;
258 uint32_t safeAreaEdge = NG::SAFE_AREA_EDGE_NONE;
259 std::string safeAreaTypeStr = std::string(typeStr);
260 std::string safeAreaEdgeStr = std::string(edgesStr);
261 if (safeAreaTypeStr == "" || safeAreaEdgeStr == "") {
262 NG::SafeAreaExpandOpts opts { .type = NG::SAFE_AREA_TYPE_NONE, .edges = NG::SAFE_AREA_EDGE_NONE};
263 NavigationModelNG::SetIgnoreLayoutSafeArea(frameNode, opts);
264 return;
265 }
266 std::string delimiter = "|";
267 size_t pos = 0;
268 std::string type;
269 std::string edges;
270 while ((pos = safeAreaTypeStr.find(delimiter)) != std::string::npos) {
271 type = safeAreaTypeStr.substr(0, pos);
272 safeAreaType |= (1 << StringUtils::StringToUint(type));
273 safeAreaTypeStr.erase(0, pos + delimiter.length());
274 }
275 safeAreaType |= (1 << StringUtils::StringToUint(safeAreaTypeStr));
276 pos = 0;
277 while ((pos = safeAreaEdgeStr.find(delimiter)) != std::string::npos) {
278 edges = safeAreaEdgeStr.substr(0, pos);
279 safeAreaEdge |= (1 << StringUtils::StringToUint(edges));
280 safeAreaEdgeStr.erase(0, pos + delimiter.length());
281 }
282 safeAreaEdge |= (1 << StringUtils::StringToUint(safeAreaEdgeStr));
283 opts.type = safeAreaType;
284 opts.edges = safeAreaEdge;
285 NavigationModelNG::SetIgnoreLayoutSafeArea(frameNode, opts);
286 }
287
ResetNavIgnoreLayoutSafeArea(ArkUINodeHandle node)288 void ResetNavIgnoreLayoutSafeArea(ArkUINodeHandle node)
289 {
290 auto* frameNode = reinterpret_cast<FrameNode*>(node);
291 CHECK_NULL_VOID(frameNode);
292 NG::SafeAreaExpandOpts opts;
293 opts.type = DEFAULT_SAFE_AREA_TYPE;
294 opts.edges = DEFAULT_SAFE_AREA_EDGE;
295 NavigationModelNG::SetIgnoreLayoutSafeArea(frameNode, opts);
296 }
297
SetNavTitle(ArkUINodeHandle node,ArkUINavigationTitleInfo titleInfo,ArkUINavigationTitlebarOptions options)298 void SetNavTitle(ArkUINodeHandle node, ArkUINavigationTitleInfo titleInfo, ArkUINavigationTitlebarOptions options)
299 {
300 auto* frameNode = reinterpret_cast<FrameNode*>(node);
301 CHECK_NULL_VOID(frameNode);
302 std::string mainTitleString = std::string(titleInfo.mainTitle);
303 std::string subTitleString = std::string(titleInfo.subTitle);
304 NG::NavigationTitleInfo ngTitleInfo = { titleInfo.hasSubTitle, titleInfo.hasMainTitle,
305 subTitleString, mainTitleString };
306 NavigationModelNG::ParseCommonTitle(frameNode, ngTitleInfo);
307 NG::NavigationTitlebarOptions finalOptions;
308 if (options.colorValue.isSet) {
309 finalOptions.bgOptions.color = Color(options.colorValue.value);
310 }
311 if (options.blurStyle.isSet) {
312 finalOptions.bgOptions.blurStyle = static_cast<BlurStyle>(options.blurStyle.value);
313 }
314 if (options.barStyle.isSet) {
315 finalOptions.brOptions.barStyle = static_cast<NG::BarStyle>(options.barStyle.value);
316 }
317 if (options.paddingStart.isSet) {
318 finalOptions.brOptions.paddingStart = CalcDimension(static_cast<double>(options.paddingStart.dimension.value),
319 static_cast<DimensionUnit>(options.paddingStart.dimension.units));
320 }
321 if (options.paddingEnd.isSet) {
322 finalOptions.brOptions.paddingEnd = CalcDimension(static_cast<double>(options.paddingEnd.dimension.value),
323 static_cast<DimensionUnit>(options.paddingEnd.dimension.units));
324 }
325 if (options.enableHoverMode.isSet) {
326 finalOptions.enableHoverMode = options.enableHoverMode.value;
327 }
328 NavigationModelNG::SetTitlebarOptions(frameNode, std::move(finalOptions));
329 }
330
ResetNavTitle(ArkUINodeHandle node)331 void ResetNavTitle(ArkUINodeHandle node)
332 {
333 auto* frameNode = reinterpret_cast<FrameNode*>(node);
334 CHECK_NULL_VOID(frameNode);
335 NG::NavigationTitleInfo ngTitleInfo = { false, false, "", "" };
336 NavigationModelNG::ParseCommonTitle(frameNode, ngTitleInfo);
337 NavigationTitlebarOptions options;
338 NavigationModelNG::SetTitlebarOptions(frameNode, std::move(options));
339 }
340
SetNavMenus(ArkUINodeHandle node,ArkUIBarItem * items,ArkUI_Uint32 length)341 void SetNavMenus(ArkUINodeHandle node, ArkUIBarItem* items, ArkUI_Uint32 length)
342 {
343 auto* frameNode = reinterpret_cast<FrameNode*>(node);
344 CHECK_NULL_VOID(frameNode);
345 CHECK_NULL_VOID(items);
346 std::vector<NG::BarItem> menuItems;
347 for (uint32_t i = 0; i < length; i++) {
348 NG::BarItem menuItem;
349 if (items[i].text.isSet) {
350 menuItem.text = items[i].text.value;
351 }
352 if (items[i].icon.isSet) {
353 menuItem.icon = items[i].icon.value;
354 }
355 if (items[i].isEnable.isSet) {
356 menuItem.isEnabled = items[i].isEnable.value;
357 }
358 menuItems.push_back(menuItem);
359 if (items[i].text.value) {
360 delete[] items[i].text.value;
361 items[i].text.value = nullptr;
362 }
363 if (items[i].icon.value) {
364 delete[] items[i].icon.value;
365 items[i].icon.value = nullptr;
366 }
367 }
368 NavigationModelNG::SetMenuItems(frameNode, std::move(menuItems));
369 }
370
ResetNavMenus(ArkUINodeHandle node)371 void ResetNavMenus(ArkUINodeHandle node)
372 {
373 auto* frameNode = reinterpret_cast<FrameNode*>(node);
374 CHECK_NULL_VOID(frameNode);
375 std::vector<NG::BarItem> menuItems;
376 NavigationModelNG::SetMenuItems(frameNode, std::move(menuItems));
377 }
378
SetNavMenuItemAction(ArkUINodeHandle node,void * action,ArkUI_Uint32 index)379 void SetNavMenuItemAction(ArkUINodeHandle node, void* action, ArkUI_Uint32 index)
380 {
381 auto* frameNode = reinterpret_cast<FrameNode*>(node);
382 CHECK_NULL_VOID(frameNode);
383 auto actionFunc = reinterpret_cast<std::function<void()>*>(action);
384 NavigationModelNG::SetMenuItemAction(frameNode, std::move(*actionFunc), index);
385 }
386
SetNavMenuItemSymbol(ArkUINodeHandle node,void * symbol,ArkUI_Uint32 index)387 void SetNavMenuItemSymbol(ArkUINodeHandle node, void* symbol, ArkUI_Uint32 index)
388 {
389 auto* frameNode = reinterpret_cast<FrameNode*>(node);
390 CHECK_NULL_VOID(frameNode);
391 auto iconFunc = reinterpret_cast<std::function<void(WeakPtr<NG::FrameNode>)>*>(symbol);
392 NavigationModelNG::SetMenuItemSymbol(frameNode, std::move(*iconFunc), index);
393 }
394
SetNavigationRecoverable(ArkUINodeHandle node,ArkUI_Bool recoverable)395 void SetNavigationRecoverable(ArkUINodeHandle node, ArkUI_Bool recoverable)
396 {
397 auto* frameNode = reinterpret_cast<FrameNode*>(node);
398 CHECK_NULL_VOID(frameNode);
399 NavigationModelNG::SetRecoverable(frameNode, recoverable);
400 }
401
ResetNavigationRecoverable(ArkUINodeHandle node)402 void ResetNavigationRecoverable(ArkUINodeHandle node)
403 {
404 auto* frameNode = reinterpret_cast<FrameNode*>(node);
405 CHECK_NULL_VOID(frameNode);
406 // default value of navigation's recoverable is false
407 NavigationModelNG::SetRecoverable(frameNode, false);
408 }
409
410
411 namespace NodeModifier {
GetNavigationModifier()412 const ArkUINavigationModifier* GetNavigationModifier()
413 {
414 static const ArkUINavigationModifier modifier = {
415 SetHideToolBar,
416 ResetHideToolBar,
417 SetEnableModeChangeAnimation,
418 ResetEnableModeChangeAnimation,
419 SetHideNavBar,
420 ResetHideNavBar,
421 SetTitleMode,
422 ResetTitleMode,
423 SetHideBackButton,
424 ResetHideBackButton,
425 SetSubtitle,
426 ResetSubtitle,
427 ResetUsrNavigationMode,
428 SetUsrNavigationMode,
429 SetNavHideTitleBar,
430 ResetNavHideTitleBar,
431 SetNavBarPosition,
432 ResetNavBarPosition,
433 SetMinContentWidth,
434 ResetMinContentWidth,
435 SetMaxNavBarWidth,
436 ResetMaxNavBarWidth,
437 SetMinNavBarWidth,
438 ResetMinNavBarWidth,
439 SetNavBarWidth,
440 ResetNavBarWidth,
441 SetEnableDragBar,
442 ResetEnableDragBar,
443 SetNavIgnoreLayoutSafeArea,
444 ResetNavIgnoreLayoutSafeArea,
445 SetNavTitle,
446 ResetNavTitle,
447 SetNavMenus,
448 ResetNavMenus,
449 SetNavMenuItemAction,
450 SetNavMenuItemSymbol,
451 SetNavigationRecoverable,
452 ResetNavigationRecoverable,
453 };
454
455 return &modifier;
456 }
457
GetCJUINavigationModifier()458 const CJUINavigationModifier* GetCJUINavigationModifier()
459 {
460 static const CJUINavigationModifier modifier = {
461 SetHideToolBar,
462 ResetHideToolBar,
463 SetEnableModeChangeAnimation,
464 ResetEnableModeChangeAnimation,
465 SetHideNavBar,
466 ResetHideNavBar,
467 SetTitleMode,
468 ResetTitleMode,
469 SetHideBackButton,
470 ResetHideBackButton,
471 SetSubtitle,
472 ResetSubtitle,
473 ResetUsrNavigationMode,
474 SetUsrNavigationMode,
475 SetNavHideTitleBar,
476 ResetNavHideTitleBar,
477 SetNavBarPosition,
478 ResetNavBarPosition,
479 SetMinContentWidth,
480 ResetMinContentWidth,
481 SetMaxNavBarWidth,
482 ResetMaxNavBarWidth,
483 SetMinNavBarWidth,
484 ResetMinNavBarWidth,
485 SetNavBarWidth,
486 ResetNavBarWidth,
487 SetNavIgnoreLayoutSafeArea,
488 ResetNavIgnoreLayoutSafeArea
489 };
490
491 return &modifier;
492 }
493 }
494 } // namespace OHOS::Ace::NG