1 /*
2 * Copyright (c) 2022-2023 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/slider_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 "core/components/slider/slider_component.h"
21 #include "core/components/slider/slider_theme.h"
22
23 namespace OHOS::Ace::Framework {
24
Create(float value,float step,float min,float max)25 void SliderModelImpl::Create(float value, float step, float min, float max)
26 {
27 auto sliderComponent = AceType::MakeRefPtr<OHOS::Ace::SliderComponent>(value, step, min, max);
28 ViewStackProcessor::GetInstance()->ClaimElementId(sliderComponent);
29 auto theme = JSViewAbstract::GetTheme<SliderTheme>();
30 CHECK_NULL_VOID(theme);
31 sliderComponent->SetThemeStyle(theme);
32 ViewStackProcessor::GetInstance()->Push(sliderComponent);
33 }
SetSliderMode(const SliderMode & value)34 void SliderModelImpl::SetSliderMode(const SliderMode& value)
35 {
36 Ace::SliderMode sliderMode = Ace::SliderMode::OUTSET;
37 if (value == SliderMode::CAPSULE) {
38 sliderMode = Ace::SliderMode::CAPSULE;
39 } else if (value == SliderMode::INSET) {
40 sliderMode = Ace::SliderMode::INSET;
41 } else {
42 sliderMode = Ace::SliderMode::OUTSET;
43 }
44 auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
45 auto slider = AceType::DynamicCast<SliderComponent>(component);
46 CHECK_NULL_VOID(slider);
47 slider->SetSliderMode(sliderMode);
48 }
SetDirection(Axis value)49 void SliderModelImpl::SetDirection(Axis value)
50 {
51 auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
52 auto slider = AceType::DynamicCast<SliderComponent>(component);
53 CHECK_NULL_VOID(slider);
54 slider->SetDirection(value);
55 }
SetReverse(bool value)56 void SliderModelImpl::SetReverse(bool value)
57 {
58 auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
59 auto slider = AceType::DynamicCast<SliderComponent>(component);
60 CHECK_NULL_VOID(slider);
61 slider->SetReverse(value);
62 }
SetBlockColor(const Color & value)63 void SliderModelImpl::SetBlockColor(const Color& value)
64 {
65 auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
66 auto slider = AceType::DynamicCast<SliderComponent>(component);
67 CHECK_NULL_VOID(slider);
68 auto block = slider->GetBlock();
69 CHECK_NULL_VOID(block);
70 block->SetBlockColor(value);
71 }
SetTrackBackgroundColor(const Color & value)72 void SliderModelImpl::SetTrackBackgroundColor(const Color& value)
73 {
74 auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
75 auto slider = AceType::DynamicCast<SliderComponent>(component);
76 CHECK_NULL_VOID(slider);
77 auto track = slider->GetTrack();
78 CHECK_NULL_VOID(track);
79 track->SetBackgroundColor(value);
80 }
SetSelectColor(const Color & value)81 void SliderModelImpl::SetSelectColor(const Color& value)
82 {
83 auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
84 auto slider = AceType::DynamicCast<SliderComponent>(component);
85 CHECK_NULL_VOID(slider);
86 auto track = slider->GetTrack();
87 CHECK_NULL_VOID(track);
88 track->SetSelectColor(value);
89 }
SetMinLabel(float value)90 void SliderModelImpl::SetMinLabel(float value)
91 {
92 auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
93 auto slider = AceType::DynamicCast<SliderComponent>(component);
94 CHECK_NULL_VOID(slider);
95 slider->SetMinValue(value);
96 }
SetMaxLabel(float value)97 void SliderModelImpl::SetMaxLabel(float value)
98 {
99 auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
100 auto slider = AceType::DynamicCast<SliderComponent>(component);
101 CHECK_NULL_VOID(slider);
102 slider->SetMaxValue(value);
103 }
SetShowSteps(bool value)104 void SliderModelImpl::SetShowSteps(bool value)
105 {
106 auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
107 auto slider = AceType::DynamicCast<SliderComponent>(component);
108 CHECK_NULL_VOID(slider);
109 slider->SetShowSteps(value);
110 }
SetShowTips(bool value,const std::optional<std::string> & content)111 void SliderModelImpl::SetShowTips(bool value, const std::optional<std::string>& content)
112 {
113 auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
114 auto slider = AceType::DynamicCast<SliderComponent>(component);
115 CHECK_NULL_VOID(slider);
116 slider->SetShowTips(value);
117 }
SetThickness(const Dimension & value)118 void SliderModelImpl::SetThickness(const Dimension& value)
119 {
120 auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
121 auto slider = AceType::DynamicCast<SliderComponent>(component);
122 CHECK_NULL_VOID(slider);
123 slider->SetThickness(value);
124 }
SetBlockBorderColor(const Color & value)125 void SliderModelImpl::SetBlockBorderColor(const Color& value) {}
SetBlockBorderWidth(const Dimension & value)126 void SliderModelImpl::SetBlockBorderWidth(const Dimension& value) {}
SetStepColor(const Color & value)127 void SliderModelImpl::SetStepColor(const Color& value) {}
SetTrackBorderRadius(const Dimension & value)128 void SliderModelImpl::SetTrackBorderRadius(const Dimension& value) {}
SetBlockSize(const Dimension & width,const Dimension & height)129 void SliderModelImpl::SetBlockSize(const Dimension& width, const Dimension& height) {}
SetBlockType(BlockStyleType value)130 void SliderModelImpl::SetBlockType(BlockStyleType value) {}
SetBlockImage(const std::string & value,const std::string & bundleName,const std::string & moduleName)131 void SliderModelImpl::SetBlockImage(
132 const std::string& value, const std::string& bundleName, const std::string& moduleName)
133 {}
SetBlockShape(const RefPtr<BasicShape> & value)134 void SliderModelImpl::SetBlockShape(const RefPtr<BasicShape>& value) {}
SetStepSize(const Dimension & value)135 void SliderModelImpl::SetStepSize(const Dimension& value) {}
SetOnChange(std::function<void (float,int32_t)> && eventOnChange)136 void SliderModelImpl::SetOnChange(std::function<void(float, int32_t)>&& eventOnChange)
137 {
138 auto component = ViewStackProcessor::GetInstance()->GetMainComponent();
139 auto slider = AceType::DynamicCast<SliderComponent>(component);
140 slider->SetOnChange(std::move(eventOnChange));
141 }
142
143 } // namespace OHOS::Ace::Framework