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/Add/WiredGatewaySearchForm.cs |  625 +++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 367 insertions(+), 258 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewaySearchForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewaySearchForm.cs
index 29ece02..f751770 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewaySearchForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewaySearchForm.cs
@@ -14,25 +14,29 @@
         #region 鈻� 鍙橀噺澹版槑___________________________
 
         /// <summary>
+        /// 鍒楄〃鎺т欢
+        /// </summary>
+        private VerticalScrolViewLayout listView = null;
+        /// <summary>
+        /// 杩欐槸涓�忔槑鐨勬帶浠�
+        /// </summary>
+        private FrameLayout frameTransparent = null;
+        /// <summary>
+        /// 绾跨▼鎵ц涓�
+        /// </summary>
+        private bool IsThreadAction = true;
+        /// <summary>
+        /// 鎼滅储鏃堕棿
+        /// </summary>
+        private int searchTime = 60;
+        /// <summary>
+        /// 鍋滄鎼滅储鐨勬寜閿�
+        /// </summary>
+        private BottomClickButton btnStop = null;
+        /// <summary>
         /// 缃戝叧鐨勪富閿�(value:鍓╀綑妫�娴嬫鏁�,鐢ㄤ簬瀵瑰簲寮傚父鐨勭綉鍏�)
         /// </summary>
-        private Dictionary<string, int> dicIdCheckCount = new Dictionary<string, int>();
-        /// <summary>
-        /// 鎼滅储鍒扮殑缃戝叧鍒楄〃
-        /// </summary>
-        private List<ZbGateway> listZbGateway = new List<ZbGateway>();
-        /// <summary>
-        /// 鎼滅储鍒扮殑缃戝叧绫诲埆  0:绗竴娆$粦瀹� 1:宸茬粡缁戝畾 2:闇�瑕佹崲缁�
-        /// </summary>
-        private Dictionary<string, int> dicZbGatewayDiv = new Dictionary<string, int>();
-        /// <summary>
-        /// 鑾峰彇寰楀埌浜嗘柊缃戝叧
-        /// </summary>
-        private bool newGatewayGetting = false;
-        /// <summary>
-        /// 缃戝叧妫�娴嬩腑
-        /// </summary>
-        private string isGatewayChecking = "0";
+        private Dictionary<string, int> dicGatewayId = new Dictionary<string, int>();
 
         #endregion
 
@@ -46,254 +50,142 @@
             //璁剧疆鏍囬淇℃伅
             base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAddWiredGateway));
 
-            //鍒濆鍖栧垵濮嬩腑閮ㄦ帶浠�
-            this.InitDefultMiddleFrame();
+            //鍒濆鍖栦腑閮ㄦ帶浠�
+            this.InitMiddleFrame();
+
+            //寮�鍚嚎绋�
+            this.StartThread();
         }
 
         /// <summary>
-        /// 鍒濆鍖栧垵濮嬩腑閮ㄦ帶浠�
+        /// 鍒濆鍖栦腑閮ㄦ帶浠�
         /// </summary>
-        private void InitDefultMiddleFrame()
+        private void InitMiddleFrame()
         {
             //娓呯┖bodyFrame
             this.ClearBodyFrame();
 
-            //鍥炬爣
-            var picGwImage = new FrameLayout();
-            picGwImage.Width = Application.GetMinRealAverage(861);
-            picGwImage.Height = Application.GetMinRealAverage(478);
-            picGwImage.Y = Application.GetRealWidth(251);
-            picGwImage.Gravity = Gravity.CenterHorizontal;
-            picGwImage.BackgroundImagePath = "Gateway/WiredGatewaySearching.png";
-            bodyFrameLayout.AddChidren(picGwImage);
+            //缃戝叧鍒楄〃锛岃繖涓帶浠剁疆浜庤儗閮�
+            listView = new VerticalScrolViewLayout();
+            listView.Height = ControlCommonResourse.ListViewRowHeight * 5;
+            bodyFrameLayout.AddChidren(listView);
 
-            //姝e湪鎼滅储缃戝叧鈥�
-            var btnMsg = new NormalViewControl(bodyFrameLayout.Width, false);
-            btnMsg.TextID = R.MyInternationalizationString.uGatewaySearching;
-            btnMsg.Y = Application.GetRealHeight(1008);
-            btnMsg.TextColor = UserCenterColor.Current.TextGrayColor3;
-            btnMsg.TextAlignment = TextAlignment.Center;
-            bodyFrameLayout.AddChidren(btnMsg);
-
-            //鍒濆鍖栬繛鎺ョ殑鍋囨兂鍔ㄧ敾鏁堟灉
-            this.InitConcetionAnimete(picGwImage, btnMsg);
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栧け璐ユā寮忕殑涓儴鎺т欢
-        /// </summary>
-        private void InitFailMiddleFrame()
-        {
-            //娓呯┖bodyFrame
-            this.ClearBodyFrame();
-
-            //鍥炬爣
-            var picGwImage = new FrameLayout();
-            picGwImage.Width = Application.GetMinRealAverage(861);
-            picGwImage.Height = Application.GetMinRealAverage(478);
-            picGwImage.Y = Application.GetRealWidth(158);
-            picGwImage.Gravity = Gravity.CenterHorizontal;
-            picGwImage.BackgroundImagePath = "Gateway/WiredGatewaySearching.png";
-            bodyFrameLayout.AddChidren(picGwImage);
-            var btnFailIcon = new PicViewControl(66, 66);
-            btnFailIcon.UnSelectedImagePath = "Item/FailIcon.png";
-            btnFailIcon.Gravity = Gravity.CenterHorizontal;
-            btnFailIcon.Y = Application.GetMinRealAverage(181);
-            picGwImage.AddChidren(btnFailIcon);
-            //鎼滅储澶辫触
-            var btnFailView = new NormalViewControl(300, 60, true);
-            btnFailView.TextAlignment = TextAlignment.Center;
-            btnFailView.Y = Application.GetMinRealAverage(305);
-            btnFailView.Gravity = Gravity.CenterHorizontal;
-            btnFailView.TextColor = UserCenterColor.Current.TextGrayColor3;
-            btnFailView.TextID = R.MyInternationalizationString.uSearchFail;
-            picGwImage.AddChidren(btnFailView);
-
-            //瑙e喅鏂规硶锛屽彲閫夋嫨鎵ц浠ヤ笅浠绘剰涓�绉嶆柟寮忥細
-            var btnMsg1 = new NormalViewControl(930, 60, true);
-            btnMsg1.X = Application.GetRealWidth(75);
-            btnMsg1.Y = picGwImage.Bottom + Application.GetRealHeight(112);
-            btnMsg1.TextID = R.MyInternationalizationString.uSearchGatewayFailMsg1;
-            bodyFrameLayout.AddChidren(btnMsg1);
-            //1.闀挎寜ZB/RST閿�20绉掞紝缃戝叧鎭㈠鍑哄巶璁剧疆锛屾寚绀虹伅鍏ㄩ儴鐔勭伃鍚庯紝閲嶆柊鍏ョ綉銆�
-            var btnMsg2 = new NormalViewControl(930, 100, true);
-            btnMsg2.X = Application.GetRealWidth(75);
-            btnMsg2.Y = btnMsg1.Bottom + Application.GetRealHeight(35);
-            btnMsg2.Text = Language.StringByID(R.MyInternationalizationString.uSearchGatewayFailMsg2).Replace("{0}", "\r\n");
-            btnMsg2.TextSize = 12;
-            btnMsg2.TextColor = UserCenterColor.Current.TextGrayColor1;
-            btnMsg2.IsMoreLines = true;
-            bodyFrameLayout.AddChidren(btnMsg2);
-            //2.鐐规寜HID/WCFG閿紝杩涘叆缃戝叧鎹㈢粦妯″紡锛岀郴缁熸寚绀虹伅蹇棯5绉掋��
-            var btnMsg3 = new NormalViewControl(930, 100, true);
-            btnMsg3.X = Application.GetRealWidth(75);
-            btnMsg3.Y = btnMsg2.Bottom + Application.GetRealHeight(12);
-            btnMsg3.Text = Language.StringByID(R.MyInternationalizationString.uSearchGatewayFailMsg3).Replace("{0}", "\r\n");
-            btnMsg3.TextSize = 12;
-            btnMsg3.TextColor = UserCenterColor.Current.TextGrayColor1;
-            btnMsg3.IsMoreLines = true;
-            bodyFrameLayout.AddChidren(btnMsg3);
-            //3.璇烽噸璇曪紝閲嶆柊娣诲姞缃戝叧銆�
-            var btnMsg4 = new NormalViewControl(930, 50, true);
-            btnMsg4.X = Application.GetRealWidth(75);
-            btnMsg4.Y = btnMsg3.Bottom + Application.GetRealHeight(12);
-            btnMsg4.Text = Language.StringByID(R.MyInternationalizationString.uSearchGatewayFailMsg4);
-            btnMsg4.TextSize = 12;
-            btnMsg4.TextColor = UserCenterColor.Current.TextGrayColor1;
-            bodyFrameLayout.AddChidren(btnMsg4);
-            //4.杩斿洖缃戝叧绠$悊銆�
-            var btnMsg5 = new NormalViewControl(930, 50, true);
-            btnMsg5.X = Application.GetRealWidth(75);
-            btnMsg5.Y = btnMsg4.Bottom + Application.GetRealHeight(12);
-            btnMsg5.Text = Language.StringByID(R.MyInternationalizationString.uSearchGatewayFailMsg5);
-            btnMsg5.TextSize = 12;
-            btnMsg5.TextColor = UserCenterColor.Current.TextGrayColor1;
-            bodyFrameLayout.AddChidren(btnMsg5);
-
-            //閲嶈瘯
-            var frameback = new FrameLayoutControl();
-            frameback.UseClickStatu = false;
-            frameback.Y = Application.GetRealHeight(1259);
-            frameback.Gravity = Gravity.CenterHorizontal;
-            frameback.Width = Application.GetRealWidth(746);
-            frameback.Height = Application.GetRealHeight(184);
-            frameback.BackgroundImagePath = "Item/BottomButtonGround.png";
-            bodyFrameLayout.AddChidren(frameback);
-            var btnReDo = new NormalViewControl(300, 65, true);
-            btnReDo.TextColor = UserCenterColor.Current.White;
-            btnReDo.TextSize = 16;
-            btnReDo.Y = Application.GetRealHeight(49);
-            btnReDo.Gravity = Gravity.CenterHorizontal;
-            btnReDo.TextAlignment = TextAlignment.Center;
-            btnReDo.TextID = R.MyInternationalizationString.uReDoAgain;
-            frameback.AddChidren(btnReDo, ChidrenBindMode.BindEventOnly);
-            frameback.ButtonClickEvent += (sender, e) =>
+            //鍥剧墖,鑳屾櫙瑕侀�忔槑
+            frameTransparent = new FrameLayout
             {
-                //鍒濆鍖栧垵濮嬩腑閮ㄦ帶浠�
-                this.InitDefultMiddleFrame();
+                Width = bodyFrameLayout.Width,
+                Height = bodyFrameLayout.Height,
+                Gravity = Gravity.CenterHorizontal,
+                BackgroundColor = UserCenterColor.Current.Transparent
             };
+            bodyFrameLayout.AddChidren(frameTransparent);
 
-            //杩斿洖缃戝叧绠$悊
-            var btnGoBack = new BottomClickButton(688);
-            btnGoBack.Y = Application.GetRealHeight(1495);
-            btnGoBack.TextID = R.MyInternationalizationString.uGobackGatewayManage;
-            bodyFrameLayout.AddChidren(btnGoBack);
-            btnGoBack.ButtonClickEvent += (sender, e) =>
-            {
-                this.CloseForm();
-                //鍏抽棴鎸囧畾鐣岄潰
-                this.CloseFormByFormName("NewGateWayMenuSelectForm");
-            };
+            //鍥剧墖
+            var btnimage = new PicViewControl(620, 620);
+            btnimage.Y = ControlCommonResourse.ListViewRowHeight * 2;
+            btnimage.Gravity = Gravity.CenterHorizontal;
+            btnimage.UnSelectedImagePath = "Gateway/SearchGateway.png";
+            frameTransparent.AddChidren(btnimage);
+
+            //鏅鸿兘缃戝叧閰嶇疆缃戠粶涓�
+            var btnText1 = new NormalViewControl(bodyFrameLayout.Width, false);
+            btnText1.Y = btnimage.Bottom + Application.GetRealHeight(60);
+            btnText1.Gravity = Gravity.CenterHorizontal;
+            btnText1.TextID = R.MyInternationalizationString.uGatewaySetting;
+            frameTransparent.AddChidren(btnText1);
+
+            //璇风◢鍊�
+            var btnText2 = new NormalViewControl(bodyFrameLayout.Width, false);
+            btnText2.Y = btnText1.Bottom + Application.GetRealHeight(30);
+            btnText2.Gravity = Gravity.CenterHorizontal;
+            btnText2.TextID = R.MyInternationalizationString.uPleaseWait;
+            frameTransparent.AddChidren(btnText2);
+
+            //鍋滄鎼滅储
+            btnStop = new BottomClickButton();
+            btnStop.TextID = R.MyInternationalizationString.uStopSearch;
+            frameTransparent.AddChidren(btnStop);
+
+            btnStop.MouseUpEventHandler += this.btnStop_MouseClick;
         }
 
         #endregion
 
-        #region 鈻� 鍋囨兂鍔ㄧ敾(缃戝叧妫�娴�)_________________
+        #region 鈻� 寮�鍚嚎绋媉__________________________
 
         /// <summary>
-        /// 鍒濆鍖栬繛鎺ョ殑鍋囨兂鍔ㄧ敾鏁堟灉
+        /// 寮�鍚悳绱㈢綉鍏崇殑瀛愮嚎绋�
         /// </summary>
-        private void InitConcetionAnimete(FrameLayout picGwImage, NormalViewControl btnMsg)
+        private void StartThread()
         {
-            //棣栨牸鐨刋杞�
-            int firstPoint = Application.GetMinRealAverage(288);
-            //涓�鏍肩殑瀹藉害
-            int width = Application.GetMinRealAverage(22);
-            //闂磋窛澶у皬
-            int space = Application.GetMinRealAverage(12);
+            string textValue = btnStop.Text;
+            //娓呯┖淇濆瓨鐨勪富閿�
+            this.dicGatewayId.Clear();
+            //绾跨▼杩愯涓�
+            this.IsThreadAction = true;
 
-            //鐢熸垚鏍煎瓙鍧愭爣
-            var listPoint = new List<int>();
-            for (int i = 0; i < 9; i++)
+            //娓呯┖鍏ㄩ儴鍒楄〃
+            HdlGatewayLogic.Current.ClearAllRealGateway();
+            ZigBee.Common.Application.IsSearchingGateway = true;
+
+            //寮�鍚�掕鏃剁嚎绋�
+            this.StartTimeCountThread(textValue);
+
+            HdlThreadLogic.Current.RunThread(async () =>
             {
-                listPoint.Add(firstPoint + (width + space) * i);
-            }
+                while (this.IsThreadAction)
+                {
+                    await Task.Delay(2500);
+                    //寮傛缃戝叧妫�娴嬩腑(鍏堢瓑涓�5绉掞紝鐒跺悗绛塵qtt杩炴帴)
+                    if (this.searchTime > 55)
+                    {
+                        continue;
+                    }
 
-            //寮�鍚繛鎺ョ殑鍋囨兂鍔ㄧ敾鏁堟灉绾跨▼
-            var btnRound = new PicViewControl(width, width, false);
-            btnRound.Radius = (uint)width / 2;
-            btnRound.BackgroundColor = UserCenterColor.Current.ConcetionRoundColor;
-            btnRound.Y = Application.GetMinRealAverage(202);
-            btnRound.X = listPoint[0];
-            picGwImage.AddChidren(btnRound);
+                    //妫�娴嬫悳绱㈠埌鐨勭綉鍏筹紝鐒跺悗娣诲姞鍒扮敾闈㈢殑琛岄噷闈�
+                    await this.CheckZbGatewayAndSetRow();
+                }
+            });
+        }
 
-            string strMsg = btnMsg.Text;
+        /// <summary>
+        /// 寮�鍚�掕鏃剁嚎绋�
+        /// </summary>
+        /// <param name="textValue"></param>
+        private void StartTimeCountThread(string textValue)
+        {
+            //鎼滅储鏃堕棿
+            this.searchTime = 60;
+
             HdlThreadLogic.Current.RunThread(() =>
             {
-                //娓呯┖鍏ㄩ儴鍒楄〃
-                HdlGatewayLogic.Current.ClearAllRealGateway();
-                ZigBee.Common.Application.IsSearchingGateway = true;
-
-                int index = 1;
-                int maxCount = 120 * 2;
-                int timeCount = 120;
-                while (picGwImage.Parent != null)
+                while (this.IsThreadAction)
                 {
-                    System.Threading.Thread.Sleep(500);
-                    maxCount--;
-                    if (maxCount % 4 == 0)
+                    System.Threading.Thread.Sleep(1000);
+
+                    this.searchTime--;
+                    if (this.searchTime == 0 || this.IsThreadAction == false)
                     {
-                        lock(isGatewayChecking)
-                        {
-                            if (isGatewayChecking != "1")
-                            {
-                                isGatewayChecking = "1";
-                                HdlThreadLogic.Current.RunThread(async () =>
-                                {
-                                    //姣�2绉掓娴嬫悳绱㈠埌鐨勭綉鍏�
-                                    await this.CheckZbGatewayAndSetRow();
-                                    lock (isGatewayChecking)
-                                    {
-                                        isGatewayChecking = "0";
-                                    }
-                                });
-                            }
-                        }
-                    }
-                    if (this.newGatewayGetting == true)
-                    {
-                        //鑾峰彇寰楀埌鏂扮綉鍏�,鍒欎腑鏂嚎绋�
-                        break;
-                    }
-                    if (maxCount % 2 == 0)
-                    {
-                        timeCount--;
-                    }
-                    if (maxCount <= 0)
-                    {
+                        //鏃堕棿鎴
+                        this.btnStop_MouseClick(null, null);
                         break;
                     }
                     Application.RunOnMainThread(() =>
                     {
-                        btnRound.X = listPoint[index];
-                        index++;
-                        if (index == listPoint.Count)
+                        if (btnStop != null)
                         {
-                            index = 0;
-                        }
-                        //姝e湪鎼滅储缃戝叧鈥Xs
-                        btnMsg.Text = strMsg + timeCount + "s";
-                    });
-                }
-                if (maxCount <= 0)
-                {
-                    HdlThreadLogic.Current.RunMain(() =>
-                    {
-                        //鍒濆鍖栧け璐ユā寮忕殑涓儴鎺т欢
-                        this.InitFailMiddleFrame();
-                    });
-                }
-                else if (newGatewayGetting == true)
-                {
-                    HdlThreadLogic.Current.RunMain(() =>
-                    {
-                        if (this.Parent != null)
-                        {
-                            var form = new WiredGatewayListForm();
-                            this.AddFromAndRemoveNowForm(form, listZbGateway, dicZbGatewayDiv);
+                            //鍊掕鏃舵樉绀�
+                            btnStop.Text = textValue + "(" + searchTime + ")";
                         }
                     });
                 }
+                Application.RunOnMainThread(() =>
+                {
+                    if (btnStop != null)
+                    {
+                        btnStop.Text = textValue;
+                    }
+                });
             });
         }
 
@@ -317,16 +209,16 @@
                 }
                 string gwId = HdlGatewayLogic.Current.GetGatewayId(ZbGateway.GateWayList[i]);
                 //閲嶅娣诲姞妫�娴�
-                if (this.dicIdCheckCount.ContainsKey(gwId) == false)
+                if (this.dicGatewayId.ContainsKey(gwId) == false)
                 {
                     //鍏佽浜旀妫�娴�
-                    this.dicIdCheckCount[gwId] = 5;
+                    this.dicGatewayId[gwId] = 5;
                     listId.Add(gwId);
                 }
-                else if (this.dicIdCheckCount[gwId] > 0)
+                else if (this.dicGatewayId[gwId] > 0)
                 {
                     //濡傛灉鍓嶄竴娆℃娴嬪け璐ヤ簡鐨勮瘽锛屽畠鐨勬鏁�-1
-                    this.dicIdCheckCount[gwId] = this.dicIdCheckCount[gwId] - 1;
+                    this.dicGatewayId[gwId] = this.dicGatewayId[gwId] - 1;
                     listId.Add(gwId);
                 }
             }
@@ -342,58 +234,145 @@
                 {
                     continue;
                 }
-                //鏀堕泦缃戝叧瀵硅薄
-                this.listZbGateway.Add(way);
-
                 //缃戝叧缁戝畾妯″紡
                 GatewayBindMode mode = GatewayBindMode.BindAgain;
-                if (HdlGatewayLogic.Current.HomeIdIsEmpty(way) == true)
+                if (way.getGatewayBaseInfo.HomeId == Common.Config.Instance.HomeId)
+                {
+                    //宸茬粡缁戝畾杩囦簡
+                    mode = GatewayBindMode.Binded;
+                }
+                else if (HdlGatewayLogic.Current.HomeIdIsEmpty(way) == true)
                 {
                     //绗竴娆$粦瀹�,涔熷氨鏄綉鍏充綇瀹匢D涓虹┖
                     mode = GatewayBindMode.First;
-                    this.dicZbGatewayDiv[listId[i]] = 0;
-                    //鑾峰彇鍒颁簡鏂扮綉鍏�
-                    this.newGatewayGetting = true;
-                }
-                else if (way.getGatewayBaseInfo.HomeId == Common.Config.Instance.HomeId)
-                {
-                    //宸茬粡缁戝畾杩囦簡
-                    this.dicZbGatewayDiv[listId[i]] = 1;
-                    mode = GatewayBindMode.Binded;
-                }
-                else
-                {
-                    //闇�瑕佹崲缁�
-                    this.dicZbGatewayDiv[listId[i]] = 2;
-                    mode = GatewayBindMode.BindAgain;
                 }
                 //鏈湴鏄惁鏈夎繖涓綉鍏�
                 bool isExist = HdlGatewayLogic.Current.IsGatewayExist(way);
+
                 //濡傛灉
                 if (mode != GatewayBindMode.BindAgain)
                 {
                     //娣诲姞鎼滅储鍒扮殑缃戝叧鍒扮紦瀛�(鎵ц缃戝叧淇濆瓨鎿嶄綔)
-                    ShowErrorMode showMode = this.dicIdCheckCount[listId[i]] == 0 ? ShowErrorMode.YES : ShowErrorMode.NO;
-                    var result = await this.DoSaveGateway(way, showMode);
+                    ShowErrorMode showMode = this.dicGatewayId[listId[i]] == 0 ? ShowErrorMode.YES : ShowErrorMode.NO;
+                    var result = await this.DoSaveGateway(way, showMode, mode);
                     if (result == false)
                     {
+                        //褰撲娇鐢ㄥ畬娆℃暟涔嬪悗锛屽苟涓旀湰鍦颁笉瀛樺湪鐨勶紝鎵嶆樉绀哄嚭鏉�
+                        if (this.dicGatewayId[listId[i]] == 0 && isExist == false)
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                //娣诲姞澶辫触鐨勭綉鍏冲埌鐢婚潰
+                                this.AddFailRowLayout(way);
+                            });
+                        }
                         continue;
                     }
                 }
                 //濡傛灉瀹冨凡缁忓畬鍏ㄦ垚鍔熶簡鐨勮瘽锛屽垯灏嗗畠鐨勫墿浣欐鏁扮疆闆�
-                this.dicIdCheckCount[listId[i]] = 0;
+                this.dicGatewayId[listId[i]] = 0;
                 if (isExist == true)
                 {
                     //宸茬粡缁戝畾杩囦簡鐨勶紝鍒欎笉鍐嶆樉绀�
                     continue;
                 }
+
                 if (mode != GatewayBindMode.BindAgain)
                 {
                     //鎴戣寰楄繖閲岄渶瑕佽幏鍙栦竴涓嬫柊缃戝叧鐨勮澶囧垪琛�
-                    Common.LocalDevice.Current.SetDeviceToMemmoryByGateway(way);
+                    await Common.LocalDevice.Current.SetDeviceToMemmoryByGateway(way);
                 }
+
+                Application.RunOnMainThread(() =>
+                {
+                    if (this.Parent != null)
+                    {
+                        //娣诲姞鎼滅储鍒扮殑缃戝叧鍒扮敾闈�
+                        this.AddRowLayout(way, mode);
+                    }
+                });
             }
             return true;
+        }
+
+        #endregion
+
+        #region 鈻� 娣诲姞缃戝叧琛屾帶浠禵____________________
+
+        /// <summary>
+        /// 娣诲姞鎼滅储鍒扮殑缃戝叧鍒扮敾闈�
+        /// </summary>
+        /// <param name="zbGateway">Zb gateway.</param>
+        /// <param name="mode">缃戝叧缁戝畾妯″紡</param>
+        private void AddRowLayout(ZbGateway zbGateway, GatewayBindMode mode)
+        {
+            if (listView == null)
+            {
+                return;
+            }
+            //缃戝叧鍒楄〃鎺т欢
+            var gatewayRow = new GatewayRowControl(zbGateway);
+            listView.AddChidren(gatewayRow);
+            gatewayRow.InitControl(69);
+            //涓嶉渶瑕佸湪绾挎帶浠�
+            gatewayRow.btnOnline.RemoveFromParent();
+            gatewayRow.btnOnline = null;
+            gatewayRow.frameTable.ButtonClickEvent += (sender, e) =>
+            {
+                //鎵撳紑缃戝叧缂栬緫鐣岄潰
+                this.OpenEditorGatewayForm(gatewayRow, mode);
+            };
+            //鍚戝彸鍥炬爣
+            gatewayRow.frameTable.AddRightArrow();
+
+            //缁戝畾
+            var btnBind = gatewayRow.frameTable.AddMostRightView("", 300);
+            if (mode != GatewayBindMode.BindAgain)
+            {
+                //宸茬粦瀹�
+                btnBind.TextID = R.MyInternationalizationString.uBinded;
+                btnBind.TextColor = UserCenterColor.Current.Green;
+            }
+            else
+            {
+                //闇�閲嶆柊缁戝畾
+                btnBind.TextID = R.MyInternationalizationString.uNeedReBinding;
+                btnBind.TextColor = UserCenterColor.Current.Red;
+
+                //杩欓噷鍙槸涓存椂杩藉姞锛屽悗闈㈠彲浠ヤ細绉诲姩鍒板埆鐨勫湴鏂�
+                var btnConfirm = new NormalViewControl(Application.GetRealWidth(184), gatewayRow.Height, false);
+                btnConfirm.Text = "缃戝叧璇嗗埆";
+                gatewayRow.AddRightView(btnConfirm);
+                btnConfirm.MouseUpEventHandler += (sender, e) =>
+                {
+                    HdlGatewayLogic.Current.SetTestCommand(zbGateway);
+                };
+            }
+            gatewayRow.AddTag("btnBind", btnBind);
+        }
+
+        /// <summary>
+        /// 娣诲姞鎼滅储鍒扮殑缃戝叧鍒扮敾闈㈢殑琛�
+        /// </summary>
+        /// <param name="zbGateway">Zb gateway.</param>
+        private void AddFailRowLayout(ZbGateway zbGateway)
+        {
+            if (listView == null)
+            {
+                return;
+            }
+            //缃戝叧鍒楄〃鎺т欢
+            var gatewayRow = new GatewayRowControl(zbGateway);
+            listView.AddChidren(gatewayRow);
+            gatewayRow.InitControl(69);
+            //涓嶉渶瑕佸湪绾挎帶浠�
+            gatewayRow.btnOnline.RemoveFromParent();
+            gatewayRow.btnOnline = null;
+
+            //鏅鸿兘璺宠繃
+            var btnBind = gatewayRow.frameTable.AddMostRightView("", 300);
+            btnBind.TextID = R.MyInternationalizationString.uIntelligentSkip;
+            btnBind.TextColor = UserCenterColor.Current.Red;
         }
 
         #endregion
@@ -405,12 +384,21 @@
         /// </summary>
         /// <param name="zbGateway">缃戝叧瀵硅薄</param>
         /// <param name="mode">鏄惁鏄剧ず閿欒</param>
+        /// <param name="bindMode">缁戝畾鏂瑰紡</param>
         /// <returns></returns>
-        private async Task<bool> DoSaveGateway(ZbGateway zbGateway, ShowErrorMode mode)
+        private async Task<bool> DoSaveGateway(ZbGateway zbGateway, ShowErrorMode mode, GatewayBindMode bindMode)
         {
             //娣诲姞鎼滅储鍒扮殑缃戝叧鍒扮紦瀛�
             //1:姝e父  -1:寮傚父  0:褰撳墠鐨勭綉鍏崇粦瀹氬湪浜嗗綋鍓嶈处鍙蜂笅鐨勪笉鍚屼綇瀹呴噷闈�
-            int result = await HdlGatewayLogic.Current.AddNewGateway(zbGateway, mode);
+            int result = 0;
+            if (bindMode == GatewayBindMode.BindAgain)
+            {
+                result = await HdlGatewayLogic.Current.ReBindNewGateway(zbGateway);
+            }
+            else
+            {
+                result = await HdlGatewayLogic.Current.AddNewGateway(zbGateway, mode);
+            }
             if (result == -1)
             {
                 return false;
@@ -436,6 +424,121 @@
 
         #endregion
 
+        #region 鈻� 鎵撳紑缂栬緫鐣岄潰_______________________
+
+        /// <summary>
+        /// 鎵撳紑缃戝叧缂栬緫鐣岄潰
+        /// </summary>
+        /// <param name="viewRow"></param>
+        /// <param name="mode"></param>
+        private void OpenEditorGatewayForm(GatewayRowControl viewRow, GatewayBindMode mode)
+        {
+            //宸茬粡缁戝畾浜嗭紝灏变笉鐢ㄥ啀鏄剧ず鎻愮ず
+            if (mode == GatewayBindMode.BindAgain && viewRow.GetTagByKey("btnBind") != null)
+            {
+                //鏄惁閲嶆柊缁戝畾缃戝叧?
+                string msg = Language.StringByID(R.MyInternationalizationString.uRebindGatewayMsg);
+                this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                {
+                    this.ShowConfirmMsgBeforShowForm(viewRow);
+                });
+            }
+            else
+            {
+                //鎵撳紑缃戝叧鍚嶇О缂栬緫鐢婚潰
+                var form = new GatewayInfoAddForm();
+                form.AddForm(viewRow.zbGateway);
+                form.ActionGatewayReName += ((way) =>
+                {
+                    viewRow.RefreshControl(way);
+                });
+            }
+        }
+
+        /// <summary>
+        /// 鍦ㄦ墦寮�缂栬緫鐢婚潰涔嬪墠锛屽脊鍑虹‘璁ょ獥鍙�(閲嶆柊缁戝畾涓撶敤)
+        /// </summary>
+        /// <param name="viewRow"></param>
+        private async void ShowConfirmMsgBeforShowForm(GatewayRowControl viewRow)
+        {
+            var realway = ZbGateway.GateWayList.Find((obj) =>
+             HdlGatewayLogic.Current.GetGatewayId(obj) == HdlGatewayLogic.Current.GetGatewayId(viewRow.zbGateway));
+
+            //鏄剧ず杩涘害鏉�
+            this.ShowProgressBar();
+
+            var result = await this.DoSaveGateway(realway, ShowErrorMode.YES, GatewayBindMode.BindAgain);
+            if (result == false)
+            {
+                //鍏抽棴杩涘害鏉�
+                this.CloseProgressBar();
+                return;
+            }
+            //鑾峰彇璁惧鍒楄〃涓�,璇风◢鍚�
+            this.SetProgressValue(Language.StringByID(R.MyInternationalizationString.uDeviceIsGettingPleaseWait));
+            //鎴戣寰楄繖閲岄渶瑕佽幏鍙栦竴涓嬫柊缃戝叧鐨勮澶囧垪琛�
+            result = await Common.LocalDevice.Current.SetDeviceToMemmoryByGateway(realway);
+            //鍏抽棴杩涘害鏉�
+            this.CloseProgressBar();
+
+            Application.RunOnMainThread(() =>
+            {
+                //宸茬粦瀹�
+                var btnBind = (NormalViewControl)viewRow.GetTagByKey("btnBind");
+                btnBind.TextID = R.MyInternationalizationString.uBinded;
+                btnBind.TextColor = UserCenterColor.Current.Green;
+                viewRow.RemoveTag("btnBind");
+
+                //鎵撳紑缃戝叧鍚嶇О缂栬緫鐢婚潰
+                var form = new GatewayInfoAddForm();
+                form.AddForm(viewRow.zbGateway);
+                form.ActionGatewayReName += ((way) =>
+                {
+                    viewRow.RefreshControl(way);
+                });
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 鎸夐挳浜嬩欢___________________________
+
+        /// <summary>
+        /// 鍋滄鎸夐挳鎸変笅
+        /// </summary>
+        /// <param name="sender">Sender.</param>
+        /// <param name="e">E.</param>
+        private void btnStop_MouseClick(object sender, MouseEventArgs e)
+        {
+            //瀛樺湪璇寜鐨勫彲鑳斤紝鐢婚潰寮�鍚殑2绉掑墠锛岀姝㈡寜涓嬪仠姝㈡寜閽�
+            if (this.searchTime >= 58 || this.Parent == null)
+            {
+                return;
+            }
+            //瓒呮椂
+            if (e == null && listView.ChildrenCount == 0)
+            {
+                //娌℃湁鍙戠幇鏂扮綉鍏�,璇锋鏌ョ綉鍏抽摼鎺ユ槸鍚︽甯�
+                string msg = Language.StringByID(R.MyInternationalizationString.uNotFoundNewGatewayPleaseCheckMsg);
+                this.ShowMassage(ShowMsgType.Tip, msg);
+            }
+            Application.RunOnMainThread(() =>
+            {
+                this.IsThreadAction = false;
+                if (frameTransparent != null)
+                {
+                    frameTransparent.Visible = false;
+                }
+                if (listView != null)
+                {
+                    listView.Height = bodyFrameLayout.Height - Application.GetRealHeight(18);
+                }
+                this.searchTime = 60;
+            });
+        }
+
+        #endregion
+
         #region 鈻� 鐣岄潰鍏抽棴___________________________
 
         /// <summary>
@@ -443,6 +546,8 @@
         /// </summary>
         public override void CloseForm()
         {
+            this.IsThreadAction = false;
+
             ZigBee.Common.Application.IsSearchingGateway = false;
             //鏂紑娌℃湁鎵ц缁戝畾鐨勭綉鍏崇殑mqtt
             var list = new List<ZbGateway>();
@@ -471,5 +576,9 @@
         }
 
         #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        #endregion
     }
 }

--
Gitblit v1.8.0