1 /*
2 * Copyright (c) 2021 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 "core/components/progress/progress_component.h"
17
18 #include "core/components/progress/progress_element.h"
19 #include "core/components/progress/render_progress.h"
20
21 namespace OHOS::Ace {
22
ProgressComponent(double min,double value,double cachedValue,double max,ProgressType type)23 ProgressComponent::ProgressComponent(double min, double value, double cachedValue, double max, ProgressType type)
24 {
25 switch (type) {
26 case ProgressType::LINEAR: {
27 track_ = AceType::MakeRefPtr<LinearTrack>();
28 break;
29 }
30 case ProgressType::RING: {
31 track_ = AceType::MakeRefPtr<CircularTrack>();
32 break;
33 }
34 case ProgressType::SCALE: {
35 track_ = AceType::MakeRefPtr<ScaleRingTrack>();
36 break;
37 }
38 case ProgressType::GAUGE:
39 case ProgressType::ARC: {
40 track_ = AceType::MakeRefPtr<ArcTrack>();
41 break;
42 }
43 case ProgressType::MOON: {
44 track_ = AceType::MakeRefPtr<MoonTrack>();
45 break;
46 }
47 case ProgressType::CAPSULE: {
48 track_ = AceType::MakeRefPtr<CapsuleTrack>();
49 break;
50 }
51 default: {
52 track_ = AceType::MakeRefPtr<LinearTrack>();
53 break;
54 }
55 }
56 data_.SetMinValue(min);
57 data_.SetValue(value);
58 data_.SetMaxValue(max);
59 data_.SetCachedValue(cachedValue);
60 type_ = type;
61 }
62
InitStyle(const RefPtr<ProgressTheme> & theme)63 void ProgressComponent::InitStyle(const RefPtr<ProgressTheme>& theme)
64 {
65 if (!theme) {
66 return;
67 }
68 track_->SetSelectColor(theme->GetTrackSelectedColor());
69 track_->SetCachedColor(theme->GetTrackCachedColor());
70 track_->SetBackgroundColor(theme->GetTrackBgColor());
71 track_->SetTrackThickness(theme->GetTrackThickness());
72 }
73
CreateRenderNode()74 RefPtr<RenderNode> ProgressComponent::CreateRenderNode()
75 {
76 return RenderProgress::Create();
77 }
78
CreateElement()79 RefPtr<Element> ProgressComponent::CreateElement()
80 {
81 return AceType::MakeRefPtr<ProgressElement>();
82 }
83
84 } // namespace OHOS::Ace