From 9a4b76398009cf76c508d61f7e48fb6f5cb7ac2d Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期二, 21 七月 2020 09:46:53 +0800
Subject: [PATCH] 请合并最新多功能面板代码

---
 ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs | 1195 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 1,195 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
new file mode 100644
index 0000000..5d20fe7
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
@@ -0,0 +1,1195 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using Shared.Common;
+using ZigBee.Device;
+using static ZigBee.Device.BindObj;
+using static ZigBee.Device.Panel;
+
+namespace Shared.Phone.UserCenter.DeviceBind
+{
+    /// <summary>
+    /// 鎸夐敭绠$悊
+    /// </summary>
+    public class BindTargetsPage : BindCommonLayout
+    {
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="doorLock"></param>
+        public BindTargetsPage(ZigBee.Device.Panel key)
+        {
+            this.currentKey = key;
+        }
+
+        #region 鍙橀噺鐢虫槑
+        /// <summary>
+        /// 褰撳墠鎸夐敭瀵硅薄
+        /// </summary>
+        ZigBee.Device.Panel currentKey;
+        /// <summary>
+        /// 鏄剧ず琚粦瀹氳澶囨垨鍦烘櫙鐨剉iew
+        /// </summary>
+        VerticalFrameRefreshControl midVerticalRefreshLayout;
+        /// <summary>
+        /// 鎸夐敭褰撳墠绨嘔D
+        /// </summary>
+        int currentClusterID = 0;
+        /// <summary>
+        /// 绌烘暟鎹椂鐨勫浘鐗�
+        /// </summary>
+        Button entryStatusPic;
+        /// <summary>
+        /// 绌烘暟鎹殑鎻愮ず
+        /// </summary>
+        Button btnPicTip;
+        /// <summary>
+        /// 鎸夐敭缁戝畾琛ㄩ�氱煡
+        /// </summary>
+        Action<List<BindListResponseObj>> action;
+        /// <summary>
+        /// 璁惧琚粦瀹氶�氱煡
+        /// </summary>
+        Action<List<BindListResponseObj>> devicBindAction;
+        /// <summary>
+        /// 鏈湴璁惧鍒楄〃
+        /// </summary>
+        private System.Collections.Generic.List<CommonDevice> localDeviceList = new System.Collections.Generic.List<CommonDevice>();
+        /// <summary>
+        /// 鏈湴鍦烘櫙鍒楄〃 
+        /// </summary>
+        private System.Collections.Generic.List<SceneUI> scList = new System.Collections.Generic.List<SceneUI> { };
+        /// <summary>
+        /// 绌烘暟鎹樉绀哄竷灞�
+        /// </summary>
+        FrameLayout blankFrameLayout;
+        /// <summary>
+        /// 鍔ㄦ�佽幏鍙栨寜閿敮鎸佺殑妯″紡澶х被鍨�
+        /// </summary>
+        List<int> typeModeList;
+        /// <summary>
+        /// 鏄惁鏀寔璇诲彇
+        /// </summary>
+        bool IsRead = false;
+
+        #endregion
+
+        /// <summary>
+        /// 鍒濆鍖栨寜閿暟鎹�
+        /// </summary>
+        void InitListInfo()
+        {
+            System.Threading.Tasks.Task.Run(async () =>
+            {
+                try
+                {
+                    localDeviceList.Clear();
+                    scList.Clear();
+                    //鑾峰彇鏈湴璁惧鍒楄〃
+                    foreach (var dev in Shared.Common.LocalDevice.Current.listAllDevice)
+                    {
+                        localDeviceList.Add(dev);
+                    }
+                    //鑾峰彇鏈湴鍦烘櫙鍒楄〃
+                    scList = HdlSceneLogic.Current.GetAllRoomSceneList();
+
+                    //鍔ㄦ�佽幏鍙栨寜閿敮鎸佺殑澶х被
+                    typeModeList = await GetTypeMode();
+                    #region 璇诲彇闈㈡澘褰撳墠妯″紡
+                    //璇诲彇鎸夐敭褰撳墠妯″紡
+                    var tempDeata = HdlDeviceBindLogic.Current.ReadPanelConfigureInfoAsync(currentKey);
+                    if (tempDeata != null && tempDeata.deviceStatusReportData != null)
+                    {
+                        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;
+                            }
+
+                            //璇诲彇鎸夐敭褰撳墠缁戝畾鐩爣
+                            GetDeviceBindResponseAllData getBindList = null;
+                            if (IsRead)
+                            {
+                                getBindList = HdlDeviceBindLogic.Current.GetDeviceBindAsync(currentKey);
+                                var bindDeviceListTemp = new System.Collections.Generic.List<BindListResponseObj> { };
+                                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)
+                                        {
+                                            if (b.BindCluster == 6)
+                                            {
+
+                                                if (b.BindType == 2)
+                                                {
+                                                    bindSceneListTemp.Add(b);
+                                                }
+                                                else
+                                                {
+                                                    bindDeviceListTemp.Add(b);
+                                                }
+                                            }
+                                            else
+                                            {
+                                                if (currentClusterID == 8)
+                                                {
+                                                    if (b.BindCluster == 8)
+                                                    {
+                                                        currentKey.bindList.Add(b);
+                                                    }
+                                                }
+                                                else
+                                                {
+                                                    currentKey.bindList.Add(b);
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                                else
+                                {
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        CommonPage.Loading.Hide();
+                                        midVerticalRefreshLayout.EndHeaderRefreshing();
+                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime) + "(" + "5007" + ")", Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                                        return;
+                                    });
+                                }
+                                if (currentKey.panelMode == 1)
+                                {
+                                    currentKey.bindList = bindSceneListTemp;
+                                    currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddScene);
+                                }
+                                else if (currentKey.panelMode == 100 || currentKey.panelMode == 101 || currentKey.panelMode == 102)
+                                {
+                                    currentKey.bindList = bindDeviceListTemp;
+                                    currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddSwitch);
+                                }
+                                else if (currentKey.panelMode == 200 || currentKey.panelMode == 201 || currentKey.panelMode == 203 || currentKey.panelMode == 204 || currentKey.panelMode == 205)
+                                {
+                                    currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddDimmer);
+                                }
+                                else if (currentKey.panelMode == 300 || currentKey.panelMode == 301 || currentKey.panelMode == 302 || currentKey.panelMode == 303 || currentKey.panelMode == 304)
+                                {
+                                    currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddCurtain);
+                                }
+                            }
+                            currentKey.ReSave();
+                        }
+                        #endregion 
+                        Application.RunOnMainThread(() =>
+                        {
+                            RefreshList();
+                            CommonPage.Loading.Hide();
+                            midVerticalRefreshLayout.EndHeaderRefreshing();
+                        });
+                    }
+                    else
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            CommonPage.Loading.Hide();
+                            midVerticalRefreshLayout.EndHeaderRefreshing();
+                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime) + "(" + "108_ 6533" + ")", Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                        });
+                        return;
+                    }
+                }
+                catch { }
+            });
+        }
+
+        /// <summary>
+        /// 鎸夐敭缁戝畾椤垫樉绀�
+        /// </summary>
+        public void Show()
+        {
+            #region TopFrameLayout
+            this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.PanelBindTargets));
+            EventHandler<MouseEventArgs> eHandlerBack = (sender, e) =>
+            {
+                RemoveFromParent();
+            };
+            this.btnBack.MouseUpEventHandler += eHandlerBack;
+            this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
+            this.MidFrameLayout(this);
+
+            var btnAddFrameLayout = new FrameLayout()
+            {
+                X = Application.GetRealWidth(772 - 58),
+                Width = Application.GetRealWidth(192),
+            };
+            this.titleFrameLayout.AddChidren(btnAddFrameLayout);
+
+            var btnBindAdd = new Button
+            {
+                X = Application.GetRealWidth(62),
+                Height = Application.GetMinReal(72),
+                Width = Application.GetMinReal(72),
+                UnSelectedImagePath = "BindPic/BindAdd.png",
+            };
+            btnAddFrameLayout.AddChidren(btnBindAdd);
+            #endregion
+
+            #region eHandlerAdd
+            EventHandler<MouseEventArgs> eHandlerAdd = (sender, e) =>
+            {
+                if (currentKey.bindList.Count != 0)
+                {
+                    if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene))
+                    {
+                        currentClusterID = 6;
+                        currentKey.panelMode = 1;
+                        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;
+                    }
+
+                    if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch))
+                    {
+                        currentClusterID = 6;
+                        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();
+
+                        devicBindAction = (obj) =>
+                        {
+                            currentKey.bindList = obj;
+                            RefreshList();
+                        };
+                        addDevicePage.actionAddDevicePage += devicBindAction;
+                    }
+                    if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer))
+                    {
+                        currentClusterID = 8;
+                        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;
+                    }
+
+                    if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain))
+                    {
+                        currentClusterID = 258;
+                        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;
+                    }
+                }
+                else
+                {
+                    currentKey.panelMode = 65535;
+                    SideslipFramelayout();
+                }
+            };
+            btnBindAdd.MouseDownEventHandler += eHandlerAdd;
+            btnAddFrameLayout.MouseDownEventHandler += eHandlerAdd;
+            #endregion
+            CommonPage.Loading.Start("");
+            middleFrameLayout();
+            if (currentKey.bindList.Count == 0)
+            {
+                IsRead = true;
+            }
+            else
+            {
+                IsRead = false;
+            }
+            InitListInfo();
+
+        }
+
+        /// <summary>
+        /// 涓儴甯冨眬
+        /// </summary>
+        void middleFrameLayout()
+        {
+            midVerticalRefreshLayout = new VerticalFrameRefreshControl(29)
+            {
+                Height = this.midFrameLayout.Height + 1,
+            };
+            this.midFrameLayout.AddChidren(midVerticalRefreshLayout);
+            midVerticalRefreshLayout.BeginHeaderRefreshingAction += () =>
+            {
+                midVerticalRefreshLayout.BeginHeaderRefreshing();
+                IsRead = true;
+                InitListInfo();
+            };
+
+            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();
+            #region 鏁版嵁澶勭悊 
+            if (currentKey.bindList.Count == 0)
+            {
+                entryStatusPic.Height = Application.GetRealHeight(556);
+                entryStatusPic.Width = Application.GetRealWidth(654);
+                btnPicTip.Height = Application.GetRealHeight(49);
+                btnPicTip.Visible = true;
+                entryStatusPic.Visible = true;
+                blankFrameLayout.Height = midVerticalRefreshLayout.Height;
+            }
+            else
+            {
+                entryStatusPic.Height = Application.GetRealHeight(0);
+                entryStatusPic.Width = Application.GetRealWidth(0);
+                btnPicTip.Height = Application.GetRealHeight(0);
+                btnPicTip.Visible = false;
+                entryStatusPic.Visible = false;
+                blankFrameLayout.Height = Application.GetRealHeight(0);
+                if (currentKey.panelMode == 1)
+                {
+                    midVerticalRefreshLayout.Y = Application.GetRealHeight(0);
+                }
+                else
+                {
+                    BindModeDisplay();
+                }
+                int curIndex = 0;
+                for (int i = 0; i < currentKey.bindList.Count; i++)
+                {
+                    curIndex = i;
+                    var bindDevice = currentKey.bindList[i];
+                    SceneUI curSceneUI = null;
+                    bool isExistScene = false;
+
+                    var rowLayout = new RowLayoutControl(midVerticalRefreshLayout.rowSpace / 2);
+                    rowLayout.BackgroundColor = ZigbeeColor.Current.XMWhite;
+                    midVerticalRefreshLayout.AddChidren2(rowLayout);
+                    rowLayout.frameTable.UseClickStatu = false;
+                    var devicePic = rowLayout.frameTable.AddLeftIcon();
+                    devicePic.Y = Application.GetRealHeight(49);
+                    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;
+                    }
+                    foreach (var sc in currentKey.bindList)
+                    {
+                        if (sc.BindType == 2)
+                        {
+                            isExistScene = true;
+                        }
+                    }
+                    if (isExistScene)
+                    {
+                        curSceneUI = HdlSceneLogic.Current.GetSceneUIBySceneId(bindDevice.BindScenesId);
+                        devicePic.UnSelectedImagePath = "Scene/SceneIcon.png";
+                        if (curSceneUI == null)
+                        {
+                            if (string.IsNullOrEmpty(bindDevice.ESName))
+                            {
+                                btnBindNameText = Language.StringByID(R.MyInternationalizationString.OffLineScene) + "_" + "ID" + "_" + bindDevice.BindScenesId.ToString();
+                            }
+                            else
+                            {
+                                btnBindNameText = Language.StringByID(R.MyInternationalizationString.OffLineScene) + "_" + bindDevice.ESName;
+                            }
+                        }
+                        else
+                        {
+                            btnBindNameText = curSceneUI.Name;
+                            string myName = HdlSceneLogic.Current.GetZoneById(curSceneUI.Id);
+                            if (myName != null)
+                            {
+                                btnFloorRoomNameText = myName;
+                            }
+                            else
+                            {
+                                btnFloorRoomNameText = Language.StringByID(R.MyInternationalizationString.Undistributed);
+                            }
+                        }
+                    }
+                    else
+                    {
+                        //琚粦瀹氳澶囧浘鐗�
+                        foreach (var dev in localDeviceList)
+                        {
+                            var tempDev = localDeviceList.Find(obj => obj.DeviceAddr == bindDevice.BindMacAddr && obj.DeviceEpoint == bindDevice.BindEpoint);
+                            if (tempDev != null)
+                            {
+                                //鑾峰彇璁惧鎵�灞炴埧闂�
+                                var tempDevRoom = HdlRoomLogic.Current.GetRoomByDevice(tempDev);
+
+                                if (tempDevRoom != null)
+                                {
+                                    var tempDevFloorId = tempDevRoom.FloorId;
+                                    //鑾峰彇鎴块棿鐨勫悕瀛�
+                                    var tempDevRoomName = tempDevRoom.Name;
+                                    //鑾峰彇妤煎眰鐨勫悕瀛�
+                                    var tempDevFloorName = HdlResidenceLogic.Current.GetFloorNameById(tempDevFloorId);
+                                    if (string.IsNullOrEmpty(tempDevFloorName))
+                                    {
+                                        if (string.IsNullOrEmpty(tempDevRoomName))
+                                        {
+                                            btnFloorRoomNameText = Language.StringByID(R.MyInternationalizationString.Undistributed);
+                                        }
+                                        else
+                                        {
+                                            btnFloorRoomNameText = tempDevRoomName;
+                                        }
+                                    }
+                                    else
+                                    {
+                                        if (string.IsNullOrEmpty(tempDevRoomName))
+                                        {
+                                            btnFloorRoomNameText = Language.StringByID(R.MyInternationalizationString.Undistributed);
+                                        }
+                                        else
+                                        {
+                                            btnFloorRoomNameText = tempDevFloorName + "," + tempDevRoomName;
+                                        }
+                                    }
+                                }
+                                else
+                                {
+                                    btnFloorRoomNameText = Language.StringByID(R.MyInternationalizationString.Undistributed);
+                                }
+
+                                devicePic.UnSelectedImagePath = tempDev.IconPath;
+                                devicePic.Text = "";
+
+                                if (string.IsNullOrEmpty(tempDev.DeviceEpointName))
+                                {
+                                    btnBindNameText = tempDev.DeviceEpoint + Language.StringByID(R.MyInternationalizationString.uDeviceCircuit);
+                                }
+                                else
+                                {
+                                    btnBindNameText = tempDev.DeviceEpointName;
+                                }
+                            }
+                            else
+                            {
+                                btnBindNameText = bindDevice.BindMacAddr + "_" + bindDevice.BindEpoint;
+                                devicePic.TextAlignment = TextAlignment.CenterLeft;
+                                devicePic.TextColor = UserCenterColor.Current.Gray;
+                                devicePic.Text = Language.StringByID(R.MyInternationalizationString.uOffLine);
+                            }
+                        }
+                    }
+
+                    var btnBindName = rowLayout.frameTable.AddTopView(btnBindNameText, 800);
+                    var btnFloorRoomName = rowLayout.frameTable.AddBottomView(btnFloorRoomNameText, 800);
+                    rowLayout.frameTable.AddBottomLine();
+                    var btnDel = rowLayout.AddDeleteControl();
+                    btnDel.ButtonClickEvent += (sender, e) =>
+                    {
+                        RemoveTargets(bindDevice, btnDel);
+                    };
+                    #endregion
+                }
+                midVerticalRefreshLayout.AdjustTableHeight(Application.GetRealHeight(23));
+            }
+            #endregion
+        }
+
+        /// <summary>
+        /// 褰撳墠鎸夐敭妯″紡鏄剧ず
+        /// </summary>
+        public void BindModeDisplay()
+        {
+            var modeRowLayout = new RowLayoutControl(midVerticalRefreshLayout.rowSpace / 2);
+            modeRowLayout.BackgroundColor = ZigbeeColor.Current.XMWhite;
+            midVerticalRefreshLayout.AddChidren2(modeRowLayout);
+            modeRowLayout.frameTable.UseClickStatu = false;
+            modeRowLayout.frameTable.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.keyMode), 400);
+            var btnKeyModeTipText = "";
+            #region 褰撳墠妯″紡鏂囨湰鏄剧ず
+            switch (currentKey.panelMode)
+            {
+                case 100:
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.OnOffOn);
+                    break;
+                case 101:
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.OnOffoFF);
+                    break;
+                case 102:
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.OnOffOnOff);
+                    break;
+                case 200:
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode1);
+                    break;
+                case 201:
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode2);
+                    break;
+                case 203:
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode3);
+                    break;
+                case 204:
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode4);
+                    break;
+                case 205:
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode5);
+                    break;
+                case 300:
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdUp);
+                    break;
+                case 301:
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdDown);
+                    break;
+                case 302:
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdStop);
+                    break;
+                case 303:
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdUpStop);
+                    break;
+                case 304:
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdDownStop);
+                    break;
+            }
+            #endregion
+            modeRowLayout.frameTable.AddMostRightView(btnKeyModeTipText, 800);
+            modeRowLayout.frameTable.AddBottomLine();
+            var btnDel = modeRowLayout.AddDeleteControl();
+            //涓�閿竻闄ゆ寜閿簨浠�
+            btnDel.ButtonClickEvent += async (sender, e) =>
+            {
+                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 += () =>
+                 {
+                     bool isDelSuccess = false;
+                     System.Threading.Tasks.Task.Run(() =>
+                     {
+                         try
+                         {
+                             Application.RunOnMainThread(() =>
+                             {
+                                 CommonPage.Loading.Start("");
+                             });
+                             var bindResult = HdlDeviceBindLogic.Current.ClearBindInfoAsync(currentKey);
+                             if (bindResult != null && bindResult.clearBindInfoResponseData != null)
+                             {
+                                 if (bindResult.clearBindInfoResponseData.Result != 0)
+                                 {
+                                     Application.RunOnMainThread(() =>
+                                     {
+                                         new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDel);
+                                         CommonPage.Loading.Hide();
+                                     });
+                                     return;
+                                 }
+                                 else
+                                 {
+                                     var temp = HdlDeviceBindLogic.Current.ConfigureHdlKeyValueAsync(currentKey, Panel.KeyMode.Default);
+                                     if (temp != null && temp.setWritableValueResponData?.Status != 0)
+                                     {
+                                         var temp1 = HdlDeviceBindLogic.Current.ConfigureHdlKeyValueAsync(currentKey, Panel.KeyMode.Default);
+                                         if (temp1 != null && temp1.setWritableValueResponData?.Status != 0)
+                                         {
+                                             Application.RunOnMainThread(() =>
+                                             {
+                                                 new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.ChangeBindMode), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
+
+                                             });
+                                         }
+                                         else
+                                         {
+                                             isDelSuccess = true;
+                                         }
+                                     }
+                                     else
+                                     {
+                                         isDelSuccess = true;
+                                     }
+                                 }
+                             }
+                             else
+                             {
+                                 Application.RunOnMainThread(() =>
+                                 {
+                                     new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime) + "(" + "5006" + ")", Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
+                                 });
+                             }
+                         }
+                         catch { }
+                         finally
+                         {
+                             Application.RunOnMainThread(() =>
+                             {
+                                 if (isDelSuccess)
+                                 {
+                                     currentKey.panelMode = 65535;
+                                     currentKey.bindList.Clear();
+                                     RefreshList();
+                                     //濡傛灉鏄満鏅紝鐢ㄦ埛鍒犻櫎娓呯┖褰撳墠鍒版埧闂村垪琛�
+                                     currentKey.ReSave();
+                                 }
+                                 CommonPage.Loading.Hide();
+                             });
+                         }
+                     });
+                 };
+            };
+        }
+
+        /// <summary>
+        /// 渚ц竟瀵艰埅鏍�
+        /// </summary>
+        async void SideslipFramelayout()
+        {
+            #region UI
+            var dialog = new Dialog { };
+            dialog.Show();
+
+            var flMain = new FrameLayout { BackgroundColor = 0x00000000 };
+            dialog.AddChidren(flMain);
+            flMain.MouseUpEventHandler += (sender11, e11) =>
+            {
+                dialog.Close();
+            };
+
+            var sidelipFrameLayout = new FrameLayout()
+            {
+                Height = Application.GetMinReal(628),
+                Width = Application.GetMinReal(415),
+                Y = Application.GetRealHeight(115 + 45),
+                X = Application.GetRealWidth(605),
+                BackgroundImagePath = "DoorLock/SideslipPic.png",
+            };
+            flMain.AddChidren(sidelipFrameLayout);
+
+            var sidelipVerticalScrolViewLayout = new VerticalScrolViewLayout()
+            {
+                Height = Application.GetRealHeight(600),
+                Y = Application.GetRealHeight(28),
+            };
+            sidelipFrameLayout.AddChidren(sidelipVerticalScrolViewLayout);
+            #endregion
+
+            Button oldbuttonText = null;
+            string oldKeySelectModeText = currentKey.currentKeySelectModeText;
+
+            if (typeModeList == null)
+            {
+                //鍐嶆鍔ㄦ�佽幏鍙栨寜閿敮鎸佺殑澶х被
+                Application.RunOnMainThread(() =>
+                {
+                    CommonPage.Loading.Start();
+                });
+                typeModeList = await GetTypeMode();
+                if (typeModeList == null)
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime) + "(" + "0003" + ")", Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                        CommonPage.Loading.Hide();
+                    });
+                    dialog.Close();
+                    return;
+                }
+                else
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        CommonPage.Loading.Hide();
+                    });
+                }
+            }
+
+            int count = 0;
+            foreach (var value in typeModeList)
+            {
+                count++;
+                #region  rowView
+                var rowView = new FrameLayout()
+                {
+                    Height = Application.GetRealHeight(150),
+                };
+                sidelipVerticalScrolViewLayout.AddChidren(rowView);
+
+                var btnMethodText = new Button()
+                {
+                    Width = Application.GetRealWidth(268),
+                    Height = Application.GetRealHeight(58),
+                    X = Application.GetRealWidth(115),
+                    Y = Application.GetRealHeight(69),
+                    TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
+                    TextSize = 14,
+                    IsBold = false,
+                    TextAlignment = TextAlignment.CenterLeft,
+                };
+                rowView.AddChidren(btnMethodText);
+
+                var line2 = new Button()
+                {
+                    Y = rowView.Height - 1,
+                    X = Application.GetRealWidth(115),
+                    Width = Application.GetRealWidth(300),
+                    Height = 1,
+                    BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
+                };
+                rowView.AddChidren(line2);
+
+                if (string.IsNullOrEmpty(currentKey.currentKeySelectModeText) && value == 1)
+                {
+                    btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
+                    oldbuttonText = btnMethodText;
+                }
+                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.AddSwitch) && value == 100)
+                {
+                    btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
+                    oldbuttonText = btnMethodText;
+                }
+                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 (value)
+                {
+                    case 1:
+                        btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddScene);
+                        break;
+                    case 100:
+                        btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddSwitch);
+                        break;
+                    case 200:
+                        btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddDimmer);
+                        break;
+                    case 300:
+                        btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddCurtain);
+                        line2.Visible = false;
+                        break;
+                }
+
+                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) && value == 100)
+                {
+                    btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
+                    oldbuttonText = btnMethodText;
+                }
+                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) && value == 300)
+                {
+                    btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
+                    oldbuttonText = btnMethodText;
+                }
+                #endregion
+
+                //绫诲瀷浜嬩欢閫変腑澶勭悊
+                EventHandler<MouseEventArgs> eHandler = (sender, e) =>
+                {
+                    if (!btnMethodText.IsSelected)
+                    {
+                        if (oldbuttonText != null)
+                        {
+                            oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3;
+                        }
+                        oldbuttonText = btnMethodText;
+                        currentKey.currentKeySelectModeText = btnMethodText.Text;
+                        oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    }
+                    if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene))
+                    {
+                        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();
+                    }
+                    if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch))
+                    {
+                        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();
+                    }
+                    if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer))
+                    {
+                        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();
+                    }
+                    if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain))
+                    {
+                        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();
+                    }
+                };
+                btnMethodText.MouseUpEventHandler += eHandler;
+                rowView.MouseUpEventHandler += eHandler;
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎸夐敭鏀寔鐨勫ぇ绫�
+        /// </summary>
+        /// <returns></returns>
+        private async System.Threading.Tasks.Task<List<int>> GetTypeMode()
+        {
+            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                //鍒欓粯璁ゅ叏閮ㄥ姛鑳介兘缁欏畠
+                typeModeList = new List<int>() { 1, 100, 200, 300, 0, 101, 102 };
+                return typeModeList;
+            }
+            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>
+        private int RemoveTargets(BindListResponseObj bindDevice, Button btnDel)
+        {
+            int result = -1;
+            var delDevice = new DelDeviceBindData();
+            delDevice.DeviceAddr = currentKey.DeviceAddr;
+            delDevice.Epoint = currentKey.DeviceEpoint;
+
+            if (bindDevice.BindType == 0 || bindDevice.BindType == 1)
+            {
+                var removeDevice = new RemoveBindListObj();
+                removeDevice.BindCluster = bindDevice.BindCluster;
+                removeDevice.BindType = 0;
+                removeDevice.BindMacAddr = bindDevice.BindMacAddr;
+                removeDevice.BindEpoint = bindDevice.BindEpoint;
+                delDevice.RemoveBindList.Add(removeDevice);
+                //鏄寒搴﹀啀娆″彂鍒犻櫎6鐨勫懡浠�
+                if (currentClusterID == 8)
+                {
+                    var removeDevice2 = new RemoveBindListObj();
+                    removeDevice2.BindCluster = 6;
+                    removeDevice2.BindType = 0;
+                    removeDevice2.BindMacAddr = bindDevice.BindMacAddr;
+                    removeDevice2.BindEpoint = bindDevice.BindEpoint;
+                    delDevice.RemoveBindList.Add(removeDevice2);
+                }
+            }
+            else if (bindDevice.BindType == 2)
+            {
+                var removeDevice = new RemoveBindListObj();
+                removeDevice.BindCluster = bindDevice.BindCluster;
+                removeDevice.BindType = 1;
+                removeDevice.BindScenesId = bindDevice.BindScenesId;
+                delDevice.RemoveBindList.Add(removeDevice);
+            }
+
+            System.Threading.Tasks.Task.Run(() =>
+            {
+                try
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        CommonPage.Loading.Start("");
+                    });
+                    var delResult = new DelDeviceBindResponseAllData();
+                    delResult = HdlDeviceBindLogic.Current.DelDeviceBindAsync(delDevice);
+                    if (delResult != null && delResult.delDeviceBindResponseData != null)
+                    {
+                        if (delResult.delDeviceBindResponseData?.RemoveBindList != null)
+                        {
+                            foreach (var re in delResult.delDeviceBindResponseData.RemoveBindList)
+                            {
+                                switch (re.Result)
+                                {
+                                    case 0:
+                                        currentKey.bindList.Remove(bindDevice);
+                                        Application.RunOnMainThread(() =>
+                                        {
+                                            RefreshList();
+                                            //濡傛灉鏄満鏅紝鐢ㄦ埛鍒犻櫎娓呯┖褰撳墠鍒版埧闂村垪琛�
+                                            if (re.BindType == 2)
+                                            {
+                                                currentKey.panelMode = 65535;
+                                            }
+                                            currentKey.ReSave();
+                                        });
+                                        result = 0;
+                                        break;
+                                    case 1:
+                                        currentKey.bindList.Clear();
+                                        try
+                                        {
+                                            Application.RunOnMainThread(() =>
+                                            {
+                                                CommonPage.Loading.Start("");
+                                            });
+                                            var getBindList = HdlDeviceBindLogic.Current.GetDeviceBindAsync(currentKey);
+                                            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)
+                                                            {
+
+                                                                if (b.BindType == 2)
+                                                                {
+                                                                    bindSceneListTemp.Add(b);
+                                                                }
+                                                                else
+                                                                {
+                                                                    bindDeviceListTemp.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;
+                                            }
+                                        }
+                                        catch { }
+                                        finally
+                                        {
+                                            Application.RunOnMainThread(() =>
+                                            {
+                                                RefreshList();
+                                                CommonPage.Loading.Hide();
+                                            });
+                                        }
+                                        break;
+                                    case 2:
+                                        if (delResult.removeBindResultResponseData != null)
+                                        {
+                                            if (delResult.removeBindResultResponseData.Result == 0)
+                                            {
+                                                currentKey.bindList.Remove(bindDevice);
+                                                Application.RunOnMainThread(() =>
+                                                {
+                                                    RefreshList();
+                                                });
+                                                result = 0;
+                                            }
+                                            else
+                                            {
+                                                Application.RunOnMainThread(() =>
+                                                {
+                                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
+                                                });
+                                            }
+                                        }
+                                        break;
+                                    default:
+                                        break;
+                                }
+                            }
+                        }
+                        else
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
+                            });
+                        }
+                    }
+                    else
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime) + "(" + "5003" + ")", Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(CommonPage.Instance);
+                        });
+                    }
+                }
+                catch { }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        CommonPage.Loading.Hide();
+                    });
+                }
+            });
+            return result;
+        }
+
+        /// <summary>
+        /// 閲嶅啓绉婚櫎鏂规硶
+        /// </summary>
+        public override void RemoveFromParent()
+        {
+            localDeviceList.Clear();
+            scList.Clear();
+            base.RemoveFromParent();
+        }
+    }
+}
+

--
Gitblit v1.8.0