HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2021-01-14 d78515ac4ac8cf4a1785d9df18058d6724f12b79
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
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
using System;
using System.Collections.Generic;
using System.Text;
 
namespace Shared.Phone.UserCenter.GatewayAdd
{
    /// <summary>
    /// 添加网关的帮助界面
    /// </summary>
    public class AddGatewayHelpForm : EditorCommonForm
    {
        #region ■ 初始化_____________________________
 
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        /// <param name="i_div">区分</param>
        public void ShowForm(string i_div)
        {
            //设置头部信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uSearchHelp));
 
            //初始化中部信息
            this.InitMiddleFrame(i_div);
        }
 
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        private void InitMiddleFrame(string i_div)
        {
            //清空bodyFrame
            this.ClearBodyFrame();
 
            Dictionary<string, List<string>> dicText = null;
 
            if (i_div == "Wired")
            {
                //获取有线网关的帮助消息
                dicText = this.GetWiredGatewayHelpMsg();
            }
            else if (i_div == "Udp")
            {
                //获取无线网关的帮助消息
                dicText = this.GetWirelessGatewayHelpMsg();
            }
            else if (i_div == "Ap")
            {
                //获取无线网关的帮助消息
                dicText = this.GetWirelessGatewayHelpMsg();
            }
            else if (i_div == "Mini")
            {
                //获取mini网关的帮助消息
                dicText = this.GetMiniGatewayHelpMsg();
            }
 
            if (dicText != null)
            {
                //初始化网关帮助控件
                this.InitGatewayHelpControl(dicText);
            }
        }
 
        /// <summary>
        /// 初始化网关帮助控件
        /// </summary>
        /// <param name="dicText">显示文本</param>
        private void InitGatewayHelpControl(Dictionary<string, List<string>> dicText)
        {
            var listView = new VerticalFrameControl();
            listView.Height = bodyFrameLayout.Height;
            bodyFrameLayout.AddChidren(listView);
 
            //计算高度使用
            var btnTemp = new NormalViewControl(100, 50, true);
            btnTemp.TextSize = 12;
 
            int YY = Application.GetRealHeight(55);
            foreach (var titleText in dicText.Keys)
            {
                //标题
                var btnTitle = new NormalViewControl(600, 60, true);
                btnTitle.X = ControlCommonResourse.XXLeft;
                btnTitle.Y = YY;
                btnTitle.Text = titleText;
                listView.frameTable.AddChidren(btnTitle);
                YY = btnTitle.Bottom + Application.GetRealHeight(46);
 
                //内容
                foreach (var content in dicText[titleText])
                {
                    //根据文本长度,获取行数
                    btnTemp.Text = content;
                    int heightCount = this.GetRowCountByTextLength(btnTemp, 933);
                    var btnMsg = new NormalViewControl(Application.GetRealWidth(933), Application.GetRealHeight(50) * heightCount, false);
                    btnMsg.IsMoreLines = true;
                    btnMsg.TextSize = 12;
                    btnMsg.TextColor = UserCenterColor.Current.TextGrayColor3;
                    btnMsg.X = btnTitle.X;
                    btnMsg.Y = YY;
                    btnMsg.Text = content;
                    listView.frameTable.AddChidren(btnMsg);
                    //内容间距35
                    YY = btnMsg.Bottom + Application.GetRealHeight(35);
                }
                //下一个标题的间距是58
                YY += Application.GetRealHeight(58 - 35);
            }
 
            var frameSpace = new FrameLayout();
            frameSpace.Y = YY;
            frameSpace.Height = 1;
            listView.frameTable.AddChidren(frameSpace);
 
            listView.AdjustTableHeight();
        }
 
        #endregion
 
        #region ■ 有线网关帮助消息___________________
 
        /// <summary>
        /// 获取有线网关的帮助消息
        /// </summary>
        /// <returns></returns>
        private Dictionary<string, List<string>> GetWiredGatewayHelpMsg()
        {
            var dic = new Dictionary<string, List<string>>();
            //网关添加指引
            var keyMsg = Language.StringByID(R.MyInternationalizationString.uAddGatewayGuide);
            dic[keyMsg] = new List<string>();
            //请用网线连接网关网口到路由器,网关上电或者恢复出厂设
            //置之后,系统进行重启,持续50秒(系统指示灯SYS常亮),
            //待系统指示灯SYS变成1秒周期闪烁,此时可以使用手机APP
            //进行添加网关步骤。
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddWiredGatewayHelp1));
 
            //操作指引
            keyMsg = Language.StringByID(R.MyInternationalizationString.uOperationGuide);
            dic[keyMsg] = new List<string>();
            //恢复出厂设置:长按ZB/RST按键10秒,此时Z igee网络指
            //示灯(ZB)状态为快闪,待三个灯全灭,表示恢复出厂设置
            //成功,则可松开按键,网关开始重启系统
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddWiredGatewayHelp2));
 
            return dic;
        }
 
        #endregion
 
        #region ■ 无线网关帮助消息___________________
 
        /// <summary>
        /// 获取无线网关的帮助消息
        /// </summary>
        /// <returns></returns>
        private Dictionary<string, List<string>> GetWirelessGatewayHelpMsg()
        {
            var dic = new Dictionary<string, List<string>>();
            //网关硬件文件帮助
            var keyMsg = Language.StringByID(R.MyInternationalizationString.uGatewayHardwareFileHelp);
            dic[keyMsg] = new List<string>();
            //1、短按ZB/RST按键 ,ZB网络指示灯一直闪烁,则表面此按键和指示灯均正常
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddWirelessGatewayHelp1));
            //2、短按HID/WCFG按键,系统指示灯SYS闪烁,表面此按键和指示灯均正常
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddWirelessGatewayHelp2));
            //3、RESTART按键为重启键,短按此按键,网关重启,系统指示灯开始常亮
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddWirelessGatewayHelp3));
 
            //操作指引
            keyMsg = Language.StringByID(R.MyInternationalizationString.uOperationGuide);
            dic[keyMsg] = new List<string>();
            //1、恢复出厂设置:长按ZB/RST键位10秒,10秒内,Zigbee
            //网络指示灯(ZB)状态为快闪,10秒钟后,系统指示灯SYS
            //快闪5秒,5秒内连续按ZB / RST键两次,若所有灯熄灭,则恢
            //复出厂设置成功,网关开始重启系统。
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddWirelessGatewayHelp4));
            //2、确认手机APP是否连接网关,可在APP进行定位操作,若连接正常,网关系统指示灯会快闪
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddWirelessGatewayHelp5));
            //3、AP配网模式:可通过长按HID/WCFG按键  5秒,使网关直
            //接进入建立热点模式,灯光状态变化为按下按键,系统指示灯
            //SYS快闪5秒后,系统指示灯SYS变为常亮模式,此时热点完成建立
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddWirelessGatewayHelp6));
 
            //异常情况处理
            keyMsg = Language.StringByID(R.MyInternationalizationString.uExceptionHandling);
            dic[keyMsg] = new List<string>();
            //1、添加网关过程中,局域网账号和密码发送错误,系统重启
            //后,网关一直持续保持正在联网状态(系统指示灯SYS 3秒周
            //期闪烁,灯光偏暗,持续3分钟),随后转成建立网关热点状
            //态(系统指示灯SYS 5秒间隔闪烁,灯光偏亮),此时可手机
            //APP退出至网关添加页面,重新进行网关添加,重新发送账号,密码
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddWirelessGatewayHelp7));
            //2、在网关已经连接局域网状态下(系统指示灯SYS 1秒间隔
            //闪烁),手机APP不小心退出了连接界面,可前往添加有线网
            //关界面,直接进行网关连接
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddWirelessGatewayHelp8));
            //3、在网关已经连接局域网状态下(系统指示灯SYS 1秒间隔
            //闪烁),手机APP一直连接不上网关,可以先退出APP后台,
            //重新登入进行连接或在有线网关界面直接搜索网关
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddWirelessGatewayHelp9));
            //4、WIFI有波动,导致网关联网失败,可重新上电
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddWirelessGatewayHelp10));
 
            return dic;
        }
 
        #endregion
 
        #region ■ mini网关帮助消息___________________
 
        /// <summary>
        /// 获取mini网关的帮助消息
        /// </summary>
        /// <returns></returns>
        private Dictionary<string, List<string>> GetMiniGatewayHelpMsg()
        {
            var dic = new Dictionary<string, List<string>>();
            //网关硬件文件帮助
            var keyMsg = Language.StringByID(R.MyInternationalizationString.uGatewayHardwareFileHelp);
            dic[keyMsg] = new List<string>();
            //1、按击开关键,若开关键和夜灯无异常,则夜灯亮起白色环形灯光
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddMiniGatewayHelp1));
            //2、长按或短按恢复出厂设置设置按键,若按键和状态指示灯无异常,则快闪绿色灯光
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddMiniGatewayHelp2));
 
            //操作指引
            keyMsg = Language.StringByID(R.MyInternationalizationString.uOperationGuide);
            dic[keyMsg] = new List<string>();
            //恢复出厂设置:用卡针长按恢复出厂设置按键10秒,此时网
            //关状态为指示灯绿色快闪,待灯光闪烁停止,即可松开按键,
            //网关开始系统重启(绿光一秒周期闪烁)
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddMiniGatewayHelp3));
            //换绑:若需要更换绑定账号,不清除数据,短按恢复出厂键,60秒内重新用新的账号搜索网关即可
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddMiniGatewayHelp4));
 
            //异常情况处理
            keyMsg = Language.StringByID(R.MyInternationalizationString.uExceptionHandling);
            dic[keyMsg] = new List<string>();
            //1、添加网关过程中,局域网账号和密码发送错误,网关一直
            //持续保持正在联网状态(持续蓝灯)3分钟,随后转成建立网
            //关热点状态(蓝灯5秒间隔闪烁),此时可手机APP退出至网
            //关添加页面,重新进行网关添加,重新发送账号,密码
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddMiniGatewayHelp5));
            //2、在网关已经连接局域网状态下(蓝色灯1秒间隔闪烁),
            //手机APP不小心退出了连接界面,可前往有线网关界面,直
            //接进行网关连接
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddMiniGatewayHelp6));
            //3、在网关已经连接局域网状态下(蓝色灯1秒间隔闪烁),
            //手机APP一直连接不上网关,可以先退出APP后台,重新登
            //入进行连接
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddMiniGatewayHelp7));
            //4、WIFI有波动,导致网关联网失败(持续蓝灯),可重新上电
            dic[keyMsg].Add(Language.StringByID(R.MyInternationalizationString.uAddMiniGatewayHelp8));
 
            return dic;
        }
 
        #endregion
 
        #region ■ 一般方法___________________________
 
        /// <summary>
        /// 根据文本长度,获取行数
        /// </summary>
        /// <param name="btnContr"></param>
        /// <param name="i_width"></param>
        /// <returns></returns>
        private int GetRowCountByTextLength(NormalViewControl btnContr, int i_width)
        {
            int realWidth = btnContr.GetRealWidthByText();
            int myWidth = Application.GetRealWidth(i_width);
 
            int row = realWidth / myWidth;
            int value = realWidth % myWidth;
            if (value > 8)
            {
                row++;
            }
            return row;
        }
 
        #endregion
    }
}