1 /* 2 * Copyright (c) 2022 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_PATTERNLOCK_PATTERNLOCK_PAINT_PROPERTY_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_PATTERNLOCK_PATTERNLOCK_PAINT_PROPERTY_H 18 19 #include "core/components_ng/base/inspector_filter.h" 20 #include "core/components_ng/render/paint_property.h" 21 #include "core/components_v2/pattern_lock/pattern_lock_theme.h" 22 #include "core/pipeline/pipeline_base.h" 23 24 namespace OHOS::Ace::NG { 25 26 class PatternLockPaintProperty : public PaintProperty { 27 DECLARE_ACE_TYPE(PatternLockPaintProperty, PaintProperty); 28 29 public: 30 PatternLockPaintProperty() = default; 31 ~PatternLockPaintProperty() override = default; 32 Clone()33 RefPtr<PaintProperty> Clone() const override 34 { 35 auto paintProperty = MakeRefPtr<PatternLockPaintProperty>(); 36 paintProperty->UpdatePaintProperty(this); 37 paintProperty->propCircleRadius_ = CloneCircleRadius(); 38 paintProperty->propRegularColor_ = CloneRegularColor(); 39 paintProperty->propSelectedColor_ = CloneSelectedColor(); 40 paintProperty->propActiveColor_ = CloneActiveColor(); 41 paintProperty->propPathColor_ = ClonePathColor(); 42 paintProperty->propPathStrokeWidth_ = ClonePathStrokeWidth(); 43 paintProperty->propAutoReset_ = CloneAutoReset(); 44 paintProperty->propActiveCircleColor_ = CloneActiveCircleColor(); 45 paintProperty->propActiveCircleRadius_ = CloneActiveCircleRadius(); 46 paintProperty->propEnableWaveEffect_ = CloneEnableWaveEffect(); 47 paintProperty->propEnableForeground_ = CloneEnableForeground(); 48 paintProperty->propSkipUnselectedPoint_ = CloneSkipUnselectedPoint(); 49 return paintProperty; 50 } 51 Reset()52 void Reset() override 53 { 54 PaintProperty::Reset(); 55 ResetCircleRadius(); 56 ResetRegularColor(); 57 ResetSelectedColor(); 58 ResetActiveColor(); 59 ResetPathColor(); 60 ResetPathStrokeWidth(); 61 ResetAutoReset(); 62 ResetActiveCircleColor(); 63 ResetActiveCircleRadius(); 64 ResetEnableWaveEffect(); 65 ResetEnableForeground(); 66 ResetSkipUnselectedPoint(); 67 } 68 ToJsonValue(std::unique_ptr<JsonValue> & json,const InspectorFilter & filter)69 void ToJsonValue(std::unique_ptr<JsonValue>& json, const InspectorFilter& filter) const override 70 { 71 PaintProperty::ToJsonValue(json, filter); 72 auto pipeline = PipelineBase::GetCurrentContext(); 73 CHECK_NULL_VOID(pipeline); 74 auto patternLockTheme = pipeline->GetTheme<V2::PatternLockTheme>(); 75 CHECK_NULL_VOID(patternLockTheme); 76 /* no fixed attr below, just return */ 77 if (filter.IsFastFilter()) { 78 return; 79 } 80 json->PutExtAttr("circleRadius", 81 GetCircleRadius().value_or(patternLockTheme->GetCircleRadius()).ToString().c_str(), filter); 82 json->PutExtAttr("regularColor", 83 GetRegularColor().value_or(patternLockTheme->GetRegularColor()).ColorToString().c_str(), filter); 84 json->PutExtAttr("selectedColor", 85 GetSelectedColor().value_or(patternLockTheme->GetSelectedColor()).ColorToString().c_str(), filter); 86 json->PutExtAttr("activeColor", 87 GetActiveColor().value_or(patternLockTheme->GetActiveColor()).ColorToString().c_str(), filter); 88 json->PutExtAttr("pathColor", 89 GetPathColor().value_or(patternLockTheme->GetPathColor()).ColorToString().c_str(), filter); 90 json->PutExtAttr("pathStrokeWidth", 91 GetPathStrokeWidth().value_or(patternLockTheme->GetPathStrokeWidth()).ToString().c_str(), filter); 92 json->PutExtAttr("autoReset", GetAutoReset().value_or(true) ? "true" : "false", filter); 93 json->PutExtAttr("activeCircleColor", 94 GetActiveCircleColor().value_or(patternLockTheme->GetPathColor()).ColorToString().c_str(), filter); 95 json->PutExtAttr("activeCircleRadius", 96 GetActiveCircleRadius().value_or(Dimension(0.0f, DimensionUnit::VP)).ToString().c_str(), filter); 97 json->PutExtAttr("enableWaveEffect", GetEnableWaveEffect().value_or(true) ? "true" : "false", filter); 98 json->PutExtAttr("enableForeground", GetEnableForeground().value_or(false) ? "true" : "false", filter); 99 json->PutExtAttr("skipUnselectedPoint", GetSkipUnselectedPoint().value_or(false) ? "true" : "false", filter); 100 } 101 102 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(CircleRadius, Dimension, PROPERTY_UPDATE_RENDER); 103 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(RegularColor, Color, PROPERTY_UPDATE_RENDER); 104 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(SelectedColor, Color, PROPERTY_UPDATE_RENDER); 105 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ActiveColor, Color, PROPERTY_UPDATE_RENDER); 106 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(PathColor, Color, PROPERTY_UPDATE_RENDER); 107 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(PathStrokeWidth, Dimension, PROPERTY_UPDATE_RENDER); 108 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(AutoReset, bool, PROPERTY_UPDATE_RENDER); 109 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ActiveCircleColor, Color, PROPERTY_UPDATE_RENDER); 110 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ActiveCircleRadius, Dimension, PROPERTY_UPDATE_RENDER); 111 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(EnableWaveEffect, bool, PROPERTY_UPDATE_RENDER); 112 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(EnableForeground, bool, PROPERTY_UPDATE_RENDER); 113 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(SkipUnselectedPoint, bool, PROPERTY_UPDATE_RENDER); 114 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(SelectedColorSetByUser, bool, PROPERTY_UPDATE_RENDER); 115 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(PathColorSetByUser, bool, PROPERTY_UPDATE_RENDER); 116 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ActiveColorSetByUser, bool, PROPERTY_UPDATE_RENDER); 117 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(RegularColorSetByUser, bool, PROPERTY_UPDATE_RENDER); 118 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(ActiveCircleColorSetByUser, bool, PROPERTY_UPDATE_RENDER); 119 }; 120 121 } // namespace OHOS::Ace::NG 122 123 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_PATTERNLOCK_PATTERNLOCK_PAINT_PROPERTY_H 124