From d6fb0646531172f23648441c224cdcccd721b894 Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期一, 14 十二月 2020 09:59:01 +0800 Subject: [PATCH] 请合并代码,完成晾衣架最终功能。 --- ZigbeeApp/Shared/Phone/UserCenter/Gateway/Update/GatewayFirmwareUpdateForm.cs | 421 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 421 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Update/GatewayFirmwareUpdateForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Update/GatewayFirmwareUpdateForm.cs new file mode 100755 index 0000000..127a3d1 --- /dev/null +++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Update/GatewayFirmwareUpdateForm.cs @@ -0,0 +1,421 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Text; +using ZigBee.Device; + +namespace Shared.Phone.UserCenter.GatewayUpdate +{ + /// <summary> + /// 缃戝叧鍥轰欢鍗囩骇鐣岄潰 + /// </summary> + public class GatewayFirmwareUpdateForm : EditorCommonForm + { + #region 鈻� 鍙橀噺澹版槑___________________________ + + /// <summary> + /// 褰撳墠閫夋嫨鐨勭綉鍏� + /// </summary> + private ZbGateway zbGateway = null; + /// <summary> + /// 鍗囩骇鍥轰欢淇℃伅(0:Linux鏂扮増鏈� 1:鍗忚皟鍣ㄦ柊鐗堟湰 2锝瀀:閮芥槸铏氭嫙椹卞姩鐨�) + /// </summary> + private List<FirmwareVersionInfo> listVersionInfo = null; + /// <summary> + /// 铏氭嫙椹卞姩鍙� + /// </summary> + private List<ZbGatewayData.DriveCodeObj> listVode = null; + + #endregion + + #region 鈻� 鍒濆鍖朹____________________________ + + /// <summary> + /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓) + /// </summary> + /// <param name="i_zbGateway">褰撳墠閫夋嫨鐨勭綉鍏�</param> + public void ShowForm(ZbGateway i_zbGateway) + { + this.zbGateway = i_zbGateway; + + //璁剧疆鏍囬淇℃伅 + base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uFirmwareUpdate)); + + //鍒濆鍖栧彸涓婅鑿滃崟 + this.InitTopRightMenu(); + + //鍒濆鍖栦腑閮ㄦ帶浠� + this.InitMiddleFrame(); + } + + /// <summary> + /// 鍒濆鍖栦腑閮ㄦ帶浠� + /// </summary> + private void InitMiddleFrame() + { + //娓呯┖bodyFrame + this.ClearBodyFrame(); + + HdlThreadLogic.Current.RunThread(() => + { + //寮�鍚繘搴︽潯 + this.ShowProgressBar(); + + //鑾峰彇缃戝叧鏂扮増鏈俊鎭� + this.listVersionInfo = HdlGatewayLogic.Current.GetGatewayAllNewVersion(this.zbGateway); + if (listVersionInfo == null) + { + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(ShowReLoadMode.YES); + return; + } + //铏氭嫙椹卞姩鍙� + this.listVode = HdlGatewayLogic.Current.GetListVDDriveCode(this.zbGateway); + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(); + + HdlThreadLogic.Current.RunMain(() => + { + //鍒濆鍖栧綋鍓嶇増鏈殑鎺т欢 + var yy = this.InitNowVersionControl(); + if (listVersionInfo[0] != null || listVersionInfo[1] != null || listVersionInfo[2] != null) + { + //鍒濆鍖栨柊鐗堟湰鐨勬帶浠� + this.InitNewVersionControl(yy); + } + }); + }); + } + + /// <summary> + /// 鍒濆鍖栧綋鍓嶇増鏈殑鎺т欢 + /// </summary> + private int InitNowVersionControl() + { + bodyFrameLayout.RemoveAll(); + + var frameBack = new FrameLayout(); + frameBack.BackgroundColor = UserCenterColor.Current.White; + frameBack.Height = Application.GetMinReal(800); + bodyFrameLayout.AddChidren(frameBack); + + //褰撳墠鍥轰欢鐗堟湰 + var btnTitle = new NormalViewControl(700, 65, true); + btnTitle.X = ControlCommonResourse.XXLeft; + btnTitle.Y = Application.GetRealHeight(30); + btnTitle.TextID = R.MyInternationalizationString.uNowFirmwareVersion; + btnTitle.TextSize = 15; + frameBack.AddChidren(btnTitle); + + var listView = new VerticalListControl(12); + listView.Y = Application.GetRealHeight(109); + listView.Height = Application.GetRealHeight(800); + frameBack.AddChidren(listView); + + //Linux + var rowLinux = new FrameRowControl(listView.rowSpace / 2); + listView.AddChidren(rowLinux); + rowLinux.AddLeftCaption("Linux", 300); + rowLinux.AddRightArrow(); + rowLinux.ButtonClickEvent += (sender, e) => + { + var form = new GatewayLinuxInfoForm(); + form.AddForm(this.zbGateway.GwId); + }; + + //鍗忚皟鍣� + var rowCoordinator = new FrameRowControl(listView.rowSpace / 2); + listView.AddChidren(rowCoordinator); + rowCoordinator.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uCoordinator), 500); + rowCoordinator.AddRightArrow(); + rowCoordinator.ButtonClickEvent += (sender, e) => + { + var form = new GatewayCoordinatorInfoForm(); + form.AddForm(this.zbGateway.GwId); + }; + + if (this.listVode != null) + { + //铏氭嫙椹卞姩 + var rowVirtual = new FrameRowControl(listView.rowSpace / 2); + listView.AddChidren(rowVirtual); + rowVirtual.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uVirtualDrive), 500); + rowVirtual.AddRightArrow(); + rowVirtual.ButtonClickEvent += (sender, e) => + { + var form = new GatewayVirtualDriveInfoForm(); + form.AddForm(listVode); + }; + } + //娌℃湁鏂扮増鏈� + if (listVersionInfo[0] == null && listVersionInfo[1] == null && listVersionInfo[2] == null) + { + //鏈�鏂板浐浠剁増鏈� + var rowNew = new FrameRowControl(); + rowNew.UseClickStatu = false; + listView.AddChidren(rowNew); + rowNew.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNewFirmwareVersion), 500); + rowNew.AddMostRightView(Language.StringByID(R.MyInternationalizationString.uNothing), 500); + } + //鍒掔嚎 + for (int i = 0; i < listView.ChildrenCount - 1; i++) + { + ((FrameRowControl)listView.GetChildren(i)).AddBottomLine(); + } + + //璋冩暣鐪熷疄楂樺害 + listView.AdjustRealHeight(Application.GetRealHeight(23)); + frameBack.Height = listView.Bottom; + + return frameBack.Bottom; + } + + /// <summary> + /// 鍒濆鍖栨柊鐗堟湰鐨勬帶浠� + /// </summary> + private void InitNewVersionControl(int YY) + { + var frameBack = new FrameLayout(); + frameBack.Y = YY + Application.GetRealHeight(35); + frameBack.BackgroundColor = UserCenterColor.Current.White; + frameBack.Height = Application.GetMinReal(832); + bodyFrameLayout.AddChidren(frameBack); + + //鏈�鏂板浐浠剁増鏈� + var btnTitle = new NormalViewControl(700, 65, true); + btnTitle.X = ControlCommonResourse.XXLeft; + btnTitle.Y = Application.GetRealHeight(30); + btnTitle.TextID = R.MyInternationalizationString.uNewFirmwareVersion; + btnTitle.TextSize = 15; + frameBack.AddChidren(btnTitle); + + var listView = new VerticalListControl(12); + listView.Y = Application.GetRealHeight(109); + listView.Height = frameBack.Height - Application.GetRealHeight(109); + frameBack.AddChidren(listView); + + //Linux + if (listVersionInfo[0] != null) + { + var rowLinux = new FrameRowControl(listView.rowSpace / 2); + rowLinux.UseClickStatu = false; + listView.AddChidren(rowLinux); + rowLinux.AddLeftCaption("Linux", 300); + rowLinux.AddMostRightView(Common.LocalDevice.Current.AppendVersion(listVersionInfo[0].FirmwareVersion), 300); + rowLinux.AddBottomLine(); + } + + //鍗忚皟鍣� + if (listVersionInfo[1] != null) + { + var rowCoordinator = new FrameRowControl(listView.rowSpace / 2); + rowCoordinator.UseClickStatu = false; + listView.AddChidren(rowCoordinator); + rowCoordinator.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uCoordinator), 500); + rowCoordinator.AddMostRightView(Common.LocalDevice.Current.AppendVersion(listVersionInfo[1].FirmwareVersion), 300); + rowCoordinator.AddBottomLine(); + } + + //铏氭嫙椹卞姩 + if (listVersionInfo[2] != null) + { + var rowVirtual = new FrameRowControl(listView.rowSpace / 2); + rowVirtual.UseClickStatu = false; + listView.AddChidren(rowVirtual); + rowVirtual.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uVirtualDrive), 500); + rowVirtual.AddMostRightView(Common.LocalDevice.Current.AppendVersion(listVersionInfo[2].FirmwareVersion), 300); + rowVirtual.AddBottomLine(); + } + + //娣诲姞鍥轰欢浠嬬粛琛� + this.AddUpdateContent(listView); + + //鍗囩骇 + var btnUpdate = new BottomClickButton(); + btnUpdate.TextID = R.MyInternationalizationString.uLevelUp; + bodyFrameLayout.AddChidren(btnUpdate); + btnUpdate.ButtonClickEvent += (sender, e) => + { + ZbGateway realway = null; + if (HdlGatewayLogic.Current.GetRealGateway(ref realway, zbGateway) == false) + { + //閿欒:缃戝叧瀵硅薄涓㈠け + string msg = Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg); + this.ShowMassage(ShowMsgType.Error, msg); + return; + } + + HdlThreadLogic.Current.RunThread(() => + { + //缃戝叧鍗囩骇 + DoGatewayUpdate(realway); + }); + }; + } + + #endregion + + #region 鈻� 鍙充笂瑙掕彍鍗昣________________________ + + /// <summary> + /// 鍒濆鍖栧彸涓婅鑿滃崟 + /// </summary> + 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(); + }); + } + + /// <summary> + /// 鏄剧ず鍙充笂瑙掕彍鍗曠晫闈� + /// </summary> + private void ShowTopRightMenu() + { + var frame = new TopRightMenuControl(1, 2); + //鍘嗗彶鐗堟湰 + var deviceMenu = Language.StringByID(R.MyInternationalizationString.uHistoryVersion); + frame.AddRowMenu(deviceMenu, "", "", () => + { + var form = new GatewayHistoryFirmwareVersionForm(); + form.AddForm(zbGateway, listVersionInfo[2], listVersionInfo[1], listVersionInfo[0], listVode); + form.SelectFirmwareInfoEvent += (info1,info2,info3,listCode) => + { + listVersionInfo[2] = info1; + listVersionInfo[1] = info2; + listVersionInfo[0] = info3; + listVode = listCode; + + //鍒濆鍖栧綋鍓嶇増鏈殑鎺т欢 + var yy = this.InitNowVersionControl(); + if (listVersionInfo[0] != null || listVersionInfo[1] != null || listVersionInfo[2] != null) + { + //鍒濆鍖栨柊鐗堟湰鐨勬帶浠� + this.InitNewVersionControl(yy); + } + }; + }); + } + + #endregion + + #region 鈻� 娣诲姞鍥轰欢浠嬬粛琛宊____________________ + + /// <summary> + /// 娣诲姞鍥轰欢浠嬬粛琛� + /// </summary> + /// <param name="listContent">鍒楄〃鎺т欢</param> + private void AddUpdateContent(VerticalListControl listContent) + { + //淇敼鍐呭 + var frameContent = new FrameLayout(); + frameContent.Height = Application.GetRealHeight(87); + listContent.AddChidren(frameContent); + var btnContent = new NormalViewControl(500, 87, true); + btnContent.X = ControlCommonResourse.XXLeft; + btnContent.Y = Application.GetRealHeight(28); + btnContent.TextID = R.MyInternationalizationString.uEditorContent; + btnContent.TextSize = 12; + frameContent.AddChidren(btnContent); + + foreach (var info in this.listVersionInfo) + { + if (info == null) + { + continue; + } + foreach (var msg in info.UpdateContent) + { + var btnRow = new FrameRowControl(); + btnRow.UseClickStatu = false; + btnRow.Height = Application.GetRealHeight(40); + listContent.AddChidren(btnRow); + + var btnMsg = btnRow.AddLeftCaption(msg, 965); + btnMsg.TextSize = 10; + btnMsg.TextColor = UserCenterColor.Current.TextGrayColor3; + } + } + //娣诲姞搴曢儴绌虹櫧闂撮殭 + var frameSpace3 = new FrameLayout(); + frameSpace3.Height = Application.GetRealHeight(58); + listContent.AddChidren(frameSpace3); + } + + #endregion + + #region 鈻� 缃戝叧鍗囩骇___________________________ + + /// <summary> + /// 缃戝叧鍗囩骇 + /// </summary> + private void DoGatewayUpdate(ZbGateway realway) + { + //鎵撳紑杩涘害鏉� + ProgressFormBar.Current.Start(); + //缃戝叧鍗囩骇 + var updateLogic = new HdlGatewayUpdateLogic(realway, listVersionInfo[2], listVersionInfo[1], listVersionInfo[0]); + //鏇存柊鐘舵�佸彉鍖栫殑浜嬩欢 + 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(); + }); + } + }); + }; + //杩涘害鍊兼敼鍙樹簨浠� + updateLogic.ProgressEvent += (value) => + { + ProgressFormBar.Current.SetValue(value); + }; + //缃戝叧鍗囩骇寮�濮� + updateLogic.StartUpdateReady(); + //鍏抽棴浜嬩欢 + ProgressFormBar.Current.CloseEvent += () => + { + //鍗囩骇瀵硅薄 + string gwId = realway.GwId; + if (FirmwareUpdateResourse.dicUpdateList.ContainsKey(gwId) == true + && FirmwareUpdateResourse.dicUpdateList[gwId].IsFinishUpdate == true) + { + //濡傛灉缃戝叧宸茬粡鍗囩骇瀹屾垚锛岀晫闈㈠叧闂椂锛屽垯绉婚櫎鍐呭瓨 + FirmwareUpdateResourse.dicUpdateList[gwId].Dispose(); + FirmwareUpdateResourse.dicUpdateList.Remove(gwId); + } + }; + } + + #endregion + } +} -- Gitblit v1.8.0