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