From 00ab3ddb140ba8bb88b5cf572b004a85e1da85e9 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期四, 02 一月 2020 19:51:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev-tzy' into DEV_GXC

---
 ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs |  984 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 501 insertions(+), 483 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
index cfb5f36..02a348d 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
@@ -34,8 +34,7 @@
 
         #region 鈼� 鍙橀噺鐢虫槑__________________________
         ZigBee.Device.Panel currentKey;//褰撳墠鎸夐敭瀵硅薄
-        VerticalRefreshLayout midVerticalRefreshLayout;//鏄剧ず琚粦瀹氳澶囨垨鍦烘櫙鐨剉iew
-        FrameLayout topFrameLayout;//鏄剧ず褰撳墠妯″紡view
+        VerticalFrameRefreshControl midVerticalRefreshLayout;//鏄剧ず琚粦瀹氳澶囨垨鍦烘櫙鐨剉iew
         int currentClusterID = 0;//鎸夐敭褰撳墠绨嘔D
         Button entryStatusPic;
         Button btnPicTip;
@@ -43,6 +42,10 @@
         Action<List<BindListResponseObj>> devicBindAction;//璁惧琚粦瀹氶�氱煡
         private System.Collections.Generic.List<CommonDevice> localDeviceList = new System.Collections.Generic.List<CommonDevice>();//鏈湴璁惧鍒楄〃
         private System.Collections.Generic.List<SceneUI> scList = new System.Collections.Generic.List<SceneUI> { };//鏈湴鍦烘櫙鍒楄〃       
+        FrameLayout blankFrameLayout;//绌烘暟鎹樉绀哄竷灞�
+        List<int> typeModeList;//鍔ㄦ�佽幏鍙栨寜閿敮鎸佺殑妯″紡澶х被鍨�
+        public List<ScenesListInfo> gwScenesList = new List<ScenesListInfo>();//缃戝叧涓殑鍦烘櫙鍒楄〃
+
         #endregion
 
         //鍒濆鍖栨寜閿暟鎹�
@@ -64,16 +67,45 @@
                     }
                     //鑾峰彇鏈湴鍦烘櫙鍒楄〃
                     scList = Shared.Common.Room.AllRoomSceneUIList;
+                    //鑾峰彇缃戝叧鍦烘櫙琛�
+                    var gwSceneObj = await currentKey.GetSceneInfoAsync();
+                    if (gwSceneObj != null && gwSceneObj.getSceneInfo != null)
+                    {
+                        gwScenesList = gwSceneObj.getSceneInfo.ScenesList;
+                    }
+                    else
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            CommonPage.Loading.Hide();
 
+                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                        });
+                    }
                     #region 璇诲彇闈㈡澘褰撳墠妯″紡
                     //璇诲彇鎸夐敭褰撳墠妯″紡
                     var tempDeata = await currentKey.ReadPanelConfigureInfoAsync();
                     if (tempDeata != null && tempDeata.deviceStatusReportData != null)
                     {
-                        currentClusterID = tempDeata.deviceStatusReportData.CluterID;
                         foreach (var attr in tempDeata.deviceStatusReportData.AttriBute)
                         {
                             currentKey.panelMode = attr.AttriButeData;
+                            if (currentKey.panelMode == 1)
+                            {
+                                currentClusterID = 6;
+                            }
+                            else if (currentKey.panelMode == 100 || currentKey.panelMode == 101 || currentKey.panelMode == 102)
+                            {
+                                currentClusterID = 6;
+                            }
+                            else if (currentKey.panelMode == 200 || currentKey.panelMode == 201 || currentKey.panelMode == 203 || currentKey.panelMode == 204 || currentKey.panelMode == 205)
+                            {
+                                currentClusterID = 8;
+                            }
+                            else if (currentKey.panelMode == 300 || currentKey.panelMode == 301 || currentKey.panelMode == 302 || currentKey.panelMode == 303 || currentKey.panelMode == 304)
+                            {
+                                currentClusterID = 258;
+                            }
                             currentKey.ReSave();
                             //璇诲彇鎸夐敭褰撳墠缁戝畾鐩爣
                             var getBindList = await currentKey.GetDeviceBindAsync();
@@ -81,6 +113,7 @@
                             var bindSceneListTemp = new System.Collections.Generic.List<BindListResponseObj> { };
                             if (getBindList != null && getBindList.getAllBindResponseData != null)
                             {
+                                currentKey.bindList.Clear();
                                 foreach (var b in getBindList.getAllBindResponseData.BindList)
                                 {
                                     if (b.BindCluster == currentClusterID)
@@ -99,7 +132,17 @@
                                         }
                                         else
                                         {
-                                            currentKey.bindList.Add(b);
+                                            if (currentClusterID == 8)
+                                            {
+                                                if (b.BindCluster == 8)
+                                                {
+                                                    currentKey.bindList.Add(b);
+                                                }
+                                            }
+                                            else
+                                            {
+                                                currentKey.bindList.Add(b);
+                                            }
                                         }
                                     }
                                 }
@@ -122,7 +165,7 @@
                                 currentKey.bindList = bindDeviceListTemp;
                                 currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddSwitch);
                             }
-                            else if (currentKey.panelMode == 200 || currentKey.panelMode == 201 || currentKey.panelMode == 202 || currentKey.panelMode == 203 || currentKey.panelMode == 204 || currentKey.panelMode == 205)
+                            else if (currentKey.panelMode == 200 || currentKey.panelMode == 201 || currentKey.panelMode == 203 || currentKey.panelMode == 204 || currentKey.panelMode == 205)
                             {
                                 currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddDimmer);
                             }
@@ -132,24 +175,27 @@
                             }
                         }
                         #endregion
+
+                        //鍔ㄦ�佽幏鍙栨寜閿敮鎸佺殑澶х被
+                        typeModeList = await GetTypeMode();
+                        Application.RunOnMainThread(() =>
+                        {
+                            RefreshList();
+                            CommonPage.Loading.Hide();
+                        });
                     }
                     else
                     {
                         Application.RunOnMainThread(() =>
                         {
+                            CommonPage.Loading.Hide();
+
                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                         });
+                        return;
                     }
                 }
                 catch { }
-                finally
-                {
-                    Application.RunOnMainThread(() =>
-                    {
-                        RefreshList();
-                        CommonPage.Loading.Hide();
-                    });
-                }
             });
         }
 
@@ -159,7 +205,7 @@
         public void Show()
         {
             #region TopFrameLayout
-            this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.AddBindTargets));
+            this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.PanelBindTargets));
             EventHandler<MouseEventArgs> eHandlerBack = (sender, e) =>
             {
                 RemoveFromParent();
@@ -193,7 +239,7 @@
                     {
                         currentClusterID = 6;
                         currentKey.panelMode = 1;
-                        var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey);
+                        var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey, gwScenesList);
                         Shared.Phone.UserView.HomePage.Instance.AddChidren(addScenePage);
                         Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                         addScenePage.Show();
@@ -255,6 +301,7 @@
                 }
                 else
                 {
+                    currentKey.panelMode = 65535;
                     SideslipFramelayout();
                 }
             };
@@ -262,41 +309,16 @@
             btnAddFrameLayout.MouseDownEventHandler += eHandlerAdd;
             #endregion
             CommonPage.Loading.Start("");
+            middleFrameLayout();
             InitListInfo();
 
         }
-
+        /// <summary>
+        /// 涓儴甯冨眬
+        /// </summary>
         void middleFrameLayout()
         {
-            topFrameLayout = new FrameLayout
-            {
-                Height = Application.GetMinRealAverage(0),
-                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
-            };
-            this.midFrameLayout.AddChidren(topFrameLayout);
-
-            #region BindEmptyPic UI 
-            entryStatusPic = new Button
-            {
-                X = Application.GetRealWidth(213),
-                Y = Application.GetRealHeight(418),
-                UnSelectedImagePath = "BindPic/BindEmptyPic.png",
-                Visible = false,
-            };
-            this.midFrameLayout.AddChidren(entryStatusPic);
-
-            btnPicTip = new Button
-            {
-                Y = Application.GetRealHeight(1020),
-                Text = Language.StringByID(R.MyInternationalizationString.NoControlTargets),
-                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
-                Gravity = Gravity.CenterHorizontal,
-                Visible = false,
-            };
-            this.midFrameLayout.AddChidren(btnPicTip);
-            #endregion
-
-            midVerticalRefreshLayout = new VerticalRefreshLayout()
+            midVerticalRefreshLayout = new VerticalFrameRefreshControl(29)
             {
             };
             this.midFrameLayout.AddChidren(midVerticalRefreshLayout);
@@ -306,24 +328,48 @@
                 InitListInfo();
                 midVerticalRefreshLayout.EndHeaderRefreshing();
             };
+
+            BlankPicUI();
         }
 
+        /// <summary>
+        /// 绌烘暟鎹甎I鏄剧ず
+        /// </summary>
+        void BlankPicUI()
+        {
+            blankFrameLayout = new FrameLayout
+            {
+            };
+            midVerticalRefreshLayout.AddChidren(blankFrameLayout);
+
+            entryStatusPic = new Button
+            {
+                X = Application.GetRealWidth(213),
+                Y = Application.GetRealHeight(418),
+                UnSelectedImagePath = "BindPic/BindEmptyPic.png",
+                Visible = false,
+            };
+            blankFrameLayout.AddChidren(entryStatusPic);
+
+            btnPicTip = new Button
+            {
+                Y = Application.GetRealHeight(1020),
+                Text = Language.StringByID(R.MyInternationalizationString.NoControlTargets),
+                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
+                Gravity = Gravity.CenterHorizontal,
+                Visible = false,
+                TextSize = 12,
+            };
+            blankFrameLayout.AddChidren(btnPicTip);
+        }
         /// <summary>
         /// 鎸夐敭缁戝畾琛ㄦ樉绀�
         /// </summary> 
         async void RefreshList()
         {
+            midVerticalRefreshLayout.RemoveAll();
             this.midFrameLayout.RemoveAll();
             middleFrameLayout();
-            midVerticalRefreshLayout.RemoveAll();
-
-            var frameLayoutRow = new FrameLayout()
-            {
-                Height = Application.GetMinRealAverage(0),
-                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
-            };
-            midVerticalRefreshLayout.AddChidren(frameLayoutRow);
-
             #region 鏁版嵁澶勭悊 
             if (currentKey.bindList.Count == 0)
             {
@@ -332,7 +378,7 @@
                 btnPicTip.Height = Application.GetRealHeight(49);
                 btnPicTip.Visible = true;
                 entryStatusPic.Visible = true;
-                midVerticalRefreshLayout.Height = Application.GetRealHeight(0);
+                blankFrameLayout.Height = midVerticalRefreshLayout.Height;
             }
             else
             {
@@ -341,15 +387,13 @@
                 btnPicTip.Height = Application.GetRealHeight(0);
                 btnPicTip.Visible = false;
                 entryStatusPic.Visible = false;
+                blankFrameLayout.Height = Application.GetRealHeight(0);
                 if (currentKey.panelMode == 1)
                 {
-                    topFrameLayout.Height = Application.GetRealHeight(0);
                     midVerticalRefreshLayout.Y = Application.GetRealHeight(0);
                 }
                 else
                 {
-                    topFrameLayout.Height = Application.GetRealHeight(150);
-                    midVerticalRefreshLayout.Y = Application.GetRealHeight(150);
                     BindModeDisplay();
                 }
                 int curIndex = 0;
@@ -360,61 +404,17 @@
                     SceneUI curSceneUI = null;
                     bool isExistScene = false;
 
-                    var rowLayout = new RowLayout()
-                    {
-                        Height = Application.GetRealHeight(150),
-                        X = Application.GetRealWidth(58),
-                        Y = curIndex * Application.GetRealHeight(150),
-                        Width = Application.GetRealWidth(965),
-                        LineColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
-                    };
-                    frameLayoutRow.AddChidren(rowLayout);
-
-                    #region 缁戝畾琛║I鏄撅紙鏃犳暟鎹鐞嗭級  
-                    var devicePic = new Button()
-                    {
-                        Y = Application.GetRealHeight(35),
-                        Width = Application.GetMinRealAverage(81),
-                        Height = Application.GetMinRealAverage(81),
-                    };
-                    rowLayout.AddChidren(devicePic);
-
-                    var btnBindName = new Button()
-                    {
-                        Width = Application.GetRealWidth(1080 - 173),
-                        Height = Application.GetRealHeight(60),
-                        X = Application.GetRealWidth(173 - 58),
-                        Y = Application.GetRealHeight(20),
-                        TextSize = 14,
-                        TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
-                        TextAlignment = TextAlignment.CenterLeft,
-                    };
-                    rowLayout.AddChidren(btnBindName);
-
-                    var btnFloorRoomName = new Button()
-                    {
-                        Width = Application.GetRealWidth(1080 - 173),
-                        Height = Application.GetRealHeight(49),
-                        X = Application.GetRealWidth(173 - 58),
-                        Y = Application.GetRealHeight(81),
-                        TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
-                        TextSize = 14,
-                        TextAlignment = TextAlignment.CenterLeft,
-                    };
-                    rowLayout.AddChidren(btnFloorRoomName);
-
-                    var btnDel = new Button()
-                    {
-                        TextColor = Shared.Common.ZigbeeColor.Current.GXCTextWhiteColor,
-                        Width = Application.GetRealWidth(184),
-                        TextID = R.MyInternationalizationString.DelBindDevice,
-                        BackgroundColor = Shared.Common.ZigbeeColor.Current.DelRowLayout,
-                    };
-                    rowLayout.AddRightView(btnDel);
-                    #endregion
+                    var rowLayout = new RowLayoutControl(midVerticalRefreshLayout.rowSpace / 2);
+                    rowLayout.BackgroundColor = ZigbeeColor.Current.XMWhite;
+                    midVerticalRefreshLayout.AddChidrenRow(rowLayout);
+                    rowLayout.frameTable.UseClickStatu = false;
+                    var devicePic = rowLayout.frameTable.AddLeftIcon();
+                    devicePic.UnSelectedImagePath = "DoorLock/DoorLockUserPic.png";
 
                     #region 缁戝畾鏁版嵁澶勭悊
                     int currentIndex = i;
+                    var btnBindNameText = "";
+                    var btnFloorRoomNameText = "";
                     if (currentIndex == currentKey.bindList.Count - 1)
                     {
                         rowLayout.LineColor = Shared.Common.ZigbeeColor.Current.XMWhite;
@@ -428,24 +428,26 @@
                     }
                     if (isExistScene)
                     {
-                        curSceneUI = Room.CurrentRoom.GetSceneUIBySceneId(bindDevice.BindScenesId);
+                        curSceneUI = Room.CurrentRoom.GetSceneUIBySceneId(bindDevice.BindScenesId);
+                        devicePic.UnSelectedImagePath = "Scene/SceneIcon.png";
                         if (curSceneUI == null)
                         {
-                            devicePic.UnSelectedImagePath = "Scene/SceneIcon.png";
                             if (string.IsNullOrEmpty(bindDevice.ESName))
                             {
-                                btnBindName.Text = Language.StringByID(R.MyInternationalizationString.OffLineScene) + "_" + "ID" + "_" + bindDevice.BindScenesId.ToString();
+                                btnBindNameText = Language.StringByID(R.MyInternationalizationString.OffLineScene) + "_" + "ID" + "_" + bindDevice.BindScenesId.ToString();
                             }
                             else
                             {
-                                btnBindName.Text = Language.StringByID(R.MyInternationalizationString.OffLineScene) + "_" + bindDevice.ESName;
+                                btnBindNameText = Language.StringByID(R.MyInternationalizationString.OffLineScene) + "_" + bindDevice.ESName;
                             }
                         }
                         else
                         {
-                            devicePic.UnSelectedImagePath = curSceneUI.IconPath;
-                            btnBindName.Text = curSceneUI.Name;
-                            btnFloorRoomName.Text = curSceneUI.GetZone();
+                            btnBindNameText = curSceneUI.Name;
+                            if (curSceneUI.GetZone() != null)
+                            {
+                                btnFloorRoomNameText = curSceneUI.GetZone();
+                            }
                         }
                     }
                     else
@@ -458,29 +460,42 @@
                             {
                                 //鑾峰彇璁惧鎵�灞炴埧闂�
                                 var tempDevRoom = Common.Room.CurrentRoom.GetRoomByDevice(tempDev);
-                                //鑾峰彇璁惧鎵�鍦ㄦゼ灞�
-                                var tempDevFloorId = tempDevRoom.FloorId;
-                                //鑾峰彇妤煎眰鐨勫悕瀛�
-                                var tempDevRoomName = tempDevRoom.Name;
-                                //鑾峰彇妤煎眰鐨勫悕瀛�
-                                var tempDevFloorName = Common.Config.Instance.Home.GetFloorNameById(tempDevFloorId);
-                                btnFloorRoomName.Text = tempDevFloorName + "," + tempDevRoomName;
+
+                                if (tempDevRoom != null)
+                                {
+                                    var tempDevFloorId = tempDevRoom.FloorId;
+                                    //鑾峰彇鎴块棿鐨勫悕瀛�
+                                    var tempDevRoomName = tempDevRoom.Name;
+                                    //鑾峰彇妤煎眰鐨勫悕瀛�
+                                    var tempDevFloorName = Common.Config.Instance.Home.GetFloorNameById(tempDevFloorId);
+                                    if (string.IsNullOrEmpty(tempDevFloorName))
+                                    {
+                                        btnFloorRoomNameText = tempDevRoomName;
+                                    }
+                                    else
+                                    {
+                                        btnFloorRoomNameText = tempDevFloorName + "," + tempDevRoomName;
+                                    }
+                                }
                                 var deviceUi = Common.LocalDevice.Current.GetDeviceUI(tempDev);
-                                devicePic.UnSelectedImagePath = deviceUi.IconPath;
-                                devicePic.Width = Application.GetRealWidth(110);
-                                devicePic.Text = "";
+                                if (deviceUi != null)
+                                {
+                                    devicePic.UnSelectedImagePath = deviceUi.IconPath;
+                                    devicePic.Width = Application.GetRealWidth(110);
+                                    devicePic.Text = "";
+                                }
                                 if (tempDev.DeviceEpointName == "")
                                 {
-                                    btnBindName.Text = tempDev.DeviceEpoint + Language.StringByID(R.MyInternationalizationString.uDeviceCircuit);
+                                    btnBindNameText = tempDev.DeviceEpoint + Language.StringByID(R.MyInternationalizationString.uDeviceCircuit);
                                 }
                                 else
                                 {
-                                    btnBindName.Text = tempDev.DeviceEpointName;
+                                    btnBindNameText = tempDev.DeviceEpointName;
                                 }
                             }
                             else
                             {
-                                btnBindName.Text = bindDevice.BindMacAddr + "_" + bindDevice.BindEpoint;
+                                btnBindNameText = bindDevice.BindMacAddr + "_" + bindDevice.BindEpoint;
                                 devicePic.Width = Application.GetMinRealAverage(200);
                                 devicePic.TextAlignment = TextAlignment.CenterLeft;
                                 devicePic.TextColor = UserCenterColor.Current.Gray;
@@ -489,14 +504,17 @@
                         }
                     }
 
-                    //鍒犻櫎浜嬩欢澶勭悊
-                    btnDel.MouseUpEventHandler += async (sender, e) =>
+                    var btnBindName = rowLayout.frameTable.AddTopView(btnBindNameText, 800);
+                    var btnFloorRoomName = rowLayout.frameTable.AddBottomView(btnFloorRoomNameText, 800);
+                    rowLayout.frameTable.AddBottomLine();
+                    var btnDel = rowLayout.AddDeleteControl();
+                    btnDel.ButtonClickEvent += async (sender, e) =>
                     {
                         RemoveTargets(bindDevice, btnDel);
                     };
                     #endregion
                 }
-                frameLayoutRow.Height = currentKey.bindList.Count * Application.GetRealHeight(150);
+                midVerticalRefreshLayout.AdjustTableHeight(Application.GetRealHeight(23));
             }
             #endregion
         }
@@ -506,156 +524,129 @@
         /// </summary>
         public void BindModeDisplay()
         {
-            #region modeRowLayout
-            var modeRowLayout = new RowLayout()
-            {
-                Height = Application.GetRealHeight(150),
-                X = Application.GetRealWidth(58),
-                Width = Application.GetRealWidth(965),
-                LineColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
-            };
-            topFrameLayout.AddChidren(modeRowLayout);
-
-            var btnKeyMode = new Button
-            {
-                Y = Application.GetRealHeight(63),
-                Width = Application.GetMinRealAverage(294),
-                Height = Application.GetMinRealAverage(58),
-                Text = Language.StringByID(R.MyInternationalizationString.keyMode),
-                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
-                TextAlignment = TextAlignment.CenterLeft,
-            };
-            modeRowLayout.AddChidren(btnKeyMode);
-
-            var btnKeyModeTip = new Button
-            {
-                X = Application.GetRealWidth(374 - 58),
-                Y = Application.GetRealHeight(63),
-                Width = Application.GetMinRealAverage(615),
-                Height = Application.GetMinRealAverage(58),
-                TextAlignment = TextAlignment.CenterRight,
-                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
-            };
-            modeRowLayout.AddChidren(btnKeyModeTip);
-
-            var btnDel = new Button()
-            {
-                Width = Application.GetMinRealAverage(184),
-                TextColor = Shared.Common.ZigbeeColor.Current.GXCTextWhiteColor,
-                TextID = R.MyInternationalizationString.DelBindDevice,
-                BackgroundColor = Shared.Common.ZigbeeColor.Current.DelRowLayout,
-            };
-            modeRowLayout.AddRightView(btnDel);
-            #endregion
-
+            var modeRowLayout = new RowLayoutControl(midVerticalRefreshLayout.rowSpace / 2);
+            modeRowLayout.BackgroundColor = ZigbeeColor.Current.XMWhite;
+            midVerticalRefreshLayout.AddChidrenRow(modeRowLayout);
+            modeRowLayout.frameTable.UseClickStatu = false;
+            modeRowLayout.frameTable.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.keyMode), 500);
+            var btnKeyModeTipText = "";
             #region 褰撳墠妯″紡鏂囨湰鏄剧ず
             switch (currentKey.panelMode)
             {
                 case 100:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.OnOffOn;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.OnOffOn);
                     break;
                 case 101:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.OnOffoFF;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.OnOffoFF);
                     break;
                 case 102:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.OnOffOnOff;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.OnOffOnOff);
                     break;
                 case 200:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode1;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode1);
                     break;
                 case 201:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode2;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode2);
                     break;
                 case 203:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode3;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode3);
                     break;
                 case 204:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode4;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode4);
                     break;
                 case 205:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode5;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode5);
                     break;
                 case 300:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.WcdUp;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdUp);
                     break;
                 case 301:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.WcdDown;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdDown);
                     break;
                 case 302:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.WcdStop;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdStop);
                     break;
                 case 303:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.WcdUpStop;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdUpStop);
                     break;
                 case 304:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.WcdDownStop;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdDownStop);
                     break;
             }
             #endregion
-
+            modeRowLayout.frameTable.AddMostRightView(btnKeyModeTipText, 500);
+            modeRowLayout.frameTable.AddBottomLine();
+            var btnDel = modeRowLayout.AddDeleteControl();
             //涓�閿竻闄ゆ寜閿簨浠�
-            btnDel.MouseUpEventHandler += async (sender, e) =>
+            btnDel.ButtonClickEvent += async (sender, e) =>
             {
-                bool isDelSuccess = false;
-                try
-                {
-                    CommonPage.Loading.Start("");
-                    var bindResult = await currentKey.ClearBindInfoAsync();
-                    if (bindResult != null && bindResult.clearBindInfoResponseData != null)
-                    {
-                        if (bindResult.clearBindInfoResponseData.Result != 0)
-                        {
-                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDel);
-                            CommonPage.Loading.Hide();
-                            return;
-                        }
-                        else
-                        {
-                            var temp = await currentKey.ConfigureHdlKeyValueAsync(Panel.KeyMode.Default);
-                            if (temp.setWritableValueResponData?.Status != 0)
-                            {
-                                var temp1 = await currentKey.ConfigureHdlKeyValueAsync(Panel.KeyMode.Default);
-                                if (temp1.setWritableValueResponData?.Status != 0)
-                                {
-                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.ChangeBindMode), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
-                                }
-                                else
-                                {
-                                    isDelSuccess = true;
-                                }
-                            }
-                            else
-                            {
-                                isDelSuccess = true;
-                            }
-                        }
-                    }
-                    else
-                    {
-                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
-                    }
-                }
-                catch { }
-                finally
-                {
-                    if (isDelSuccess)
-                    {
-                        currentKey.panelMode = 65535;
-                        currentKey.bindList.Clear();
-                        RefreshList();
-                        //濡傛灉鏄満鏅紝鐢ㄦ埛鍒犻櫎娓呯┖褰撳墠鍒版埧闂村垪琛�
-                        currentKey.RoomId = "";
-                        currentKey.ReSave();
-                    }
-                    CommonPage.Loading.Hide();
-                }
+                string msg = Language.StringByID(R.MyInternationalizationString.ClearAllTargets).Replace("{0}", "\r\n");
+                var alert = new Shared.Phone.UserCenter.ShowMsgControl(ShowMsgType.Confirm, msg, Language.StringByID(R.MyInternationalizationString.DoorlockConfirm));
+                alert.Show();
+                //浣跨敤纭鍨嬪脊妗嗘椂,鐨勫洖璋冨嚱鏁�
+                alert.ConfirmClickEvent += async () =>
+                 {
+                     bool isDelSuccess = false;
+                     try
+                     {
+                         CommonPage.Loading.Start("");
+                         var bindResult = await currentKey.ClearBindInfoAsync();
+                         if (bindResult != null && bindResult.clearBindInfoResponseData != null)
+                         {
+                             if (bindResult.clearBindInfoResponseData.Result != 0)
+                             {
+                                 new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDel);
+                                 CommonPage.Loading.Hide();
+                                 return;
+                             }
+                             else
+                             {
+                                 var temp = await currentKey.ConfigureHdlKeyValueAsync(Panel.KeyMode.Default);
+                                 if (temp.setWritableValueResponData?.Status != 0)
+                                 {
+                                     var temp1 = await currentKey.ConfigureHdlKeyValueAsync(Panel.KeyMode.Default);
+                                     if (temp1.setWritableValueResponData?.Status != 0)
+                                     {
+                                         new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.ChangeBindMode), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
+                                     }
+                                     else
+                                     {
+                                         isDelSuccess = true;
+                                     }
+                                 }
+                                 else
+                                 {
+                                     isDelSuccess = true;
+                                 }
+                             }
+                         }
+                         else
+                         {
+                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
+                         }
+                     }
+                     catch { }
+                     finally
+                     {
+                         if (isDelSuccess)
+                         {
+                             currentKey.panelMode = 65535;
+                             currentKey.bindList.Clear();
+                             RefreshList();
+                             //濡傛灉鏄満鏅紝鐢ㄦ埛鍒犻櫎娓呯┖褰撳墠鍒版埧闂村垪琛�
+                             currentKey.RoomId = "";
+                             currentKey.ReSave();
+                         }
+                         CommonPage.Loading.Hide();
+                     }
+                 }; 
             };
         }
 
         /// <summary>
         /// 渚ц竟瀵艰埅鏍�
         /// </summary>
-        void SideslipFramelayout()
+        async void SideslipFramelayout()
         {
             #region UI
             var dialog = new Dialog { };
@@ -688,7 +679,29 @@
 
             Button oldbuttonText = null;
             string oldKeySelectModeText = currentKey.currentKeySelectModeText;
-            for (var i = 0; i < 4; i++)
+
+            if (typeModeList == null)
+            {
+                //鍐嶆鍔ㄦ�佽幏鍙栨寜閿敮鎸佺殑澶х被
+                CommonPage.Loading.Start();
+                typeModeList = await GetTypeMode();
+                if (typeModeList == null)
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                    });
+                    CommonPage.Loading.Hide();
+                    dialog.Close();
+                    return;
+                }
+                else
+                {
+                    CommonPage.Loading.Hide();
+                }
+            }
+
+            foreach (var value in typeModeList)
             {
                 #region  rowView
                 var rowView = new FrameLayout()
@@ -705,6 +718,7 @@
                     Y = Application.GetRealHeight(69),
                     TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                     TextSize = 14,
+                    IsBold = false,
                     TextAlignment = TextAlignment.CenterLeft,
                 };
                 rowView.AddChidren(btnMethodText);
@@ -719,64 +733,78 @@
                 };
                 rowView.AddChidren(line2);
 
-                if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene) && i == 0)
+                if (string.IsNullOrEmpty(currentKey.currentKeySelectModeText) && value == 1)
                 {
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbuttonText = btnMethodText;
                 }
-                else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch) && i == 1)
+                if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene) && value == 1)
                 {
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbuttonText = btnMethodText;
                 }
-                else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer) && i == 2)
+                else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch) && value == 100)
                 {
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbuttonText = btnMethodText;
                 }
-                else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain) && i == 3)
+                else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer) && value == 200)
                 {
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
+                    oldbuttonText = btnMethodText;
+                }
+                else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain) && value == 300)
+                {
+                    btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbuttonText = btnMethodText;
                 }
                 #endregion
 
                 #region 鏁版嵁澶勭悊
-                switch (i)
+                switch (value)
                 {
-                    case 0:
+                    case 1:
                         btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddScene);
                         break;
-                    case 1:
+                    case 100:
                         btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddSwitch);
                         break;
-                    case 2:
+                    case 200:
                         btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddDimmer);
                         break;
-                    case 3:
+                    case 300:
                         btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddCurtain);
                         line2.Visible = false;
                         break;
                 }
 
-                if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene) && i == 0)
+                if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene) && value == 1)
                 {
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbuttonText = btnMethodText;
                 }
-                if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch) && i == 1)
+                if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch) && value == 100)
                 {
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbuttonText = btnMethodText;
                 }
-                if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer) && i == 2)
+                if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer) && value == 200)
                 {
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbuttonText = btnMethodText;
                 }
-                if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain) && i == 3)
+                if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain) && value == 300)
                 {
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbuttonText = btnMethodText;
                 }
                 #endregion
@@ -801,47 +829,39 @@
                             var bindSc = currentKey.bindList.Find(obj => (obj.BindType == 2));
                             if (bindSc != null)
                             {
-                                var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain),
-                                                              Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
+                                string msg = Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain);
+                                var alert = new Shared.Phone.UserCenter.ShowMsgControl(ShowMsgType.Confirm, msg, Language.StringByID(R.MyInternationalizationString.DoorlockConfirm));
                                 alert.Show();
+                                //浣跨敤纭鍨嬪脊妗嗘椂,鐨勫洖璋冨嚱鏁�
+                                alert.ConfirmClickEvent += async () =>
+                                 {
+                                     var result = await RemoveTargets(bindSc, line2);
+                                     if (result == 0)
+                                     {
+                                         var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey, gwScenesList);
+                                         Shared.Phone.UserView.HomePage.Instance.AddChidren(addScenePage);
+                                         Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                                         addScenePage.Show();
 
-                                alert.ResultEventHandler += async (s1, e1) =>
-                                {
-                                    if (e1)
-                                    {
-                                        var result = await RemoveTargets(bindSc, line2);
-                                        if (result == 0)
-                                        {
-                                            var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey);
-                                            Shared.Phone.UserView.HomePage.Instance.AddChidren(addScenePage);
-                                            Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                                            addScenePage.Show();
-
-                                            Action<List<BindListResponseObj>> action = (obj) =>
-                                            {
-                                                currentKey.bindList = obj;
-                                                RefreshList();
-                                            };
-                                            addScenePage.action += action;
-                                            dialog.Close();
-                                        }
-                                        else
-                                        {
-                                            currentKey.currentKeySelectModeText = oldKeySelectModeText;
-                                            dialog.Close();
-                                        }
-                                    }
-                                    else
-                                    {
-                                        currentKey.currentKeySelectModeText = oldKeySelectModeText;
-                                        dialog.Close();
-                                    }
-                                };
+                                         Action<List<BindListResponseObj>> action = (obj) =>
+                                         {
+                                             currentKey.bindList = obj;
+                                             RefreshList();
+                                         };
+                                         addScenePage.action += action;
+                                         dialog.Close();
+                                     }
+                                     else
+                                     {
+                                         currentKey.currentKeySelectModeText = oldKeySelectModeText;
+                                         dialog.Close();
+                                     }
+                                 };  
                             }
                         }
                         else
                         {
-                            var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey);
+                            var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey, gwScenesList);
                             Shared.Phone.UserView.HomePage.Instance.AddChidren(addScenePage);
                             Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                             addScenePage.Show();
@@ -862,42 +882,34 @@
                             var bindSc = currentKey.bindList.Find(obj => (obj.BindType == 2));
                             if (bindSc != null)
                             {
-                                var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain1),
-                                                              Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
+                                string msg = Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain1);
+                                var alert = new Shared.Phone.UserCenter.ShowMsgControl(ShowMsgType.Confirm, msg, Language.StringByID(R.MyInternationalizationString.DoorlockConfirm));
                                 alert.Show();
+                                //浣跨敤纭鍨嬪脊妗嗘椂,鐨勫洖璋冨嚱鏁�
+                                alert.ConfirmClickEvent += async () =>
+                                 {
+                                     var result = await RemoveTargets(bindSc, line2);
+                                     if (result == 0)
+                                     {
+                                         var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddSwitch");
+                                         Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
+                                         Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                                         addDevicePage.Show();
 
-                                alert.ResultEventHandler += async (s1, e1) =>
-                                {
-                                    if (e1)
-                                    {
-                                        var result = await RemoveTargets(bindSc, line2);
-                                        if (result == 0)
-                                        {
-                                            var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddSwitch");
-                                            Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
-                                            Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                                            addDevicePage.Show();
-
-                                            Action<List<BindListResponseObj>> action = (obj) =>
-                                            {
-                                                currentKey.bindList = obj;
-                                                RefreshList();
-                                            };
-                                            addDevicePage.actionAddDevicePage += action;
-                                            dialog.Close();
-                                        }
-                                        else
-                                        {
-                                            currentKey.currentKeySelectModeText = oldKeySelectModeText;
-                                            dialog.Close();
-                                        }
-                                    }
-                                    else
-                                    {
-                                        currentKey.currentKeySelectModeText = oldKeySelectModeText;
-                                        dialog.Close();
-                                    }
-                                };
+                                         Action<List<BindListResponseObj>> action = (obj) =>
+                                         {
+                                             currentKey.bindList = obj;
+                                             RefreshList();
+                                         };
+                                         addDevicePage.actionAddDevicePage += action;
+                                         dialog.Close();
+                                     }
+                                     else
+                                     {
+                                         currentKey.currentKeySelectModeText = oldKeySelectModeText;
+                                         dialog.Close();
+                                     }
+                                 }; 
                             }
                         }
                         else
@@ -923,41 +935,48 @@
                             var bindSc = currentKey.bindList.Find(obj => (obj.BindType == 2));
                             if (bindSc != null)
                             {
-                                var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain2),
-                                                           Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-                                alert.Show();
-
-                                alert.ResultEventHandler += async (s1, e1) =>
+                                var dialog1 = new Dialog { };
+                                var doorDialog = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog1, Language.StringByID(R.MyInternationalizationString.Tip));
+                                doorDialog.Show();
+                                doorDialog.dialogMidFraFrameLayout.Height = Application.GetRealHeight(58);
+                                doorDialog.dialogMidFraFrameLayout.X = Application.GetRealWidth(0);
+                                doorDialog.dialogMidFraFrameLayout.Y = Application.GetRealHeight(202);
+                                doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+                                doorDialog.dialogMidText.Text = Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain2);
+                                doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+                                doorDialog.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.DoorlockConfirm);
+                                doorDialog.dialogBtnCancel.MouseUpEventHandler += (sender1, e1) =>
                                 {
-                                    if (e1)
+                                    currentKey.currentKeySelectModeText = oldKeySelectModeText;
+                                    dialog.Close();
+                                    dialog1.Close();
+                                };
+                                doorDialog.dialogBtnConfirm.MouseUpEventHandler += async (sender1, e1) =>
+                                {
+                                    var result = await RemoveTargets(bindSc, line2);
+                                    if (result == 0)
                                     {
-                                        var result = await RemoveTargets(bindSc, line2);
-                                        if (result == 0)
-                                        {
-                                            var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddDimmer");
-                                            Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
-                                            Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                                            addDevicePage.Show();
+                                        var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddDimmer");
+                                        Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
+                                        Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                                        addDevicePage.Show();
 
-                                            Action<List<BindListResponseObj>> action = (obj) =>
-                                            {
-                                                currentKey.bindList = obj;
-                                                RefreshList();
-                                            };
-                                            addDevicePage.actionAddDevicePage += action;
-                                            dialog.Close();
-                                        }
-                                        else
+                                        Action<List<BindListResponseObj>> action = (obj) =>
                                         {
-                                            currentKey.currentKeySelectModeText = oldKeySelectModeText;
-                                            dialog.Close();
-                                        }
+                                            currentKey.bindList = obj;
+                                            RefreshList();
+                                        };
+                                        addDevicePage.actionAddDevicePage += action;
+                                        dialog.Close();
+                                        dialog1.Close();
                                     }
                                     else
                                     {
                                         currentKey.currentKeySelectModeText = oldKeySelectModeText;
                                         dialog.Close();
+                                        dialog1.Close();
                                     }
+
                                 };
                             }
                         }
@@ -976,8 +995,6 @@
                             addDevicePage.actionAddDevicePage += action;
                             dialog.Close();
                         }
-
-
                     }
                     if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain))
                     {
@@ -986,32 +1003,37 @@
                             var bindSc = currentKey.bindList.Find(obj => (obj.BindType == 2));
                             if (bindSc != null)
                             {
-                                var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain3),
-                                                                                          Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-                                alert.Show();
-
-                                alert.ResultEventHandler += async (s1, e1) =>
+                                var dialog1 = new Dialog { };
+                                var doorDialog = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog1, Language.StringByID(R.MyInternationalizationString.Tip));
+                                doorDialog.Show();
+                                doorDialog.dialogMidFraFrameLayout.Height = Application.GetRealHeight(58);
+                                doorDialog.dialogMidFraFrameLayout.X = Application.GetRealWidth(0);
+                                doorDialog.dialogMidFraFrameLayout.Y = Application.GetRealHeight(202);
+                                doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+                                doorDialog.dialogMidText.Text = Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain3);
+                                doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+                                doorDialog.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.DoorlockConfirm);
+                                doorDialog.dialogBtnCancel.MouseUpEventHandler += (sender1, e1) =>
                                 {
-                                    if (e1)
-                                    {
-                                        var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddCurtain");
-                                        Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
-                                        Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                                        addDevicePage.Show();
+                                    currentKey.currentKeySelectModeText = oldKeySelectModeText;
+                                    dialog.Close();
+                                    dialog1.Close();
+                                };
+                                doorDialog.dialogBtnConfirm.MouseUpEventHandler += async (sender1, e1) =>
+                                {
+                                    var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddCurtain");
+                                    Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
+                                    Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                                    addDevicePage.Show();
 
-                                        Action<List<BindListResponseObj>> action = (obj) =>
-                                        {
-                                            currentKey.bindList = obj;
-                                            RefreshList();
-                                        };
-                                        addDevicePage.actionAddDevicePage += action;
-                                        dialog.Close();
-                                    }
-                                    else
+                                    Action<List<BindListResponseObj>> action = (obj) =>
                                     {
-                                        currentKey.currentKeySelectModeText = oldKeySelectModeText;
-                                        dialog.Close();
-                                    }
+                                        currentKey.bindList = obj;
+                                        RefreshList();
+                                    };
+                                    addDevicePage.actionAddDevicePage += action;
+                                    dialog.Close();
+                                    dialog1.Close();
                                 };
                             }
                         }
@@ -1037,13 +1059,37 @@
             }
         }
 
+        //鑾峰彇鎸夐敭鏀寔鐨勫ぇ绫�
+        private async System.Threading.Tasks.Task<List<int>> GetTypeMode()
+        {
+            if (typeModeList != null)
+            {
+                typeModeList.Clear();
+            }
+            if (currentKey.privateFuncSecondLevelList.Count == 0 || currentKey.privateFuncSecondLevelList.Contains(1) == false || currentKey.privateFuncSecondLevelList.Contains(100) == false || currentKey.privateFuncSecondLevelList.Contains(200) == false || currentKey.privateFuncSecondLevelList.Contains(300) == false)
+            {
+                //鑾峰彇绗簩绾у姛鑳�
+                typeModeList = await currentKey.GetPanelDeviceFunctionLevel2(256);
+                if (typeModeList == null)
+                {
+                    return null;
+                }
+                currentKey.privateFuncSecondLevelList = typeModeList;
+            }
+            else
+            {
+                typeModeList = currentKey.privateFuncSecondLevelList;
+            }
+            return typeModeList;
+        }
+
         /// <summary>
         /// 鍒犻櫎褰撳墠鐩爣鏂规硶
         /// </summary>
         /// <param name="bindDevice"></param>
         /// <param name="btnDel"></param>
         /// <returns></returns>
-        async System.Threading.Tasks.Task<int> RemoveTargets(BindListResponseObj bindDevice, Button btnDel)
+        private async System.Threading.Tasks.Task<int> RemoveTargets(BindListResponseObj bindDevice, Button btnDel)
         {
             var delDevice = new DelDeviceBindData();
             delDevice.DeviceAddr = currentKey.DeviceAddr;
@@ -1072,136 +1118,107 @@
                 CommonPage.Loading.Start("");
                 var delResult = new DelDeviceBindResponseAllData();
                 delResult = await currentKey.DelDeviceBindAsync(delDevice);
-                //if (delResult != null)
-                //{
-                //    if (delResult.removeBindResultResponseData != null)
-                //    {
-                //        if (delResult.removeBindResultResponseData.Result == 0)
-                //        {
-                //            currentKey.bindList.Remove(bindDevice);
-                //            RefreshList();
-                //            return 0;
-                //        }
-                //        else
-                //        {
-                //            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(CommonPage.Instance);
-                //        }
-                //    }
-                //    else if (delResult.delDeviceBindResponseData != null)
-                //    {
-                //        foreach (var remTarget in delResult.delDeviceBindResponseData.RemoveBindList)
-                //        {
-                //            if (remTarget.Result == 0)
-                //            {
-                //                currentKey.bindList.Remove(bindDevice);
-                //                RefreshList();
-                //                //濡傛灉鏄満鏅紝鐢ㄦ埛鍒犻櫎娓呯┖褰撳墠鍒版埧闂村垪琛�
-                //                currentKey.RoomId = "";
-                //                currentKey.ReSave();
-                //                return 0;
-                //            }
-                //            else
-                //            {
-                //                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(CommonPage.Instance);
-                //            }
-                //        }
-                //    }
-                //}
-                //else
-                //{
-                //    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(CommonPage.Instance);
-                //}
-
-                if (delResult.delDeviceBindResponseData?.RemoveBindList != null)
+                if (delResult != null && delResult.delDeviceBindResponseData != null)
                 {
-                    foreach (var re in delResult.delDeviceBindResponseData.RemoveBindList)
+                    if (delResult.delDeviceBindResponseData?.RemoveBindList != null)
                     {
-                        switch (re.Result)
+                        foreach (var re in delResult.delDeviceBindResponseData.RemoveBindList)
                         {
-                            case 0:
-                                currentKey.bindList.Remove(bindDevice);
-                                RefreshList();
-                                //濡傛灉鏄満鏅紝鐢ㄦ埛鍒犻櫎娓呯┖褰撳墠鍒版埧闂村垪琛�
-                                currentKey.RoomId = "";
-                                currentKey.ReSave();
-                                return 0;
-                                break;
-                            case 1:
-                                currentKey.bindList.Clear();
-                                try
-                                {
-                                    CommonPage.Loading.Start("");
-
-                                    var getBindList = await currentKey.GetDeviceBindAsync();
-                                    var bindDeviceListTemp = new System.Collections.Generic.List<BindListResponseObj> { };
-                                    var bindSceneListTemp = new System.Collections.Generic.List<BindListResponseObj> { };
-                                    if (getBindList != null)
+                            switch (re.Result)
+                            {
+                                case 0:
+                                    currentKey.bindList.Remove(bindDevice);
+                                    RefreshList();
+                                    //濡傛灉鏄満鏅紝鐢ㄦ埛鍒犻櫎娓呯┖褰撳墠鍒版埧闂村垪琛�
+                                    if (re.BindType == 2)
                                     {
-                                        if (getBindList.getAllBindResponseData != null)
-                                        {
-                                            foreach (var b in getBindList.getAllBindResponseData.BindList)
-                                            {
-                                                if (b.BindCluster == currentClusterID)
-                                                {
-                                                    if (b.BindCluster == 6)
-                                                    {
+                                        currentKey.panelMode = 65535;
+                                    }
+                                    currentKey.RoomId = "";
+                                    currentKey.ReSave();
+                                    return 0;
+                                    break;
+                                case 1:
+                                    currentKey.bindList.Clear();
+                                    try
+                                    {
+                                        CommonPage.Loading.Start("");
 
-                                                        if (b.BindType == 2)
+                                        var getBindList = await currentKey.GetDeviceBindAsync();
+                                        var bindDeviceListTemp = new System.Collections.Generic.List<BindListResponseObj> { };
+                                        var bindSceneListTemp = new System.Collections.Generic.List<BindListResponseObj> { };
+                                        if (getBindList != null)
+                                        {
+                                            if (getBindList.getAllBindResponseData != null)
+                                            {
+                                                foreach (var b in getBindList.getAllBindResponseData.BindList)
+                                                {
+                                                    if (b.BindCluster == currentClusterID)
+                                                    {
+                                                        if (b.BindCluster == 6)
                                                         {
-                                                            bindSceneListTemp.Add(b);
+
+                                                            if (b.BindType == 2)
+                                                            {
+                                                                bindSceneListTemp.Add(b);
+                                                            }
+                                                            else
+                                                            {
+                                                                bindDeviceListTemp.Add(b);
+                                                            }
                                                         }
                                                         else
                                                         {
-                                                            bindDeviceListTemp.Add(b);
+                                                            currentKey.bindList.Add(b);
                                                         }
-                                                    }
-                                                    else
-                                                    {
-                                                        currentKey.bindList.Add(b);
                                                     }
                                                 }
                                             }
                                         }
+                                        if (currentKey.panelMode == 1)
+                                        {
+                                            currentKey.bindList = bindSceneListTemp;
+                                        }
+                                        else if (currentKey.panelMode == 100 || currentKey.panelMode == 101 || currentKey.panelMode == 102)
+                                        {
+                                            currentKey.bindList = bindDeviceListTemp;
+                                        }
                                     }
-                                    if (currentKey.panelMode == 1)
+                                    catch { }
+                                    finally
                                     {
-                                        currentKey.bindList = bindSceneListTemp;
-                                    }
-                                    else if (currentKey.panelMode == 100 || currentKey.panelMode == 101 || currentKey.panelMode == 102)
-                                    {
-                                        currentKey.bindList = bindDeviceListTemp;
-                                    }
-                                }
-                                catch { }
-                                finally
-                                {
-                                    RefreshList();
-                                    CommonPage.Loading.Hide();
-                                }
-                                break;
-                            case 2:
-                                if (delResult.removeBindResultResponseData != null)
-                                {
-                                    if (delResult.removeBindResultResponseData.Result == 0)
-                                    {
-                                        currentKey.bindList.Remove(bindDevice);
                                         RefreshList();
-                                        return 0;
+                                        CommonPage.Loading.Hide();
                                     }
-                                    else
+                                    break;
+                                case 2:
+                                    if (delResult.removeBindResultResponseData != null)
                                     {
-                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
+                                        if (delResult.removeBindResultResponseData.Result == 0)
+                                        {
+                                            currentKey.bindList.Remove(bindDevice);
+                                            RefreshList();
+                                            return 0;
+                                        }
+                                        else
+                                        {
+                                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
+                                        }
                                     }
-                                }
-                                break;
-                            default:
-                                break;
+                                    break;
+                                default:
+                                    break;
+                            }
                         }
+                    }
+                    else
+                    {
+                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
                     }
                 }
                 else
                 {
-                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
+                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(CommonPage.Instance);
                 }
             }
             catch { }
@@ -1235,3 +1252,4 @@
         }
     }
 }
+

--
Gitblit v1.8.0