1 /*
2  * Copyright (c) 2024 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/manager/form_visible/form_visible_manager.h"
17 
18 namespace OHOS::Ace::NG {
AddFormVisibleChangeNode(const RefPtr<FrameNode> & node,const std::function<void (bool)> & callback)19 void FormVisibleManager::AddFormVisibleChangeNode(const RefPtr<FrameNode>& node,
20     const std::function<void(bool)>& callback)
21 {
22     CHECK_NULL_VOID(node);
23     onFormVisibleChangeNodeIds_.emplace(node->GetId());
24     onFormVisibleChangeEvents_.insert_or_assign(node->GetId(), callback);
25 }
26 
RemoveFormVisibleChangeNode(int32_t nodeId)27 void FormVisibleManager::RemoveFormVisibleChangeNode(int32_t nodeId)
28 {
29     onFormVisibleChangeNodeIds_.erase(nodeId);
30     auto iter = onFormVisibleChangeEvents_.find(nodeId);
31     if (iter != onFormVisibleChangeEvents_.end()) {
32         onFormVisibleChangeEvents_.erase(iter);
33     }
34 }
35 
HandleFormVisibleChangeEvent(bool isVisible)36 void FormVisibleManager::HandleFormVisibleChangeEvent(bool isVisible)
37 {
38     auto nodes = FrameNode::GetNodesById(onFormVisibleChangeNodeIds_);
39     for (auto& pair : onFormVisibleChangeEvents_) {
40         if (pair.second) {
41             pair.second(isVisible);
42         }
43     }
44 }
45 
46 } // namespace OHOS::Ace::NG