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_LIST_LIST_LAYOUT_PROPERTY_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_LIST_LIST_LAYOUT_PROPERTY_H 18 19 #include <type_traits> 20 21 #include "base/geometry/axis.h" 22 #include "base/utils/macros.h" 23 #include "core/components/common/layout/constants.h" 24 #include "core/components_ng/layout/layout_property.h" 25 #include "core/components_ng/property/property.h" 26 #include "core/components_v2/list/list_component.h" 27 28 namespace OHOS::Ace::NG { 29 class InspectorFilter; 30 31 class ACE_EXPORT ListLayoutProperty : public LayoutProperty { 32 DECLARE_ACE_TYPE(ListLayoutProperty, LayoutProperty); 33 34 public: 35 ListLayoutProperty() = default; 36 37 ~ListLayoutProperty() override = default; 38 Clone()39 RefPtr<LayoutProperty> Clone() const override 40 { 41 auto value = MakeRefPtr<ListLayoutProperty>(); 42 value->LayoutProperty::UpdateLayoutProperty(DynamicCast<LayoutProperty>(this)); 43 value->propSpace_ = CloneSpace(); 44 value->propInitialIndex_ = CloneInitialIndex(); 45 value->propListDirection_ = CloneListDirection(); 46 value->propDivider_ = CloneDivider(); 47 value->propLanes_ = CloneLanes(); 48 value->propLaneMinLength_ = CloneLaneMinLength(); 49 value->propLaneMaxLength_ = CloneLaneMaxLength(); 50 value->propLaneGutter_ = CloneLaneGutter(); 51 value->propListItemAlign_ = CloneListItemAlign(); 52 value->propCachedCount_ = CloneCachedCount(); 53 value->propShowCachedItems_ = CloneShowCachedItems(); 54 value->propStickyStyle_ = CloneStickyStyle(); 55 value->propContentStartOffset_ = CloneContentStartOffset(); 56 value->propContentEndOffset_ = CloneContentEndOffset(); 57 value->propScrollSnapAlign_ = CloneScrollSnapAlign(); 58 value->propEditMode_ = CloneEditMode(); 59 value->propScrollEnabled_ = CloneScrollEnabled(); 60 return value; 61 } 62 Reset()63 void Reset() override 64 { 65 LayoutProperty::Reset(); 66 ResetSpace(); 67 ResetInitialIndex(); 68 ResetListDirection(); 69 ResetDivider(); 70 ResetLanes(); 71 ResetLaneMinLength(); 72 ResetLaneMaxLength(); 73 ResetLaneGutter(); 74 ResetListItemAlign(); 75 ResetCachedCount(); 76 ResetShowCachedItems(); 77 ResetStickyStyle(); 78 ResetContentStartOffset(); 79 ResetContentEndOffset(); 80 ResetScrollSnapAlign(); 81 ResetEditMode(); 82 ResetScrollEnabled(); 83 } 84 SetDefaultCachedCount(const int32_t cachedCount)85 void SetDefaultCachedCount(const int32_t cachedCount) 86 { 87 defCachedCount_ = cachedCount; 88 } 89 GetCachedCountWithDefault()90 int32_t GetCachedCountWithDefault() const 91 { 92 return GetCachedCountValue(defCachedCount_); 93 } 94 95 void ToJsonValue(std::unique_ptr<JsonValue>& json, const InspectorFilter& filter) const override; 96 97 void FromJson(const std::unique_ptr<JsonValue>& json) override; 98 99 void ScrollSnapPropToJsonValue(std::unique_ptr<JsonValue>& json, const InspectorFilter& filter) const; 100 101 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(Space, Dimension, PROPERTY_UPDATE_MEASURE); 102 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(InitialIndex, int32_t, PROPERTY_UPDATE_MEASURE); 103 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ListDirection, Axis, PROPERTY_UPDATE_MEASURE); 104 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(Divider, V2::ItemDivider, PROPERTY_UPDATE_MEASURE); 105 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(Lanes, int32_t, PROPERTY_UPDATE_MEASURE); 106 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(LaneMinLength, Dimension, PROPERTY_UPDATE_MEASURE); 107 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(LaneMaxLength, Dimension, PROPERTY_UPDATE_MEASURE); 108 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(LaneGutter, Dimension, PROPERTY_UPDATE_MEASURE); 109 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ListItemAlign, V2::ListItemAlign, PROPERTY_UPDATE_MEASURE); 110 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(CachedCount, int32_t, PROPERTY_UPDATE_MEASURE); 111 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ShowCachedItems, bool, PROPERTY_UPDATE_MEASURE); 112 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(StickyStyle, V2::StickyStyle, PROPERTY_UPDATE_MEASURE); 113 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ScrollSnapAlign, V2::ScrollSnapAlign, PROPERTY_UPDATE_MEASURE); 114 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ChainAnimation, bool, PROPERTY_UPDATE_MEASURE); 115 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ContentStartOffset, float, PROPERTY_UPDATE_MEASURE); 116 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ContentEndOffset, float, PROPERTY_UPDATE_MEASURE); 117 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(EditMode, bool, PROPERTY_UPDATE_MEASURE); 118 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ScrollEnabled, bool, PROPERTY_UPDATE_MEASURE); 119 120 int defCachedCount_ = 1; 121 }; 122 } // namespace OHOS::Ace::NG 123 124 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_LIST_LIST_LAYOUT_PROPERTY_H 125