• 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/jsview/models/navigation_model_impl.h"
17 
18 #include "bridge/declarative_frontend/view_stack_processor.h"
19 
20 namespace OHOS::Ace::Framework {
Create()21 void NavigationModelImpl::Create()
22 {
23     auto navigationContainer = AceType::MakeRefPtr<NavigationContainerComponent>();
24     ViewStackProcessor::GetInstance()->Push(navigationContainer);
25 }
26 
SetTitle(const std::string & title,bool hasSubTitle)27 void NavigationModelImpl::SetTitle(const std::string& title, bool hasSubTitle)
28 {
29     auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
30     auto navigationContainer = AceType::DynamicCast<OHOS::Ace::NavigationContainerComponent>(component);
31     CHECK_NULL_VOID(navigationContainer);
32     navigationContainer->GetDeclaration()->title = title;
33 }
34 
SetCustomTitle(const RefPtr<AceType> & customTitle)35 void NavigationModelImpl::SetCustomTitle(const RefPtr<AceType>& customTitle)
36 {
37     auto customTile = AceType::DynamicCast<Component>(customTitle);
38     auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
39     auto navigationContainer = AceType::DynamicCast<OHOS::Ace::NavigationContainerComponent>(component);
40     if (!navigationContainer) {
41     LOGI("component is not navigationContainer.");
42     return;
43     }
44 #if defined(PREVIEW)
45     auto composedComponent =
46         ViewStackProcessor::GetInstance()->CreateInspectorWrapper("NavigationTitle");
47     composedComponent->SetChild(customTile);
48     navigationContainer->GetDeclaration()->customTitle = composedComponent;
49 #else
50     navigationContainer->GetDeclaration()->customTitle = customTile;
51 #endif
52 }
53 
SetTitleHeight(const Dimension & height,bool isValid)54 void NavigationModelImpl::SetTitleHeight(const Dimension& height, bool isValid)
55 {
56     return;
57 }
58 
SetTitleMode(NG::NavigationTitleMode mode)59 void NavigationModelImpl::SetTitleMode(NG::NavigationTitleMode mode)
60 {
61     auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
62     auto navigationContainer = AceType::DynamicCast<OHOS::Ace::NavigationContainerComponent>(component);
63     if (!navigationContainer) {
64         LOGI("component is not navigationContainer.");
65         return;
66     }
67     navigationContainer->GetDeclaration()->titleMode = static_cast<NavigationTitleMode>(mode);
68 }
69 
SetSubtitle(const std::string & subtitle)70 void NavigationModelImpl::SetSubtitle(const std::string& subtitle)
71 {
72     auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
73     auto navigationContainer = AceType::DynamicCast<OHOS::Ace::NavigationContainerComponent>(component);
74     if (!navigationContainer) {
75         LOGI("component is not navigationContainer.");
76         return;
77     }
78     navigationContainer->GetDeclaration()->subTitle = subtitle;
79 }
80 
SetEnableModeChangeAnimation(bool isEnable)81 void NavigationModelImpl::SetEnableModeChangeAnimation(bool isEnable)
82 {
83     return;
84 }
85 
SetHideTitleBar(bool hideTitleBar,bool animated)86 void NavigationModelImpl::SetHideTitleBar(bool hideTitleBar, bool animated)
87 {
88     auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
89     auto navigationContainer = AceType::DynamicCast<OHOS::Ace::NavigationContainerComponent>(component);
90     if (!navigationContainer) {
91         LOGI("component is not navigationContainer.");
92         return;
93     }
94     auto declaration = navigationContainer->GetDeclaration();
95     declaration->hideBar = hideTitleBar;
96     declaration->animationOption = ViewStackProcessor::GetInstance()->GetImplicitAnimationOption();
97 }
98 
SetHideNavBar(bool hideNavBar)99 void NavigationModelImpl::SetHideNavBar(bool hideNavBar)
100 {
101     return;
102 }
103 
SetBackButtonIcon(const std::function<void (WeakPtr<NG::FrameNode>)> & symbolApply,const std::string & src,const NG::ImageOption & imageOption,RefPtr<PixelMap> & pixMap,const std::vector<std::string> & nameList,bool userDefinedAccessibilityText,const std::string & backButtonAccessibilityText)104 void NavigationModelImpl::SetBackButtonIcon(const std::function<void(WeakPtr<NG::FrameNode>)>& symbolApply,
105     const std::string& src, const NG::ImageOption& imageOption, RefPtr<PixelMap>& pixMap,
106     const std::vector<std::string>& nameList, bool userDefinedAccessibilityText,
107     const std::string& backButtonAccessibilityText)
108 {
109     return;
110 }
111 
SetHideBackButton(bool hideBackButton)112 void NavigationModelImpl::SetHideBackButton(bool hideBackButton)
113 {
114     auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
115     auto navigationContainer = AceType::DynamicCast<OHOS::Ace::NavigationContainerComponent>(component);
116     if (!navigationContainer) {
117         LOGI("component is not navigationContainer.");
118         return;
119     }
120     navigationContainer->GetDeclaration()->hideBarBackButton = hideBackButton;
121 }
122 
SetHideToolBar(bool hideToolBar,bool animated)123 void NavigationModelImpl::SetHideToolBar(bool hideToolBar, bool animated)
124 {
125     auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
126     auto navigationContainer = AceType::DynamicCast<OHOS::Ace::NavigationContainerComponent>(component);
127     if (!navigationContainer) {
128         LOGI("component is not navigationContainer.");
129         return;
130     }
131     auto declaration = navigationContainer->GetDeclaration();
132     declaration->hideToolbar = hideToolBar;
133     declaration->animationOption = ViewStackProcessor::GetInstance()->GetImplicitAnimationOption();
134 }
135 
SetCustomToolBar(const RefPtr<AceType> & node)136 void NavigationModelImpl::SetCustomToolBar(const RefPtr<AceType>& node)
137 {
138     auto customToolBar = AceType::DynamicCast<Component>(node);
139     auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
140     auto navigationContainer = AceType::DynamicCast<OHOS::Ace::NavigationContainerComponent>(component);
141     if (!navigationContainer) {
142         LOGI("component is not navigationContainer.");
143         return;
144     }
145     navigationContainer->GetDeclaration()->toolBarBuilder = customToolBar;
146 }
147 
NeedSetItems()148 bool NavigationModelImpl::NeedSetItems()
149 {
150     return false;
151 }
152 
SetToolBarItems(std::vector<NG::BarItem> && toolBarItems)153 void NavigationModelImpl::SetToolBarItems(std::vector<NG::BarItem>&& toolBarItems)
154 {
155     return;
156 }
157 
SetToolbarConfiguration(std::vector<NG::BarItem> && toolBarItems)158 void NavigationModelImpl::SetToolbarConfiguration(std::vector<NG::BarItem>&& toolBarItems) {}
159 
GetToolBarItems(std::list<RefPtr<AceType>> & items)160 void NavigationModelImpl::GetToolBarItems(std::list<RefPtr<AceType>>& items)
161 {
162     auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
163     auto navigationContainer = AceType::DynamicCast<OHOS::Ace::NavigationContainerComponent>(component);
164     CHECK_NULL_VOID(navigationContainer);
165     auto toolbarItems = navigationContainer->GetDeclaration()->toolbarItems;
166     items.clear();
167     for (auto item : toolbarItems) {
168         items.push_back(item);
169     }
170 }
171 
SetMenuItems(std::vector<NG::BarItem> && menuItems)172 void NavigationModelImpl::SetMenuItems(std::vector<NG::BarItem>&& menuItems)
173 {
174     return;
175 }
176 
GetMenuItems(std::list<RefPtr<AceType>> & items)177 void NavigationModelImpl::GetMenuItems(std::list<RefPtr<AceType>>& items)
178 {
179     auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
180     auto navigationContainer = AceType::DynamicCast<OHOS::Ace::NavigationContainerComponent>(component);
181     CHECK_NULL_VOID(navigationContainer);
182     auto toolbarItems = navigationContainer->GetDeclaration()->menuItems;
183     items.clear();
184     for (auto item : toolbarItems) {
185         items.push_back(item);
186     }
187 }
188 
SetCustomMenu(const RefPtr<AceType> & customMenu)189 void NavigationModelImpl::SetCustomMenu(const RefPtr<AceType>& customMenu)
190 {
191     auto customMenus = AceType::DynamicCast<Component>(customMenu);
192     auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
193     auto navigationContainer = AceType::DynamicCast<OHOS::Ace::NavigationContainerComponent>(component);
194     if (!navigationContainer) {
195         LOGI("component is not navigationContainer.");
196         return;
197     }
198 #if defined(PREVIEW)
199     auto composedComponent = ViewStackProcessor::GetInstance()->CreateInspectorWrapper("NavigationMenus");
200     composedComponent->SetChild(customMenus);
201     navigationContainer->GetDeclaration()->customMenus = composedComponent;
202 #else
203     navigationContainer->GetDeclaration()->customMenus = customMenus;
204 #endif
205 }
206 
SetOnTitleModeChange(std::function<void (NG::NavigationTitleMode)> && onTitleModeChange,std::function<void (const BaseEventInfo * baseInfo)> && eventInfo)207 void NavigationModelImpl::SetOnTitleModeChange(std::function<void(NG::NavigationTitleMode)>&& onTitleModeChange,
208     std::function<void(const BaseEventInfo* baseInfo)>&& eventInfo)
209 {
210     auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
211     auto navigationContainer = AceType::DynamicCast<OHOS::Ace::NavigationContainerComponent>(component);
212     auto eventMarker = EventMarker(std::move(eventInfo));
213     if (navigationContainer) {
214         navigationContainer->GetDeclaration()->titleModeChangedEvent = eventMarker;
215     }
216 }
217 
SetUsrNavigationMode(NG::NavigationMode mode)218 void NavigationModelImpl::SetUsrNavigationMode(NG::NavigationMode mode)
219 {
220     return;
221 }
222 
SetNavBarPosition(NG::NavBarPosition mode)223 void NavigationModelImpl::SetNavBarPosition(NG::NavBarPosition mode)
224 {
225     return;
226 }
227 
SetNavBarWidth(const Dimension & value,bool isDoubleBind)228 void NavigationModelImpl::SetNavBarWidth(const Dimension& value, bool isDoubleBind)
229 {
230     return;
231 }
232 
SetOnNavBarStateChange(std::function<void (bool)> && onNavBarStateChange)233 void NavigationModelImpl::SetOnNavBarStateChange(std::function<void(bool)>&& onNavBarStateChange)
234 {
235     return;
236 }
237 
SetOnNavigationModeChange(std::function<void (NG::NavigationMode)> && onNavigationChange)238 void NavigationModelImpl::SetOnNavigationModeChange(std::function<void(NG::NavigationMode)>&& onNavigationChange)
239 {
240     return;
241 }
242 
SetNavigationMode(NG::NavigationMode mode)243 void NavigationModelImpl::SetNavigationMode(NG::NavigationMode mode)
244 {
245     return;
246 }
247 
SetNavigationStack()248 void NavigationModelImpl::SetNavigationStack()
249 {
250     return;
251 }
252 
SetNavigationStack(const RefPtr<NG::NavigationStack> & navigationStack)253 void NavigationModelImpl::SetNavigationStack(const RefPtr<NG::NavigationStack>& navigationStack)
254 {
255     return;
256 }
257 
SetNavigationStackProvided(bool provided)258 void NavigationModelImpl::SetNavigationStackProvided(bool provided)
259 {
260     return;
261 }
262 
SetNavDestination(std::function<void (std::string)> && builder)263 void NavigationModelImpl::SetNavDestination(std::function<void(std::string)>&& builder)
264 {
265     return;
266 }
267 
GetNavigationStack()268 RefPtr<NG::NavigationStack> NavigationModelImpl::GetNavigationStack()
269 {
270     return nullptr;
271 }
272 
SetMenuCount(int32_t menuCount)273 void NavigationModelImpl::SetMenuCount(int32_t menuCount)
274 {
275     auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
276     auto navigationContainer = AceType::DynamicCast<OHOS::Ace::NavigationContainerComponent>(component);
277     if (navigationContainer) {
278         navigationContainer->SetMenuCount(menuCount);
279     }
280 }
281 
SetCustomTransition(NavigationTransitionEvent && animationTransition)282 void NavigationModelImpl::SetCustomTransition(NavigationTransitionEvent&& animationTransition) {}
283 
SetIsCustomAnimation(bool isCustom)284 void NavigationModelImpl::SetIsCustomAnimation(bool isCustom) {}
285 
SetIgnoreLayoutSafeArea(const NG::SafeAreaExpandOpts & opts)286 void NavigationModelImpl::SetIgnoreLayoutSafeArea(const NG::SafeAreaExpandOpts& opts) {}
287 } // namespace OHOS::Ace::Framework
288