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_DATE_PICKER_DATE_PICKER_ROW_LAYOUT_PROPERTY_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_DATE_PICKER_DATE_PICKER_ROW_LAYOUT_PROPERTY_H 18 19 #include <string> 20 #include <vector> 21 #include "base/geometry/dimension.h" 22 #include "base/i18n/localization.h" 23 #include "base/json/json_util.h" 24 #include "core/components/common/layout/constants.h" 25 #include "core/components_ng/base/inspector_filter.h" 26 #include "core/components_ng/layout/layout_property.h" 27 #include "core/components_ng/pattern/linear_layout/linear_layout_property.h" 28 #include "core/components_ng/pattern/text/text_styles.h" 29 #include "core/components_ng/property/property.h" 30 #include "core/components_v2/inspector/utils.h" 31 32 namespace OHOS::Ace::NG { 33 class ACE_EXPORT DataPickerRowLayoutProperty : public LinearLayoutProperty { 34 DECLARE_ACE_TYPE(DataPickerRowLayoutProperty, LinearLayoutProperty); 35 36 public: DataPickerRowLayoutProperty()37 DataPickerRowLayoutProperty() : LinearLayoutProperty(false) {}; 38 ~DataPickerRowLayoutProperty() override = default; 39 Clone()40 RefPtr<LayoutProperty> Clone() const override 41 { 42 auto value = MakeRefPtr<DataPickerRowLayoutProperty>(); 43 value->LayoutProperty::UpdateLayoutProperty(DynamicCast<LayoutProperty>(this)); 44 value->propSelectedDate_ = CloneSelectedDate(); 45 value->propLunar_ = CloneLunar(); 46 value->propStartDate_ = CloneStartDate(); 47 value->propEndDate_ = CloneEndDate(); 48 value->propDisappearTextStyle_ = CloneDisappearTextStyle(); 49 value->propTextStyle_ = CloneTextStyle(); 50 value->propSelectedTextStyle_ = CloneSelectedTextStyle(); 51 return value; 52 } 53 Reset()54 void Reset() override 55 { 56 LinearLayoutProperty::Reset(); 57 ResetSelectedDate(); 58 ResetStartDate(); 59 ResetEndDate(); 60 ResetLunar(); 61 ResetDisappearTextStyle(); 62 ResetTextStyle(); 63 ResetSelectedTextStyle(); 64 } 65 ToJsonValue(std::unique_ptr<JsonValue> & json,const InspectorFilter & filter)66 void ToJsonValue(std::unique_ptr<JsonValue>& json, const InspectorFilter& filter) const override 67 { 68 LayoutProperty::ToJsonValue(json, filter); 69 /* no fixed attr below, just return */ 70 if (filter.IsFastFilter()) { 71 return; 72 } 73 json->PutExtAttr("lunar", V2::ConvertBoolToString(GetLunar().value_or(false)).c_str(), filter); 74 75 auto disappearFont = JsonUtil::Create(true); 76 disappearFont->Put("size", GetDisappearFontSizeValue(Dimension(0)).ToString().c_str()); 77 disappearFont->Put("weight", V2::ConvertWrapFontWeightToStirng( 78 GetDisappearWeight().value_or(FontWeight::NORMAL)).c_str()); 79 auto disappearTextStyle = JsonUtil::Create(true); 80 disappearTextStyle->Put("color", GetDisappearColor().value_or(Color::BLACK).ColorToString().c_str()); 81 disappearTextStyle->Put("font", disappearFont); 82 json->PutExtAttr("disappearTextStyle", disappearTextStyle, filter); 83 84 auto normalFont = JsonUtil::Create(true); 85 normalFont->Put("size", GetFontSizeValue(Dimension(0)).ToString().c_str()); 86 normalFont->Put("weight", V2::ConvertWrapFontWeightToStirng(GetWeight().value_or(FontWeight::NORMAL)).c_str()); 87 auto normalTextStyle = JsonUtil::Create(true); 88 normalTextStyle->Put("color", GetColor().value_or(Color::BLACK).ColorToString().c_str()); 89 normalTextStyle->Put("font", normalFont); 90 json->PutExtAttr("textStyle", normalTextStyle, filter); 91 92 auto selectedFont = JsonUtil::Create(true); 93 selectedFont->Put("size", GetSelectedFontSizeValue(Dimension(0)).ToString().c_str()); 94 selectedFont->Put("weight", V2::ConvertWrapFontWeightToStirng( 95 GetSelectedWeight().value_or(FontWeight::NORMAL)).c_str()); 96 auto selectedTextStyle = JsonUtil::Create(true); 97 selectedTextStyle->Put("color", GetSelectedColor().value_or(Color::BLACK).ColorToString().c_str()); 98 selectedTextStyle->Put("font", selectedFont); 99 json->PutExtAttr("selectedTextStyle", selectedTextStyle, filter); 100 } 101 GetDateStart()102 std::string GetDateStart() const 103 { 104 if (HasStartDate()) { 105 std::string startDate; 106 startDate += std::to_string(GetStartDate()->year); 107 startDate += "-"; 108 startDate += std::to_string(GetStartDate()->month); 109 startDate += "-"; 110 startDate += std::to_string(GetStartDate()->day); 111 return startDate; 112 } 113 return "1970-1-1"; 114 } 115 GetDateEnd()116 std::string GetDateEnd() const 117 { 118 if (HasEndDate()) { 119 std::string endDate; 120 endDate += std::to_string(GetEndDate()->year); 121 endDate += "-"; 122 endDate += std::to_string(GetEndDate()->month); 123 endDate += "-"; 124 endDate += std::to_string(GetEndDate()->day); 125 return endDate; 126 } 127 return "2100-12-31"; 128 } 129 GetDateSelected()130 std::string GetDateSelected() const 131 { 132 if (HasSelectedDate()) { 133 std::string selectedDate; 134 selectedDate += std::to_string(GetSelectedDate()->year); 135 selectedDate += "-"; 136 selectedDate += std::to_string(GetSelectedDate()->month); 137 selectedDate += "-"; 138 selectedDate += std::to_string(GetSelectedDate()->day); 139 return selectedDate; 140 } 141 return ""; 142 } 143 144 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(SelectedDate, LunarDate, PROPERTY_UPDATE_RENDER); 145 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(Lunar, bool, PROPERTY_UPDATE_RENDER); 146 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(StartDate, LunarDate, PROPERTY_UPDATE_RENDER); 147 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(EndDate, LunarDate, PROPERTY_UPDATE_RENDER); 148 149 ACE_DEFINE_PROPERTY_GROUP(DisappearTextStyle, FontStyle); 150 ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP_ITEM( 151 DisappearTextStyle, FontSize, DisappearFontSize, Dimension, PROPERTY_UPDATE_MEASURE); 152 ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP_ITEM( 153 DisappearTextStyle, TextColor, DisappearColor, Color, PROPERTY_UPDATE_MEASURE_SELF); 154 ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP_ITEM( 155 DisappearTextStyle, FontWeight, DisappearWeight, FontWeight, PROPERTY_UPDATE_MEASURE); 156 ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP_ITEM( 157 DisappearTextStyle, FontFamily, DisappearFontFamily, std::vector<std::string>, PROPERTY_UPDATE_MEASURE); 158 ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP_ITEM( 159 DisappearTextStyle, ItalicFontStyle, DisappearFontStyle, Ace::FontStyle, PROPERTY_UPDATE_MEASURE); 160 161 ACE_DEFINE_PROPERTY_GROUP(TextStyle, FontStyle); 162 ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP_ITEM( 163 TextStyle, FontSize, FontSize, Dimension, PROPERTY_UPDATE_MEASURE); 164 ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP_ITEM( 165 TextStyle, TextColor, Color, Color, PROPERTY_UPDATE_MEASURE_SELF); 166 ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP_ITEM( 167 TextStyle, FontWeight, Weight, FontWeight, PROPERTY_UPDATE_MEASURE); 168 ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP_ITEM( 169 TextStyle, FontFamily, FontFamily, std::vector<std::string>, PROPERTY_UPDATE_MEASURE); 170 ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP_ITEM( 171 TextStyle, ItalicFontStyle, FontStyle, Ace::FontStyle, PROPERTY_UPDATE_MEASURE); 172 173 ACE_DEFINE_PROPERTY_GROUP(SelectedTextStyle, FontStyle); 174 ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP_ITEM( 175 SelectedTextStyle, FontSize, SelectedFontSize, Dimension, PROPERTY_UPDATE_MEASURE); 176 ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP_ITEM( 177 SelectedTextStyle, TextColor, SelectedColor, Color, PROPERTY_UPDATE_MEASURE_SELF); 178 ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP_ITEM( 179 SelectedTextStyle, FontWeight, SelectedWeight, FontWeight, PROPERTY_UPDATE_MEASURE); 180 ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP_ITEM( 181 SelectedTextStyle, FontFamily, SelectedFontFamily, std::vector<std::string>, PROPERTY_UPDATE_MEASURE); 182 ACE_DEFINE_PROPERTY_ITEM_WITH_GROUP_ITEM( 183 SelectedTextStyle, ItalicFontStyle, SelectedFontStyle, Ace::FontStyle, PROPERTY_UPDATE_MEASURE); 184 private: 185 ACE_DISALLOW_COPY_AND_MOVE(DataPickerRowLayoutProperty); 186 }; 187 } // namespace OHOS::Ace::NG 188 189 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_DATE_PICKER_DATE_PICKER_ROW_LAYOUT_PROPERTY_H 190