From c7698e163e43cea9e7f8ee45f8e3f91c9265cca4 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期一, 04 十一月 2019 19:11:41 +0800
Subject: [PATCH] 合并了全部的代码

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayUpdateLogic.cs |  309 ++++++++++----------------------------------------
 1 files changed, 65 insertions(+), 244 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/GatewayFirmwareUpdateControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayUpdateLogic.cs
similarity index 73%
rename from ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/GatewayFirmwareUpdateControl.cs
rename to ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayUpdateLogic.cs
index 0d15b69..1d0ea04 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/GatewayFirmwareUpdateControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayUpdateLogic.cs
@@ -7,12 +7,25 @@
 namespace Shared.Phone.UserCenter
 {
     /// <summary>
-    /// 鍥轰欢鍗囩骇鎺т欢
+    /// 缃戝叧鐨勫崌绾ч�昏緫
     /// </summary>
-    public class GatewayFirmwareUpdateControl : RowLayout
+    public class HdlGatewayUpdateLogic
     {
         #region 鈻� 鍙橀噺澹版槑___________________________
 
+        /// <summary>
+        /// <para>鏇存柊鐘舵�佸彉鍖栫殑浜嬩欢</para>
+        /// <para>绗竴涓弬鏁颁负:</para>
+        /// <para>-1:鏇存柊寮傚父,鍚庨潰鐨勫�间负寮傚父淇℃伅鐨勭炕璇戞枃鏈�</para>
+        /// <para> 0:鏇存柊鐘舵�佹甯稿彉鍖�,鍚庨潰鐨勫�间负鐘舵�佸彉鏇寸殑鏂囨湰缈昏瘧</para>
+        /// <para> 1:鍗囩骇鎴愬姛</para>
+        /// <para> 3:浠庣瓑寰呬腑鍙栨秷(鐩墠杩樻病鏈夌敤)</para>
+        /// </summary>
+        public Action<int, string> UpdateStatuChangedEvent = null;
+        /// <summary>
+        /// 杩涘害鍊间簨浠�
+        /// </summary>
+        public Action<decimal> ProgressEvent = null;
         /// <summary>
         /// 铏氭嫙璁惧鐨勫浐浠朵俊鎭�
         /// </summary>
@@ -26,11 +39,7 @@
         /// </summary>
         public FirmwareVersionInfo gatewayFirmware = null;
         /// <summary>
-        /// 鍗囩骇鎸夐挳(鐢卞閮ㄨ繘琛岃祴鍊�)
-        /// </summary>
-        public BottomClickButton btnUpdateButton = null;
-        /// <summary>
-        /// 褰撳墠鎵ц鐘舵��
+        /// 褰撳墠鎵ц鐘舵��(鍑虹幇閿欒鏃�,瀹冧篃浼氬彉鎴恡rue)
         /// </summary>
         public UpdateStatuMode UpdateStatu = UpdateStatuMode.None;
         /// <summary>
@@ -43,21 +52,9 @@
         /// </summary>
         private UpdateStatuMode oldUpdateStatu = UpdateStatuMode.None;
         /// <summary>
-        /// 杩涘害鎺т欢
-        /// </summary>
-        private FrameLayout frameBar = null;
-        /// <summary>
-        /// 鐧惧垎姣旇繘搴�
-        /// </summary>
-        private NormalViewControl btnProgress = null;
-        /// <summary>
         /// 瑕佸崌绾х殑缃戝叧
         /// </summary>
         private ZbGateway upDatezbGateway = null;
-        /// <summary>
-        /// 閿欒淇℃伅
-        /// </summary>
-        private string errorMsg = string.Empty;
 
         #endregion
 
@@ -71,72 +68,13 @@
         /// <param name="i_virtualFirmware">铏氭嫙璁惧鐨勫浐浠朵俊鎭�</param>
         /// <param name="i_coordinatorFirmware">鍗忚皟鍣ㄦ柊鐗堟湰鐨勫浐浠朵俊鎭�</param>
         /// <param name="i_gatewayFirmware">缃戝叧鏂扮増鏈殑鍥轰欢淇℃伅</param>
-        public GatewayFirmwareUpdateControl(VerticalScrolViewLayout listView, ZbGateway zbGateway,
-            FirmwareVersionInfo i_virtualFirmware, FirmwareVersionInfo i_coordinatorFirmware, FirmwareVersionInfo i_gatewayFirmware)
+        public HdlGatewayUpdateLogic(ZbGateway zbGateway, FirmwareVersionInfo i_virtualFirmware,
+            FirmwareVersionInfo i_coordinatorFirmware, FirmwareVersionInfo i_gatewayFirmware)
         {
             this.upDatezbGateway = zbGateway;
             this.virtualFirmware = i_virtualFirmware;
             this.coordinatorFirmware = i_coordinatorFirmware;
             this.gatewayFirmware = i_gatewayFirmware;
-
-            this.Height = ControlCommonResourse.ListViewRowHeight;
-            if (listView != null)
-            {
-                listView.AddChidren(this);
-                //鍒濆鍖栨帶浠�
-                this.InitChidrenControl();
-            }
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栨帶浠�
-        /// </summary>
-        public void InitChidrenControl()
-        {
-            this.RemoveAll();
-
-            //杩涘害鎺т欢(鑳屾櫙鑹蹭负缁胯壊锛屼細鍔ㄧ殑閭d釜)
-            this.frameBar = new FrameLayout();
-            this.frameBar.Width = 0;
-            this.frameBar.BackgroundColor = UserCenterColor.Current.Green;
-            this.AddChidren(frameBar);
-
-            //妗屽竷
-            var frameLayout = new RowLayoutControl();
-            frameLayout.BackgroundColor = UserCenterColor.Current.Transparent;
-            this.AddChidren(frameLayout);
-
-            //鍥炬爣
-            var btnIcon = frameLayout.frameTable.AddLeftIcon();
-            HdlGatewayLogic.Current.SetGatewayIcon(btnIcon, this.upDatezbGateway);
-
-            //鎸囧畾鐨勮澶�
-            var btnDevice = frameLayout.frameTable.AddLeftCaption("", 830);
-            //btnDevice.Y = UserCenterLogic.GetControlChidrenYaxis(ControlCommonResourse.ListViewRowHeight, ControlCommonResourse.ListViewRowHalfHeight, UViewAlignment.Top);
-            btnDevice.X = Application.GetRealWidth(200);
-            btnDevice.BackgroundColor = UserCenterColor.Current.Transparent;
-            btnDevice.Text = HdlGatewayLogic.Current.GetGatewayName(upDatezbGateway);
-
-            //鍥轰欢淇℃伅
-            this.btnProgress = frameLayout.frameTable.AddLeftCaption("", 830);
-            //btnDevice.Y = UserCenterLogic.GetControlChidrenYaxis(ControlCommonResourse.ListViewRowHeight, ControlCommonResourse.ListViewRowHalfHeight, UViewAlignment.Bottom);
-            btnDevice.X = Application.GetRealWidth(200);
-            btnProgress.BackgroundColor = UserCenterColor.Current.Transparent;
-            if (this.gatewayFirmware != null)
-            {
-                //鐗堟湰
-                btnProgress.Text = Common.LocalDevice.Current.AppendVersion(this.gatewayFirmware.FirmwareVersion);
-            }
-            else if (this.coordinatorFirmware != null)
-            {
-                //鐗堟湰
-                btnProgress.Text = Common.LocalDevice.Current.AppendVersion(this.coordinatorFirmware.FirmwareVersion);
-            }
-            else if (this.virtualFirmware != null)
-            {
-                //鐗堟湰
-                btnProgress.Text = Common.LocalDevice.Current.AppendVersion(this.virtualFirmware.FirmwareVersion);
-            }
         }
 
         #endregion
@@ -148,10 +86,6 @@
         /// </summary>
         public void StartUpdateReady()
         {
-            if (btnUpdateButton.CanClick == false)
-            {
-                return;
-            }
             if (this.UpdateStatu == UpdateStatuMode.Wait)
             {
                 //濡傛灉鏄瓑寰呮ā寮忥紝鍐嶆鐐瑰嚮鏃讹紝绉婚櫎鍒楄〃
@@ -160,10 +94,9 @@
                 {
                     FirmwareUpdateResourse.dicGatewayUpdateList.Remove(gwId);
                 }
-                //鍗囩骇
-                btnUpdateButton.TextID = R.MyInternationalizationString.uLevelUp;
-                btnUpdateButton.SetNotClickStatu();
                 this.UpdateStatu = UpdateStatuMode.None;
+                //鍙栨秷
+                this.UpdateStatuChangedEvent?.Invoke(3, "");
                 return;
             }
             //濡傛灉瀹冩湁鐘舵�侊紝鍒欒〃绀轰箣鍓嶅畠琚粈涔堥敊璇腑鏂簡
@@ -175,10 +108,10 @@
 
             //杩涘叆绛夊緟妯″紡
             this.UpdateStatu = UpdateStatuMode.Wait;
-            this.btnUpdateButton.TextID = R.MyInternationalizationString.uWaitting;
-            this.btnUpdateButton.SetClickStatu();
             string gwId2 = HdlGatewayLogic.Current.GetGatewayId(this.upDatezbGateway);
             FirmwareUpdateResourse.dicGatewayUpdateList[gwId2] = this;
+            //绛夊緟涓��
+            this.UpdateStatuChangedEvent?.Invoke(0, Language.StringByID(R.MyInternationalizationString.uWaitting));
 
             //鎵ц涓嬩竴涓彲鏇存柊鐨勫浐浠剁殑鏇存柊鎿嶄綔
             HdlFirmwareUpdateLogic.DoUpdateNextFirmware();
@@ -189,13 +122,9 @@
         /// </summary>
         public void DoStartUpdate()
         {
-            //娓呯┖閿欒淇℃伅
-            this.errorMsg = string.Empty;
             //鐘舵�佸彉鏇�
             this.IsFinishUpdate = false;
             this.UpdateStatu = UpdateStatuMode.Action;
-            //寮�濮嬫墽琛屾搷浣滅殑鏃跺�欙紝鎸夐敭涓嶈兘鍐嶇偣鍑�
-            this.btnUpdateButton.CanClick = false;
             //璁剧疆鎷ユ湁缃戝叧姝e湪鍗囩骇鐨勬爣璇�
             HdlGatewayLogic.Current.SetHadGatewayUpdateFlage(true);
             //鏍规嵁鐘舵�佹墽琛屾搷浣�
@@ -277,14 +206,8 @@
             }
 
             this.UpdateStatu = UpdateStatuMode.VirtualDownLoad;
-            Application.RunOnMainThread(() =>
-            {
-                this.btnUpdateButton.TextID = R.MyInternationalizationString.uDownLoading;
-            });
-
             //铏氭嫙椹卞姩鍥轰欢涓嬭浇涓�
-            string msg = Language.StringByID(R.MyInternationalizationString.uVirtualFirmwareDownLoading);
-            this.SetProgressValue(0, 100, msg);
+            this.UpdateStatuChangedEvent?.Invoke(0, Language.StringByID(R.MyInternationalizationString.uVirtualFirmwareDownLoading));
 
             //涓嬭浇铏氭嫙椹卞姩鏂囦欢鐨勮繘搴�
             this.upDatezbGateway.ReportAction += this.DownLoadVirtualFileProgress;
@@ -293,7 +216,6 @@
             var result = await this.upDatezbGateway.DownloadFileAsync(this.virtualFirmware.DistributedMark, this.virtualFirmware.Name);
             if (string.IsNullOrEmpty(result.errorMessageBase) == false)
             {
-                System.Console.WriteLine("鉁┾湬涓嬭浇铏氭嫙椹卞姩鏂囦欢鉁�" + result.errorResponData?.Error + " " + result.errorMessageBase);
                 if (result.errorResponData != null && result.errorResponData.Error == 2)
                 {
                     //鍥犱负tcp搴曞眰鍦ㄧ綉缁滀笉濂界殑鏃跺�欙紝鏈夊彲鑳戒細閲嶅彂澶氭锛屾墍浠ヨ繖閲屽拷鐣ユ帀銆愬崗璋冨櫒姝e湪鍗囩骇鎴栧浠�/鎭㈠鏁版嵁銆戠殑閿欒
@@ -325,7 +247,6 @@
                 return;
             }
             var tempZb = (ZbGateway)objValue;
-            System.Console.WriteLine("鈽呪槄鈽呬笅杞介┍鍔�" + tempZb.CurrentGateWayId + " " + tempZb.downloadFileProgressResponData.Status + " " + tempZb.downloadFileProgressResponData.DownloadPercent);
             if (tempZb.CurrentGateWayId != HdlGatewayLogic.Current.GetGatewayId(this.upDatezbGateway))
             {
                 //涓嶆槸鑷繁鐨勭綉鍏虫帹閫侊紝鍒欎笉澶勭悊
@@ -339,8 +260,7 @@
             var responData = tempZb.downloadFileProgressResponData;
 
             //铏氭嫙椹卞姩鍥轰欢涓嬭浇涓�
-            string msg = Language.StringByID(R.MyInternationalizationString.uVirtualFirmwareDownLoading);
-            this.SetProgressValue(responData.DownloadPercent, 100, msg);
+            this.UpdateStatuChangedEvent?.Invoke(0, Language.StringByID(R.MyInternationalizationString.uVirtualFirmwareDownLoading));
 
             if (responData.Status == 2)
             {
@@ -375,6 +295,8 @@
             this.DownLoadTimeOutRefresh();
             //寮�鍚綉鍏冲崌绾ц櫄鎷熻繘搴︾嚎绋�
             this.StartUpdateVirtualThread();
+            //鍗囩骇涓�
+            this.UpdateStatuChangedEvent?.Invoke(0, Language.StringByID(R.MyInternationalizationString.uLevelUping));
 
             //濡傛灉铏氭嫙椹卞姩涓嶉渶瑕佸崌绾э紝鍒欑洿鎺ヨ烦杞笅涓�姝�
             if (this.virtualFirmware == null)
@@ -385,11 +307,6 @@
             }
 
             this.UpdateStatu = UpdateStatuMode.VirtualUpdateReady;
-            Application.RunOnMainThread(() =>
-            {
-                this.btnUpdateButton.TextID = R.MyInternationalizationString.uLevelUping;
-            });
-
             //鍗囩骇铏氭嫙椹卞姩鐨勮繘搴�
             this.upDatezbGateway.ReportAction += this.UpdateVirtualProgress;
 
@@ -397,7 +314,6 @@
             var result = await this.upDatezbGateway.VirtualDriveUpgradeAsync(this.virtualFirmware.Name, this.virtualFirmware.VirtualCode);
             if (string.IsNullOrEmpty(result.errorMessageBase) == false)
             {
-                System.Console.WriteLine("鉁┾湬铏氭嫙椹卞姩鍗囩骇鉁�" + result.errorResponData?.Error + " " + result.errorMessageBase);
                 if (result.errorResponData != null && result.errorResponData.Error == 2)
                 {
                     //鍥犱负tcp搴曞眰鍦ㄧ綉缁滀笉濂界殑鏃跺�欙紝鏈夊彲鑳戒細閲嶅彂澶氭锛屾墍浠ヨ繖閲屽拷鐣ユ帀銆愬崗璋冨櫒姝e湪鍗囩骇鎴栧浠�/鎭㈠鏁版嵁銆戠殑閿欒
@@ -411,7 +327,7 @@
                 }
 
                 //铏氭嫙椹卞姩鍗囩骇澶辫触
-                this.errorMsg = Language.StringByID(R.MyInternationalizationString.uVirtualUpdatingFail);
+                this.UpdateStatuChangedEvent?.Invoke(-1, Language.StringByID(R.MyInternationalizationString.uVirtualUpdatingFail));
 
                 //鏄剧ず閲嶆柊瀹夎
                 this.ShowReSetupMsg();
@@ -434,7 +350,6 @@
                 return;
             }
             var tempZb = (ZbGateway)objValue;
-            System.Console.WriteLine("鈽呪槄鈽呭崌绾ч┍鍔�" + tempZb.CurrentGateWayId + " " + tempZb.virtualDriveUpgradeResponData.Flag + " " + tempZb.virtualDriveUpgradeResponData.Percent);
             if (tempZb.CurrentGateWayId != HdlGatewayLogic.Current.GetGatewayId(this.upDatezbGateway))
             {
                 //涓嶆槸鑷繁鐨勭綉鍏虫帹閫侊紝鍒欎笉澶勭悊
@@ -449,7 +364,7 @@
             if (responData.Flag != 0 && responData.Flag != 2)
             {
                 //铏氭嫙椹卞姩鍗囩骇澶辫触
-                this.errorMsg = Language.StringByID(R.MyInternationalizationString.uVirtualUpdatingFail);
+                this.UpdateStatuChangedEvent?.Invoke(-1, Language.StringByID(R.MyInternationalizationString.uVirtualUpdatingFail));
 
                 //鏄剧ず閲嶆柊瀹夎
                 this.ShowReSetupMsg();
@@ -492,17 +407,11 @@
             this.DownLoadTimeOutRefresh();
 
             this.UpdateStatu = UpdateStatuMode.CoordinatorDownLoad;
-            Application.RunOnMainThread(() =>
-            {
-                this.btnUpdateButton.TextID = R.MyInternationalizationString.uDownLoading;
-            });
-
             //绛変釜1绉�
             await Task.Delay(1000);
 
             //鍗忚皟鍣ㄥ浐浠朵笅杞戒腑
-            string msg = Language.StringByID(R.MyInternationalizationString.uCoordinatorFirmwareDownLoading);
-            this.SetProgressValue(0, 100, msg);
+            this.UpdateStatuChangedEvent(0, Language.StringByID(R.MyInternationalizationString.uCoordinatorFirmwareDownLoading));
 
             //涓嬭浇鍗忚皟鍣ㄦ枃浠剁殑杩涘害
             this.upDatezbGateway.ReportAction += this.DownLoadCoordinatorFileProgress;
@@ -511,7 +420,6 @@
             var result = await this.upDatezbGateway.DownloadFileAsync(this.coordinatorFirmware.DistributedMark, this.coordinatorFirmware.Name);
             if (string.IsNullOrEmpty(result.errorMessageBase) == false)
             {
-                System.Console.WriteLine("鉁┾湬涓嬭浇鍗忚皟鍣ㄦ枃浠垛湬" + result.errorResponData?.Error + " " + result.errorMessageBase);
                 if (result.errorResponData != null && result.errorResponData.Error == 2)
                 {
                     //鍥犱负tcp搴曞眰鍦ㄧ綉缁滀笉濂界殑鏃跺�欙紝鏈夊彲鑳戒細閲嶅彂澶氭锛屾墍浠ヨ繖閲屽拷鐣ユ帀銆愬崗璋冨櫒姝e湪鍗囩骇鎴栧浠�/鎭㈠鏁版嵁銆戠殑閿欒
@@ -543,7 +451,6 @@
                 return;
             }
             var tempZb = (ZbGateway)objValue;
-            System.Console.WriteLine("鈽呪槄鈽呬笅杞藉崗璋冨櫒" + tempZb.CurrentGateWayId + " " + tempZb.downloadFileProgressResponData.Status + " " + tempZb.downloadFileProgressResponData.DownloadPercent);
             if (tempZb.CurrentGateWayId != HdlGatewayLogic.Current.GetGatewayId(this.upDatezbGateway))
             {
                 //涓嶆槸鑷繁鐨勭綉鍏虫帹閫侊紝鍒欎笉澶勭悊
@@ -557,8 +464,7 @@
             var responData = tempZb.downloadFileProgressResponData;
 
             //鍗忚皟鍣ㄥ浐浠朵笅杞戒腑
-            string msg = Language.StringByID(R.MyInternationalizationString.uCoordinatorFirmwareDownLoading);
-            this.SetProgressValue(responData.DownloadPercent, 100, msg);
+            this.UpdateStatuChangedEvent?.Invoke(0, Language.StringByID(R.MyInternationalizationString.uCoordinatorFirmwareDownLoading));
 
             if (responData.Status == 2)
             {
@@ -598,11 +504,6 @@
             }
 
             this.UpdateStatu = UpdateStatuMode.CoordinatorUpdateReady;
-            Application.RunOnMainThread(() =>
-            {
-                this.btnUpdateButton.TextID = R.MyInternationalizationString.uLevelUping;
-            });
-
             //鍗囩骇鍗忚皟鍣ㄧ殑杩涘害
             this.upDatezbGateway.ReportAction += this.UpdateCoordinatorProgress;
 
@@ -610,7 +511,6 @@
             var result = await this.upDatezbGateway.UpgradeNVAsync(this.coordinatorFirmware.Name);
             if (string.IsNullOrEmpty(result.errorMessageBase) == false)
             {
-                System.Console.WriteLine("鉁┾湬鍗忚皟鍣ㄥ崌绾р湬" + result.errorResponData?.Error + " " + result.errorMessageBase);
                 if (result.errorResponData != null && result.errorResponData.Error == 2)
                 {
                     //鍥犱负tcp搴曞眰鍦ㄧ綉缁滀笉濂界殑鏃跺�欙紝鏈夊彲鑳戒細閲嶅彂澶氭锛屾墍浠ヨ繖閲屽拷鐣ユ帀銆愬崗璋冨櫒姝e湪鍗囩骇鎴栧浠�/鎭㈠鏁版嵁銆戠殑閿欒
@@ -624,7 +524,7 @@
                 }
 
                 //鍗忚皟鍣ㄥ崌绾уけ璐�
-                this.errorMsg = Language.StringByID(R.MyInternationalizationString.uCoordinatorUpdatingFail);
+                this.UpdateStatuChangedEvent?.Invoke(-1, Language.StringByID(R.MyInternationalizationString.uCoordinatorUpdatingFail));
 
                 //鏄剧ず閲嶆柊瀹夎
                 this.ShowReSetupMsg();
@@ -648,7 +548,6 @@
             }
 
             var tempZb = (ZbGateway)objValue;
-            System.Console.WriteLine("鈽呪槄鈽呭崌绾у崗璋冨櫒" + tempZb.CurrentGateWayId + " " + tempZb.zbGwOperationUpgradeData.Flag + " " + tempZb.zbGwOperationUpgradeData.Percent);
             if (tempZb.CurrentGateWayId != HdlGatewayLogic.Current.GetGatewayId(this.upDatezbGateway))
             {
                 //涓嶆槸鑷繁鐨勭綉鍏虫帹閫侊紝鍒欎笉澶勭悊
@@ -663,7 +562,7 @@
             if (responData.Flag != 0 && responData.Flag != 2)
             {
                 //鍗忚皟鍣ㄥ崌绾уけ璐�
-                this.errorMsg = Language.StringByID(R.MyInternationalizationString.uCoordinatorUpdatingFail);
+                this.UpdateStatuChangedEvent?.Invoke(-1, Language.StringByID(R.MyInternationalizationString.uCoordinatorUpdatingFail));
 
                 //鏄剧ず閲嶆柊瀹夎
                 this.ShowReSetupMsg();
@@ -702,10 +601,6 @@
                 return;
             }
             this.UpdateStatu = UpdateStatuMode.GatewayDownLoad;
-            Application.RunOnMainThread(() =>
-            {
-                this.btnUpdateButton.TextID = R.MyInternationalizationString.uDownLoading;
-            });
 
             //鍒锋柊瓒呮椂鏃堕棿
             this.DownLoadTimeOutRefresh();
@@ -714,8 +609,7 @@
             await Task.Delay(1000);
 
             //缃戝叧鍥轰欢涓嬭浇涓�
-            string msg = Language.StringByID(R.MyInternationalizationString.uGatewayFirmwareDownLoading);
-            this.SetProgressValue(0, 100, msg);
+            this.UpdateStatuChangedEvent?.Invoke(0, Language.StringByID(R.MyInternationalizationString.uGatewayFirmwareDownLoading));
 
             //涓嬭浇缃戝叧鏂囦欢鐨勮繘搴�
             this.upDatezbGateway.ReportAction += this.DownLoadGatewayFileProgress;
@@ -724,14 +618,13 @@
             var result = await this.upDatezbGateway.DownloadFileAsync(this.gatewayFirmware.DistributedMark, this.gatewayFirmware.Name);
             if (string.IsNullOrEmpty(result.errorMessageBase) == false)
             {
-                System.Console.WriteLine("鉁┾湬涓嬭浇缃戝叧鏂囦欢鉁�" + result.errorResponData?.Error + " " + result.errorMessageBase);
                 if (result.errorResponData != null && result.errorResponData.Error == 2)
                 {
                     //鍥犱负tcp搴曞眰鍦ㄧ綉缁滀笉濂界殑鏃跺�欙紝鏈夊彲鑳戒細閲嶅彂澶氭锛屾墍浠ヨ繖閲屽拷鐣ユ帀銆愬崗璋冨櫒姝e湪鍗囩骇鎴栧浠�/鎭㈠鏁版嵁銆戠殑閿欒
                     return;
                 }
                 //缃戝叧鍥轰欢璧勬簮涓嬭浇澶辫触
-                this.ShowErrorMsg(Language.StringByID(R.MyInternationalizationString.uGatewayFirmwareDownLoadFail));
+                this.UpdateStatuChangedEvent?.Invoke(-1, Language.StringByID(R.MyInternationalizationString.uGatewayFirmwareDownLoadFail));
 
                 //鏄剧ず閲嶆柊涓嬭浇妯″紡
                 this.ShowReDownLoadMode();
@@ -754,7 +647,6 @@
                 return;
             }
             var tempZb = (ZbGateway)objValue;
-            System.Console.WriteLine("鈽呪槄鈽呬笅杞界綉鍏�" + tempZb.CurrentGateWayId + " " + tempZb.downloadFileProgressResponData.Status + " " + tempZb.downloadFileProgressResponData.DownloadPercent);
             if (tempZb.CurrentGateWayId != HdlGatewayLogic.Current.GetGatewayId(this.upDatezbGateway))
             {
                 //涓嶆槸鑷繁鐨勭綉鍏虫帹閫侊紝鍒欎笉澶勭悊
@@ -766,8 +658,8 @@
 
             //璁剧疆杩涘害
             var responData = tempZb.downloadFileProgressResponData;
-            string msg = Language.StringByID(R.MyInternationalizationString.uGatewayFirmwareDownLoading);
-            this.SetProgressValue(responData.DownloadPercent, 100, msg);
+            this.SetProgressValue(responData.DownloadPercent, 100);
+
             if (responData.Status == 2)
             {
                 //缃戝叧鍥轰欢璧勬簮涓嬭浇澶辫触
@@ -783,10 +675,6 @@
             else if (responData.Status == 0)
             {
                 this.upDatezbGateway.ReportAction -= this.DownLoadGatewayFileProgress;
-                if (this.Parent == null)
-                {
-                    return;
-                }
                 //鎵ц铏氭嫙椹卞姩鍗囩骇绋嬪簭
                 this.DoUpdateVirtual();
             }
@@ -810,16 +698,11 @@
             }
 
             this.UpdateStatu = UpdateStatuMode.GatewayUpdateReady;
-            Application.RunOnMainThread(() =>
-            {
-                this.btnUpdateButton.TextID = R.MyInternationalizationString.uLevelUping;
-            });
 
             //缃戝叧鍗囩骇
             var result = await this.upDatezbGateway.LinuxUpgradeAsync(this.gatewayFirmware.Name);
             if (string.IsNullOrEmpty(result.errorMessageBase) == false)
             {
-                System.Console.WriteLine("鉁┾湬缃戝叧鍗囩骇鉁�" + result.errorResponData?.Error + " " + result.errorMessageBase);
                 if (result.errorMessageBase.Contains("鍥炲瓒呮椂") == true)
                 {
                     //缃戝叧鍗囩骇鐨勬椂鍊欙紝鏈夊彲鑳藉畠涓嶅啀鍥炰粈涔堜俊鎭�
@@ -862,32 +745,16 @@
             {
                 //鐘舵�佸彉鏇�
                 this.IsFinishUpdate = true;
-                //璁╁埆鐨勭嚎绋嬪厛閫�鍑�
                 System.Threading.Thread.Sleep(2000);
 
                 //璁剧疆娌℃湁缃戝叧姝e湪鍗囩骇鐨勬爣璇�
                 HdlGatewayLogic.Current.SetHadGatewayUpdateFlage(false);
+
+                this.UpdateStatu = UpdateStatuMode.UpdateSuccess;
+                //鎵ц涓嬩竴涓崌绾�
+                HdlFirmwareUpdateLogic.DoUpdateNextFirmware();
                 //缃戝叧鍗囩骇鎴愬姛!
-                this.SetProgressValue(100, 100, Language.StringByID(R.MyInternationalizationString.uGatewayUpdateSuccess));
-
-                Application.RunOnMainThread(() =>
-                {
-                    if (UserCenterResourse.DicActionForm.ContainsKey("GatewayFirmwareInfoForm") == true)
-                    {
-                        //鍒锋柊璁惧淇℃伅鐣岄潰
-                        ((GatewayManage.GatewayFirmwareInfoForm)UserCenterResourse.DicActionForm["GatewayFirmwareInfoForm"]).ShowForm(upDatezbGateway);
-                    }
-                    this.UpdateStatu = UpdateStatuMode.UpdateSuccess;
-
-                    //鎵ц涓嬩竴涓崌绾�
-                    HdlFirmwareUpdateLogic.DoUpdateNextFirmware();
-
-                    //瀹屾垚
-                    this.btnUpdateButton.TextID = R.MyInternationalizationString.uFinish;
-                    this.btnUpdateButton.CanClick = true;
-                    this.btnUpdateButton.SetNotClickStatu();
-
-                });
+                this.UpdateStatuChangedEvent?.Invoke(1, "");
             });
         }
 
@@ -905,18 +772,8 @@
             //璁剧疆娌℃湁缃戝叧姝e湪鍗囩骇鐨勬爣璇�
             HdlGatewayLogic.Current.SetHadGatewayUpdateFlage(false);
 
-            Application.RunOnMainThread(() =>
-            {
-                //閲嶆柊鍗囩骇
-                this.btnUpdateButton.TextID = R.MyInternationalizationString.uReLevelUp;
-                this.btnUpdateButton.CanClick = true;
-                this.btnUpdateButton.SetNotClickStatu();
-                //娓呯┖杩涘害鏉�
-                this.frameBar.Width = 0;
-
-                //鎵ц涓嬩竴涓崌绾�
-                HdlFirmwareUpdateLogic.DoUpdateNextFirmware();
-            });
+            //鎵ц涓嬩竴涓崌绾�
+            HdlFirmwareUpdateLogic.DoUpdateNextFirmware();
         }
 
         /// <summary>
@@ -929,17 +786,8 @@
             //璁剧疆娌℃湁缃戝叧姝e湪鍗囩骇鐨勬爣璇�
             HdlGatewayLogic.Current.SetHadGatewayUpdateFlage(false);
 
-            Application.RunOnMainThread(() =>
-            {
-                this.btnUpdateButton.TextID = R.MyInternationalizationString.uReDownLoad;
-                this.btnUpdateButton.CanClick = true;
-                this.btnUpdateButton.SetNotClickStatu();
-                //娓呯┖杩涘害鏉�
-                this.frameBar.Width = 0;
-
-                //鎵ц涓嬩竴涓崌绾�
-                HdlFirmwareUpdateLogic.DoUpdateNextFirmware();
-            });
+            //鎵ц涓嬩竴涓崌绾�
+            HdlFirmwareUpdateLogic.DoUpdateNextFirmware();
         }
 
         #endregion
@@ -951,8 +799,7 @@
         /// </summary>
         /// <param name="value">杩涘害鍊�</param>
         /// <param name="maxValue">鏈�澶у��</param>
-        /// <param name="appendText">杩藉姞淇℃伅</param>
-        private void SetProgressValue(decimal value, decimal maxValue, string appendText = "")
+        private void SetProgressValue(decimal value, decimal maxValue)
         {
             if (value > maxValue)
             {
@@ -960,35 +807,7 @@
                 return;
             }
             decimal result = value / maxValue;
-
-            Application.RunOnMainThread(() =>
-            {
-                //鐧惧垎姣旀暟,鍙栨暣鏁伴儴鍒�
-                int percent = (int)(result * 100);
-                int width = (int)(result * this.Width);
-
-                if (appendText != string.Empty)
-                {
-                    this.btnProgress.Text = percent + "%  " + appendText;
-                }
-                else
-                {
-                    this.btnProgress.Text = percent + "%";
-                }
-                this.frameBar.Width = width;
-            });
-        }
-
-        /// <summary>
-        /// 璁惧畾杩涘害鍊�
-        /// </summary>
-        /// <param name="value">杩涘害鍊�</param>
-        private void SetProgressValue(string value)
-        {
-            Application.RunOnMainThread(() =>
-            {
-                this.btnProgress.Text = value;
-            });
+            this.ProgressEvent?.Invoke(value);
         }
 
         /// <summary>
@@ -997,13 +816,7 @@
         /// <param name="value"></param>
         private void ShowErrorMsg(string value)
         {
-            Application.RunOnMainThread(() =>
-            {
-                //璁剧疆閿欒淇℃伅
-                this.btnProgress.Text = value;
-                //娓呯┖杩涘害鏉�
-                this.frameBar.Width = 0;
-            });
+            this.UpdateStatuChangedEvent?.Invoke(-1, value);
         }
 
         #endregion
@@ -1096,7 +909,7 @@
                     if (updateTimeOutCount == 0)
                     {
                         //鍝嶅簲瓒呮椂,鍗囩骇澶辫触
-                        this.errorMsg = Language.StringByID(R.MyInternationalizationString.uResponseTimeoutsAndUpdateFail);
+                        this.UpdateStatuChangedEvent?.Invoke(-1, Language.StringByID(R.MyInternationalizationString.uResponseTimeoutsAndUpdateFail));
                         //浠庡ご鍐嶆潵
                         this.UpdateStatu = UpdateStatuMode.GatewayDownLoadFail;
                         //鏄剧ず閲嶆柊涓嬭浇妯″紡
@@ -1107,20 +920,15 @@
 
                     //鍓╀綑鏃堕棿
                     int remainingTime = timeCount - nowTimeCount;
-                    if (remainingTime == -1)
+                    if (remainingTime <= -1)
                     {
                         //鏃堕棿鐢ㄥ畬浜嗭紝鐩存帴鏄剧ず鎴愬姛
                         this.IsFinishUpdate = true;
                         break;
                     }
                     //璁剧疆杩涘害鍊�
-                    this.SetProgressValue(nowTimeCount, timeCount, msg + remainingTime + "s");
-                }
-                //鍗囩骇澶辫触
-                if (this.errorMsg != string.Empty)
-                {
-                    //璁剧疆閿欒淇℃伅
-                    this.ShowErrorMsg(this.errorMsg);
+                    this.UpdateStatuChangedEvent?.Invoke(0, msg + remainingTime + "s");
+                    this.SetProgressValue(nowTimeCount, timeCount);
                 }
             });
         }
@@ -1209,5 +1017,18 @@
         }
 
         #endregion
+
+        #region 鈻� 閲婃斁缂撳瓨___________________________
+
+        /// <summary>
+        /// 閲婃斁缂撳瓨
+        /// </summary>
+        public void Dispose()
+        {
+            this.ProgressEvent = null;
+            this.UpdateStatuChangedEvent = null;
+        }
+
+        #endregion
     }
 }

--
Gitblit v1.8.0