From 1c4904d77f484c075080942d87785481b52b6fb2 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期一, 28 十月 2019 14:58:46 +0800
Subject: [PATCH] Revert "Merge branch 'dev-tzy' into DEV_GXC"

---
 ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayListForm.cs |  270 +++++++++++++++++++++++++++++++++---------------------
 1 files changed, 165 insertions(+), 105 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayListForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayListForm.cs
index 05a06bb..d32bd4c 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayListForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayListForm.cs
@@ -2,7 +2,6 @@
 using System;
 using System.Collections.Generic;
 using System.Text;
-using System.Threading.Tasks;
 using ZigBee.Device;
 
 namespace Shared.Phone.UserCenter.GatewayManage
@@ -46,7 +45,7 @@
             btnAdd.InitControl();
             btnAdd.ButtonClickEvent += (sender, e) =>
             {
-                var form = new GatewayAdd.NewGateWayMenuSelectForm();
+                var form = new GatewayAdd.NewGateWaySelectForm();
                 form.AddForm();
             };
 
@@ -68,11 +67,8 @@
             listview.BackgroundColor = UserCenterColor.Current.White;
             bodyFrameLayout.AddChidren(listview);
 
-            HdlThreadLogic.Current.RunMainInThread(() =>
-            {
-                //璁惧畾涓儴淇℃伅
-                this.SetMiddleFrameInfo();
-            });
+            //璁惧畾涓儴淇℃伅
+            this.SetMiddleFrameInfo();
         }
 
         /// <summary>
@@ -87,20 +83,24 @@
             List<ZbGateway> listway = HdlGatewayLogic.Current.GetAllLocalGateway();
             if (listway.Count == 0)
             {
-                //杩樻病鏈夌粦瀹氱綉鍏冲摝
-                this.ShowNotDataImage(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.uHadNotBindGatewayMsg));
                 return;
             }
 
+            int count = listway.Count - 1;
             for (int i = 0; i < listway.Count; i++)
             {
                 //娣诲姞琛�
                 var gwId = HdlGatewayLogic.Current.GetGatewayId(listway[i]);
-                this.AddRowLayout(gwId, i != listway.Count - 1);
+                this.AddRowLayout(gwId, i != count);
             }
-
             //璋冩暣鍒楄〃鎺т欢鐨勯珮搴�
-            this.listview.AdjustRealHeight(Application.GetRealHeight(23));
+            var realHeight = listview.ChildrenCount * listview.GetChildren(listview.ChildrenCount - 1).Height;
+            realHeight += Application.GetRealHeight(23);
+            if (realHeight < listview.Height)
+            {
+                //缂╁皬鎺т欢楂樺害
+                listview.Height = realHeight;
+            }
 
             //璁剧疆鎺ュ彈鍦ㄧ嚎鐘舵�佹帹閫�
             this.AddGatewayOnlinePush();
@@ -120,82 +120,64 @@
         private void AddRowLayout(string strWayId, bool addLine)
         {
             //缃戝叧鎺т欢
-            var gateway = HdlGatewayLogic.Current.GetLocalGateway(strWayId);
-            var gatewayRow = new GatewayRowControl(gateway, listview.rowSpace / 2);
+            var Gateway = HdlGatewayLogic.Current.GetLocalGateway(strWayId);
+            var gatewayRow = new GatewayRowControl(Gateway, listview.rowSpace / 2);
             listview.AddChidren(gatewayRow);
             gatewayRow.InitControl(81);
             //鍚戝彸鍥炬爣
             gatewayRow.frameTable.AddRightArrow();
+            //娣诲姞鍦ㄧ嚎鐘舵��
+            gatewayRow.AddOnLineControl();
             if (addLine == true)
             {
                 gatewayRow.frameTable.AddBottomLine();
             }
-            //鎻愮ず鏂扮増鏈�
+
+            //鎻愮ず鏈夋柊鐗堟湰
             var btnNew = new InformationTipView(gatewayRow.btnIcon);
             btnNew.Visible = false;
             gatewayRow.frameTable.AddChidren(btnNew, ChidrenBindMode.BindEventOnly);
             gatewayRow.AddTag("btnNew", btnNew);
-            //鍗曞嚮浜嬩欢
-            gatewayRow.frameTable.ButtonClickEvent += (sender, e) =>
-            {
-                var form = new GatewayInfoEditorForm();
-                form.AddForm(gateway);
-            };
 
-            //鍒囨崲
-            var btnSwitch = new NormalViewControl(Application.GetRealWidth(184), gatewayRow.Height, false);
-            btnSwitch.BackgroundColor = 0xfffb744a;
-            btnSwitch.TextAlignment = TextAlignment.Center;
-            btnSwitch.TextColor = UserCenterColor.Current.White;
-            btnSwitch.TextSize = 12;
-            btnSwitch.TextID = R.MyInternationalizationString.uSwitch1;
-            if (strWayId == GatewayResourse.AppOldSelectGatewayId)
+            this.dicRowContr[strWayId] = gatewayRow;
+
+            //璁剧疆涓�涓�夋嫨缃戝叧鐨勯粯璁ゅ��
+            if (string.IsNullOrEmpty(GatewayResourse.AppOldSelectGatewayId) == true && gatewayRow.IsOnline == true)
             {
-                btnSwitch.TextID = R.MyInternationalizationString.uRefresh;
+                this.SaveGatewayIdToLocation(strWayId);
             }
-            gatewayRow.AddRightView(btnSwitch);
-            btnSwitch.ButtonClickEvent += (sender, e) =>
+
+            //缂栬緫鎸夐挳
+            var btnEditor = new NormalViewControl(Application.GetRealWidth(177), gatewayRow.Height, false);
+            btnEditor.BackgroundColor = UserCenterColor.Current.RowEditorButtonColor;
+            btnEditor.TextAlignment = TextAlignment.Center;
+            btnEditor.TextColor = UserCenterColor.Current.White;
+            btnEditor.TextID = R.MyInternationalizationString.uEditor;
+            gatewayRow.AddRightView(btnEditor);
+            btnEditor.ButtonClickEvent += (sender, e) =>
             {
-                //鏄惁鍒囨崲鍒皗0}缃戝叧?
-                string msg = string.Format(Language.StringByID(R.MyInternationalizationString.uConfirmWantToSwitchTheGateway), "[" + gatewayRow.btnName.Text + "]");
-                if (strWayId == GatewayResourse.AppOldSelectGatewayId)
+                //濡傛灉鐐瑰嚮鐨勬槸涓嶅湪绾跨殑缃戝叧锛屽垯褰撲粈涔堜簨閮芥病鏈夊彂鐢�
+                if (gatewayRow.IsOnline == false)
                 {
-                    //鏄惁閲嶆柊鍒锋柊{0}缃戝叧?
-                    msg = string.Format(Language.StringByID(R.MyInternationalizationString.uConfirmWantToRefreshTheGateway), "[" + gatewayRow.btnName.Text + "]");
+                    //鎸囧畾鐨勭綉鍏充笉鍦ㄧ嚎
+                    this.ShowMassage(ShowMsgType.Normal, Language.StringByID(R.MyInternationalizationString.uTheGatewayIsNotOnline));
+                    return;
                 }
-                this.ShowMassage(ShowMsgType.Confirm, msg, () =>
-                {
-                    HdlThreadLogic.Current.RunThread(() =>
-                    {
-                        //鎵ц鍒囨崲缃戝叧鎿嶄綔
-                        this.DoSwitchGateway(strWayId);
-                    });
-                });
+                //鐐瑰嚮缂栬緫鐨勮瘽锛岀洿鎺ラ殣钘�
+                btnNew.Visible = false;
+
+                var form = new GatewayInfoEditorForm();
+                form.AddForm(Gateway);
             };
 
-            //瀹氫綅
-            var btnPosition = new NormalViewControl(Application.GetRealWidth(184), gatewayRow.Height, false);
-            btnPosition.BackgroundColor = 0xff4a4a4a;
-            btnPosition.TextAlignment = TextAlignment.Center;
-            btnPosition.TextColor = UserCenterColor.Current.White;
-            btnPosition.TextSize = 12;
-            btnPosition.TextID = R.MyInternationalizationString.uFixedPosition;
-            gatewayRow.AddRightView(btnPosition);
-            btnPosition.ButtonClickEvent += (sender, e) =>
-            {
-                //鍙戦�佸畾浣嶅懡浠�
-                HdlGatewayLogic.Current.SetFixedPositionCommand(gateway);
-            };
-
-            //鍒犻櫎
-            var btnDelete = new NormalViewControl(Application.GetRealWidth(184), gatewayRow.Height, false);
-            btnDelete.BackgroundColor = 0xfff75858;
-            btnDelete.TextAlignment = TextAlignment.Center;
-            btnDelete.TextColor = UserCenterColor.Current.White;
-            btnDelete.TextSize = 12;
-            btnDelete.TextID = R.MyInternationalizationString.uDelete;
-            gatewayRow.AddLeftView(btnDelete);
-            btnDelete.ButtonClickEvent += (sender, e) =>
+            //瑙i櫎缁戝畾
+            var btnUnBind = new NormalViewControl(Application.GetRealWidth(177), gatewayRow.Height, false);
+            btnUnBind.BackgroundColor = UserCenterColor.Current.RowDeleteButtonColor;
+            btnUnBind.TextAlignment = TextAlignment.Center;
+            btnUnBind.TextColor = UserCenterColor.Current.White;
+            btnUnBind.TextID = R.MyInternationalizationString.uUnBinded;
+            gatewayRow.AddRightView(btnUnBind);
+            btnUnBind.ButtonClickEvent += (sender, e) =>
             {
                 //濡傜Щ闄ょ綉鍏筹紝璇ョ綉鍏崇粦瀹氱殑璁惧鍒楄〃{0}灏嗘竻绌猴紝纭缁х画鎵ц璇ユ搷浣滐紵
                 string msg = Language.StringByID(R.MyInternationalizationString.uUnBindedMsg);
@@ -209,12 +191,42 @@
                 });
             };
 
-            this.dicRowContr[strWayId] = gatewayRow;
-            //璁剧疆涓�涓�夋嫨缃戝叧鐨勯粯璁ゅ��
-            if (string.IsNullOrEmpty(GatewayResourse.AppOldSelectGatewayId) == true)
+            //鍗曞嚮浜嬩欢
+            gatewayRow.frameTable.ButtonClickEvent += (sender, e) =>
             {
-                HdlGatewayLogic.Current.SaveGatewayIdToLocation(strWayId);
-            }
+                //濡傛灉鐐瑰嚮鐨勬槸涓嶅湪绾跨殑缃戝叧锛屽垯褰撲粈涔堜簨閮芥病鏈夊彂鐢�
+                if (gatewayRow.IsOnline == false)
+                {
+                    //鎸囧畾鐨勭綉鍏充笉鍦ㄧ嚎
+                    this.ShowMassage(ShowMsgType.Normal, Language.StringByID(R.MyInternationalizationString.uTheGatewayIsNotOnline));
+                    return;
+                }
+                //濡傛灉瀛樺湪鏂扮増鏈�,骞朵笖鍗曞嚮浠栫殑璇�
+                if (btnNew.Visible == true)
+                {
+                    if (sender is InformationTipView || sender is IconViewControl)
+                    {
+                        //鎵撳紑缂栬緫鐣岄潰
+                        btnNew.Visible = false;
+                        var form = new GatewayInfoEditorForm();
+                        form.AddForm(Gateway);
+                        return;
+                    }
+                }
+
+                //鏄惁鍒囨崲鍒皗0}缃戝叧?
+                string msg = string.Format(Language.StringByID(R.MyInternationalizationString.uConfirmWantToSwitchTheGateway), "[" + gatewayRow.btnName.Text + "]");
+                if (strWayId == GatewayResourse.AppOldSelectGatewayId)
+                {
+                    //鏄惁閲嶆柊鍒锋柊{0}缃戝叧?
+                    msg = string.Format(Language.StringByID(R.MyInternationalizationString.uConfirmWantToRefreshTheGateway), "[" + gatewayRow.btnName.Text + "]");
+                }
+                this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                {
+                    //鎵ц鍒囨崲缃戝叧鎿嶄綔
+                    this.DoSwitchGateway(strWayId);
+                });
+            };
         }
 
         #endregion
@@ -239,7 +251,7 @@
             {
                 //濡傛灉瑙i櫎缁戝畾鐨勭綉鍏虫槸褰撳墠鎵�閫夋嫨鐨勭綉鍏崇殑璇濓紝鍒欏叧闂澶囩鐞嗙晫闈�
                 this.closeDeviceManagForm = true;
-                HdlGatewayLogic.Current.SaveGatewayIdToLocation(string.Empty);
+                this.SaveGatewayIdToLocation(string.Empty);
             }
 
             //绉婚櫎
@@ -258,33 +270,90 @@
         /// 鎵ц鍒囨崲缃戝叧鎿嶄綔
         /// </summary>
         /// <param name="gatewayId"></param>
-        /// <param name="online"></param>
         private async void DoSwitchGateway(string gatewayId)
         {
-            var result = await HdlGatewayLogic.Current.DoSwitchGateway(gatewayId);
+            //鏄剧ず杩涘害鏉�
+            this.ShowProgressBar();
+            //鑾峰彇缃戝叧
+            var gateway = HdlGatewayLogic.Current.GetLocalGateway(gatewayId);
+
+            //妫�娴嬪箍鎾埌鐨勮繖涓綉鍏虫槸鍚︽嫢鏈変綇瀹匢D
+            ZbGateway realWay = null;
+            bool getGatewayInfo = true;
+            if (HdlGatewayLogic.Current.GetRealGateway(ref realWay, gatewayId) == true)
+            {
+                //閲嶆柊璁剧疆浣忓畢ID(杩欎釜搴旇鏄笉缁忚繃APP,鐩存帴鎶婄綉鍏虫仮澶嶄簡鍑哄巶璁剧疆)
+                if (HdlGatewayLogic.Current.HomeIdIsEmpty(realWay.getGatewayBaseInfo.HomeId) == true)
+                {
+                    int result2 = await HdlGatewayLogic.Current.ReBindNewGateway(realWay);
+                    if (result2 == 0)
+                    {
+                        //鍑虹幇鏈煡閿欒,璇风◢鍚庡啀璇�
+                        this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.uUnKnowErrorAndResetAgain));
+                        //鍏抽棴杩涘害鏉�
+                        this.CloseProgressBar();
+                    }
+                    else if (result2 == -1)
+                    {
+                        //鍏抽棴杩涘害鏉�
+                        this.CloseProgressBar();
+                        return;
+                    }
+                    //閲嶆柊缁戝畾缃戝叧閲岄潰宸茬粡閲嶆柊鑾峰彇浜嗙綉鍏充俊鎭�
+                    getGatewayInfo = false;
+                }
+            }
+
+            if (getGatewayInfo == true)
+            {
+                //鑾峰彇缃戝叧淇℃伅
+                var info = await HdlGatewayLogic.Current.GetGatewayNewInfoAsync(gateway);
+                if (info == null)
+                {
+                    //鍏抽棴杩涘害鏉�
+                    this.CloseProgressBar();
+                    return;
+                }
+            }
+
+            //鑾峰彇鍏ㄩ儴璁惧
+            bool result = await Common.LocalDevice.Current.SetDeviceToMemmoryByGateway(gateway);
+            //鍏抽棴杩涘害鏉�
+            this.CloseProgressBar();
             if (result == false)
             {
                 return;
             }
+
+            //鍒囨崲缃戝叧,淇濆瓨缂撳瓨
+            this.SaveGatewayIdToLocation(gatewayId);
             //濡傛灉閫夋嫨浜嗗埛鏂扮殑缃戝叧锛屽垯涓嶅叧闂鐞嗙晫闈�
             this.closeDeviceManagForm = false;
 
-            HdlThreadLogic.Current.RunMain(() =>
+            if (UserCenterResourse.DicActionForm.ContainsKey("DeviceListMainForm") == false)
             {
-                if (UserCenterResourse.DicActionForm.ContainsKey("DeviceListMainForm") == false)
-                {
-                    //鍒锋柊涓荤敾闈�
-                    var form = new Device.DeviceListMainForm();
-                    this.AddFromAndRemoveNowForm(form);
-                }
-                else
-                {
-                    //鍏抽棴鐣岄潰
-                    this.CloseForm();
-                    //鍒锋柊涓荤敾闈�(涓嶉噸鏂拌幏鍙栬澶囩姸鎬�)
-                    this.LoadFormMethodByName("DeviceListMainForm", "InitMiddleFrame", false);
-                }
-            });
+                //鍒锋柊涓荤敾闈�
+                var form = new Device.DeviceListMainForm();
+                this.AddFromAndRemoveNowForm(form);
+            }
+            else
+            {
+                //鍏抽棴鐣岄潰
+                this.CloseForm();
+                //鍒锋柊涓荤敾闈�(涓嶉噸鏂拌幏鍙栬澶囩姸鎬�)
+                this.LoadFormMethodByName("DeviceListMainForm", "InitMiddleFrame", false);
+            }
+        }
+
+        /// <summary>
+        /// 淇濆瓨閫夋嫨鐨勭綉鍏矷D鍒版湰鍦�
+        /// </summary>
+        /// <param name="gatewayId"></param>
+        private void SaveGatewayIdToLocation(string gatewayId)
+        {
+            GatewayResourse.AppOldSelectGatewayId = gatewayId;
+            byte[] data = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(GatewayResourse.AppOldSelectGatewayId));
+            Global.WriteFileToDirectoryByBytes(DirNameResourse.LocalMemoryDirectory, DirNameResourse.AppOldSelectGatewayFile, data);
         }
 
         #endregion
@@ -302,14 +371,11 @@
         /// <param name="listway"></param>
         private void StartGatewayOnlieCheckThread(List<ZbGateway> listway)
         {
-            if (oldGetOnlineTime.Year != 1900)
+            var timeValue = (DateTime.Now - oldGetOnlineTime).Milliseconds;
+            if (timeValue <= 10000)
             {
-                var timeValue = (DateTime.Now - oldGetOnlineTime).TotalSeconds;
-                if (timeValue < 10)
-                {
-                    //鏈�灏戣闂撮殧鍗佺,鎵嶅幓閲嶆柊鑾峰彇
-                    return;
-                }
+                //鏈�灏戣闂撮殧鍗佺,鎵嶅幓閲嶆柊鑾峰彇
+                return;
             }
             oldGetOnlineTime = DateTime.Now;
 
@@ -410,7 +476,7 @@
         {
             base.CloseForm();
 
-            if (this.closeDeviceManagForm == true)
+            if (string.IsNullOrEmpty(GatewayResourse.AppOldSelectGatewayId) == true && this.closeDeviceManagForm == true)
             {
                 //鍏抽棴鐣岄潰
                 HdlGatewayLogic.Current.RefreshAppOldSelectGatewayId();
@@ -427,12 +493,6 @@
         /// </summary>
         public override int FormActionAgainEvent()
         {
-            //杩涘埌杩欎釜鐣岄潰,鐞嗚涓婂墠鍥炵殑缃戝叧id鏄湁鐨�,濡傛灉涓虹┖浜�,搴旇鏄綋鍓嶇殑缃戝叧琚В缁戜簡
-            if (GatewayResourse.AppOldSelectGatewayId == string.Empty)
-            {
-                //鍏抽棴璁惧鍒楄〃
-                this.closeDeviceManagForm = true;
-            }
             //鍒濆鍖栦腑閮ㄦ帶浠�
             this.InitMiddleFrame();
             return 1;

--
Gitblit v1.8.0