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