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_PATTERN_NAVIGATION_TITLE_BAR_LAYOUT_PROPERTY_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_NAVIGATION_TITLE_BAR_LAYOUT_PROPERTY_H 18 19 #include "base/geometry/dimension.h" 20 #include "base/utils/macros.h" 21 #include "core/components/common/layout/constants.h" 22 #include "core/components_ng/layout/layout_property.h" 23 #include "core/components_ng/pattern/navigation/navigation_declaration.h" 24 #include "core/components_ng/property/property.h" 25 #include "core/image/image_source_info.h" 26 27 namespace OHOS::Ace::NG { 28 29 class ACE_EXPORT TitleBarLayoutProperty : public LayoutProperty { 30 DECLARE_ACE_TYPE(TitleBarLayoutProperty, LayoutProperty); 31 32 public: 33 TitleBarLayoutProperty() = default; 34 35 ~TitleBarLayoutProperty() override = default; 36 Clone()37 RefPtr<LayoutProperty> Clone() const override 38 { 39 auto copy = MakeRefPtr<TitleBarLayoutProperty>(); 40 copy->LayoutProperty::UpdateLayoutProperty(DynamicCast<LayoutProperty>(this)); 41 copy->propTitleMode_ = CloneTitleMode(); 42 copy->propHideBackButton_ = CloneHideBackButton(); 43 copy->propTitleBarParentType_ = CloneTitleBarParentType(); 44 copy->propTitleHeight_ = CloneTitleHeight(); 45 copy->propNoPixMap_ = CloneNoPixMap(); 46 copy->propImageSource_ = CloneImageSource(); 47 copy->propPixelMap_ = ClonePixelMap(); 48 copy->propIsValidImage_ = CloneIsValidImage(); 49 copy->backIconSymbol_ = backIconSymbol_; 50 return copy; 51 } 52 ResetSymbol()53 void ResetSymbol() 54 { 55 backIconSymbol_ = nullptr; 56 } 57 Reset()58 void Reset() override 59 { 60 LayoutProperty::Reset(); 61 ResetTitleMode(); 62 ResetHideBackButton(); 63 ResetTitleBarParentType(); 64 ResetTitleHeight(); 65 ResetNoPixMap(); 66 ResetImageSource(); 67 ResetPixelMap(); 68 ResetSymbol(); 69 ResetIsValidImage(); 70 } 71 GetBackIconSymbol()72 const std::function<void(WeakPtr<NG::FrameNode>)>& GetBackIconSymbol() const 73 { 74 return backIconSymbol_; 75 } 76 SetBackIconSymbol(const std::function<void (WeakPtr<NG::FrameNode>)> & backIconSymbol)77 void SetBackIconSymbol(const std::function<void(WeakPtr<NG::FrameNode>)>& backIconSymbol) 78 { 79 backIconSymbol_ = backIconSymbol; 80 } 81 82 private: 83 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(TitleMode, NavigationTitleMode, PROPERTY_UPDATE_MEASURE); 84 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(HideBackButton, bool, PROPERTY_UPDATE_MEASURE); 85 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(TitleBarParentType, TitleBarParentType, PROPERTY_UPDATE_MEASURE); 86 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(TitleHeight, Dimension, PROPERTY_UPDATE_MEASURE); 87 // back button icon 88 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(NoPixMap, bool, PROPERTY_UPDATE_MEASURE); 89 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ImageSource, ImageSourceInfo, PROPERTY_UPDATE_MEASURE); 90 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(PixelMap, RefPtr<PixelMap>, PROPERTY_UPDATE_MEASURE); 91 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(IsValidImage, bool, PROPERTY_UPDATE_MEASURE); 92 std::function<void(WeakPtr<NG::FrameNode>)> backIconSymbol_; 93 }; 94 95 } // namespace OHOS::Ace::NG 96 97 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_NAVIGATION_TITLE_BAR_LAYOUT_PROPERTY_H 98