• 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 #include "core/components_ng/pattern/node_container/node_container_model_ng.h"
16 
17 #include "core/components_ng/base/view_stack_processor.h"
18 #include "core/components_ng/pattern/node_container/node_container_node.h"
19 #include "core/components_ng/pattern/node_container/node_container_pattern.h"
20 
21 namespace OHOS::Ace::NG {
Create()22 void NodeContainerModelNG::Create()
23 {
24     auto* stack = ViewStackProcessor::GetInstance();
25     auto nodeId = stack->ClaimNodeId();
26     auto frameNode = NodeContainerNode::GetOrCreateNodeContainerNode(nodeId);
27     stack->Push(frameNode);
28 
29     ACE_UPDATE_LAYOUT_PROPERTY(LayoutProperty, Alignment, Alignment::TOP_LEFT);
30 }
31 
SetMakeFunction(std::function<RefPtr<UINode> ()> && makeFunc)32 void NodeContainerModelNG::SetMakeFunction(std::function<RefPtr<UINode>()>&& makeFunc)
33 {
34     auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
35     CHECK_NULL_VOID(frameNode);
36     auto pattern = AceType::DynamicCast<NodeContainerPattern>(frameNode->GetPattern());
37     CHECK_NULL_VOID(pattern);
38     pattern->SetMakeFunction(std::move(makeFunc));
39 }
40 
SetOnResize(std::function<void (const SizeF & size)> && resizeFunc)41 void NodeContainerModelNG::SetOnResize(std::function<void(const SizeF& size)>&& resizeFunc)
42 {
43     auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
44     CHECK_NULL_VOID(frameNode);
45     auto pattern = AceType::DynamicCast<NodeContainerPattern>(frameNode->GetPattern());
46     CHECK_NULL_VOID(pattern);
47     pattern->SetOnResize(std::move(resizeFunc));
48 }
49 
SetOnAppear(std::function<void ()> && onAppearCallback)50 void NodeContainerModelNG::SetOnAppear(std::function<void()>&& onAppearCallback)
51 {
52     auto eventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<NodeContainerEventHub>();
53     CHECK_NULL_VOID(eventHub);
54     eventHub->SetControllerAboutToAppear(std::move(onAppearCallback));
55 }
56 
SetOnDisAppear(std::function<void ()> && onDisAppearCallback)57 void NodeContainerModelNG::SetOnDisAppear(std::function<void()>&& onDisAppearCallback)
58 {
59     auto eventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<NodeContainerEventHub>();
60     CHECK_NULL_VOID(eventHub);
61     eventHub->SetControllerAboutToDisappear(std::move(onDisAppearCallback));
62 }
63 
SetOnTouchEvent(TouchEventFunc && touchEventFunc)64 void NodeContainerModelNG::SetOnTouchEvent(TouchEventFunc&& touchEventFunc)
65 {
66     auto gestureHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeGestureEventHub();
67     CHECK_NULL_VOID(gestureHub);
68     gestureHub->SetOnTouchEvent(std::move(touchEventFunc));
69 }
70 
BindController(std::function<void ()> && resetFunc)71 void NodeContainerModelNG::BindController(std::function<void()>&& resetFunc)
72 {
73     auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
74     CHECK_NULL_VOID(frameNode);
75     auto pattern = AceType::DynamicCast<NodeContainerPattern>(frameNode->GetPattern());
76     CHECK_NULL_VOID(pattern);
77     pattern->BindController(std::move(resetFunc));
78 }
79 
ResetController()80 void NodeContainerModelNG::ResetController()
81 {
82     auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
83     CHECK_NULL_VOID(frameNode);
84     auto pattern = AceType::DynamicCast<NodeContainerPattern>(frameNode->GetPattern());
85     CHECK_NULL_VOID(pattern);
86     pattern->ResetController();
87 }
88 
FireMakeNode()89 void NodeContainerModelNG::FireMakeNode()
90 {
91     auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
92     CHECK_NULL_VOID(frameNode);
93     auto pattern = AceType::DynamicCast<NodeContainerPattern>(frameNode->GetPattern());
94     CHECK_NULL_VOID(pattern);
95     pattern->RemakeNode();
96 }
97 } // namespace OHOS::Ace::NG
98