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/stepper_model_impl.h"
17
18 #include "bridge/declarative_frontend/jsview/js_view_abstract.h"
19 #include "bridge/declarative_frontend/view_stack_processor.h"
20 #include "frameworks/core/components/stepper/stepper_theme.h"
21
22 namespace OHOS::Ace::Framework {
23
Create(uint32_t index)24 void StepperModelImpl::Create(uint32_t index)
25 {
26 std::list<RefPtr<OHOS::Ace::Component>> componentChildren;
27 auto stepperComponent = AceType::MakeRefPtr<OHOS::Ace::StepperComponent>(componentChildren);
28 stepperComponent->SetIndex(static_cast<int32_t>(index));
29 RefPtr<StepperTheme> theme = JSViewAbstract::GetTheme<StepperTheme>();
30 if (theme) {
31 stepperComponent->SetDefaultPaddingStart(theme->GetDefaultPaddingStart());
32 stepperComponent->SetDefaultPaddingEnd(theme->GetDefaultPaddingEnd());
33 stepperComponent->SetProgressColor(theme->GetProgressColor());
34 stepperComponent->SetProgressDiameter(theme->GetProgressDiameter());
35 stepperComponent->SetArrowWidth(theme->GetArrowWidth());
36 stepperComponent->SetArrowHeight(theme->GetArrowHeight());
37 stepperComponent->SetArrowColor(theme->GetArrowColor());
38 stepperComponent->SetDisabledColor(theme->GetDisabledColor());
39 stepperComponent->SetRadius(theme->GetRadius());
40 stepperComponent->SetButtonPressedColor(theme->GetButtonPressedColor());
41 stepperComponent->SetButtonPressedHeight(theme->GetButtonPressedHeight());
42 stepperComponent->SetControlHeight(theme->GetControlHeight());
43 stepperComponent->SetControlMargin(theme->GetControlMargin());
44 stepperComponent->SetControlPadding(theme->GetControlPadding());
45 stepperComponent->SetFocusColor(theme->GetFocusColor());
46 stepperComponent->SetFocusBorderWidth(theme->GetFocusBorderWidth());
47 stepperComponent->SetMouseHoverColor(theme->GetMouseHoverColor());
48 stepperComponent->SetDisabledAlpha(theme->GetDisabledAlpha());
49 }
50 ViewStackProcessor::GetInstance()->ClaimElementId(stepperComponent);
51 ViewStackProcessor::GetInstance()->Push(stepperComponent);
52 }
SetOnFinish(RoutineCallbackEvent && eventOnFinish)53 void StepperModelImpl::SetOnFinish(RoutineCallbackEvent&& eventOnFinish)
54 {
55 auto component = AceType::DynamicCast<StepperComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
56 if (!component) {
57 LOGW("Failed to get '%{public}s' in view stack", AceType::TypeName<StepperComponent>());
58 return;
59 }
60 component->SetOnFinish(std::move(eventOnFinish));
61 }
62
SetOnSkip(RoutineCallbackEvent && eventOnSkip)63 void StepperModelImpl::SetOnSkip(RoutineCallbackEvent&& eventOnSkip)
64 {
65 auto component = AceType::DynamicCast<StepperComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
66 if (!component) {
67 LOGW("Failed to get '%{public}s' in view stack", AceType::TypeName<StepperComponent>());
68 return;
69 }
70 component->SetOnSkip(std::move(eventOnSkip));
71 }
72
SetOnChange(IndexCallbackEvent && eventOnChange)73 void StepperModelImpl::SetOnChange(IndexCallbackEvent&& eventOnChange)
74 {
75 auto component = AceType::DynamicCast<StepperComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
76 if (!component) {
77 LOGW("Failed to get '%{public}s' in view stack", AceType::TypeName<StepperComponent>());
78 return;
79 }
80 component->SetOnChange(std::move(eventOnChange));
81 }
82
SetOnNext(IndexCallbackEvent && eventOnNext)83 void StepperModelImpl::SetOnNext(IndexCallbackEvent&& eventOnNext)
84 {
85 auto component = AceType::DynamicCast<StepperComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
86 if (!component) {
87 LOGW("Failed to get '%{public}s' in view stack", AceType::TypeName<StepperComponent>());
88 return;
89 }
90 component->SetOnNext(std::move(eventOnNext));
91 }
92
SetOnPrevious(IndexCallbackEvent && eventOnPrevious)93 void StepperModelImpl::SetOnPrevious(IndexCallbackEvent&& eventOnPrevious)
94 {
95 auto component = AceType::DynamicCast<StepperComponent>(ViewStackProcessor::GetInstance()->GetMainComponent());
96 if (!component) {
97 LOGW("Failed to get '%{public}s' in view stack", AceType::TypeName<StepperComponent>());
98 return;
99 }
100 component->SetOnPrevious(std::move(eventOnPrevious));
101 }
102
103 } // namespace OHOS::Ace::Framework