黄学彪
2020-12-16 0d9f64668fd7350d6a21fd157e32009a96d98134
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
using System;
namespace Shared.Phone
{
    /// <summary>
    /// 进度条(圆形),只能用于UserCenterCommonForm
    /// </summary>
    public class ProgressBar
    {
        /// <summary>
        /// 最大值
        /// </summary>
        private static decimal Max = 100;
        /// <summary>
        /// 当前值
        /// </summary>
        private static decimal m_value = 0;
        /// <summary>
        /// 强制不显示进度条
        /// </summary>
        private static bool notShow = false;
        /// <summary>
        /// 强制不关闭进度条
        /// </summary>
        private static bool notClose = false;
        /// <summary>
        /// 特殊需求:强制不变更进度条的值
        /// </summary>
        private static bool notSetValue = false;
        /// <summary>
        /// 附加文本
        /// </summary>
        private static string appendText = string.Empty;
 
        /// <summary>
        /// 显示进度条
        /// </summary>
        /// <param name="text">初始文本</param>
        public static void Show(string text = "")
        {
            m_value = 0;
            HdlThreadLogic.Current.RunMain(() =>
            {
                if (Common.CommonPage.Loading.Visible == false && notShow == false)
                {
                    Common.CommonPage.Loading.Start(text);
                }
            }, ShowErrorMode.NO);
        }
 
        /// <summary>
        /// 隐藏进度条
        /// </summary>
        /// <param name="coerce">强制关闭</param>
        public static void Close(bool coerce = false)
        {
            m_value = 0;
            Max = 0;
            if (coerce == true)
            {
                notClose = false;
            }
            HdlThreadLogic.Current.RunMain(() =>
            {
                if (Common.CommonPage.Loading.Visible == true && notClose == false)
                {
                    Common.CommonPage.Loading.Hide();
                    notShow = false;
                    notClose = false;
                    notSetValue = false;
                }
            }, ShowErrorMode.NO);
        }
 
        /// <summary>
        /// 进度值设定(数字)
        /// </summary>
        /// <param name="value">Value.</param>
        public static void SetValue(decimal value)
        {
            m_value += value;
            int value2 = (int)((m_value / Max) * 100);
            if (value2 > 100)
            {
                value2 = 100;
            }
 
            SetValue(value2.ToString() + "%");
        }
 
        /// <summary>
        /// 进度值设定
        /// </summary>
        /// <param name="value">Value.</param>
        /// <param name="text">附加值</param>
        public static void SetValue(decimal value, string text)
        {
            m_value += value;
            int value2 = (int)((m_value / Max) * 100);
            if (value2 > 100)
            {
                value2 = 100;
            }
 
            SetValue(value2.ToString() + "% " + text);
        }
 
        /// <summary>
        /// 进度值设定(文本)
        /// </summary>
        /// <param name="text">Text.</param>
        public static void SetValue(string text)
        {
            if (notSetValue == true)
            {
                return;
            }
            HdlThreadLogic.Current.RunMain(() =>
            {
                //loading.Text = text;
                Common.CommonPage.Loading.Text = text + appendText;
            }, ShowErrorMode.NO);
        }
 
        /// <summary>
        /// 设定进度值最大的值(分母)
        /// </summary>
        /// <param name="maxValue">设定进度值最大的值(分母)</param>
        public static void SetMaxValue(decimal maxValue)
        {
            Max = maxValue;
        }
 
        /// <summary>
        /// 强制设置不再显示进度条,直到进度条可以关闭或者再次设置
        /// </summary>
        /// <param name="i_notShow">是否强制不显示</param>
        public static void SetShowBarFlag(bool i_notShow)
        {
            notShow = i_notShow;
        }
 
        /// <summary>
        /// 强制设置不再关闭进度条,直到进度条可以关闭或者再次设置
        /// </summary>
        /// <param name="i_notClose">是否强制不关闭</param>
        public static void SetCloseBarFlag(bool i_notClose)
        {
            notClose = i_notClose;
        }
 
        /// <summary>
        /// 强制设置不变更进度条的值,直到进度条可以关闭或者再次设置
        /// </summary>
        /// <param name="i_notSetvalue">是否强制不变更进度条的值</param>
        public static void SetSetValueFlag(bool i_notSetvalue)
        {
            notSetValue = i_notSetvalue;
        }
 
        /// <summary>
        /// 在进度条里面附加自定义文本
        /// </summary>
        /// <param name="i_text"></param>
        public static void SetAppendText(string i_text)
        {
            appendText = i_text;
            if (appendText != string.Empty)
            {
                //多加一个空格
                appendText = " " + appendText;
            }
        }
    }
}