using System; using System.Collections.Generic; using System.Text; using ZigBee.Device; namespace Shared.Phone.UserCenter.Gateway { /// /// 网关的历史版本界面 /// public class GatewayHistoryFirmwareVersionForm : UserCenterCommonForm { /// /// 要升级的网关 /// private ZbGateway upDatezbGateway = null; /// /// 虚拟设备的固件信息 /// private FirmwareVersionInfo virtualFirmware = null; /// /// 协调器新版本的固件信息 /// private FirmwareVersionInfo coordinatorFirmware = null; /// /// 网关新版本的固件信息 /// private FirmwareVersionInfo gatewayFirmware = null; /// /// 列表控件 /// private VerticalScrolViewLayout listView = null; /// /// 虚拟驱动号 /// private List listVode = null; /// /// 界面关闭的Action(虚拟设备,协调器,网关) /// public Action> FormCloseAction = null; /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// /// 网关 /// 虚拟设备的固件信息 /// 协调器新版本的固件信息 /// 网关新版本的固件信息 /// 虚拟驱动 public void ShowForm(ZbGateway i_zbGateway, FirmwareVersionInfo i_virtualFirmware, FirmwareVersionInfo i_coordinatorFirmware, FirmwareVersionInfo i_gatewayFirmware, List i_listVode) { this.upDatezbGateway = i_zbGateway; this.virtualFirmware = i_virtualFirmware; this.coordinatorFirmware = i_coordinatorFirmware; this.gatewayFirmware = i_gatewayFirmware; this.listVode = i_listVode; //设置标题信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uHistoryVersion) + "(测试版,后面估计会删除)"); //初始化中部控件 this.InitMiddleFrame(); } /// /// 初始化中部控件 /// private void InitMiddleFrame() { listView = new VerticalScrolViewLayout(); listView.Height = bodyFrameLayout.Height; bodyFrameLayout.AddChidren(listView); //网关 var listData1 = FirmwareUpdateLogic.GetFirmwareVersionListInfo(FirmwareLevelType.Linux, Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "LinuxHWVersion").ToString(), Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "LinuxImageType").ToString()); //协调器 var listData2 = FirmwareUpdateLogic.GetFirmwareVersionListInfo(FirmwareLevelType.Coordinator, Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "ZbHWVersion").ToString(), Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "ZbImageType").ToString()); //虚拟驱动 var listData3 = new List(); if (this.listVode != null && this.listVode.Count > 0) { //如果这个网关要有虚拟驱动这个东西的时候才考虑 listData3 = FirmwareUpdateLogic.GetFirmwareVersionListInfo(FirmwareLevelType.VirtualDevice, this.listVode[0].DriveHwVersion.ToString(), this.listVode[0].DriveImageType.ToString()); } new System.Threading.Thread(() => { string fVersion = Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "LinuxFWVersion").ToString(); string imageType = Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "LinuxImageType").ToString(); foreach (var data in listData1) { //if (data.ImagType == imageType && fVersion == data.FirmwareVersion) //{ // //同一个东西,不显示出来 // continue; //} Application.RunOnMainThread(() => { this.AddRowlayout(data, FirmwareLevelType.Linux); }); } fVersion = Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "ZbFWVersion").ToString(); imageType = Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "ZbImageType").ToString(); foreach (var data in listData2) { if (data.ImagType == imageType && Convert.ToInt32(fVersion) == data.FirmwareVersion) { //同一个东西,不显示出来 continue; } Application.RunOnMainThread(() => { this.AddRowlayout(data, FirmwareLevelType.Coordinator); }); } imageType = this.listVode[0].DriveImageType.ToString(); foreach (var data in listData3) { if (data.ImagType == imageType && this.listVode[0].DriveFwVersion == data.FirmwareVersion) { //同一个东西,不显示出来 continue; } Application.RunOnMainThread(() => { this.AddRowlayout(data, FirmwareLevelType.VirtualDevice); }); } }) { IsBackground = true }.Start(); } /// /// 添加行 /// /// /// private void AddRowlayout(FirmwareVersionInfo info, FirmwareLevelType levelType) { var rowlayout = new StatuRowLayout(listView); //图标 var btnIcon = new RowLeftIconView(); Common.LocalGateway.Current.SetGatewayIcon(btnIcon, this.upDatezbGateway); rowlayout.AddChidren(btnIcon); //指定的网关 var btnGateway = new RowTopBlackView(); btnGateway.BackgroundColor = UserCenterColor.Current.Transparent; btnGateway.Text = info.ShowName; rowlayout.AddChidren(btnGateway); //固件信息 var btnVersion = new RowBottomBlackView(); btnVersion.Text = Common.LocalDevice.Current.AppendVersion(info.FirmwareVersion); rowlayout.AddChidren(btnVersion); //向右的图标 rowlayout.AddRightIconControl(); rowlayout.MouseUpEvent += (sender, e) => { string gwID = Common.LocalGateway.Current.GetGatewayId(upDatezbGateway); if (FirmwareUpdateResourse.dicGatewayUpdateList.ContainsKey(gwID) == true) { this.CloseForm(); return; } if (levelType == FirmwareLevelType.Linux) { this.gatewayFirmware = info; } else if (levelType == FirmwareLevelType.Coordinator) { this.coordinatorFirmware = info; } else if (levelType == FirmwareLevelType.VirtualDevice) { this.virtualFirmware = info; this.virtualFirmware.VirtualCode = this.listVode[0].DriveCode; } if (FormCloseAction != null) { FormCloseAction(this.virtualFirmware, this.coordinatorFirmware, this.gatewayFirmware, this.listVode); } this.CloseForm(); }; } } }