• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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()28 RefPtr<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)57 void 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)64 void 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)71 void 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)78 void 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)85 void 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)92 void 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)99 void 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)106 void 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)123 void 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)135 void PatternLockModelImpl::SetActiveCircleColor(const Color& activeCircleColor) {};
SetActiveCircleRadius(const Dimension & activeCircleRadius)136 void PatternLockModelImpl::SetActiveCircleRadius(const Dimension& activeCircleRadius) {};
SetEnableWaveEffect(bool enableWaveEffect)137 void PatternLockModelImpl::SetEnableWaveEffect(bool enableWaveEffect) {};
SetEnableForeground(bool enableForeground)138 void PatternLockModelImpl::SetEnableForeground(bool enableForeground) {};
SetSkipUnselectedPoint(bool isSkipUnselectedPoint)139 void PatternLockModelImpl::SetSkipUnselectedPoint(bool isSkipUnselectedPoint) {};
140 } // namespace OHOS::Ace::Framework
141