1 /* 2 * Copyright (c) 2022 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 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_BASE_VIEW_STACK_MODEL_NG_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_BASE_VIEW_STACK_MODEL_NG_H 18 19 #include <memory> 20 21 #include "base/memory/ace_type.h" 22 #include "base/utils/macros.h" 23 #include "core/components/common/properties/animation_option.h" 24 #include "core/components_ng/base/view_stack_model.h" 25 #include "core/components_ng/base/view_stack_processor.h" 26 27 namespace OHOS::Ace::NG { 28 29 class ACE_EXPORT ViewStackModelNG : public ViewStackModel { 30 public: Push(const RefPtr<AceType> & node,bool isCustomView)31 void Push(const RefPtr<AceType>& node, bool isCustomView) override 32 { 33 auto uiNode = AceType::DynamicCast<UINode>(node); 34 ViewStackProcessor::GetInstance()->Push(uiNode, isCustomView); 35 } 36 Pop()37 void Pop() override 38 { 39 ViewStackProcessor::GetInstance()->Pop(); 40 } 41 PopContainer()42 void PopContainer() override 43 { 44 ViewStackProcessor::GetInstance()->PopContainer(); 45 } 46 PushKey(const std::string & key)47 void PushKey(const std::string& key) override 48 { 49 ViewStackProcessor::GetInstance()->PushKey(key); 50 } 51 PopKey()52 void PopKey() override 53 { 54 ViewStackProcessor::GetInstance()->PopKey(); 55 } 56 NewScope()57 void NewScope() override 58 { 59 scopeStack_ = std::make_unique<ScopedViewStackProcessor>(); 60 } 61 Finish()62 RefPtr<AceType> Finish() override 63 { 64 auto node = ViewStackProcessor::GetInstance()->Finish(); 65 scopeStack_.reset(); 66 return node; 67 } 68 ProcessViewId(const std::string & viewId)69 std::string ProcessViewId(const std::string& viewId) override 70 { 71 return ViewStackProcessor::GetInstance()->ProcessViewId(viewId); 72 } 73 GetImplicitAnimationOption()74 AnimationOption GetImplicitAnimationOption() override 75 { 76 return ViewStackProcessor::GetInstance()->GetImplicitAnimationOption(); 77 } 78 ClearVisualState()79 void ClearVisualState() override 80 { 81 ViewStackProcessor::GetInstance()->ClearVisualState(); 82 } 83 SetVisualState(VisualState state)84 void SetVisualState(VisualState state) override 85 { 86 ViewStackProcessor::GetInstance()->SetVisualState(state); 87 } 88 StartGetAccessRecordingFor(int32_t elmtId)89 void StartGetAccessRecordingFor(int32_t elmtId) override 90 { 91 ViewStackProcessor::GetInstance()->StartGetAccessRecordingFor(elmtId); 92 } 93 GetElmtIdToAccountFor()94 int32_t GetElmtIdToAccountFor() override 95 { 96 return ViewStackProcessor::GetInstance()->GetNodeIdToAccountFor(); 97 } 98 SetElmtIdToAccountFor(int32_t elmtId)99 void SetElmtIdToAccountFor(int32_t elmtId) override 100 { 101 ViewStackProcessor::GetInstance()->SetNodeIdToAccountFor(elmtId); 102 } 103 StopGetAccessRecording()104 void StopGetAccessRecording() override 105 { 106 ViewStackProcessor::GetInstance()->StopGetAccessRecording(); 107 } 108 ImplicitPopBeforeContinue()109 void ImplicitPopBeforeContinue() override 110 { 111 ViewStackProcessor::GetInstance()->ImplicitPopBeforeContinue(); 112 } 113 GetAndPushFrameNode(const std::string & tag,int32_t elmtId)114 void GetAndPushFrameNode(const std::string& tag, int32_t elmtId) override 115 { 116 ViewStackProcessor::GetInstance()->GetAndPushFrameNode(tag, elmtId); 117 } 118 CheckTopNodeFirstBuilding()119 bool CheckTopNodeFirstBuilding() const override 120 { 121 return ViewStackProcessor::GetInstance()->CheckTopNodeFirstBuilding(); 122 } 123 IsEmptyStack()124 bool IsEmptyStack() const override 125 { 126 return ViewStackProcessor::GetInstance()->IsEmpty(); 127 } 128 129 private: 130 std::unique_ptr<ScopedViewStackProcessor> scopeStack_; 131 }; 132 133 } // namespace OHOS::Ace::NG 134 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_BASE_VIEW_STACK_MODEL_NG_H 135