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)19void 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)27void 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)36void 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