using System; using System.Collections.Generic; using System.Text; using ZigBee.Device; namespace Shared.Phone.UserCenter.GatewayUpdate { /// /// 网关的历史版本界面 /// public class GatewayHistoryFirmwareVersionForm : EditorCommonForm { /// /// 要升级的网关 /// private ZbGateway upDatezbGateway = null; /// /// 虚拟设备的固件信息 /// private FirmwareVersionInfo virtualFirmware = null; /// /// 协调器新版本的固件信息 /// private FirmwareVersionInfo coordinatorFirmware = null; /// /// 网关新版本的固件信息 /// private FirmwareVersionInfo gatewayFirmware = null; /// /// 列表控件 /// private VerticalListControl listView = null; /// /// 虚拟驱动号 /// private List listVode = null; /// /// 界面关闭的Action(虚拟设备,协调器,网关) /// public Action> SelectFirmwareInfoEvent = 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() { //清空bodyFrame this.ClearBodyFrame(); listView = new VerticalListControl(); listView.Height = bodyFrameLayout.Height; listView.BackgroundColor = UserCenterColor.Current.White; bodyFrameLayout.AddChidren(listView); //网关 var listData1 = HdlFirmwareUpdateLogic.Current.GetFirmwareVersionListInfo(FirmwareLevelType.Linux, upDatezbGateway.LinuxHardVersion.ToString(), upDatezbGateway.LinuxImageType.ToString()); //协调器 var listData2 = HdlFirmwareUpdateLogic.Current.GetFirmwareVersionListInfo(FirmwareLevelType.A协调器, upDatezbGateway.CoordinatorHardVersion.ToString(), upDatezbGateway.CoordinatorImageId.ToString()); //虚拟驱动 var listData3 = new List(); if (this.listVode != null && this.listVode.Count > 0) { //如果这个网关要有虚拟驱动这个东西的时候才考虑 listData3 = HdlFirmwareUpdateLogic.Current.GetFirmwareVersionListInfo(FirmwareLevelType.A虚拟驱动, this.listVode[0].DriveHwVersion.ToString(), this.listVode[0].DriveImageType.ToString()); } HdlThreadLogic.Current.RunMainInThread(() => { bool canAddTitle = true; int fVersion1 = upDatezbGateway.LinuxFirmwareVersion; string imageType1 = upDatezbGateway.LinuxImageType.ToString(); foreach (var data in listData1) { if (data.ImagType == imageType1 && fVersion1 == data.FirmwareVersion) { //同一个东西,不显示出来 continue; } if (canAddTitle == true) { this.AddTitleRowlayout("Linux模块"); canAddTitle = false; } this.AddRowlayout(data, FirmwareLevelType.Linux); } canAddTitle = true; int fVersion2 = upDatezbGateway.CoordinatorFirmwareVersion; string imageType2 = upDatezbGateway.CoordinatorImageId.ToString(); foreach (var data in listData2) { if (data.ImagType == imageType2 && fVersion2 == data.FirmwareVersion) { //同一个东西,不显示出来 continue; } if (canAddTitle == true) { this.AddTitleRowlayout("协调器模块"); canAddTitle = false; } this.AddRowlayout(data, FirmwareLevelType.A协调器); } canAddTitle = true; string imageType3 = this.listVode[0].DriveImageType.ToString(); foreach (var data in listData3) { if (data.ImagType == imageType3 && this.listVode[0].DriveFwVersion == data.FirmwareVersion) { //同一个东西,不显示出来 continue; } if (canAddTitle == true) { this.AddTitleRowlayout("虚拟设备模块"); canAddTitle = false; } this.AddRowlayout(data, FirmwareLevelType.A虚拟驱动); } listView.AdjustRealHeight(Application.GetRealHeight(23)); }); } /// /// 添加行 /// /// /// private void AddRowlayout(FirmwareVersionInfo info, FirmwareLevelType levelType) { var rowlayout = new FrameRowControl(); this.listView.AddChidren(rowlayout); //图标 var btnIcon = rowlayout.AddLeftIcon(81); HdlGatewayLogic.Current.SetGatewayIcon(btnIcon, this.upDatezbGateway); rowlayout.AddChidren(btnIcon); //指定的网关 rowlayout.AddTopView(info.ShowName, 800); //固件信息 string firmwareText = HdlDeviceCommonLogic.Current.AppendVersion(info.FirmwareVersion); firmwareText += " " + HdlCommonLogic.Current.ConvertUtcTimeToLocalTime(info.CreatedOnUtc).ToString("yyyy/MM/dd HH:mm:ss"); rowlayout.AddBottomView(firmwareText, 800); //向右的图标 rowlayout.AddRightArrow(); rowlayout.AddBottomLine(); rowlayout.ButtonClickEvent += (sender, e) => { if (HdlFirmwareUpdateResourse.dicUpdateList.ContainsKey(upDatezbGateway.GwId) == true) { this.CloseForm(); return; } if (levelType == FirmwareLevelType.Linux) { this.gatewayFirmware = info; } else if (levelType == FirmwareLevelType.A协调器) { this.coordinatorFirmware = info; } else if (levelType == FirmwareLevelType.A虚拟驱动) { this.virtualFirmware = info; this.virtualFirmware.VirtualCode = this.listVode[0].DriveCode; } SelectFirmwareInfoEvent?.Invoke(this.virtualFirmware, this.coordinatorFirmware, this.gatewayFirmware, this.listVode); this.CloseForm(); }; } /// /// 添加标题行 /// /// private void AddTitleRowlayout(string title) { var rowlayout = new FrameRowControl(); rowlayout.UseClickStatu = false; this.listView.AddChidren(rowlayout); rowlayout.AddLeftCaption(title, 800); } /// /// 界面关闭 /// public override void CloseFormBefore() { SelectFirmwareInfoEvent = null; base.CloseFormBefore(); } } }