1 /* 2 * Copyright (c) 2022-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 16 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_BADGE_BADGE_LAYOUT_PROPERTY_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_BADGE_BADGE_LAYOUT_PROPERTY_H 18 19 #include "base/geometry/axis.h" 20 #include "base/geometry/dimension.h" 21 #include "core/components/common/layout/constants.h" 22 #include "core/components/common/properties/text_style.h" 23 #include "core/components_ng/layout/layout_property.h" 24 #include "core/components_v2/inspector/utils.h" 25 26 namespace OHOS::Ace::NG { 27 class InspectorFilter; 28 29 class ACE_EXPORT BadgeLayoutProperty : public LayoutProperty { 30 DECLARE_ACE_TYPE(BadgeLayoutProperty, LayoutProperty); 31 32 public: 33 BadgeLayoutProperty() = default; 34 ~BadgeLayoutProperty() override = default; 35 Clone()36 RefPtr<LayoutProperty> Clone() const override 37 { 38 auto value = MakeRefPtr<BadgeLayoutProperty>(); 39 value->LayoutProperty::UpdateLayoutProperty(AceType::DynamicCast<LayoutProperty>(this)); 40 value->propBadgeValue_ = CloneBadgeValue(); 41 value->propBadgeCount_ = CloneBadgeCount(); 42 value->propBadgeMaxCount_ = CloneBadgeMaxCount(); 43 value->propBadgePosition_ = CloneBadgePosition(); 44 value->propBadgePositionX_ = CloneBadgePositionX(); 45 value->propBadgePositionY_ = CloneBadgePositionY(); 46 value->propIsPositionXy_ = CloneIsPositionXy(); 47 48 value->propBadgeColor_ = CloneBadgeColor(); 49 value->propBadgeTextColor_ = CloneBadgeTextColor(); 50 value->propBadgeTextColor_ = CloneBadgeBorderColor(); 51 value->propBadgeCircleSize_ = CloneBadgeCircleSize(); 52 value->propBadgeFontSize_ = CloneBadgeFontSize(); 53 value->propBadgeFontWeight_ = CloneBadgeFontWeight(); 54 value->propBadgeBorderWidth_ = CloneBadgeBorderWidth(); 55 return value; 56 } 57 Reset()58 void Reset() override 59 { 60 LayoutProperty::Reset(); 61 ResetBadgeValue(); 62 ResetBadgeCount(); 63 ResetBadgeMaxCount(); 64 ResetBadgePosition(); 65 ResetBadgePositionX(); 66 ResetBadgePositionY(); 67 ResetIsPositionXy(); 68 69 ResetBadgeColor(); 70 ResetBadgeTextColor(); 71 ResetBadgeBorderColor(); 72 ResetBadgeCircleSize(); 73 ResetBadgeFontSize(); 74 ResetBadgeFontWeight(); 75 ResetBadgeBorderWidth(); 76 } 77 GetBadgeCircleRadius()78 double GetBadgeCircleRadius() const 79 { 80 return badgeCircleRadius_; 81 } 82 SetBadgeCircleRadius(const double & badgeCircleRadius)83 void SetBadgeCircleRadius(const double& badgeCircleRadius) 84 { 85 badgeCircleRadius_ = badgeCircleRadius; 86 } 87 88 void ToJsonValue(std::unique_ptr<JsonValue>& json, const InspectorFilter& filter) const override; 89 GetBadgePositionString(BadgePosition position)90 std::string GetBadgePositionString(BadgePosition position) const 91 { 92 switch (position) { 93 case BadgePosition::RIGHT_TOP: 94 return "BadgePosition.RightTop"; 95 case BadgePosition::RIGHT: 96 return "BadgePosition.Right"; 97 case BadgePosition::LEFT: 98 return "BadgePosition.Left"; 99 default: 100 break; 101 } 102 return "-"; 103 } 104 SetIsDefault(bool isDefaultFontSize,bool isDefaultBadgeSize)105 void SetIsDefault(bool isDefaultFontSize, bool isDefaultBadgeSize) 106 { 107 isDefaultFontSize_ = isDefaultFontSize; 108 isDefaultBadgeSize_ = isDefaultBadgeSize; 109 } GetFontSizeIsDefault()110 bool GetFontSizeIsDefault() const 111 { 112 return isDefaultFontSize_; 113 } GetBadgeSizeIsDefault()114 bool GetBadgeSizeIsDefault() const 115 { 116 return isDefaultBadgeSize_; 117 } 118 119 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BadgeValue, std::string, PROPERTY_UPDATE_MEASURE); 120 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BadgeCount, int, PROPERTY_UPDATE_MEASURE); 121 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BadgeMaxCount, int, PROPERTY_UPDATE_MEASURE); 122 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BadgePosition, BadgePosition, PROPERTY_UPDATE_MEASURE); 123 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BadgePositionX, Dimension, PROPERTY_UPDATE_MEASURE_SELF); 124 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BadgePositionY, Dimension, PROPERTY_UPDATE_MEASURE_SELF); 125 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(IsPositionXy, bool, PROPERTY_UPDATE_MEASURE_SELF); 126 127 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BadgeColor, Color, PROPERTY_UPDATE_MEASURE); 128 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BadgeTextColor, Color, PROPERTY_UPDATE_MEASURE); 129 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BadgeBorderColor, Color, PROPERTY_UPDATE_MEASURE); 130 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BadgeFontSize, Dimension, PROPERTY_UPDATE_MEASURE); 131 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BadgeCircleSize, Dimension, PROPERTY_UPDATE_MEASURE); 132 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BadgeFontWeight, FontWeight, PROPERTY_UPDATE_MEASURE); 133 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BadgeBorderWidth, Dimension, PROPERTY_UPDATE_MEASURE); 134 135 private: 136 double badgeCircleRadius_; 137 bool isDefaultFontSize_; 138 bool isDefaultBadgeSize_; 139 }; 140 141 } // namespace OHOS::Ace::NG 142 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_BADGE_BADGE_LAYOUT_PROPERTY_H 143