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