using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using ZigBee.Device; namespace Shared.Phone.UserCenter.Device { /// /// 固件升级画面 /// public class DeviceFirmwareUpdateForm : UserCenterCommonForm { /// /// 升级的设备 /// private List listUpdateDevice = null; /// /// 设备新版本的固件信息 /// private FirmwareVersionInfo deviceFirmware = null; /// /// 当前镜像版本 /// private int imageVersion = 0; /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// /// 设备 /// 设备新版本 /// 当前镜像版本 public void ShowForm(List i_listdevice, FirmwareVersionInfo i_deviceFirmware, int i_imageVersion) { this.listUpdateDevice = i_listdevice; this.imageVersion = i_imageVersion; this.deviceFirmware = i_deviceFirmware; //设置标题信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uFirmwareUpdate)); var btnIcon = new TopLayoutMostRightView(); btnIcon.UnSelectedImagePath = "Item/More.png"; btnIcon.SelectedImagePath = "Item/MoreSelected.png"; topFrameLayout.AddChidren(btnIcon); btnIcon.MouseUpEventHandler += (sender, e) => { //菜单控件 var frameMenu = new TopRightMenuControl(this, 1); //历史版本 string menu1 = Language.StringByID(R.MyInternationalizationString.uHistoryVersion); frameMenu.AddRowMenu(menu1, (obj) => { var form = new DeviceHistoryFirmwareVersionForm(); this.AddForm(form, listUpdateDevice); form.FormCloseAction += ((firmwareInfo) => { //如果当前正在升级,则历史版本无效 if (FirmwareUpdateResourse.dicDeviceUpdateList.ContainsKey(this.listUpdateDevice[0].DeviceAddr) == false) { //重新刷新界面 this.ShowForm(listUpdateDevice, firmwareInfo, firmwareInfo.FirmwareVersion); } }); }); }; //初始化中部控件 this.InitMiddleFrame(); } /// /// 初始化中部控件 /// private void InitMiddleFrame() { bodyFrameLayout.RemoveAll(); //没有新版本 if (deviceFirmware == null) { //显示已经是新版本 this.ShowIsMostVewVersion(); } else { //显示已经是新版本 this.ShowIsHadNewVersion(); } } /// /// 显示已经是新版本 /// private void ShowIsMostVewVersion() { //如果点的是历史版本,则同步界面 string mainKeys = this.listUpdateDevice[0].DeviceAddr; if (FirmwareUpdateResourse.dicDeviceUpdateList.ContainsKey(mainKeys) == true) { var btnUpdateControl = FirmwareUpdateResourse.dicDeviceUpdateList[mainKeys]; bodyFrameLayout.AddChidren(btnUpdateControl); //初始化升级控件 this.InitDeviceUpdateControl(btnUpdateControl); return; } //当前程序版本 var btnVersionMsg = new MsgViewControl(800, true); btnVersionMsg.TextID = R.MyInternationalizationString.uIsMostNewVersion; btnVersionMsg.Y = Application.GetRealHeight(100); btnVersionMsg.TextAlignment = TextAlignment.Center; btnVersionMsg.Gravity = Gravity.CenterHorizontal; bodyFrameLayout.AddChidren(btnVersionMsg); //版本 var btnVersion = new MsgViewControl(800, true); btnVersion.Text = Common.LocalDevice.Current.AppendVersion(this.imageVersion); btnVersion.Y = btnVersionMsg.Bottom + Application.GetRealHeight(10); btnVersion.TextAlignment = TextAlignment.Center; btnVersion.Gravity = Gravity.CenterHorizontal; bodyFrameLayout.AddChidren(btnVersion); } /// /// 显示存在最新版本 /// private void ShowIsHadNewVersion() { //升级控件 string mainKeys = this.listUpdateDevice[0].DeviceAddr; //临时控件 var btnTemp = new ButtonCommon(); Common.LocalDevice.Current.SetDeviceBeloneIconToControl(btnTemp, this.listUpdateDevice); DeviceFirmwareUpdateControl btnUpdateControl = null; if (FirmwareUpdateResourse.dicDeviceUpdateList.ContainsKey(mainKeys) == true) { btnUpdateControl = FirmwareUpdateResourse.dicDeviceUpdateList[mainKeys]; bodyFrameLayout.AddChidren(btnUpdateControl); } else { btnUpdateControl = new DeviceFirmwareUpdateControl(null, this.listUpdateDevice, this.deviceFirmware); bodyFrameLayout.AddChidren(btnUpdateControl); btnUpdateControl.InitChidrenControl(btnTemp.UnSelectedImagePath); } //初始化升级控件 this.InitDeviceUpdateControl(btnUpdateControl); } /// /// 初始化升级控件 /// /// private void InitDeviceUpdateControl(DeviceFirmwareUpdateControl btnUpdateControl) { //升级 BottomClickButton btnUpdate = btnUpdateControl.btnUpdateButton; if (btnUpdate == null) { btnUpdate = new BottomClickButton(); btnUpdate.UseClickStatu = false; btnUpdate.TextID = R.MyInternationalizationString.uLevelUp; btnUpdate.Gravity = Gravity.BottomCenter; btnUpdate.MouseUpTime = 0; btnUpdate.Radius = 0; btnUpdate.Width = Application.CurrentWidth; btnUpdate.MouseUpEvent += (sender, e) => { if (btnUpdateControl.UpdateStatu == UpdateStatuMode.UpdateSuccess) { //升级成功的时候,如果单击此按钮,则关闭界面 this.CloseForm(); return; } //进入执行更新操作准备阶段 btnUpdateControl.StartUpdateReady(); }; } btnUpdateControl.btnUpdateButton = btnUpdate; bodyFrameLayout.AddChidren(btnUpdate); var listView = new VerticalScrolViewLayout(); listView.Y = btnUpdateControl.Bottom; listView.Height = bodyFrameLayout.Height - btnUpdateControl.Height - btnUpdate.Height; bodyFrameLayout.AddChidren(listView); //做成更新内容控件 ViewNormalControl btnTempMsg = null; //临时控件 ButtonCommon btnTemp = null; //做成更新记录控件 foreach (string msg in btnUpdateControl.deviceFirmware.UpdateContent) { var btnmsg = new ViewNormalControl(listView.Width); btnmsg.X = ControlCommonResourse.XXLeft; if (btnTemp != null) { btnmsg.Y = btnTemp.Bottom + Application.GetRealHeight(5); } btnmsg.Text = msg; listView.AddChidren(btnmsg); btnTempMsg = btnmsg; } } /// /// 画面关闭 /// /// 是否关闭界面,false的时候,只会调用关闭函数里面的附加功能 public override void CloseForm(bool isCloseForm = true) { //升级控件 string mainKeys = this.listUpdateDevice[0].DeviceAddr; if (FirmwareUpdateResourse.dicDeviceUpdateList.ContainsKey(mainKeys) == true && FirmwareUpdateResourse.dicDeviceUpdateList[mainKeys].IsFinishUpdate == true) { //如果设备已经升级完成,界面关闭时,则移除内存 FirmwareUpdateResourse.dicDeviceUpdateList.Remove(mainKeys); } base.CloseForm(isCloseForm); } } }