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