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_INDEXER_INDEXER_LAYOUT_PROPERTY_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_INDEXER_INDEXER_LAYOUT_PROPERTY_H 18 19 #include "base/geometry/axis.h" 20 #include "base/utils/macros.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_ng/pattern/indexer/indexer_theme.h" 25 #include "core/components_ng/property/property.h" 26 #include "core/pipeline_ng/pipeline_context.h" 27 28 namespace OHOS::Ace::NG { 29 class InspectorFilter; 30 31 class ACE_EXPORT IndexerLayoutProperty : public LayoutProperty { 32 DECLARE_ACE_TYPE(IndexerLayoutProperty, LayoutProperty); 33 34 public: 35 IndexerLayoutProperty() = default; 36 37 ~IndexerLayoutProperty() override = default; 38 Clone()39 RefPtr<LayoutProperty> Clone() const override 40 { 41 auto value = MakeRefPtr<IndexerLayoutProperty>(); 42 value->LayoutProperty::UpdateLayoutProperty(DynamicCast<LayoutProperty>(this)); 43 value->propArrayValue_ = CloneArrayValue(); 44 value->propActualArrayValue_ = CloneActualArrayValue(); 45 value->propSelected_ = CloneSelected(); 46 value->propColor_ = CloneColor(); 47 value->propSelectedColor_ = CloneSelectedColor(); 48 value->propPopupColor_ = ClonePopupColor(); 49 value->propUsingPopup_ = CloneUsingPopup(); 50 value->propSelectedFont_ = CloneSelectedFont(); 51 value->propPopupFont_ = ClonePopupFont(); 52 value->propFont_ = CloneFont(); 53 value->propItemSize_ = CloneItemSize(); 54 value->propAlignStyle_ = CloneAlignStyle(); 55 value->propPopupPositionX_ = ClonePopupPositionX(); 56 value->propPopupPositionY_ = ClonePopupPositionY(); 57 value->propFontSize_ = CloneFontSize(); 58 value->propFontWeight_ = CloneFontWeight(); 59 value->propAutoCollapse_ = CloneAutoCollapse(); 60 value->propPopupHorizontalSpace_ = ClonePopupHorizontalSpace(); 61 value->propIsPopup_ = CloneIsPopup(); 62 value->propAdaptiveWidth_ = CloneAdaptiveWidth(); 63 value->propEnableHapticFeedback_ = CloneEnableHapticFeedback(); 64 return value; 65 } 66 Reset()67 void Reset() override 68 { 69 LayoutProperty::Reset(); 70 ResetArrayValue(); 71 ResetActualArrayValue(); 72 ResetSelected(); 73 ResetColor(); 74 ResetSelectedColor(); 75 ResetPopupColor(); 76 ResetUsingPopup(); 77 ResetSelectedFont(); 78 ResetPopupFont(); 79 ResetFont(); 80 ResetItemSize(); 81 ResetAlignStyle(); 82 ResetPopupPositionX(); 83 ResetPopupPositionY(); 84 ResetFontSize(); 85 ResetFontWeight(); 86 ResetAutoCollapse(); 87 ResetPopupHorizontalSpace(); 88 ResetIsPopup(); 89 ResetAdaptiveWidth(); 90 ResetEnableHapticFeedback(); 91 } 92 93 void ToJsonValue(std::unique_ptr<JsonValue>& json, const InspectorFilter& filter) const override; 94 95 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ArrayValue, std::vector<std::string>, PROPERTY_UPDATE_MEASURE); 96 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ActualArrayValue, std::vector<std::string>, PROPERTY_UPDATE_MEASURE); 97 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(Selected, int32_t, PROPERTY_UPDATE_NORMAL); 98 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(Color, Color, PROPERTY_UPDATE_NORMAL); 99 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(SelectedColor, Color, PROPERTY_UPDATE_NORMAL); 100 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(PopupColor, Color, PROPERTY_UPDATE_NORMAL); 101 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(UsingPopup, bool, PROPERTY_UPDATE_NORMAL); 102 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(SelectedFont, TextStyle, PROPERTY_UPDATE_NORMAL); 103 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(PopupFont, TextStyle, PROPERTY_UPDATE_NORMAL); 104 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(Font, TextStyle, PROPERTY_UPDATE_NORMAL); 105 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ItemSize, Dimension, PROPERTY_UPDATE_MEASURE); 106 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(AlignStyle, NG::AlignStyle, PROPERTY_UPDATE_NORMAL); 107 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(PopupPositionX, Dimension, PROPERTY_UPDATE_NORMAL); 108 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(PopupPositionY, Dimension, PROPERTY_UPDATE_NORMAL); 109 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(FontSize, Dimension, PROPERTY_UPDATE_NORMAL); 110 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(FontWeight, FontWeight, PROPERTY_UPDATE_NORMAL); 111 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(AutoCollapse, bool, PROPERTY_UPDATE_MEASURE); 112 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(PopupHorizontalSpace, Dimension, PROPERTY_UPDATE_LAYOUT); 113 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(IsPopup, bool, PROPERTY_UPDATE_LAYOUT); 114 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(AdaptiveWidth, bool, PROPERTY_UPDATE_MEASURE); 115 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(EnableHapticFeedback, bool, PROPERTY_UPDATE_MEASURE); 116 117 private: 118 static std::unique_ptr<JsonValue> ToJsonObjectValue(const TextStyle& textStyle); 119 static std::string AlignStyleToString(const AlignStyle& alignStyle); 120 }; 121 } // namespace OHOS::Ace::NG 122 123 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_INDEXER_INDEXER_LAYOUT_PROPERTY_H 124