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 #include "bridge/declarative_frontend/jsview/models/patternlock_model_impl.h" 17 18 #include <utility> 19 20 #include "bridge/declarative_frontend/jsview/js_interactable_view.h" 21 #include "bridge/declarative_frontend/jsview/js_view_abstract.h" 22 #include "bridge/declarative_frontend/jsview/js_view_common_def.h" 23 #include "bridge/declarative_frontend/view_stack_processor.h" 24 #include "core/components_v2/pattern_lock/pattern_lock_component.h" 25 #include "core/components_v2/pattern_lock/pattern_lock_theme.h" 26 27 namespace OHOS::Ace::Framework { 28 Create()29RefPtr<V2::PatternLockController> PatternLockModelImpl::Create() 30 { 31 auto lock = AceType::MakeRefPtr<V2::PatternLockComponent>(); 32 auto lockTheme = JSViewAbstract::GetTheme<V2::PatternLockTheme>(); 33 if (!lockTheme) { 34 LOGE("Get PatternLock theme error"); 35 } else { 36 lock->SetRegularColor(lockTheme->GetRegularColor()); 37 lock->SetSelectedColor(lockTheme->GetSelectedColor()); 38 lock->SetActiveColor(lockTheme->GetActiveColor()); 39 lock->SetPathColor(lockTheme->GetPathColor()); 40 } 41 42 ViewStackProcessor::GetInstance()->Push(lock); 43 auto box = ViewStackProcessor::GetInstance()->GetBoxComponent(); 44 auto flexItem = ViewStackProcessor::GetInstance()->GetFlexItemComponent(); 45 Dimension defaultSideLength { V2::DEFAULT_SIDE_LENGTH, DimensionUnit::VP }; 46 box->SetMinWidth(defaultSideLength); 47 box->SetMinHeight(defaultSideLength); 48 box->SetMaxHeight(defaultSideLength); 49 box->SetMaxWidth(defaultSideLength); 50 flexItem->SetMinWidth(defaultSideLength); 51 flexItem->SetMinHeight(defaultSideLength); 52 flexItem->SetMaxWidth(defaultSideLength); 53 flexItem->SetMaxHeight(defaultSideLength); 54 55 return lock->GetPatternLockController(); 56 } 57 SetPatternComplete(std::function<void (const BaseEventInfo * info)> && onComplete)58void PatternLockModelImpl::SetPatternComplete(std::function<void(const BaseEventInfo* info)>&& onComplete) 59 { 60 auto lock = AceType::DynamicCast<V2::PatternLockComponent>(ViewStackProcessor::GetInstance()->GetMainComponent()); 61 CHECK_NULL_VOID(lock); 62 lock->SetPatternCompleteEvent(EventMarker(std::move(onComplete))); 63 } 64 SetSelectedColor(const Color & selectedColor)65void PatternLockModelImpl::SetSelectedColor(const Color& selectedColor) 66 { 67 auto lock = AceType::DynamicCast<V2::PatternLockComponent>(ViewStackProcessor::GetInstance()->GetMainComponent()); 68 CHECK_NULL_VOID(lock); 69 lock->SetSelectedColor(selectedColor); 70 } 71 SetAutoReset(bool isAutoReset)72void PatternLockModelImpl::SetAutoReset(bool isAutoReset) 73 { 74 auto lock = AceType::DynamicCast<V2::PatternLockComponent>(ViewStackProcessor::GetInstance()->GetMainComponent()); 75 CHECK_NULL_VOID(lock); 76 lock->SetAutoReset(isAutoReset); 77 } 78 SetPathColor(const Color & pathColor)79void PatternLockModelImpl::SetPathColor(const Color& pathColor) 80 { 81 auto lock = AceType::DynamicCast<V2::PatternLockComponent>(ViewStackProcessor::GetInstance()->GetMainComponent()); 82 CHECK_NULL_VOID(lock); 83 lock->SetPathColor(pathColor); 84 } 85 SetActiveColor(const Color & activeColor)86void PatternLockModelImpl::SetActiveColor(const Color& activeColor) 87 { 88 auto lock = AceType::DynamicCast<V2::PatternLockComponent>(ViewStackProcessor::GetInstance()->GetMainComponent()); 89 CHECK_NULL_VOID(lock); 90 lock->SetActiveColor(activeColor); 91 } 92 SetRegularColor(const Color & regularColor)93void PatternLockModelImpl::SetRegularColor(const Color& regularColor) 94 { 95 auto lock = AceType::DynamicCast<V2::PatternLockComponent>(ViewStackProcessor::GetInstance()->GetMainComponent()); 96 CHECK_NULL_VOID(lock); 97 lock->SetRegularColor(regularColor); 98 } 99 SetCircleRadius(const Dimension & radius)100void PatternLockModelImpl::SetCircleRadius(const Dimension& radius) 101 { 102 auto lock = AceType::DynamicCast<V2::PatternLockComponent>(ViewStackProcessor::GetInstance()->GetMainComponent()); 103 CHECK_NULL_VOID(lock); 104 lock->SetCircleRadius(radius); 105 } 106 SetSideLength(const Dimension & sideLength)107void PatternLockModelImpl::SetSideLength(const Dimension& sideLength) 108 { 109 auto lock = AceType::DynamicCast<V2::PatternLockComponent>(ViewStackProcessor::GetInstance()->GetMainComponent()); 110 CHECK_NULL_VOID(lock); 111 lock->SetSideLength(sideLength); 112 auto box = ViewStackProcessor::GetInstance()->GetBoxComponent(); 113 box->SetMinWidth(sideLength); 114 box->SetMinHeight(sideLength); 115 box->SetMaxWidth(sideLength); 116 box->SetMaxHeight(sideLength); 117 auto flexItem = ViewStackProcessor::GetInstance()->GetFlexItemComponent(); 118 flexItem->SetMinWidth(sideLength); 119 flexItem->SetMinHeight(sideLength); 120 flexItem->SetMaxWidth(sideLength); 121 flexItem->SetMaxHeight(sideLength); 122 } 123 SetStrokeWidth(const Dimension & lineWidth)124void PatternLockModelImpl::SetStrokeWidth(const Dimension& lineWidth) 125 { 126 auto component = 127 AceType::DynamicCast<V2::PatternLockComponent>(ViewStackProcessor::GetInstance()->GetMainComponent()); 128 CHECK_NULL_VOID(component); 129 if (GreatOrEqual(lineWidth.Value(), 0.0)) { 130 component->SetStrokeWidth(lineWidth); 131 } else { 132 component->SetStrokeWidth(0.0_vp); 133 } 134 } 135 SetActiveCircleColor(const Color & activeCircleColor)136void PatternLockModelImpl::SetActiveCircleColor(const Color& activeCircleColor) {}; SetActiveCircleRadius(const Dimension & activeCircleRadius)137void PatternLockModelImpl::SetActiveCircleRadius(const Dimension& activeCircleRadius) {}; SetEnableWaveEffect(bool enableWaveEffect)138void PatternLockModelImpl::SetEnableWaveEffect(bool enableWaveEffect) {}; 139 } // namespace OHOS::Ace::Framework 140