• 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 "core/components_ng/pattern/navigation/tool_bar_node.h"
17 
18 #include "core/components_ng/pattern/navigation/tool_bar_pattern.h"
19 
20 namespace OHOS::Ace::NG {
NavToolbarNode(const std::string & tag,int32_t nodeId)21 NavToolbarNode::NavToolbarNode(const std::string& tag, int32_t nodeId)
22     : FrameNode(tag, nodeId, MakeRefPtr<NavToolbarPattern>())
23 {}
24 
~NavToolbarNode()25 NavToolbarNode::~NavToolbarNode()
26 {
27     auto pipeline = GetContextRefPtr();
28     CHECK_NULL_VOID(pipeline);
29     auto overlayManager = pipeline->GetOverlayManager();
30     CHECK_NULL_VOID(overlayManager);
31     auto toolBarPattern = GetPattern<NavToolbarPattern>();
32     CHECK_NULL_VOID(toolBarPattern);
33     auto toolBarDialog = toolBarPattern->GetDialogNode();
34     if (toolBarDialog) {
35         overlayManager->CloseDialog(toolBarDialog);
36     }
37 }
38 
GetOrCreateToolbarNode(const std::string & tag,int32_t nodeId,const std::function<RefPtr<Pattern> (void)> & patternCreator)39 RefPtr<NavToolbarNode> NavToolbarNode::GetOrCreateToolbarNode(
40     const std::string& tag, int32_t nodeId, const std::function<RefPtr<Pattern>(void)>& patternCreator)
41 {
42     auto frameNode = GetFrameNode(tag, nodeId);
43     CHECK_NULL_RETURN(!frameNode, AceType::DynamicCast<NavToolbarNode>(frameNode));
44     auto pattern = patternCreator ? patternCreator() : MakeRefPtr<Pattern>();
45     auto toolbarNode = AceType::MakeRefPtr<NavToolbarNode>(tag, nodeId, pattern);
46     toolbarNode->InitializePatternAndContext();
47     ElementRegister::GetInstance()->AddUINode(toolbarNode);
48     return toolbarNode;
49 }
50 
ToJsonValue(std::unique_ptr<JsonValue> & json,const InspectorFilter & filter) const51 void NavToolbarNode::ToJsonValue(std::unique_ptr<JsonValue>& json, const InspectorFilter& filter) const
52 {
53     auto toolBarPattern = GetPattern<NavToolbarPattern>();
54     CHECK_NULL_VOID(toolBarPattern);
55     auto toolBarOptions = toolBarPattern->GetToolBarOptions();
56     toolBarOptions.ToJsonValue(json, filter);
57     auto moreButtonOptions = toolBarPattern->GetToolbarMoreButtonOptions();
58     auto mbOptionJson = JsonUtil::Create(true);
59     moreButtonOptions.ToJsonValue(mbOptionJson, filter);
60     json->PutExtAttr("moreButtonOptions", mbOptionJson, filter);
61 }
62 } // namespace OHOS::Ace::NG
63