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 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_PROGRESS_PROGRESS_DATE_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_PROGRESS_PROGRESS_DATE_H
18 
19 #include "base/geometry/dimension.h"
20 #include "core/components/common/properties/color.h"
21 #include "core/components/common/properties/text_style.h"
22 #include "core/components_ng/property/gradient_property.h"
23 #include "core/components_ng/property/property.h"
24 #include "core/components_ng/base/common_configuration.h"
25 
26 namespace OHOS::Ace::NG {
27 
28 enum class ProgressType {
29     LINEAR = 1,
30     RING = 2,
31     SCALE = 3,
32     CIRCLE = 4,
33     GAUGE = 5,
34     ARC = 6,
35     MOON = 7,
36     BUBBLE = 8,
37     CAPSULE = 9,
38 };
39 
40 enum class ProgressStatus {
41     PROGRESSING = 0,
42     LOADING
43 };
44 
45 class ProgressTypeUtils {
46 public:
ConvertProgressTypeToString(ProgressType progressType)47     static std::string ConvertProgressTypeToString(ProgressType progressType)
48     {
49         std::string progressTypeUtils = "";
50         switch (progressType) {
51             case ProgressType::LINEAR:
52                 progressTypeUtils = "ProgressStyle.Linear";
53                 break;
54             case ProgressType::MOON:
55                 progressTypeUtils = "ProgressStyle.Eclipse";
56                 break;
57             case ProgressType::SCALE:
58                 progressTypeUtils = "ProgressStyle.ScaleRing";
59                 break;
60             case ProgressType::RING:
61                 progressTypeUtils = "ProgressStyle.Ring";
62                 break;
63             case ProgressType::CAPSULE:
64                 progressTypeUtils = "ProgressStyle.Capsule";
65                 break;
66             default:
67                 progressTypeUtils = "ProgressStyle.Linear";
68         }
69         return progressTypeUtils;
70     }
71 };
72 
73 struct ProgressDate {
74     ACE_DEFINE_PROPERTY_GROUP_ITEM(MaxValue, double);
75     ACE_DEFINE_PROPERTY_GROUP_ITEM(Value, double);
76     ACE_DEFINE_PROPERTY_GROUP_ITEM(StrokeWidth, Dimension);
77     ACE_DEFINE_PROPERTY_GROUP_ITEM(ScaleCount, int32_t);
78     ACE_DEFINE_PROPERTY_GROUP_ITEM(ScaleWidth, Dimension);
79     ACE_DEFINE_PROPERTY_GROUP_ITEM(BorderWidth, Dimension);
80     ACE_DEFINE_PROPERTY_GROUP_ITEM(TextSize, Dimension);
81     ACE_DEFINE_PROPERTY_GROUP_ITEM(Text, std::string);
82     ACE_DEFINE_PROPERTY_GROUP_ITEM(EnableScanEffect, bool);
83     ACE_DEFINE_PROPERTY_GROUP_ITEM(FontWeight, FontWeight);
84     ACE_DEFINE_PROPERTY_GROUP_ITEM(FontFamily, std::vector<std::string>);
85     ACE_DEFINE_PROPERTY_GROUP_ITEM(ItalicFontStyle, Ace::FontStyle);
86     ACE_DEFINE_PROPERTY_GROUP_ITEM(TextColor, Color);
87     ACE_DEFINE_PROPERTY_GROUP_ITEM(EnableRingScanEffect, bool);
88     ACE_DEFINE_PROPERTY_GROUP_ITEM(EnableLinearScanEffect, bool);
89     ACE_DEFINE_PROPERTY_GROUP_ITEM(EnableShowText, bool);
90     ACE_DEFINE_PROPERTY_GROUP_ITEM(StrokeRadius, Dimension);
91 };
92 
93 struct ProgressStyle {
94     ACE_DEFINE_PROPERTY_GROUP_ITEM(Color, Color);
95     ACE_DEFINE_PROPERTY_GROUP_ITEM(BackgroundColor, Color);
96     ACE_DEFINE_PROPERTY_GROUP_ITEM(Type, ProgressType);
97 };
98 
99 struct ProgressAnimatableProperty {
100     Color color;
101     Color bgColor;
102     Color borderColor;
103     Gradient ringProgressColor;
104     float strokeWidth = 0.0f;
105     float strokeRadius = 0.0f;
106     float value = 0.0f;
107 };
108 
109 class ProgressConfiguration : public CommonConfiguration {
110     public:
ProgressConfiguration(float value,float total,bool enabled)111         ProgressConfiguration(float value, float total, bool enabled)
112             : CommonConfiguration(enabled), value_(value), total_(total) {}
113         float value_ = 0.0f;
114         float total_ = 0.0f;
115 };
116 
117 } // namespace OHOS::Ace::NG
118 
119 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_PROGRESS_PROGRESS_DATE_H
120