using System; using System.Collections.Generic; using System.Text; using ZigBee.Device; namespace Shared.Phone.UserCenter.Device { /// /// 设备固件升级界面 /// public class DeviceFirmwareUpdateForm : EditorCommonForm { #region ■ 变量声明___________________________ /// /// 设备mac地址 /// private string deviceMac = null; /// /// 固件信息 /// private FirmwareVersionInfo deviceFirmware = null; #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// /// 设备mac地址 public void ShowForm(string i_deviceMac) { if (deviceMac != null && deviceMac != i_deviceMac) { //不是同一个东西 return; } this.deviceMac = i_deviceMac; //设置标题信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uFirmwareUpdate)); //初始化中部控件 this.InitMiddleFrame(); //历史版本 this.InitTopRightMenu(); } /// /// 初始化中部控件 /// private void InitMiddleFrame() { var oTADevice = Common.LocalDevice.Current.GetOTADevice(deviceMac); //获取设备最新版本 this.deviceFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.ZigbeeDevice, oTADevice.HwVersion.ToString(), oTADevice.ImgTypeId.ToString(), oTADevice.ImgVersion); if (deviceFirmware != null && deviceFirmware.FirmwareVersion > oTADevice.ImgVersion) { //拥有新版本 this.InitControlByNewVersion(); } else { //没有新版本 this.InitControlByNotNewVersion(); } } #endregion #region ■ 右上角菜单_________________________ /// /// 初始化右上角菜单 /// private void InitTopRightMenu() { if (UserCenterResourse.HideOption.DeviceHistory != 1) { return; } var btnIcon = new MostRightIconControl(69, 69); btnIcon.UnSelectedImagePath = "Item/More.png"; topFrameLayout.AddChidren(btnIcon); btnIcon.InitControl(); btnIcon.ButtonClickEvent += ((sender, e) => { //显示右上角菜单界面 this.ShowTopRightMenu(); }); } /// /// 显示右上角菜单界面 /// private void ShowTopRightMenu() { var frame = new TopRightMenuControl(1, 2); //历史版本 var deviceMenu = Language.StringByID(R.MyInternationalizationString.uHistoryVersion); frame.AddRowMenu(deviceMenu, "", "", () => { var form = new DeviceHistoryFirmwareVersionForm(); form.AddForm(deviceMac); form.SelectFirmwareInfoEvent += (info) => { this.deviceFirmware = info; //拥有新版本 this.InitControlByNewVersion(); }; }); } #endregion #region ■ 拥有新版本_________________________ /// /// 拥有新版本 /// private void InitControlByNewVersion() { //清空bodyFrame this.ClearBodyFrame(); var oTADevice = Common.LocalDevice.Current.GetOTADevice(deviceMac); //升级 var btnUpdate = new BottomClickButton(); btnUpdate.TextID = R.MyInternationalizationString.uLevelUp; bodyFrameLayout.AddChidren(btnUpdate); btnUpdate.ButtonClickEvent += (sender, e) => { //设备升级 HdlThreadLogic.Current.RunThread(() => { this.DoDeviceUpdate(oTADevice); }); }; var frameWhiteBack = new FrameLayout(); frameWhiteBack.Height = Application.GetRealHeight(286); frameWhiteBack.BackgroundColor = UserCenterColor.Current.White; bodyFrameLayout.AddChidren(frameWhiteBack); //当前固件版本 var frameNow = new FrameRowControl(); frameNow.UseClickStatu = false; frameNow.Y = Application.GetRealHeight(20); frameWhiteBack.AddChidren(frameNow); frameNow.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNowFirmwareVersion), 500); frameNow.AddMostRightView(Common.LocalDevice.Current.AppendVersion(oTADevice.ImgVersion), 500); frameNow.AddBottomLine(); //最新固件版本 var frameNew = new FrameRowControl(); frameNew.UseClickStatu = false; frameNew.Y = frameNow.Bottom + Application.GetRealHeight(12); frameWhiteBack.AddChidren(frameNew); frameNew.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNewFirmwareVersion), 500); frameNew.AddMostRightView(Common.LocalDevice.Current.AppendVersion(deviceFirmware.FirmwareVersion), 500); frameNew.AddBottomLine(); //添加固件介绍行 int maxHeight = btnUpdate.Y - ControlCommonResourse.BottomButtonAndListViewSpace - frameNew.Bottom; this.AddUpdateContent(deviceFirmware, maxHeight, frameNew.Bottom); } #endregion #region ■ 没有新版本_________________________ /// /// 没有新版本 /// private void InitControlByNotNewVersion() { //清空bodyFrame this.ClearBodyFrame(); var oTADevice = Common.LocalDevice.Current.GetOTADevice(deviceMac); var frameWhiteBack = new FrameLayout(); frameWhiteBack.Height = Application.GetRealHeight(308); frameWhiteBack.BackgroundColor = UserCenterColor.Current.White; bodyFrameLayout.AddChidren(frameWhiteBack); //当前固件版本 var frameNow = new FrameRowControl(); frameNow.UseClickStatu = false; frameNow.Y = Application.GetRealHeight(20); frameWhiteBack.AddChidren(frameNow); frameNow.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNowFirmwareVersion), 500); frameNow.AddMostRightView(Common.LocalDevice.Current.AppendVersion(oTADevice.ImgVersion), 500); frameNow.AddBottomLine(); //最新固件版本 var frameNew = new FrameRowControl(); frameNew.UseClickStatu = false; frameNew.Y = frameNow.Bottom + Application.GetRealHeight(12); frameWhiteBack.AddChidren(frameNew); frameNew.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNewFirmwareVersion), 500); frameNew.AddMostRightView(Language.StringByID(R.MyInternationalizationString.uNothing), 500); } #endregion #region ■ 添加固件介绍行_____________________ /// /// 添加固件介绍行 /// /// 固件对象 /// 最大高度 /// private void AddUpdateContent(FirmwareVersionInfo versionInfo, int Maxheight,int YY) { FrameListControl listFrame = null; VerticalListControl listView = null; var realHeight = Application.GetRealHeight(40 + 12) * versionInfo.UpdateContent.Count; realHeight += Application.GetRealHeight(17 + 12 + 49 + 8 + 63); //行间距 int rowSpace = 0; if (realHeight > Maxheight) { realHeight = Maxheight; listView = new VerticalListControl(12); listView.Height = realHeight; listView.Y = YY; listView.BackgroundColor = UserCenterColor.Current.White; bodyFrameLayout.AddChidren(listView); rowSpace = listView.rowSpace / 2; } else { listFrame = new FrameListControl(12); listFrame.Height = realHeight; listFrame.Y = YY; listFrame.BackgroundColor = UserCenterColor.Current.White; bodyFrameLayout.AddChidren(listFrame); rowSpace = listFrame.rowSpace / 2; } //添加头部空白间隙 var frameSpace1 = new FrameLayout(); frameSpace1.Height = Application.GetRealHeight(17); listView?.AddChidren(frameSpace1); listFrame?.AddChidren(frameSpace1); //修改内容 var btnContentRow = new FrameRowControl(rowSpace); btnContentRow.UseClickStatu = false; btnContentRow.Height = Application.GetRealHeight(49); listView?.AddChidren(btnContentRow); listFrame?.AddChidren(btnContentRow); var btnContent = btnContentRow.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uEditorContent), 500); btnContent.TextSize = 12; //稍微再添加空白间隙 var frameSpace2 = new FrameLayout(); frameSpace2.Height = Application.GetRealHeight(8); listView?.AddChidren(frameSpace2); listFrame?.AddChidren(frameSpace2); foreach (var msg in versionInfo.UpdateContent) { var btnRow = new FrameRowControl(rowSpace); btnRow.UseClickStatu = false; btnRow.Height = Application.GetRealHeight(40); listView?.AddChidren(btnRow); listFrame?.AddChidren(btnRow); var btnMsg = btnRow.AddLeftCaption(msg, 965); btnMsg.TextSize = 10; btnMsg.TextColor = UserCenterColor.Current.TextGrayColor3; } //添加底部空白间隙 var frameSpace3 = new FrameLayout(); frameSpace3.Height = Application.GetRealHeight(63); listView?.AddChidren(frameSpace3); listFrame?.AddChidren(frameSpace3); } #endregion #region ■ 设备升级___________________________ /// /// 设备升级 /// private void DoDeviceUpdate(OTADevice oTADevice) { //打开进度条 ProgressFormBar.Current.Start(); //设备升级 var updateLogic = new HdlDeviceUpdateLogic(oTADevice, deviceFirmware); //更新状态变化的事件 updateLogic.UpdateStatuChangedEvent += (div, msg) => { HdlThreadLogic.Current.RunMain(() => { if (div == -1) { //异常 this.ShowMassage(ShowMsgType.Tip, msg); ProgressFormBar.Current.Close(); } else if (div == 0) { //一般信息 ProgressFormBar.Current.SetMsg(msg); } else if (div == 1) { //升级完成 ProgressFormBar.Current.Close(); this.ShowMassage(ShowMsgType.Tip, msg); HdlThreadLogic.Current.RunMain(() => { //初始化中部控件 this.InitMiddleFrame(); }); } else if (div == 2) { //主动终止升级 ProgressFormBar.Current.Close(); } }); }; //进度值改变事件 updateLogic.ProgressEvent += (value) => { ProgressFormBar.Current.SetValue(value, 100); }; //设备升级开始 updateLogic.StartUpdateReady(); //终止升级 ProgressFormBar.Current.MsgClickEvent += () => { //再次调用,内部条件达成时,可以选择终止升级 updateLogic.StartUpdateReady(); }; //关闭事件 ProgressFormBar.Current.CloseEvent += () => { //升级对象 if (FirmwareUpdateResourse.dicUpdateList.ContainsKey(deviceMac) == true && FirmwareUpdateResourse.dicUpdateList[deviceMac].IsFinishUpdate == true) { //如果设备已经升级完成,界面关闭时,则移除内存 FirmwareUpdateResourse.dicUpdateList[deviceMac].Dispose(); FirmwareUpdateResourse.dicUpdateList.Remove(deviceMac); } }; } #endregion } }