From 944b87b6bcccb095cd73f13f4410fb20faf48f74 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期三, 25 十二月 2019 11:21:06 +0800
Subject: [PATCH] 2019.12.25

---
 ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFirmwareUpdateForm.cs |  358 ++++++++++++++++++++++++++++-------------------------------
 1 files changed, 169 insertions(+), 189 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFirmwareUpdateForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFirmwareUpdateForm.cs
index 80f6c2c..c168dc1 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFirmwareUpdateForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFirmwareUpdateForm.cs
@@ -9,219 +9,199 @@
     /// <summary>
     /// 鍥轰欢鍗囩骇鐢婚潰
     /// </summary>
-    public class DeviceFirmwareUpdateForm : UserCenterCommonForm
+    public class DeviceFirmwareUpdateForm : DialogCommonForm
     {
-        /// <summary>
-        /// 鍗囩骇鐨勮澶�
-        /// </summary>
-        private List<CommonDevice> listUpdateDevice = null;
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
         /// <summary>
-        /// 璁惧鏂扮増鏈殑鍥轰欢淇℃伅
-        /// </summary>
-        private FirmwareVersionInfo deviceFirmware = null;
-        /// <summary>
-        /// 褰撳墠闀滃儚鐗堟湰
+        /// 璁惧鐨凪ac鍦板潃
         /// </summary>
-        private int imageVersion = 0;
+        private string deviceMac = string.Empty;
+        /// <summary>
+        /// 璁惧鎴愬姛鍗囩骇瀹屾垚鐨勫洖璋冨嚱鏁�
+        /// </summary>
+        public Action FinishUpdateEvent = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
 
         /// <summary>
         /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
         /// </summary>
-        /// <param name="i_listdevice">璁惧</param>
-        /// <param name="i_deviceFirmware">璁惧鏂扮増鏈�</param>
-        /// <param name="i_imageVersion">褰撳墠闀滃儚鐗堟湰</param>
-        public void ShowForm(List<CommonDevice> 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));
+        /// <param name="device">ota璁惧瀵硅薄</param>
+        /// <param name="deviceFirmware">鍥轰欢鍗囩骇淇℃伅</param>
+        public void ShowForm(OTADevice device, FirmwareVersionInfo deviceFirmware)
+        {
+            this.deviceMac = device.DeviceAddr;
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame(device, deviceFirmware);
+        }
 
-            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) =>
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        /// <param name="device">ota璁惧瀵硅薄</param>
+        /// <param name="deviceFirmware">鍥轰欢鍗囩骇淇℃伅</param>
+        private void InitMiddleFrame(OTADevice device, FirmwareVersionInfo deviceFirmware)
+        {
+            var frameBack = new FrameLayout();
+            frameBack.Width = Application.GetRealWidth(674);
+            frameBack.Height = Application.GetRealHeight(386);
+            frameBack.BackgroundColor = UserCenterColor.Current.White;
+            frameBack.Gravity = Gravity.CenterHorizontal;
+            frameBack.Y = Application.GetRealHeight(683);
+            frameBack.Radius = 6;
+            bodyFrameLayout.AddChidren(frameBack);
+
+            //杩涘害鏄剧ず鏂囨湰
+            var btnText = new NormalViewControl(frameBack.Width, Application.GetRealHeight(58), false);
+            btnText.Y = Application.GetRealHeight(248);
+            btnText.TextColor = UserCenterColor.Current.TextGrayColor1;
+            btnText.TextAlignment = TextAlignment.Center;
+            //btnText.Text = "鍗囩骇涓�";
+            frameBack.AddChidren(btnText);
+
+            //杩涘害鏉�
+            var btnProRow = new FrameLayout();
+            btnProRow.Gravity = Gravity.CenterHorizontal;
+            btnProRow.Y = Application.GetRealHeight(161);
+            btnProRow.Width = Application.GetRealWidth(559);
+            btnProRow.Height = Application.GetRealHeight(29);
+            btnProRow.BackgroundColor = 0xfff5f5f5;
+            btnProRow.Radius = (uint)Application.GetRealHeight(29) / 2;
+            frameBack.AddChidren(btnProRow);
+            var btnProgressBar = new FrameLayout();
+            btnProgressBar.Width = 0;
+            btnProgressBar.Height = btnProRow.Height;
+            btnProgressBar.Radius = btnProRow.Radius;
+            btnProgressBar.BackgroundColor = 0xfffb744a;
+            btnProgressBar.Radius = (uint)Application.GetRealHeight(29) / 2;
+            btnProRow.AddChidren(btnProgressBar);
+
+            //杩涘害鍊兼枃鏈�
+            var frameProgress = new FrameLayout();
+            frameProgress.Width = Application.GetRealWidth(84);
+            frameProgress.Height = Application.GetRealHeight(60);
+            frameProgress.Y = Application.GetRealHeight(86);
+            frameBack.AddChidren(frameProgress);
+            frameProgress.X = btnProRow.X + btnProgressBar.Right - frameProgress.Width / 2;
+            var btnProgressPic = new PicViewControl(84, 60);
+            btnProgressPic.UnSelectedImagePath = "Item/ProgressMsg.png";
+            frameProgress.AddChidren(btnProgressPic);
+            var btnProgressView = new NormalViewControl(84, 32, true);
+            btnProgressView.TextSize = 10;
+            btnProgressView.TextAlignment = TextAlignment.Center;
+            btnProgressView.Text = "0%";
+            frameProgress.AddChidren(btnProgressView);
+
+            //璁惧鍗囩骇
+            this.DeviceUpdateMethod(device, deviceFirmware, btnText, btnProgressView, frameProgress, btnProgressBar, btnProRow.Width);
+        }
+
+        #endregion
+
+        #region 鈻� 璁惧鍗囩骇___________________________
+
+        /// <summary>
+        /// 璁惧鍗囩骇
+        /// </summary>
+        /// <param name="device">璁惧瀵硅薄</param>
+        /// <param name="deviceFirmware">鍥轰欢淇℃伅</param>
+        /// <param name="btnText">鏍囬鎺т欢</param>
+        /// <param name="btnProgressView">杩涘害鍊兼枃鏈殑鏄剧ず鎺т欢</param>
+        /// <param name="frameProgress">杩涘害鍊艰兘澶熺Щ鍔ㄧ殑閭d釜妗嗘帶浠�</param>
+        /// <param name="btnProgressBar">杩涘害鏉�</param>
+        /// <param name="ProRowWidth">杩涘害鏉″鍣ㄧ殑鏈�澶у搴�</param>
+        private void DeviceUpdateMethod(OTADevice device, FirmwareVersionInfo deviceFirmware, NormalViewControl btnText,
+            NormalViewControl btnProgressView, FrameLayout frameProgress, FrameLayout btnProgressBar, int ProRowWidth)
+        {
+            //璁惧鍗囩骇
+            var updateLogic = new HdlDeviceUpdateLogic(device, deviceFirmware);
+            //鏇存柊鐘舵�佸彉鍖栫殑浜嬩欢
+            updateLogic.UpdateStatuChangedEvent += (div, msg) =>
+            {
+                HdlThreadLogic.Current.RunMain(() =>
                 {
-                    var form = new DeviceHistoryFirmwareVersionForm();
-                    this.AddForm(form, listUpdateDevice);
-                    form.FormCloseAction += ((firmwareInfo) =>
+                    if (div == -1)
                     {
-                        //濡傛灉褰撳墠姝e湪鍗囩骇锛屽垯鍘嗗彶鐗堟湰鏃犳晥
-                        if (FirmwareUpdateResourse.dicDeviceUpdateList.ContainsKey(this.listUpdateDevice[0].DeviceAddr) == false)
-                        {
-                            //閲嶆柊鍒锋柊鐣岄潰
-                            this.ShowForm(listUpdateDevice, firmwareInfo, firmwareInfo.FirmwareVersion);
-                        }
-                    });
-                });
-            };
-
-            //鍒濆鍖栦腑閮ㄦ帶浠�
-            this.InitMiddleFrame();
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栦腑閮ㄦ帶浠�
-        /// </summary>
-        private void InitMiddleFrame()
-        {
-            bodyFrameLayout.RemoveAll();
-
-            //娌℃湁鏂扮増鏈�
-            if (deviceFirmware == null)
-            {
-                //鏄剧ず宸茬粡鏄柊鐗堟湰
-                this.ShowIsMostVewVersion();
-            }
-            else
-            {
-                //鏄剧ず宸茬粡鏄柊鐗堟湰
-                this.ShowIsHadNewVersion();
-            }
-        }
-
-        /// <summary>
-        /// 鏄剧ず宸茬粡鏄柊鐗堟湰
-        /// </summary>
-        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);
-        }
-
-        /// <summary>
-        /// 鏄剧ず瀛樺湪鏈�鏂扮増鏈�
-        /// </summary>
-        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);
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栧崌绾ф帶浠�
-        /// </summary>
-        /// <param name="btnUpdateControl"></param>
-        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.ShowMassage(ShowMsgType.Tip, msg);
                         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)
+                    else if (div == 0)
+                    {
+                        //涓�鑸俊鎭�
+                        btnText.Text = msg;
+                    }
+                    else if (div == 1)
+                    {
+                        //鍗囩骇瀹屾垚
+                        this.ShowMassage(ShowMsgType.Tip, msg);
+                        //璋冪敤鍥炶皟鍑芥暟
+                        this.FinishUpdateEvent?.Invoke();
+                        this.CloseForm();
+                    }
+                    else if (div == 2)
+                    {
+                        //涓诲姩缁堟鍗囩骇
+                        this.CloseForm();
+                    }
+                });
+            };
+            //杩涘害鍊兼敼鍙樹簨浠�
+            updateLogic.ProgressEvent += (value) =>
             {
-                var btnmsg = new ViewNormalControl(listView.Width);
-                btnmsg.X = ControlCommonResourse.XXLeft;
-                if (btnTemp != null)
+                Application.RunOnMainThread(() =>
                 {
-                    btnmsg.Y = btnTemp.Bottom + Application.GetRealHeight(5);
-                }
-                btnmsg.Text = msg;
-                listView.AddChidren(btnmsg);
-                btnTempMsg = btnmsg;
-            }
+                    //杩涘害鏉�
+                    decimal result = value / 100;
+                    int width = (int)(result * ProRowWidth);
+                    btnProgressBar.Width = width;
+
+                    //鏂囨湰鏄剧ず
+                    btnProgressView.Text = value + "%";
+                    //鏂囨湰鏄剧ず鐨勯偅涓浘鐗囨绉诲姩
+                    frameProgress.X = ControlCommonResourse.XXLeft + btnProgressBar.Right - frameProgress.Width / 2;
+                });
+
+            };
+            //璁惧鍗囩骇寮�濮�
+            updateLogic.StartUpdateReady();
+            //缁堟鍗囩骇
+            btnText.ButtonClickEvent += (sender, e) =>
+            {
+                //鍐嶆璋冪敤,鍐呴儴鏉′欢杈炬垚鏃�,鍙互閫夋嫨缁堟鍗囩骇
+                updateLogic.StartUpdateReady();
+            };
         }
+
+        #endregion
+
+        #region 鈻� 鐣岄潰鍏抽棴___________________________
 
         /// <summary>
         /// 鐢婚潰鍏抽棴
         /// </summary>
-        /// <param name="isCloseForm">鏄惁鍏抽棴鐣岄潰,false鐨勬椂鍊�,鍙細璋冪敤鍏抽棴鍑芥暟閲岄潰鐨勯檮鍔犲姛鑳�</param>
-        public override void CloseForm(bool isCloseForm = true)
+        public override void CloseFormBefore()
         {
-            //鍗囩骇鎺т欢
-            string mainKeys = this.listUpdateDevice[0].DeviceAddr;
-            if (FirmwareUpdateResourse.dicDeviceUpdateList.ContainsKey(mainKeys) == true
-                && FirmwareUpdateResourse.dicDeviceUpdateList[mainKeys].IsFinishUpdate == true)
+            //瀹夊崜鍙互鐐瑰嚮绯荤粺鐨勮繑鍥為敭
+            UserView.HomePage.Instance.ScrollEnabled = true;
+            Shared.Common.CommonPage.BackKeyCanClick = true;
+
+            //鍗囩骇瀵硅薄
+            if (FirmwareUpdateResourse.dicDeviceUpdateList.ContainsKey(deviceMac) == true
+                && FirmwareUpdateResourse.dicDeviceUpdateList[deviceMac].IsFinishUpdate == true)
             {
                 //濡傛灉璁惧宸茬粡鍗囩骇瀹屾垚锛岀晫闈㈠叧闂椂锛屽垯绉婚櫎鍐呭瓨
-                FirmwareUpdateResourse.dicDeviceUpdateList.Remove(mainKeys);
+                FirmwareUpdateResourse.dicDeviceUpdateList[deviceMac].Dispose();
+                FirmwareUpdateResourse.dicDeviceUpdateList.Remove(deviceMac);
             }
+            this.FinishUpdateEvent = null;
 
-            base.CloseForm(isCloseForm);
+            base.CloseFormBefore();
         }
+
+        #endregion
     }
 }

--
Gitblit v1.8.0