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_SEARCH_SEARCH_LAYOUT_PROPERTY_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_SEARCH_SEARCH_LAYOUT_PROPERTY_H 18 19 #include "base/geometry/axis.h" 20 #include "base/geometry/dimension.h" 21 #include "core/components_ng/base/inspector_filter.h" 22 #include "core/components_ng/layout/layout_property.h" 23 #include "core/components_ng/pattern/search/search_model.h" 24 25 namespace OHOS::Ace::NG { 26 27 class ACE_EXPORT SearchLayoutProperty : public LayoutProperty { 28 DECLARE_ACE_TYPE(SearchLayoutProperty, LayoutProperty); 29 30 public: 31 SearchLayoutProperty() = default; 32 ~SearchLayoutProperty() override = default; 33 Clone()34 RefPtr<LayoutProperty> Clone() const override 35 { 36 auto value = MakeRefPtr<SearchLayoutProperty>(); 37 value->LayoutProperty::UpdateLayoutProperty(AceType::DynamicCast<LayoutProperty>(this)); 38 value->propSearchButton_ = CloneSearchButton(); 39 value->propCancelButtonStyle_ = CloneCancelButtonStyle(); 40 value->propCancelButtonUDSize_ = CloneCancelButtonUDSize(); 41 value->propSearchIconUDSize_ = CloneSearchIconUDSize(); 42 value->propCaretUDWidth_ = CloneCaretUDWidth(); 43 value->propSearchButtonFontSize_ = CloneSearchButtonFontSize(); 44 value->propFontFeature_ = CloneFontFeature(); 45 return value; 46 } 47 Reset()48 void Reset() override 49 { 50 LayoutProperty::Reset(); 51 ResetSearchButton(); 52 ResetCancelButtonStyle(); 53 ResetCancelButtonUDSize(); 54 ResetSearchIconUDSize(); 55 ResetCaretUDWidth(); 56 ResetSearchButtonFontSize(); 57 ResetFontFeature(); 58 } 59 ToJsonValue(std::unique_ptr<JsonValue> & json,const InspectorFilter & filter)60 void ToJsonValue(std::unique_ptr<JsonValue>& json, const InspectorFilter& filter) const override 61 { 62 LayoutProperty::ToJsonValue(json, filter); 63 /* no fixed attr below, just return */ 64 if (filter.IsFastFilter()) { 65 return; 66 } 67 json->PutExtAttr("searchButton", GetSearchButton().value_or("")->c_str(), filter); 68 } 69 GetSearchIconSymbol()70 const std::function<void(WeakPtr<NG::FrameNode>)>& GetSearchIconSymbol() const 71 { 72 return searchIconSymbol_; 73 } 74 SetSearchIconSymbol(const std::function<void (WeakPtr<NG::FrameNode>)> & searchIconSymbol)75 void SetSearchIconSymbol(const std::function<void(WeakPtr<NG::FrameNode>)>& searchIconSymbol) 76 { 77 searchIconSymbol_ = searchIconSymbol; 78 } 79 GetCancelIconSymbol()80 const std::function<void(WeakPtr<NG::FrameNode>)>& GetCancelIconSymbol() const 81 { 82 return cancelIconSymbol_; 83 } 84 SetCancelIconSymbol(const std::function<void (WeakPtr<NG::FrameNode>)> & cancelIconSymbol)85 void SetCancelIconSymbol(const std::function<void(WeakPtr<NG::FrameNode>)>& cancelIconSymbol) 86 { 87 cancelIconSymbol_ = cancelIconSymbol; 88 } 89 90 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(SearchButton, std::optional<std::string>, PROPERTY_UPDATE_MEASURE); 91 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(CancelButtonStyle, CancelButtonStyle, PROPERTY_UPDATE_MEASURE); 92 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(CancelButtonUDSize, Dimension, PROPERTY_UPDATE_MEASURE); 93 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(SearchIconUDSize, Dimension, PROPERTY_UPDATE_MEASURE); 94 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(CaretUDWidth, Dimension, PROPERTY_UPDATE_MEASURE); 95 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(SearchButtonFontSize, Dimension, PROPERTY_UPDATE_MEASURE); 96 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(FontFeature, FONT_FEATURES_LIST, PROPERTY_UPDATE_MEASURE); 97 98 private: 99 std::function<void(WeakPtr<NG::FrameNode>)> searchIconSymbol_; 100 std::function<void(WeakPtr<NG::FrameNode>)> cancelIconSymbol_; 101 }; 102 103 } // namespace OHOS::Ace::NG 104 105 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_SEARCH_SEARCH_LAYOUT_PROPERTY_H 106