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
using System;
using System.Collections.Generic;
using System.Text;
using ZigBee.Device;
 
namespace Shared.Phone.UserCenter.Device
{
    /// <summary>
    /// 设备的历史版本
    /// </summary>
    public class DeviceHistoryFirmwareVersionForm : UserCenterCommonForm
    {
        /// <summary>
        /// 升级的设备
        /// </summary>
        private List<CommonDevice> listUpdateDevice = null;
        /// <summary>
        /// 列表控件
        /// </summary>
        private VerticalScrolViewLayout listView = null;
        /// <summary>
        /// 界面关闭的Action
        /// </summary>
        public Action<FirmwareVersionInfo> FormCloseAction = null;
 
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        /// <param name="i_listdevice">设备</param>
        public void ShowForm(List<CommonDevice> i_listdevice)
        {
            this.listUpdateDevice = i_listdevice;
 
            //设置标题信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uHistoryVersion));
 
            //初始化中部控件
            this.InitMiddleFrame();
        }
 
        /// <summary>
        /// 初始化中部控件
        /// </summary>
        private void InitMiddleFrame()
        {
            listView = new VerticalScrolViewLayout();
            listView.Height = bodyFrameLayout.Height;
            bodyFrameLayout.AddChidren(listView);
 
            //拥有200端口这个东西的时候,才会显示
            var oTADevice = Common.LocalDevice.Current.GetOTADevice(listUpdateDevice[0].DeviceAddr);
            if (oTADevice == null || oTADevice.ImgVersion == -1)
            {
                return;
            }
 
            //获取历史版本
            var listData = FirmwareUpdateLogic.GetFirmwareVersionListInfo(FirmwareLevelType.ZigbeeDevice,
                oTADevice.HwVersion.ToString(),
                oTADevice.ImgTypeId.ToString());
 
            var btnTemp = new ButtonCommon();
            Common.LocalDevice.Current.SetDeviceBeloneIconToControl(btnTemp, listUpdateDevice);
 
            new System.Threading.Thread(() =>
            {
                string ImagType = oTADevice.ImgTypeId.ToString();
                foreach (var data in listData)
                {
                    if (data.ImagType == ImagType && oTADevice.ImgVersion == data.FirmwareVersion)
                    {
                        //同一个东西,不显示出来
                        continue;
                    }
                    Application.RunOnMainThread(() =>
                    {
                        this.AddRowlayout(data, btnTemp.UnSelectedImagePath, btnTemp.SelectedImagePath);
                    });
                }
            })
            { IsBackground = true }.Start();
        }
 
        /// <summary>
        /// 添加行
        /// </summary>
        /// <param name="info"></param>
        /// <param name="unSelPath"></param>
        /// <param name="selPath"></param>
        private void AddRowlayout(FirmwareVersionInfo info, string unSelPath,string selPath)
        {
            var rowlayout = new StatuRowLayout(listView);
 
            //图标
            var btnIcon = new RowLeftIconView();
            btnIcon.UnSelectedImagePath = unSelPath;
            btnIcon.SelectedImagePath = selPath;
            rowlayout.AddChidren(btnIcon);
 
            //指定的设备
            var btnDevice = new RowTopBlackView();
            btnDevice.BackgroundColor = UserCenterColor.Current.Transparent;
            btnDevice.Text = info.ShowName;
            rowlayout.AddChidren(btnDevice);
 
            //固件信息
            var btnVersion = new RowBottomBlackView();
            btnVersion.Text = Common.LocalDevice.Current.AppendVersion(info.FirmwareVersion);
            rowlayout.AddChidren(btnVersion);
 
            //向右的图标
            rowlayout.AddRightIconControl();
 
            rowlayout.MouseUpEvent += (sender, e) =>
            {
                string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(this.listUpdateDevice[0]);
                if (FirmwareUpdateResourse.dicDeviceUpdateList.ContainsKey(mainKeys) == true)
                {
                    this.CloseForm();
                    return;
                }
                if (FormCloseAction != null)
                {
                    FormCloseAction(info);
                }
                this.CloseForm();
            };
        }
    }
}