From 3aa397ab145382935492b11c1f18c9634e69910b Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期四, 10 十二月 2020 16:45:00 +0800
Subject: [PATCH] 请合并,门锁和晾衣架第一版代码

---
 ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs | 3758 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 1,878 insertions(+), 1,880 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs
index 742d473..17ebc9c 100644
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs
@@ -7,1902 +7,1900 @@
 using ZigBee.Device;
 
 namespace Shared.Phone.UserCenter.Device
-{
+{
+  /// <summary>
+  /// 缂栬緫璁惧鐨勪俊鎭�(杩欓噷淇敼鐨勬槸MAC鍚�,杩欎釜鐢婚潰浼氭洿鏀筂AC鐨勭墿鐞嗗悕瀛�)
+  /// </summary>
+  public class DeviceMacInfoEditorForm : EditorCommonForm
+  {
+    #region 鈻� 鍙橀噺澹版槑___________________________
+
     /// <summary>
-    /// 缂栬緫璁惧鐨勪俊鎭�(杩欓噷淇敼鐨勬槸MAC鍚�,杩欎釜鐢婚潰浼氭洿鏀筂AC鐨勭墿鐞嗗悕瀛�)
+    /// 璁惧瀵硅薄
     /// </summary>
-    public class DeviceMacInfoEditorForm : EditorCommonForm
-    {
-        #region 鈻� 鍙橀噺澹版槑___________________________
-
-        /// <summary>
-        /// 璁惧瀵硅薄
-        /// </summary>
-        private List<CommonDevice> listNewDevice = null;
-        /// <summary>
-        /// 鍒楄〃鎺т欢
-        /// </summary>
-        private FrameListControl listview = null;
-        /// <summary>
-        /// 璁惧鐨勮澶囩被鍨�
-        /// </summary>
-        private HashSet<DeviceType> listDeviceType = new HashSet<DeviceType>();
-        /// <summary>
-        /// 璁惧鍏蜂綋绫诲瀷鐨勪俊鎭�
-        /// </summary>
-        private DeviceEnumInfo deviceEnumInfo = null;
-        /// <summary>
-        /// 涓ぎ绌鸿皟鐨勭増鏈帶浠�
-        /// </summary>
-        private NormalViewControl btnAirConditionerVersion = null;
-        /// <summary>
-        /// 绠�绾﹀鍔熻兘闈㈡澘缁戝畾鐨勬俯搴︾洰鏍囧悕瀛�
-        /// </summary>
-        private string bindTemperatureName = string.Empty;
-        /// <summary>
-        /// 绠�绾﹀鍔熻兘闈㈡澘缁戝畾鐨勬箍搴︾洰鏍囧悕瀛�
-        /// </summary>
-        private string bindHumidityName = string.Empty;
-        /// <summary>
-        /// 绠�绾﹀鍔熻兘闈㈡澘缁戝畾琚粦鐩爣鏄俯搴�
-        /// </summary>
-        private CommonDevice bindTemperatureDev;
-        /// <summary>
-        /// 绠�绾﹀鍔熻兘闈㈡澘缁戝畾琚粦鐩爣鏄箍搴�
-        /// </summary>
-        private CommonDevice bindHumidityDev;
-        /// <summary>
-        ///  绠�绾﹂潰鏉垮綋鍓峂ac
-        /// </summary>
-        private string deviceMacTemp = string.Empty;
-        // <summary>
-        /// 绠�绾﹀鍔熻兘闈㈡澘涓缁戝畾鐨勬俯婀垮害鐩爣鍒楄〃
-        /// </summary>
-        private List<BindObj.BindListResponseObj> bindList = new List<BindObj.BindListResponseObj>();
-        /// <summary>
-        /// 绠�绾﹀鍔熻兘闈㈡澘鐨勬帴杩戞劅搴旀暟鎹� 
-        private Panel.PanelProximitySensorInfo proximitySensorsInfo = new Panel.PanelProximitySensorInfo();
-        #endregion
+    private List<CommonDevice> listNewDevice = null;
+    /// <summary>
+    /// 鍒楄〃鎺т欢
+    /// </summary>
+    private FrameListControl listview = null;
+    /// <summary>
+    /// 璁惧鐨勮澶囩被鍨�
+    /// </summary>
+    private HashSet<DeviceType> listDeviceType = new HashSet<DeviceType>();
+    /// <summary>
+    /// 璁惧鍏蜂綋绫诲瀷鐨勪俊鎭�
+    /// </summary>
+    private DeviceEnumInfo deviceEnumInfo = null;
+    /// <summary>
+    /// 涓ぎ绌鸿皟鐨勭増鏈帶浠�
+    /// </summary>
+    private NormalViewControl btnAirConditionerVersion = null;
+    /// <summary>
+    /// 绠�绾﹀鍔熻兘闈㈡澘缁戝畾鐨勬俯搴︾洰鏍囧悕瀛�
+    /// </summary>
+    private string bindTemperatureName = string.Empty;
+    /// <summary>
+    /// 绠�绾﹀鍔熻兘闈㈡澘缁戝畾鐨勬箍搴︾洰鏍囧悕瀛�
+    /// </summary>
+    private string bindHumidityName = string.Empty;
+    /// <summary>
+    /// 绠�绾﹀鍔熻兘闈㈡澘缁戝畾琚粦鐩爣鏄俯搴�
+    /// </summary>
+    private CommonDevice bindTemperatureDev;
+    /// <summary>
+    /// 绠�绾﹀鍔熻兘闈㈡澘缁戝畾琚粦鐩爣鏄箍搴�
+    /// </summary>
+    private CommonDevice bindHumidityDev;
+    /// <summary>
+    ///  绠�绾﹂潰鏉垮綋鍓峂ac
+    /// </summary>
+    private string deviceMacTemp = string.Empty;
+    // <summary>
+    /// 绠�绾﹀鍔熻兘闈㈡澘涓缁戝畾鐨勬俯婀垮害鐩爣鍒楄〃
+    /// </summary>
+    private List<BindObj.BindListResponseObj> bindList = new List<BindObj.BindListResponseObj>();
+    /// <summary>
+    /// 绠�绾﹀鍔熻兘闈㈡澘鐨勬帴杩戞劅搴旀暟鎹� 
+    private Panel.PanelProximitySensorInfo proximitySensorsInfo = new Panel.PanelProximitySensorInfo();
+    #endregion
 
-        #region 鈻� 鍒濆鍖朹____________________________
+    #region 鈻� 鍒濆鍖朹____________________________
 
-        /// <summary>
-        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
-        /// </summary>
-        /// <param name="deviceMac">璁惧mac鍦板潃</param>
-        public void ShowForm(string deviceMac)
-        {
-            this.listNewDevice = Common.LocalDevice.Current.GetDevicesByMac(deviceMac);
-            if (listNewDevice.Count == 0)
-            {
-                //閽堝鍗曠函鍙湁涓�涓�200绔偣鐨勮澶�
-                listNewDevice.Add(Common.LocalDevice.Current.GetOTADevice(deviceMac));
-            }
-            this.listDeviceType.Clear();
-            deviceMacTemp = deviceMac;
-            foreach (var device in listNewDevice)
-            {
-                //鏀堕泦璁惧绫诲瀷
-                this.listDeviceType.Add(device.Type);
-            }
-            //鑾峰彇杩欎竴鍫嗚澶囨椂灞炰簬浠�涔堢被鍨嬬殑
-            this.deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listNewDevice);
-
-            //璁剧疆鏍囬淇℃伅
-            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uDeviceSettion));
-
-            //鍒濆鍖栧彸涓婅鑿滃崟
-            this.InitTopRightMenu();
-
-            //鍒濆鍖栦腑閮ㄦ帶浠�
-            this.InitMiddleFrame();
-
-            //閲嶆柊鑾峰彇纭欢淇℃伅
-            this.RefreshHardFirmwareInfo();
-
-            //绠�绾﹀鍔熻兘闈㈡澘鑾峰彇缁戝畾鐩爣鐨勬樉绀�
-            if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleMultifunction)
-            {
-                //绠�绾﹂潰鏉块殢渚夸竴涓洖璺潵鑾峰彇璁惧淇℃伅
-                var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 62);
-                if (dev != null)
-                {
-                    var key = new ZigBee.Device.Panel();
-                    key.DeviceAddr = deviceMac;
-                    key.CurrentGateWayId = dev.CurrentGateWayId;
-                    InitBindInfo(key);
-                }
-            }
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栦腑閮ㄦ帶浠�
-        /// </summary>
-        private void InitMiddleFrame()
-        {
-            //娓呯┖bodyFrame
-            this.ClearBodyFrame();
-
-            var listBackControl = new VerticalFrameControl();
-            listBackControl.Height = bodyFrameLayout.Height;
-            bodyFrameLayout.AddChidren(listBackControl);
-
-            //鍒濆鍖栨甯�
-            var tableContr = new InformationEditorControl();
-            this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uInfoEditor), 1368);
-
-            //鍥剧墖
-            var btnPic = new DeviceInfoIconControl();
-            btnPic.Y = Application.GetRealHeight(92);
-            btnPic.Gravity = Gravity.CenterHorizontal;
-            listBackControl.frameTable.AddChidren(btnPic);
-            btnPic.InitControl(listNewDevice[0]);
-
-            //璁惧澶囨敞
-            string caption = Language.StringByID(R.MyInternationalizationString.uDeviceNote);
-            string deviceName = Common.LocalDevice.Current.GetDeviceMacName(listNewDevice[0]);
-            var btnNote = new FrameCaptionInputControl(caption, deviceName, listview.rowSpace / 2);
-            btnNote.txtInput.MaxByte = 48;//闄愬埗鍙兘杈撳叆48涓瓧鑺�
-            listview.AddChidren(btnNote);
-            btnNote.InitControl();
-            //鍒掔嚎
-            btnNote.AddBottomLine();
-            btnNote.txtInput.FinishInputEvent += () =>
-            {
-                string oldName = Common.LocalDevice.Current.GetDeviceMacName(listNewDevice[0]);
-                if (btnNote.Text == string.Empty)
-                {
-                    btnNote.Text = oldName;
-                }
-                if (oldName != btnNote.Text)
-                {
-                    //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
-                    if (Common.Config.Instance.Home.IsShowTemplate == true)
-                    {
-                        return;
-                    }
-                    //淇敼鍚嶅瓧
-                    this.DeviceReName(btnNote.Text, false);
-                }
-            };
-
-            //璁惧绫诲瀷
-            caption = Language.StringByID(R.MyInternationalizationString.uDeviceType);
-            deviceName = Common.LocalDevice.Current.GetDeviceObjectText(listNewDevice);
-            var btnType = new FrameCaptionViewControl(caption, deviceName, listview.rowSpace / 2);
-            btnType.UseClickStatu = false;
-            listview.AddChidren(btnType);
-            btnType.InitControl();
-            //鍒掔嚎
-            btnType.AddBottomLine();
-
-            //瀹夎浣嶇疆
-            var rowBeloneArea = new BelongAreaControl(listview.rowSpace / 2);
-            listview.AddChidren(rowBeloneArea);
-            rowBeloneArea.InitControl(Language.StringByID(R.MyInternationalizationString.uInstallationLocation), this.listNewDevice);
-            //搴曠嚎
-            rowBeloneArea.AddBottomLine();
-            //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
-            if (Common.Config.Instance.Home.IsShowTemplate == true)
-            {
-                rowBeloneArea.CanClick = false;
-            }
-
-            var listCheck = new List<string>();
-            rowBeloneArea.SelectRoomEvent += (roomKeys) =>
-            {
-                //閫夋嫨鏈垎閰嶆椂,娓呯┖
-                if (roomKeys == string.Empty) { listCheck = new List<string>(); }
-                foreach (var device in this.listNewDevice)
-                {
-                    if (device is OTADevice)
-                    {
-                        //閽堝鍗曠函鍙湁涓�涓�200绔偣鐨勮澶�
-                        continue;
-                    }
-                    if (roomKeys == string.Empty)
-                    {
-                        //濡傛灉閫夋嫨鐨勬槸鏈垎閰嶏紝鍒欏畠鐨勫叏閮ㄥ洖璺棤鏉′欢鍏ㄩ儴娓呯┖鎴块棿
-                        HdlRoomLogic.Current.ChangedRoom(device, roomKeys);
-                        continue;
-                    }
-                    var room = HdlRoomLogic.Current.GetRoomByDevice(device);
-                    string mainKeys = LocalDevice.Current.GetDeviceMainKeys(device);
-                    if (room == null)
-                    {
-                        //杩欓噷鏈夌偣鐗规畩,濡傛灉鍥炶矾娌℃湁璁剧疆鏈夊尯鍩熺殑鏃跺��,鎵嶈缃�
-                        listCheck.Add(mainKeys);
-                        HdlRoomLogic.Current.ChangedRoom(device, roomKeys);
-                    }
-                    else if (this.deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir
-                      && device.Type == DeviceType.FreshAir)
-                    {
-                        //鏂伴闈㈡澘鐨勬柊椋庤澶囷紝鍒欏尯鍩熻窡鐫�妯″潡涓�璧�
-                        HdlRoomLogic.Current.ChangedRoom(device, roomKeys);
-                    }
-                    else if (listCheck.Contains(mainKeys) == true)
-                    {
-                        //濡傛灉杩欎釜鍥炶矾涔嬪墠閮借繕娌℃湁鍖哄煙,鍦ㄦ湰鐣岄潰杩樻病鏈夊叧闂箣鍓�,鍙互鏃犳潯浠堕殢渚垮彉鏇�
-                        HdlRoomLogic.Current.ChangedRoom(device, roomKeys);
-                    }
-                }
-                //淇濆瓨璁惧鎴块棿绱㈠紩
-                Common.LocalDevice.Current.SaveRealDeviceRoomId(this.listNewDevice, roomKeys);
-            };
-
-            //娣诲姞鍏ㄩ儴鑿滃崟
-            this.AddAllMenuRow();
-
-            //鍒濆鍖栨甯冨畬鎴�
-            tableContr.FinishInitControl();
-            tableContr = null;
-
-            //淇濆瓨
-            var btnFinish = new BottomClickButton();
-            btnFinish.TextID = R.MyInternationalizationString.uSave;
-            bodyFrameLayout.AddChidren(btnFinish);
-            btnFinish.ButtonClickEvent += (sender, e) =>
-            {
-                string oldName = Common.LocalDevice.Current.GetDeviceMacName(listNewDevice[0]);
-                if (btnNote.Text.Trim() == string.Empty)
-                {
-                    btnNote.Text = oldName;
-                }
-                if (oldName != btnNote.Text.Trim())
-                {
-                    //淇敼鍚嶅瓧
-                    this.DeviceReName(btnNote.Text.Trim(), true);
-                }
-                else
-                {
-                    //鍏抽棴鑷韩
-                    this.CloseForm();
-                }
-            };
-            //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
-            if (Common.Config.Instance.Home.IsShowTemplate == true)
-            {
-                for (int i = 0; i < listview.ChildrenCount; i++)
-                {
-                    var myRow = listview.GetChildren(i) as FrameRowControl;
-                    if (myRow != null)
-                    {
-                        myRow.UseClickStatu = false;
-                        myRow.CanClick = false;
-                    }
-                }
-            }
-        }
-
-        #endregion
-
-        #region 鈻� 娣诲姞鑿滃崟___________________________
-
-        /// <summary>
-        /// 娣诲姞鍏ㄩ儴鑿滃崟
-        /// </summary>
-        private void AddAllMenuRow()
-        {
-            if (deviceEnumInfo.BeloneType == DeviceBeloneType.A鏅鸿兘闂ㄩ攣)
-            {
-                //鍙湁鏄渤涓滅殑璁惧鐨勬椂鍊�
-                if (deviceEnumInfo.IsHdlDevice == true)
-                {
-                    //娣诲姞銆愮敤鎴风鐞嗐�戣
-                    this.AddUserManageRow();
-                    //娣诲姞銆愯繙绋嬪紑閿併�戣
-                    this.AddRemoteUnLocksRow();
-                    //娣诲姞銆愰棬閿佹椂闂淬�戣
-                    this.AddDoorLocksTimeRow();
-                }
-            }
-            else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.AirConditioner_ZbGateway)
-            {
-                //娣诲姞銆愬鍐呮満璁剧疆銆戣(绌鸿皟涓撶敤)
-                this.AddIndoorUnitSettionRow();
-            }
-            else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleMultifunction)
-            {
-                //绠�绾﹀鍔熻兘闈㈡澘                 
-                this.AddIBindRow(deviceMacTemp);
-                this.AddProximitySensorsRow(deviceMacTemp);
-                this.AddFunctionSettionRow();
-                this.AddHumiditySourceRow(deviceMacTemp);
-                this.AddTemperatureSensorRow(deviceMacTemp);
-                this.DataCorrectionRow(deviceMacTemp);
-            }
-            else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleEnvironment)
-            {
-                //娣诲姞銆愮粦瀹氱洰鏍囥�戣(绠�绾︾幆澧冮潰鏉跨敤) 
-                this.AddSimplePanelSettionRow();
-            }
-            else
-            {
-                //娣诲姞銆愬伐浣滄ā寮忋�戣(pir浼犳劅鍣ㄤ笓鐢�)
-                this.AddPirSensorWorkModeRow();
-                //娣诲姞銆愮粦瀹氱洰鏍囥�戣(pir浼犳劅鍣ㄤ笓鐢�)
-                this.AddPirSensorBindRow();
-                //娣诲姞銆愭柟鍚戜笌闄愪綅銆戣(寮�鍚堝笜,鍗峰笜涓撶敤)
-                this.AddDirectionAndLimitRow();
-                //娣诲姞銆愭墜鎷夋帶鍒躲�戣(寮�鍚堝笜涓撶敤)
-                this.AddHandPullControlRow();
-                //娣诲姞銆愭寜閿缃�戣(鏂规偊涓撶敤) --杩欎釜鏈夊彲鑳藉拰闈㈡澘閲嶅彔
-                if (this.AddFangyuePanelSettionRow() == false)
-                {
-                    //娣诲姞銆愭寜閿缃�戣(闈㈡澘涓撶敤)
-                    this.AddPanelSettionRow();
-                }
-                //妫�娴嬭兘鍚︽樉绀哄姛鑳借缃殑鑿滃崟
-                if (this.CheckCanShowFunctionSettionRow() == true)
-                {
-                    //娣诲姞銆愬姛鑳借缃�戣
-                    if (deviceEnumInfo.ConcreteType == DeviceConcreteType.Sensor_PMTwoPointFive)
-                    {
-                        //PM浼犳劅鍣�
-                        this.AddFunctionSettionRowPM();
-                    }
-                    else
-                    {
-                        this.AddFunctionSettionRow();
-                    }
-
-                }
-
-                //娣诲姞銆愬共鎺ョ偣璁剧疆銆戣
-                this.AddDryContactSettionRow();
-            }
-            //娣诲姞銆愬姛鑳界被鍨嬨�戣(绌烘皵寮�鍏充笓鐢�)
-            this.AddAirSwitchFunctionTypeRow();
-            //娣诲姞銆愰�氱敤淇℃伅銆戣
-            this.AddGeneralInformationRow();
-
-            //娣诲姞銆愮┖璋冩ā鍧楃増鏈�(绌鸿皟涓撶敤)銆戣
-            this.AddAirConditionerModelVersionRow();
-
-            if (deviceEnumInfo.IsHdlDevice == true)
-            {
-                //娣诲姞銆愬浐浠跺崌绾с�戣
-                this.AddFirmwareUpdateRow();
-            }
-        }
-
-        #endregion
-
-        #region 鈻� 鐢ㄦ埛绠$悊(闂ㄩ攣)_____________________
-
-        /// <summary>
-        /// 娣诲姞銆愮敤鎴风鐞嗐�戣锛堥棬閿佷笓鐢級
-        /// </summary>
-        private void AddUserManageRow()
-        {
-            //濡傛灉鏄櫤鑳介棬閿�
-            if (deviceEnumInfo.BeloneType == DeviceBeloneType.A鏅鸿兘闂ㄩ攣)
-            {
-                //鐢ㄦ埛绠$悊
-                string caption = Language.StringByID(R.MyInternationalizationString.uUserManage);
-                var btnRow = new FrameRowControl(listview.rowSpace / 2);
-                listview.AddChidren(btnRow);
-                btnRow.AddLeftCaption(caption, 600);
-                //鍚戝彸鍥炬爣
-                btnRow.AddRightArrow();
-                //搴曠嚎
-                btnRow.AddBottomLine();
-                var doorLock = this.listNewDevice[0] as ZigBee.Device.DoorLock;
-                btnRow.ButtonClickEvent += async (sender, e) =>
-                 {
-                     if (UserCenterResourse.UserInfo.AuthorityNo == 1)
-                     {
-                         Action action = null;
-                         Action actionNone = null;
-                         action = () =>
-                         {
-                             var userManagement = new Shared.Phone.UserCenter.DoorLock.UserManagement(doorLock);
-                             Shared.Phone.UserView.HomePage.Instance.AddChidren(userManagement);
-                             Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                             userManagement.Show();
-                         };
-                         actionNone = () =>
-                         {
-                             Shared.Phone.UserCenter.DoorLock.DoorLockCommonLayout.SecurityRequest(doorLock);
-                         };
-                         HdlCheckLogic.Current.CheckSecondarySecurity(action, actionNone);
-                     }
-                     else
-                     {
-                         CommonPage.Loading.Start("");
-                         var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, Shared.Common.Config.Instance.Guid);
-                         if (result == false)
-                         {
-                             Action action = null;
-                             Action actionNone = null;
-                             action = () =>
-                             {
-                                 var userManagement = new Shared.Phone.UserCenter.DoorLock.UserManagement(doorLock);
-                                 Shared.Phone.UserView.HomePage.Instance.AddChidren(userManagement);
-                                 Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                                 userManagement.Show();
-                             };
-                             actionNone = () =>
-                             {
-                                 Shared.Phone.UserCenter.DoorLock.DoorLockCommonLayout.SecurityRequest(doorLock);
-                             };
-                             HdlCheckLogic.Current.CheckSecondarySecurity(action, actionNone);
-
-                         }
-                         else
-                         {
-                             this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AccountIsFreezed));
-                         }
-                         CommonPage.Loading.Hide();
-                     }
-                 };
-            }
-        }
-
-        #endregion
-
-        #region 鈻� 杩滅▼寮�閿�(闂ㄩ攣)_____________________
-
-        /// <summary>
-        /// 娣诲姞銆愯繙绋嬪紑閿併�戣锛堥棬閿佷笓鐢級
-        /// </summary>
-        private void AddRemoteUnLocksRow()
-        {
-            //濡傛灉鏄櫤鑳介棬閿�
-            if (deviceEnumInfo.BeloneType == DeviceBeloneType.A鏅鸿兘闂ㄩ攣)
-            {
-                //杩滅▼寮�閿�
-                string caption = Language.StringByID(R.MyInternationalizationString.uRemoteUnLocks);
-                var btnRow = new FrameRowControl(listview.rowSpace / 2);
-                btnRow.UseClickStatu = false;
-                listview.AddChidren(btnRow);
-                btnRow.AddLeftCaption(caption, 600);
-                //寮�鍏冲浘鏍�
-                var btnswitch = btnRow.AddMostRightSwitchIcon();
-                //搴曠嚎
-                btnRow.AddBottomLine();
-
-                var doorLock = (ZigBee.Device.DoorLock)listNewDevice[0];
-                if (string.IsNullOrEmpty(doorLock.RemoteUnlockPassword) == false)
-                {
-                    btnswitch.IsSelected = true;
-                }
-                //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹呯殑璇�,璁╂墍鏈夎彍鍗曢兘涓嶈兘鐐瑰嚮
-                if (Common.Config.Instance.Home.IsVirtually == true)
-                {
-                    btnswitch.CanClick = false;
-                }
-
-                btnswitch.ButtonClickEvent += async (sender, e) =>
-                 {
-                     if (UserCenterResourse.UserInfo.AuthorityNo == 1)
-                     {
-                         if (btnswitch.IsSelected == true)
-                         {
-                             btnswitch.IsSelected = false;
-                             doorLock.RemoteUnlockPassword = string.Empty;
-                             return;
-                         }
-                         var frame = new DoorLock.DoorLockCommonLayout();
-                         frame.RemotePasswordDialog((ZigBee.Device.DoorLock)listNewDevice[0], btnswitch.btnIcon);
-                         frame = null;
-                     }
-                     else
-                     {
-                         var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, Shared.Common.Config.Instance.Guid);
-                         if (result == false)
-                         {
-                             var result1 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, Shared.Common.Config.Instance.Guid);
-                             if (result1 == true)
-                             {
-                                 if (btnswitch.IsSelected == true)
-                                 {
-                                     btnswitch.IsSelected = false;
-                                     doorLock.RemoteUnlockPassword = string.Empty;
-                                     return;
-                                 }
-                                 var frame = new DoorLock.DoorLockCommonLayout();
-                                 frame.RemotePasswordDialog((ZigBee.Device.DoorLock)listNewDevice[0], btnswitch.btnIcon);
-                                 frame = null;
-                             }
-                             else
-                             {
-                                 this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.NoAccess));
-                             }
-                         }
-                         else
-                         {
-                             this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AccountIsFreezed));
-                         }
-                     }
-                 };
-            }
-        }
-
-        #endregion
-
-        #region 鈻� 闂ㄩ攣鏃堕棿(闂ㄩ攣)_____________________
-
-        /// <summary>
-        /// 娣诲姞銆愰棬閿佹椂闂淬�戣锛堥棬閿佷笓鐢級
-        /// </summary>
-        private void AddDoorLocksTimeRow()
-        {
-            //濡傛灉鏄櫤鑳介棬閿�
-            if (deviceEnumInfo.BeloneType == DeviceBeloneType.A鏅鸿兘闂ㄩ攣)
-            {
-                //闂ㄩ攣鏃堕棿
-                string caption = Language.StringByID(R.MyInternationalizationString.uDoorLocksTime);
-                var btnRow = new FrameRowControl(listview.rowSpace / 2);
-                listview.AddChidren(btnRow);
-                btnRow.AddLeftCaption(caption, 600);
-                //鍚戝彸鍥炬爣
-                btnRow.AddRightArrow();
-                //搴曠嚎
-                btnRow.AddBottomLine();
-                var doorLock = this.listNewDevice[0] as ZigBee.Device.DoorLock;
-                btnRow.ButtonClickEvent += async (sender, e) =>
-                 {
-                     if (UserCenterResourse.UserInfo.AuthorityNo == 1)
-                     {
-                         var tempPage = new Shared.Phone.UserCenter.DoorLock.TimeSettignPage(doorLock, "DoorLockTime");
-                         Shared.Phone.UserView.HomePage.Instance.AddChidren(tempPage);
-                         Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                         tempPage.Show();
-                     }
-                     else
-                     {
-                         var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, Shared.Common.Config.Instance.Guid);
-                         if (result == false)
-                         {
-                             var tempPage = new Shared.Phone.UserCenter.DoorLock.TimeSettignPage(doorLock, "DoorLockTime");
-                             Shared.Phone.UserView.HomePage.Instance.AddChidren(tempPage);
-                             Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                             tempPage.Show();
-                         }
-                         else
-                         {
-                             this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AccountIsFreezed));
-                         }
-                     }
-                 };
-            }
-        }
-
-        #endregion
-
-        #region 鈻� 鎸夐敭璁剧疆(闈㈡澘)_____________________
-
-        /// <summary>
-        /// 娣诲姞銆愭寜閿缃�戣(闈㈡澘)
-        /// </summary>
-        private void AddPanelSettionRow()
-        {
-            //蹇呴』鏄渤涓滆澶�,蹇呴』鏄潰鏉匡紝骞朵笖鏈夊共鎺ョ偣鎵嶈
-            if (deviceEnumInfo.IsHdlDevice == false || deviceEnumInfo.BeloneType != DeviceBeloneType.A鎸夐敭闈㈡澘 || listDeviceType.Contains(DeviceType.OnOffSwitch) == false)
-            {
-                return;
-            }
-            //鎸夐敭璁剧疆
-            string caption = Language.StringByID(R.MyInternationalizationString.uPanelSettion);
-            var btnFunction = new FrameRowControl(listview.rowSpace / 2);
-            listview.AddChidren(btnFunction);
-            btnFunction.AddLeftCaption(caption, 600);
-            //鍚戝彸鍥炬爣
-            btnFunction.AddRightArrow();
-            //搴曠嚎
-            btnFunction.AddBottomLine();
-            btnFunction.ButtonClickEvent += (sender, e) =>
-            {
-                var form = new DevicePanel.PanelButtonSettionForm();
-                form.AddForm(listNewDevice[0]);
-            };
-        }
-
-        #region 鈻� 绠�绾︾幆澧�(闈㈡澘)_____________________
-
-        /// <summary>
-        /// 娣诲姞銆愭寜閿缃�戣绠�绾︾幆澧�(闈㈡澘)
-        /// </summary>
-        private void AddSimplePanelSettionRow()
-        {
-            //鎸夐敭璁剧疆
-            string caption = Language.StringByID(R.MyInternationalizationString.uPanelSettion);
-            var btnFunction = new FrameRowControl(listview.rowSpace / 2);
-            listview.AddChidren(btnFunction);
-            btnFunction.AddLeftCaption(caption, 600);
-            //鍚戝彸鍥炬爣
-            btnFunction.AddRightArrow();
-            //搴曠嚎
-            btnFunction.AddBottomLine();
-            btnFunction.ButtonClickEvent += (sender, e) =>
-            {
-                //绠�绾︾幆澧冮潰鏉跨殑鎸夐敭閰嶇疆
-                var form = new DevicePanel.PanelSettionWithSourceForm();
-                form.AddForm(listNewDevice[0]);
-            };
-        }
-
-        #endregion
-
-        #endregion
-
-        #region 鈻� 鎸夐敭璁剧疆(鏂规偊)_____________________
-
-        /// <summary>
-        /// 娣诲姞銆愭寜閿缃�戣(鏂规偊)
-        /// </summary>
-        private bool AddFangyuePanelSettionRow()
-        {
-            if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueTwo
-                || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFour
-                || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEight
-                || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEnvironment
-                || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir)
-            {
-                //鎸夐敭璁剧疆
-                string caption = Language.StringByID(R.MyInternationalizationString.uPanelSettion);
-                var btnFunction = new FrameRowControl(listview.rowSpace / 2);
-                listview.AddChidren(btnFunction);
-                btnFunction.AddLeftCaption(caption, 600);
-                //鍚戝彸鍥炬爣
-                btnFunction.AddRightArrow();
-                //搴曠嚎
-                btnFunction.AddBottomLine();
-                btnFunction.ButtonClickEvent += (sender, e) =>
-                {
-                    if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueTwo
-                    || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFour
-                    || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEight)
-                    {
-                        //鏂规偊鎸夐敭闈㈡澘[鍗曞紑鍙屾帶/鍙屽紑鍥涙帶/鍥涘紑鍏帶]閰嶇疆
-                        var form = new DevicePanel.PanelFangyueButtonSettionForm();
-                        form.AddForm(listNewDevice[0]);
-                    }
-                    else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEnvironment || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir)
-                    {
-                        //鏂规偊鐜闈㈡澘鐨勬寜閿厤缃�&鏂规偊鏂伴闈㈡澘鐨勬寜閿厤缃�
-                        var form = new DevicePanel.PanelSettionWithSourceForm();
-                        form.AddForm(listNewDevice[0]);
-                    }
-                    else
-                    {
-                        var form = new DevicePanel.PanelFangyueButtonSettionForm();
-                        form.AddForm(listNewDevice[0]);
-                    }
-                };
-                return true;
-            }
-            return false;
-        }
-
-        #endregion
-
-        #region 鈻� 骞叉帴鐐硅缃�(骞叉帴鐐�)_________________
-
-        /// <summary>
-        /// 娣诲姞銆愬共鎺ョ偣璁剧疆銆戣
-        /// </summary>
-        private void AddDryContactSettionRow()
-        {
-            if (this.listDeviceType.Contains(DeviceType.OnOffSwitch) == false)
-            {
-                //蹇呴』鏈変竴璺洖璺槸OnOffSwitch鎵嶈,闈㈡澘鐨勫共鎺ョ偣鐨勮瘽锛屼娇鐢ㄧ殑鏄埆鐨勮彍鍗�
-                return;
-            }
-            if (deviceEnumInfo.IsHdlDevice == true && deviceEnumInfo.BeloneType == DeviceBeloneType.A鎸夐敭闈㈡澘)
-            {
-                //娌充笢鐨勯潰鏉跨殑璇濓紝瀹冩湁鑷繁鐨勯厤缃晫闈�,
-                //濡傛灉鏄涓夋柟璁惧鐨勮瘽锛屼娇鐢ㄦ櫘閫氬共鎺ョ偣鐣岄潰(瀹冭兘浣跨敤缁戝畾鍔熻兘,鏃犺儗鍏夎缃�)
-                return;
-            }
-
-            //骞叉帴鐐硅缃�
-            string caption = Language.StringByID(R.MyInternationalizationString.uDryContactSettion);
-            var btnBackLight = new FrameRowControl(listview.rowSpace / 2);
-            listview.AddChidren(btnBackLight);
-            btnBackLight.AddLeftCaption(caption, 600);
-            //鍚戝彸鍥炬爣
-            btnBackLight.AddRightArrow();
-            //搴曠嚎
-            btnBackLight.AddBottomLine();
-            btnBackLight.ButtonClickEvent += (sender, e) =>
-            {
-                var form = new DeviceDryContactSettionForm();
-                form.AddForm(listNewDevice[0]);
-            };
-        }
-
-        #endregion
-
-        #region 鈻� 宸ヤ綔妯″紡(pir浼犳劅鍣ㄤ笓鐢�)____________
-
-        /// <summary>
-        /// 娣诲姞銆愬伐浣滄ā寮忋�戣(pir浼犳劅鍣ㄤ笓鐢�)
-        /// </summary>
-        private void AddPirSensorWorkModeRow()
-        {
-            if (this.deviceEnumInfo.ConcreteType != DeviceConcreteType.Sensor_Pir
-                || deviceEnumInfo.IsHdlDevice == false)
-            {
-                return;
-            }
-            //宸ヤ綔妯″紡
-            string caption = Language.StringByID(R.MyInternationalizationString.uWorkMode);
-            var btnFunction = new FrameRowControl(listview.rowSpace / 2);
-            listview.AddChidren(btnFunction);
-            btnFunction.AddLeftCaption(caption, 600);
-            //鍚戝彸鍥炬爣
-            btnFunction.AddRightArrow();
-            //搴曠嚎
-            btnFunction.AddBottomLine();
-            btnFunction.ButtonClickEvent += (sender, e) =>
-            {
-                var form = new DevicePirSensor.PirSensorWorkModeMenuForm();
-                form.AddForm((IASZone)this.listNewDevice[0]);
-            };
-        }
-
-        #endregion;
-
-        #region 鈻� 缁戝畾鐩爣(pir浼犳劅鍣ㄤ笓鐢�)____________
-
-        /// <summary>
-        /// 娣诲姞銆愮粦瀹氱洰鏍囥�戣(pir浼犳劅鍣ㄤ笓鐢�)
-        /// </summary>
-        private void AddPirSensorBindRow()
-        {
-            if (this.deviceEnumInfo.ConcreteType != DeviceConcreteType.Sensor_Pir)
-            {
-                return;
-            }
-            //缁戝畾鐩爣
-            string caption = Language.StringByID(R.MyInternationalizationString.uBindTargets);
-            var btnFunction = new FrameRowControl(listview.rowSpace / 2);
-            listview.AddChidren(btnFunction);
-            btnFunction.AddLeftCaption(caption, 600);
-            //鍚戝彸鍥炬爣
-            btnFunction.AddRightArrow();
-            //搴曠嚎
-            btnFunction.AddBottomLine();
-            btnFunction.ButtonClickEvent += (sender, e) =>
-            {
-                var form = new DevicePirSensor.PirSensorBindTargetSettionForm();
-                form.AddForm((IASZone)this.listNewDevice[0]);
-            };
-        }
-
-        #endregion;
-
-        #region 鈻� 鍔熻兘璁剧疆(閫氱敤)_____________________
-
-        /// <summary>
-        /// 娣诲姞銆愬姛鑳借缃�戣
-        /// </summary>
-        private void AddFunctionSettionRow()
-        {
-            //鍙湁鍥炶矾鏁板ぇ浜�1鎵嶈兘鏈夎繖涓彍鍗�
-            if (Common.LocalDevice.Current.GetDevicesCountByMac(listNewDevice[0].DeviceAddr) == 1)
-            {
-                //鏂伴灏忔ā鍧楀彧鏈変竴涓洖璺紝浣嗚姹傛柊椋庡皬妯″潡鐨勬柊椋庢湁鍔熻兘璁剧疆
-                if (deviceEnumInfo.ConcreteType != DeviceConcreteType.Relay_FangyueFreshAirModul)
-                {
-                    return;
-                }
-            }
-            if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEnvironment
-                || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir)
-            {
-                //鐜闈㈡澘娌℃湁鍔熻兘璁剧疆
-                return;
-            }
-
-            //2020.03.06鏂拌拷鍔狅細濡傛灉鍏ㄩ儴閮芥槸骞叉帴鐐圭殑璇�,涔熶笉鑳芥湁杩欎釜涓滆タ
-            int dryContactCount = 0;
-            for (int i = 0; i < listNewDevice.Count; i++)
-            {
-                if (listNewDevice[i].Type == DeviceType.OnOffSwitch)
-                {
-                    dryContactCount++;
-                }
-            }
-            if (listNewDevice.Count == dryContactCount)
-            {
-                //杩欎釜璁惧鍏ㄦ槸骞叉帴鐐�
-                return;
-            }
-
-            //鍔熻兘璁剧疆
-            string caption = Language.StringByID(R.MyInternationalizationString.uFunctionSettingUp);
-            var btnFunction = new FrameRowControl(listview.rowSpace / 2);
-            listview.AddChidren(btnFunction);
-            btnFunction.AddLeftCaption(caption, 600);
-            //鍚戝彸鍥炬爣
-            btnFunction.AddRightArrow();
-            //搴曠嚎
-            btnFunction.AddBottomLine();
-            btnFunction.ButtonClickEvent += (sender, e) =>
-            {
-                //鏂规偊闈㈡澘
-                if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueTwo
-                    || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFour
-                    || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEight)
-                {
-                    var form = new DevicePanel.PanelFangyueFunctionSettionForm();
-                    form.AddForm(listNewDevice[0], deviceEnumInfo);
-                }
-                //绠�绾﹀鍔熻兘闈㈡澘
-                else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleMultifunction)
-                {
-                    var form = new DeviceFunctionSettionForm();
-                    foreach (var dev in listNewDevice)
-                    {
-                        if (dev.Type == DeviceType.OnOffOutput && dev.DeviceEpoint == 62)
-                        {
-                            form.AddForm(dev, true);
-                        }
-                    }
+    /// <summary>
+    /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+    /// </summary>
+    /// <param name="deviceMac">璁惧mac鍦板潃</param>
+    public void ShowForm(string deviceMac)
+    {
+      this.listNewDevice = Common.LocalDevice.Current.GetDevicesByMac(deviceMac);
+      if (listNewDevice.Count == 0)
+      {
+        //閽堝鍗曠函鍙湁涓�涓�200绔偣鐨勮澶�
+        listNewDevice.Add(Common.LocalDevice.Current.GetOTADevice(deviceMac));
+      }
+      this.listDeviceType.Clear();
+      deviceMacTemp = deviceMac;
+      foreach (var device in listNewDevice)
+      {
+        //鏀堕泦璁惧绫诲瀷
+        this.listDeviceType.Add(device.Type);
+      }
+      //鑾峰彇杩欎竴鍫嗚澶囨椂灞炰簬浠�涔堢被鍨嬬殑
+      this.deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listNewDevice);
 
-                }
-                //娌充笢鐨勯潰鏉胯澶�
-                else if (deviceEnumInfo.BeloneType == DeviceBeloneType.A鎸夐敭闈㈡澘 && deviceEnumInfo.IsHdlDevice == true)
-                {
-                    var form = new DevicePanel.PanelFunctionSettionForm();
-                    form.AddForm(listNewDevice[0]);
-                }
-                else
-                {
-                    var form = new DeviceFunctionSettionForm();
-                    form.AddForm(listNewDevice[0], false);
-                }
-            };
-        }
-
-        /// <summary>
-        /// 娣诲姞浼犳劅鍣ㄣ�愬姛鑳借缃�戣
-        /// </summary>
-        private void AddFunctionSettionRowPM()
-        {
-            //鍔熻兘璁剧疆
-            string caption = Language.StringByID(R.MyInternationalizationString.uFunctionSettingUp);
-            var btnFunction = new FrameRowControl(listview.rowSpace / 2);
-            listview.AddChidren(btnFunction);
-            btnFunction.AddLeftCaption(caption, 600);
-            //鍚戝彸鍥炬爣
-            btnFunction.AddRightArrow();
-            //搴曠嚎
-            btnFunction.AddBottomLine();
-            btnFunction.ButtonClickEvent += (sender, e) =>
-            {
-                var form = new DeviceFunctionSettionForm();
-                form.AddForm(listNewDevice[0], false);
-            };
-        }
-
-        #endregion;
-
-        #region 鈻� 鏂瑰悜涓庨檺浣�(绐楀笜)___________________
-
-        /// <summary>
-        /// 娣诲姞銆愭柟鍚戜笌闄愪綅銆戣(绐楀笜涓撶敤)
-        /// </summary>
-        private void AddDirectionAndLimitRow()
-        {
-            if (deviceEnumInfo.BeloneType != DeviceBeloneType.A绐楀笜)
-            {
-                return;
-            }
-            var deviceCurtain = (Rollershade)this.listNewDevice[0];
-            if (deviceCurtain.WcdType != 4 && deviceCurtain.WcdType != 0)
-            {
-                //寮�鍚堝笜,鍗峰笜涓撶敤
-                return;
-            }
-
-            //鏂瑰悜涓庨檺浣�
-            string caption = Language.StringByID(R.MyInternationalizationString.uDirectionAndLimit);
-            var btnFunction = new FrameRowControl(listview.rowSpace / 2);
-            listview.AddChidren(btnFunction);
-            btnFunction.AddLeftCaption(caption, 600);
-            //鍚戝彸鍥炬爣
-            btnFunction.AddRightArrow();
-            //搴曠嚎
-            btnFunction.AddBottomLine();
-            btnFunction.ButtonClickEvent += (sender, e) =>
-            {
-                if (deviceCurtain.WcdType == 4)
-                {
-                    var form = new DeviceCurtain.AutoOpenDirectionAndLimitSettionForm();
-                    form.AddForm(deviceCurtain);
-                }
-                else if (deviceCurtain.WcdType == 0)
-                {
-                    var form = new DeviceCurtain.SiphonateDirectionAndLimitSettionForm();
-                    form.AddForm(deviceCurtain);
-                }
-            };
-        }
-
-        #endregion;
-
-        #region 鈻� 鎵嬫媺鎺у埗(寮�鍚堝笜)___________________
-
-        /// <summary>
-        /// 娣诲姞銆愭墜鎷夋帶鍒躲�戣(寮�鍚堝笜涓撶敤)
-        /// </summary>
-        private void AddHandPullControlRow()
-        {
-            if (deviceEnumInfo.BeloneType != DeviceBeloneType.A绐楀笜)
-            {
-                return;
-            }
-            var deviceCurtain = (Rollershade)this.listNewDevice[0];
-            if (deviceCurtain.WcdType != 4)
-            {
-                //寮�鍚堝笜涓撶敤
-                return;
-            }
-
-            //鎵嬫媺鎺у埗
-            string caption = Language.StringByID(R.MyInternationalizationString.uHandPullControl);
-            var btnFunction = new FrameRowControl(listview.rowSpace / 2);
-            btnFunction.UseClickStatu = false;
-            listview.AddChidren(btnFunction);
-            btnFunction.AddLeftCaption(caption, 600);
-            //寮�鍏冲浘鏍�
-            var btnSwitch = btnFunction.AddMostRightSwitchIcon();
-            //搴曠嚎
-            btnFunction.AddBottomLine();
-            btnSwitch.ButtonClickEvent += (sender, e) =>
-            {
-                //鍒囨崲妯″紡
-                bool statu = !btnSwitch.IsSelected;
-                var result = HdlDeviceCurtainLogic.Current.SetHandPullControl(deviceCurtain, statu);
-                if (result == true)
-                {
-                    btnSwitch.IsSelected = statu;
-                }
-            };
-            //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
-            if (Common.Config.Instance.Home.IsShowTemplate == true)
-            {
-                btnSwitch.CanClick = false;
-                btnSwitch.IsSelected = TemplateData.TemplateDeviceDataLogic.Current.GetCurtainHandPullControl(deviceCurtain);
-                return;
-            }
-            //濡傛灉鏄櫄鎷熶綇瀹�
-            if (Common.Config.Instance.Home.IsVirtually == true)
-            {
-                btnSwitch.IsSelected = TemplateData.TemplateDeviceDataLogic.Current.GetCurtainHandPullControl(deviceCurtain);
-                return;
-            }
-
-            //娣诲姞灞炴�т笂鎶ョ洃鍚�
-            string mainkeys = LocalDevice.Current.GetDeviceMainKeys(this.listNewDevice[0]);
-            HdlGatewayReceiveLogic.Current.AddAttributeEvent("HandPullControl", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (device) =>
-            {
-                string checkKey = LocalDevice.Current.GetDeviceMainKeys(device);
-                if (mainkeys != checkKey || device.DeviceStatusReport.CluterID != 258)
-                {
-                    return;
-                }
-                foreach (var attriBute in device.DeviceStatusReport.AttriBute)
-                {
-                    if (attriBute.AttributeId == 23)
-                    {
-                        //鎵嬫媺鎺у埗
-                        if (0 < (attriBute.AttriButeData & 0x04))
-                        {
-                            HdlThreadLogic.Current.RunMain(() =>
-                            {
-                                btnSwitch.IsSelected = true;
-                            });
-                        }
-                    }
-                }
-            });
-            //鍙戦�佸懡浠�
-            deviceCurtain.ReadCurtainDirectionAndMode();
-        }
-
-        #endregion;
-
-        #region 鈻� 瀹ゅ唴鏈鸿缃�(绌鸿皟)___________________
-
-        /// <summary>
-        /// 娣诲姞銆愬鍐呮満璁剧疆銆戣(绌鸿皟涓撶敤)
-        /// </summary>
-        private void AddIndoorUnitSettionRow()
-        {
-            if (this.deviceEnumInfo.ConcreteType != DeviceConcreteType.AirConditioner_ZbGateway
-                || this.listNewDevice[0] is OTADevice)//杩藉姞锛氬崟绾彧鏈�200绔偣鐨勮瘽锛屼笉鏄剧ず杩欎釜鑿滃崟
-            {
-                return;
-            }
-
-            //瀹ゅ唴鏈鸿缃�
-            string caption = Language.StringByID(R.MyInternationalizationString.uIndoorUnitSettion);
-            var btnFunction = new FrameRowControl(listview.rowSpace / 2);
-            listview.AddChidren(btnFunction);
-            btnFunction.AddLeftCaption(caption, 600);
-            //鍚戝彸鍥炬爣
-            btnFunction.AddRightArrow();
-            //搴曠嚎
-            btnFunction.AddBottomLine();
-            btnFunction.ButtonClickEvent += (sender, e) =>
-            {
-                var form = new DeviceAirConditioner.IndoorUnitListForm();
-                form.AddForm(listNewDevice[0].DeviceAddr);
-            };
-        }
-        #endregion
-
-        #region 鈻� 绠�绾﹀鍔熻兘闈㈡澘鐢╛__________________
-        /// <summary>
-        /// 娣诲姞銆愮粦瀹氱洰鏍囥�戣
-        /// </summary>
-        private void AddIBindRow(string deviceMac)
-        {
-            string bindTargets = Language.StringByID(R.MyInternationalizationString.uBindTargets);
-            var btnBindTargets = new FrameRowControl(listview.rowSpace / 2);
-            listview.AddChidren(btnBindTargets);
-            btnBindTargets.AddLeftCaption(bindTargets, 600);
-            //鍚戝彸鍥炬爣
-            btnBindTargets.AddRightArrow();
-            //搴曠嚎
-            btnBindTargets.AddBottomLine();
-            btnBindTargets.ButtonClickEvent += (sender, e) =>
-            {
-                var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 32);//绠�绾﹂潰鏉块殢渚夸竴涓寜閿潵鑾峰彇璁惧
-                if (dev != null)
-                {
-                    var curControlDev = dev as Panel;
-                    var simpleMutilfunctionTargetsPage = new Shared.Phone.UserCenter.DeviceBind.PanelSimpleMutilfunctionTargetsForm(curControlDev);
-                    Shared.Phone.UserView.HomePage.Instance.AddChidren(simpleMutilfunctionTargetsPage);
-                    Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                    simpleMutilfunctionTargetsPage.Show();
-                }
-            };
-        }
-
-        #region 鈻� 鎺ヨ繎鎰熷簲___________________________
-
-        /// <summary>
-        /// 鎺ヨ繎鎰熷簲琛�
-        /// </summary>
-        private void AddProximitySensorsRow(string deviceMac)
-        {
-            string proximity = Language.StringByID(R.MyInternationalizationString.ProximitySensors);
-            var proximitySensors = new FrameRowControl(listview.rowSpace / 2);
-            listview.AddChidren(proximitySensors);
-            proximitySensors.AddLeftCaption(proximity, 400);
-
-            //鎺ヨ繎鎰熷簲
-            proximitySensors.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.ProximitySensors), 400);
-            //寮�鍏虫帶浠�
-            var btnSwitch = proximitySensors.AddMostRightSwitchIcon();
-            //搴曠嚎
-            proximitySensors.AddBottomLine();
-
-            btnSwitch.ButtonClickEvent += async (sender, e) =>
+      //璁剧疆鏍囬淇℃伅
+      base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uDeviceSettion));
+
+      //鍒濆鍖栧彸涓婅鑿滃崟
+      this.InitTopRightMenu();
+
+      //鍒濆鍖栦腑閮ㄦ帶浠�
+      this.InitMiddleFrame();
+
+      //閲嶆柊鑾峰彇纭欢淇℃伅
+      this.RefreshHardFirmwareInfo();
+
+      //绠�绾﹀鍔熻兘闈㈡澘鑾峰彇缁戝畾鐩爣鐨勬樉绀�
+      if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleMultifunction)
+      {
+        //绠�绾﹂潰鏉块殢渚夸竴涓洖璺潵鑾峰彇璁惧淇℃伅
+        var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 62);
+        if (dev != null)
+        {
+          var key = new ZigBee.Device.Panel();
+          key.DeviceAddr = deviceMac;
+          key.CurrentGateWayId = dev.CurrentGateWayId;
+          InitBindInfo(key);
+        }
+      }
+    }
+
+    /// <summary>
+    /// 鍒濆鍖栦腑閮ㄦ帶浠�
+    /// </summary>
+    private void InitMiddleFrame()
+    {
+      //娓呯┖bodyFrame
+      this.ClearBodyFrame();
+
+      var listBackControl = new VerticalFrameControl();
+      listBackControl.Height = bodyFrameLayout.Height;
+      bodyFrameLayout.AddChidren(listBackControl);
+
+      //鍒濆鍖栨甯�
+      var tableContr = new InformationEditorControl();
+      this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uInfoEditor), 1368);
+
+      //鍥剧墖
+      var btnPic = new DeviceInfoIconControl();
+      btnPic.Y = Application.GetRealHeight(92);
+      btnPic.Gravity = Gravity.CenterHorizontal;
+      listBackControl.frameTable.AddChidren(btnPic);
+      btnPic.InitControl(listNewDevice[0]);
+
+      //璁惧澶囨敞
+      string caption = Language.StringByID(R.MyInternationalizationString.uDeviceNote);
+      string deviceName = Common.LocalDevice.Current.GetDeviceMacName(listNewDevice[0]);
+      var btnNote = new FrameCaptionInputControl(caption, deviceName, listview.rowSpace / 2);
+      btnNote.txtInput.MaxByte = 48;//闄愬埗鍙兘杈撳叆48涓瓧鑺�
+      listview.AddChidren(btnNote);
+      btnNote.InitControl();
+      //鍒掔嚎
+      btnNote.AddBottomLine();
+      btnNote.txtInput.FinishInputEvent += () =>
+      {
+        string oldName = Common.LocalDevice.Current.GetDeviceMacName(listNewDevice[0]);
+        if (btnNote.Text == string.Empty)
+        {
+          btnNote.Text = oldName;
+        }
+        if (oldName != btnNote.Text)
+        {
+          //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
+          if (Common.Config.Instance.Home.IsShowTemplate == true)
+          {
+            return;
+          }
+          //淇敼鍚嶅瓧
+          this.DeviceReName(btnNote.Text, false);
+        }
+      };
+
+      //璁惧绫诲瀷
+      caption = Language.StringByID(R.MyInternationalizationString.uDeviceType);
+      deviceName = Common.LocalDevice.Current.GetDeviceObjectText(listNewDevice);
+      var btnType = new FrameCaptionViewControl(caption, deviceName, listview.rowSpace / 2);
+      btnType.UseClickStatu = false;
+      listview.AddChidren(btnType);
+      btnType.InitControl();
+      //鍒掔嚎
+      btnType.AddBottomLine();
+
+      //瀹夎浣嶇疆
+      var rowBeloneArea = new BelongAreaControl(listview.rowSpace / 2);
+      listview.AddChidren(rowBeloneArea);
+      rowBeloneArea.InitControl(Language.StringByID(R.MyInternationalizationString.uInstallationLocation), this.listNewDevice);
+      //搴曠嚎
+      rowBeloneArea.AddBottomLine();
+      //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
+      if (Common.Config.Instance.Home.IsShowTemplate == true)
+      {
+        rowBeloneArea.CanClick = false;
+      }
+
+      var listCheck = new List<string>();
+      rowBeloneArea.SelectRoomEvent += (roomKeys) =>
+      {
+        //閫夋嫨鏈垎閰嶆椂,娓呯┖
+        if (roomKeys == string.Empty) { listCheck = new List<string>(); }
+        foreach (var device in this.listNewDevice)
+        {
+          if (device is OTADevice)
+          {
+            //閽堝鍗曠函鍙湁涓�涓�200绔偣鐨勮澶�
+            continue;
+          }
+          if (roomKeys == string.Empty)
+          {
+            //濡傛灉閫夋嫨鐨勬槸鏈垎閰嶏紝鍒欏畠鐨勫叏閮ㄥ洖璺棤鏉′欢鍏ㄩ儴娓呯┖鎴块棿
+            HdlRoomLogic.Current.ChangedRoom(device, roomKeys);
+            continue;
+          }
+          var room = HdlRoomLogic.Current.GetRoomByDevice(device);
+          string mainKeys = LocalDevice.Current.GetDeviceMainKeys(device);
+          if (room == null)
+          {
+            //杩欓噷鏈夌偣鐗规畩,濡傛灉鍥炶矾娌℃湁璁剧疆鏈夊尯鍩熺殑鏃跺��,鎵嶈缃�
+            listCheck.Add(mainKeys);
+            HdlRoomLogic.Current.ChangedRoom(device, roomKeys);
+          }
+          else if (this.deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir
+                  && device.Type == DeviceType.FreshAir)
+          {
+            //鏂伴闈㈡澘鐨勬柊椋庤澶囷紝鍒欏尯鍩熻窡鐫�妯″潡涓�璧�
+            HdlRoomLogic.Current.ChangedRoom(device, roomKeys);
+          }
+          else if (listCheck.Contains(mainKeys) == true)
+          {
+            //濡傛灉杩欎釜鍥炶矾涔嬪墠閮借繕娌℃湁鍖哄煙,鍦ㄦ湰鐣岄潰杩樻病鏈夊叧闂箣鍓�,鍙互鏃犳潯浠堕殢渚垮彉鏇�
+            HdlRoomLogic.Current.ChangedRoom(device, roomKeys);
+          }
+        }
+        //淇濆瓨璁惧鎴块棿绱㈠紩
+        Common.LocalDevice.Current.SaveRealDeviceRoomId(this.listNewDevice, roomKeys);
+      };
+
+      //娣诲姞鍏ㄩ儴鑿滃崟
+      this.AddAllMenuRow();
+
+      //鍒濆鍖栨甯冨畬鎴�
+      tableContr.FinishInitControl();
+      tableContr = null;
+
+      //淇濆瓨
+      var btnFinish = new BottomClickButton();
+      btnFinish.TextID = R.MyInternationalizationString.uSave;
+      bodyFrameLayout.AddChidren(btnFinish);
+      btnFinish.ButtonClickEvent += (sender, e) =>
+      {
+        string oldName = Common.LocalDevice.Current.GetDeviceMacName(listNewDevice[0]);
+        if (btnNote.Text.Trim() == string.Empty)
+        {
+          btnNote.Text = oldName;
+        }
+        if (oldName != btnNote.Text.Trim())
+        {
+          //淇敼鍚嶅瓧
+          this.DeviceReName(btnNote.Text.Trim(), true);
+        }
+        else
+        {
+          //鍏抽棴鑷韩
+          this.CloseForm();
+        }
+      };
+      //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
+      if (Common.Config.Instance.Home.IsShowTemplate == true)
+      {
+        for (int i = 0; i < listview.ChildrenCount; i++)
+        {
+          var myRow = listview.GetChildren(i) as FrameRowControl;
+          if (myRow != null)
+          {
+            myRow.UseClickStatu = false;
+            myRow.CanClick = false;
+          }
+        }
+      }
+    }
+
+    #endregion
+
+    #region 鈻� 娣诲姞鑿滃崟___________________________
+
+    /// <summary>
+    /// 娣诲姞鍏ㄩ儴鑿滃崟
+    /// </summary>
+    private void AddAllMenuRow()
+    {
+      if (deviceEnumInfo.BeloneType == DeviceBeloneType.A鏅鸿兘闂ㄩ攣)
+      {
+        //鍙湁鏄渤涓滅殑璁惧鐨勬椂鍊�
+        if (deviceEnumInfo.IsHdlDevice == true)
+        {
+          //娣诲姞銆愮敤鎴风鐞嗐�戣
+          this.AddUserManageRow();
+          //娣诲姞銆愯繙绋嬪紑閿併�戣
+          this.AddRemoteUnLocksRow();
+          //娣诲姞銆愰棬閿佹椂闂淬�戣
+          this.AddDoorLocksTimeRow();
+        }
+      }
+      else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.AirConditioner_ZbGateway)
+      {
+        //娣诲姞銆愬鍐呮満璁剧疆銆戣(绌鸿皟涓撶敤)
+        this.AddIndoorUnitSettionRow();
+      }
+      else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleMultifunction)
+      {
+        //绠�绾﹀鍔熻兘闈㈡澘                 
+        this.AddIBindRow(deviceMacTemp);
+        this.AddProximitySensorsRow(deviceMacTemp);
+        this.AddFunctionSettionRow();
+        this.AddHumiditySourceRow(deviceMacTemp);
+        this.AddTemperatureSensorRow(deviceMacTemp);
+        this.DataCorrectionRow(deviceMacTemp);
+      }
+      else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleEnvironment)
+      {
+        //娣诲姞銆愮粦瀹氱洰鏍囥�戣(绠�绾︾幆澧冮潰鏉跨敤) 
+        this.AddSimplePanelSettionRow();
+      }
+      else
+      {
+        //娣诲姞銆愬伐浣滄ā寮忋�戣(pir浼犳劅鍣ㄤ笓鐢�)
+        this.AddPirSensorWorkModeRow();
+        //娣诲姞銆愮粦瀹氱洰鏍囥�戣(pir浼犳劅鍣ㄤ笓鐢�)
+        this.AddPirSensorBindRow();
+        //娣诲姞銆愭柟鍚戜笌闄愪綅銆戣(寮�鍚堝笜,鍗峰笜涓撶敤)
+        this.AddDirectionAndLimitRow();
+        //娣诲姞銆愭墜鎷夋帶鍒躲�戣(寮�鍚堝笜涓撶敤)
+        this.AddHandPullControlRow();
+        //娣诲姞銆愭寜閿缃�戣(鏂规偊涓撶敤) --杩欎釜鏈夊彲鑳藉拰闈㈡澘閲嶅彔
+        if (this.AddFangyuePanelSettionRow() == false)
+        {
+          //娣诲姞銆愭寜閿缃�戣(闈㈡澘涓撶敤)
+          this.AddPanelSettionRow();
+        }
+        //妫�娴嬭兘鍚︽樉绀哄姛鑳借缃殑鑿滃崟
+        if (this.CheckCanShowFunctionSettionRow() == true)
+        {
+          //娣诲姞銆愬姛鑳借缃�戣
+          if (deviceEnumInfo.ConcreteType == DeviceConcreteType.Sensor_PMTwoPointFive)
+          {
+            //PM浼犳劅鍣�
+            this.AddFunctionSettionRowPM();
+          }
+          else
+          {
+            this.AddFunctionSettionRow();
+          }
+
+        }
+
+        //娣诲姞銆愬共鎺ョ偣璁剧疆銆戣
+        this.AddDryContactSettionRow();
+      }
+      //娣诲姞銆愬姛鑳界被鍨嬨�戣(绌烘皵寮�鍏充笓鐢�)
+      this.AddAirSwitchFunctionTypeRow();
+      //娣诲姞銆愰�氱敤淇℃伅銆戣
+      this.AddGeneralInformationRow();
+
+      //娣诲姞銆愮┖璋冩ā鍧楃増鏈�(绌鸿皟涓撶敤)銆戣
+      this.AddAirConditionerModelVersionRow();
+
+      if (deviceEnumInfo.IsHdlDevice == true)
+      {
+        //娣诲姞銆愬浐浠跺崌绾с�戣
+        this.AddFirmwareUpdateRow();
+      }
+    }
+
+    #endregion
+
+    #region 鈻� 鐢ㄦ埛绠$悊(闂ㄩ攣)_____________________
+
+    /// <summary>
+    /// 娣诲姞銆愮敤鎴风鐞嗐�戣锛堥棬閿佷笓鐢級
+    /// </summary>
+    private void AddUserManageRow()
+    {
+      //濡傛灉鏄櫤鑳介棬閿�
+      if (deviceEnumInfo.BeloneType == DeviceBeloneType.A鏅鸿兘闂ㄩ攣)
+      {
+        //鐢ㄦ埛绠$悊
+        string caption = Language.StringByID(R.MyInternationalizationString.uUserManage);
+        var btnRow = new FrameRowControl(listview.rowSpace / 2);
+        listview.AddChidren(btnRow);
+        btnRow.AddLeftCaption(caption, 600);
+        //鍚戝彸鍥炬爣
+        btnRow.AddRightArrow();
+        //搴曠嚎
+        btnRow.AddBottomLine();
+        var doorLock = this.listNewDevice[0] as ZigBee.Device.DoorLock;
+        btnRow.ButtonClickEvent += async (sender, e) =>
+         {
+           if (UserCenterResourse.UserInfo.AuthorityNo == 1)
+           {
+             Action action = null;
+             Action actionNone = null;
+             action = () =>
+                     {
+                       var userManagement = new Shared.Phone.UserCenter.DoorLock.UserManagement(doorLock);
+                       Shared.Phone.UserView.HomePage.Instance.AddChidren(userManagement);
+                       Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                       userManagement.Show();
+                     };
+             actionNone = () =>
+                     {
+                       Shared.Phone.UserCenter.DoorLock.DoorLockCommonLayout.SecurityRequest(doorLock);
+                     };
+             HdlCheckLogic.Current.CheckSecondarySecurity(action, actionNone);
+           }
+           else
+           {
+             CommonPage.Loading.Start("");
+             var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, Shared.Common.Config.Instance.Guid);
+             if (result == false)
              {
-                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
-                 proximitySensorsInfo.enable = btnSwitch.IsSelected;
+               Action action = null;
+               Action actionNone = null;
+               action = () =>
+                       {
+                         var userManagement = new Shared.Phone.UserCenter.DoorLock.UserManagement(doorLock);
+                         Shared.Phone.UserView.HomePage.Instance.AddChidren(userManagement);
+                         Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                         userManagement.Show();
+                       };
+               actionNone = () =>
+                       {
+                         Shared.Phone.UserCenter.DoorLock.DoorLockCommonLayout.SecurityRequest(doorLock);
+                       };
+               HdlCheckLogic.Current.CheckSecondarySecurity(action, actionNone);
 
-                 //绠�绾﹂潰鏉块殢渚夸竴涓洖璺潵鑾峰彇璁惧淇℃伅
-                 var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 62);
-                 if (dev != null)
+             }
+             else
+             {
+               this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AccountIsFreezed));
+             }
+             CommonPage.Loading.Hide();
+           }
+         };
+      }
+    }
+
+    #endregion
+
+    #region 鈻� 杩滅▼寮�閿�(闂ㄩ攣)_____________________
+
+    /// <summary>
+    /// 娣诲姞銆愯繙绋嬪紑閿併�戣锛堥棬閿佷笓鐢級
+    /// </summary>
+    private void AddRemoteUnLocksRow()
+    {
+      //濡傛灉鏄櫤鑳介棬閿�
+      if (deviceEnumInfo.BeloneType == DeviceBeloneType.A鏅鸿兘闂ㄩ攣)
+      {
+        //杩滅▼寮�閿�
+        string caption = Language.StringByID(R.MyInternationalizationString.uRemoteUnLocks);
+        var btnRow = new FrameRowControl(listview.rowSpace / 2);
+        btnRow.UseClickStatu = false;
+        listview.AddChidren(btnRow);
+        btnRow.AddLeftCaption(caption, 600);
+        //寮�鍏冲浘鏍�
+        var btnswitch = btnRow.AddMostRightSwitchIcon();
+        //搴曠嚎
+        btnRow.AddBottomLine();
+
+        var doorLock = (ZigBee.Device.DoorLock)listNewDevice[0];
+        if (string.IsNullOrEmpty(doorLock.RemoteUnlockPassword) == false)
+        {
+          btnswitch.IsSelected = true;
+        }
+        //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹呯殑璇�,璁╂墍鏈夎彍鍗曢兘涓嶈兘鐐瑰嚮
+        if (Common.Config.Instance.Home.IsVirtually == true)
+        {
+          btnswitch.CanClick = false;
+        }
+
+        btnswitch.ButtonClickEvent += async (sender, e) =>
+         {
+           if (UserCenterResourse.UserInfo.AuthorityNo == 1)
+           {
+             if (btnswitch.IsSelected == true)
+             {
+               btnswitch.IsSelected = false;
+               doorLock.RemoteUnlockPassword = string.Empty;
+               return;
+             }
+             var frame = new DoorLock.DoorLockCommonLayout();
+             frame.RemotePasswordDialog((ZigBee.Device.DoorLock)listNewDevice[0], btnswitch.btnIcon);
+             frame = null;
+           }
+           else
+           {
+             var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, Shared.Common.Config.Instance.Guid);
+             if (result == false)
+             {
+               var result1 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, Shared.Common.Config.Instance.Guid);
+               if (result1 == true)
+               {
+                 if (btnswitch.IsSelected == true)
                  {
-                     var key = new ZigBee.Device.Panel();
-                     key.DeviceAddr = deviceMac;
-                     key.CurrentGateWayId = dev.CurrentGateWayId;
-                     SetProximitySensor(key);
+                   btnswitch.IsSelected = false;
+                   doorLock.RemoteUnlockPassword = string.Empty;
+                   return;
                  }
-             };
-            if (proximitySensorsInfo.enable == true)
-            {
-                btnSwitch.IsSelected = true;
-            }
-        }
-        #endregion
-
-        #region 鈻� 鏁版嵁鐭_________________________ 
-        /// <summary>
-        ///  鏁版嵁鐭琛�
-        /// </summary>
-        private void DataCorrectionRow(string deviceMac)
-        {
-            //鏁版嵁鐭
-            var rowLight = new FrameRowControl(listview.rowSpace / 2);
-            listview.AddChidren(rowLight);
-            rowLight.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.DataCorrection), 600);
-            //搴曠嚎
-            rowLight.AddBottomLine();
-            //鍙崇澶�
-            rowLight.AddRightArrow();
-            rowLight.ButtonClickEvent += (sender, e) =>
-            {
-                var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 62);//绠�绾﹂潰鏉块殢渚夸竴涓洖璺潵鑾峰彇璁惧
-                var device = new CommonDevice();
-                if (dev != null)
-                {
-                    device.CurrentGateWayId = dev.CurrentGateWayId;
-                }
-                device.DeviceAddr = deviceMac;
-                device.DeviceEpoint = 65;
-                var form = new Shared.Phone.UserCenter.DevicePanel.DataCorrectionForm();
-                form.AddForm(device);
-            };
-        }
-        #endregion
-
-        /// <summary>
-        ///  婀垮害鏉ユ簮琛�
-        /// </summary>
-        private void AddHumiditySourceRow(string deviceMac)
-        {
-            //婀垮害
-            var rowHumidity = new FrameRowControl(listview.rowSpace / 2);
-            listview.AddChidren(rowHumidity);
-            rowHumidity.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.HumiditySource), 600);
-            //搴曠嚎
-            rowHumidity.AddBottomLine();
-            //鍙崇澶�
-            rowHumidity.AddRightArrow();
-            var msg = Language.StringByID(R.MyInternationalizationString.nothing);
-            if (!string.IsNullOrEmpty(bindHumidityName))
-            {
-                msg = bindHumidityName;
-            }
-            var btnHumidityStatu = rowHumidity.AddMostRightView(msg, 700);
-            rowHumidity.ButtonClickEvent += (sender, e) =>
-            {
-
-                var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 62);//绠�绾﹂潰鏉块殢渚夸竴涓洖璺潵鑾峰彇璁惧
-                var device = new CommonDevice();
-                if (dev != null)
-                {
-                    device.CurrentGateWayId = dev.CurrentGateWayId;
-                }
-                device.Type = DeviceType.OnOffSwitch;
-                device.DeviceAddr = deviceMac;
-                device.DeviceEpoint = 1;//鑳界粦瀹氭箍搴︾殑鍥炶矾
-                var paneTargetsBaseFormp = new PaneTargetsBaseForm(device, bindHumidityDev, BindInfo.BindType.Humidity);
-                Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp);
-                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                paneTargetsBaseFormp.Show();
-                paneTargetsBaseFormp.actionHumidityTarget += (bindName) =>
-                {
-                    HdlThreadLogic.Current.RunMain(() =>
-                    {
-                        if (string.IsNullOrEmpty(bindName))
-                        {
-                            btnHumidityStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
-                        }
-                        else
-                        {
-                            btnHumidityStatu.Text = bindName;
-                        }
-                    });
-                };
-            };
-        }
-
-        /// <summary>
-        ///  娓╁害鏉ユ簮琛�
-        /// </summary>
-        private void AddTemperatureSensorRow(string deviceMac)
-        {
-            //娓╁害鏉ユ簮
-            var rowTemPerature = new FrameRowControl(listview.rowSpace / 2);
-            listview.AddChidren(rowTemPerature);
-            rowTemPerature.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.TemperatureSource), 600);
-            //搴曠嚎
-            rowTemPerature.AddBottomLine();
-            //鍙崇澶�
-            rowTemPerature.AddRightArrow();
-            var msg = Language.StringByID(R.MyInternationalizationString.nothing);
-            if (!string.IsNullOrEmpty(bindTemperatureName))
-            {
-                msg = bindTemperatureName;
-            }
-            var btnTemperatureStatu = rowTemPerature.AddMostRightView(msg, 700);
-            rowTemPerature.ButtonClickEvent += (sender, e) =>
-            {
-                var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 62);//绠�绾﹂潰鏉块殢渚夸竴涓洖璺潵鑾峰彇璁惧
-                var device = new CommonDevice();
-                if (dev != null)
-                {
-                    device.CurrentGateWayId = dev.CurrentGateWayId;
-                }
-                device.Type = DeviceType.OnOffSwitch;
-                device.DeviceAddr = deviceMac;
-                device.DeviceEpoint = 1;//鑳界粦瀹氭俯搴︾殑鍥炶矾
-                var paneTargetsBaseFormp = new PaneTargetsBaseForm(device, bindTemperatureDev, BindInfo.BindType.Temperature);
-                Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp);
-                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                paneTargetsBaseFormp.Show();
-                paneTargetsBaseFormp.actionTemperatureTarget += (bindName) =>
-                {
-                    HdlThreadLogic.Current.RunMain(() =>
-                    {
-                        if (string.IsNullOrEmpty(bindName))
-                        {
-                            btnTemperatureStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
-                        }
-                        else
-                        {
-                            btnTemperatureStatu.Text = bindName;
-                        }
-                    });
-                };
-            };
-        }
-
-        /// <summary>
-        ///鍒濆鍖栨暟鎹� 
-        /// </summary>
-        void InitBindInfo(CommonDevice curControlDev)
-        {
-            System.Threading.Tasks.Task.Run(async () =>
-            {
-                try
-                {
-                    Application.RunOnMainThread(() =>
-                    {
-                        CommonPage.Loading.Start("");
-                    });
-                    //璇绘俯婀垮害鏁版嵁 
-                    curControlDev.DeviceEpoint = 1;
-                    var result = await GetBindName(curControlDev);
-                    if (!result)
-                    {
-                        Application.RunOnMainThread(() =>
-                        {
-                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime) + "(" + "5007_2" + ")", Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                        });
-                        return;
-                    }
+                 var frame = new DoorLock.DoorLockCommonLayout();
+                 frame.RemotePasswordDialog((ZigBee.Device.DoorLock)listNewDevice[0], btnswitch.btnIcon);
+                 frame = null;
+               }
+               else
+               {
+                 this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.NoAccess));
+               }
+             }
+             else
+             {
+               this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AccountIsFreezed));
+             }
+           }
+         };
+      }
+    }
 
-                    //2銆佽幏璁惧鎺ヨ繎鎰熷簲鍒濆鏁版嵁
-                    //鎺ヨ繎鎰熷簲(浠栦滑璇撮殢渚挎嬁涓�璺洖璺氨琛屼簡)
-                    proximitySensorsInfo = await HdlDevicePanelLogic.Current.GetDeviceProximitySensorsSettion(curControlDev);
-                    if (proximitySensorsInfo == null)
-                    {
-                        proximitySensorsInfo = new Panel.PanelProximitySensorInfo();
-                        //鍏抽棴杩涘害鏉�
-                        this.CloseProgressBar(ShowReLoadMode.YES);
-                        return;
-                    }
-                }
-                catch (Exception ex)
-                {
-                    var mess = ex.Message;
-                }
-                finally
-                {
-                    Application.RunOnMainThread(() =>
-                    {
-                        //鍒濆鍖栧彸涓婅鑿滃崟
-                        this.InitTopRightMenu();
-                        //鍒濆鍖栦腑閮ㄦ帶浠�
-                        this.InitMiddleFrame();
-                        CommonPage.Loading.Hide();
-                    });
-                }
-            });
-        }
-
-        /// <summary>
-        /// 鑾峰彇缁戝畾鐨勬俯婀垮害鐩爣
-        /// </summary>
-        /// <param name="curControlDev"></param>
-        /// <returns></returns>
-        private async System.Threading.Tasks.Task<bool> GetBindName(CommonDevice curControlDev)
-        {
-            bool result = false;
-            var panelBindListRes = HdlDeviceBindLogic.Current.GetDeviceBindAsync(curControlDev);
-            if (panelBindListRes != null && panelBindListRes.getAllBindResponseData != null)
-            {
-                bindList = panelBindListRes.getAllBindResponseData.BindList;
-                foreach (var bDev in bindList)
-                {
-                    var device = Common.LocalDevice.Current.GetDevice(bDev.BindMacAddr, bDev.BindEpoint);
-                    if (device == null)
-                    {
-                        continue;
-                    }
-                    if (device.Type == DeviceType.TemperatureSensor)
-                    {
-                        var bD = device as TemperatureSensor;
-                        if (bD.SensorDiv == 1 && bDev.BindCluster == 1026)
-                        {
-                            if (string.IsNullOrEmpty(bDev.ESName))
-                            {
-                                bindTemperatureName = Common.LocalDevice.Current.GetDeviceEpointName(device);
-                            }
-                            else
-                            {
-                                bindTemperatureName = bDev.ESName;
-                            }
-                            bindTemperatureDev = device;
-                        }
-                        if (bD.SensorDiv == 2 && bDev.BindCluster == 1029)
-                        {
-                            if (string.IsNullOrEmpty(bDev.ESName))
-                            {
-                                bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device);
-                            }
-                            else
-                            {
-                                bindHumidityName = bDev.ESName;
-                            }
-
-                            bindHumidityDev = device;
-                        }
-                    }
-                    if (device.Type == DeviceType.FreshAirHumiditySensor)
-                    {
-                        if (string.IsNullOrEmpty(bDev.ESName))
-                        {
-                            bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device);
-                        }
-                        else
-                        {
-                            bindHumidityName = bDev.ESName;
-                        }
-
-                        bindHumidityDev = device;
-                    }
-                }
-                result = true;
-            }
-            return result;
+    #endregion
+
+    #region 鈻� 闂ㄩ攣鏃堕棿(闂ㄩ攣)_____________________
+
+    /// <summary>
+    /// 娣诲姞銆愰棬閿佹椂闂淬�戣锛堥棬閿佷笓鐢級
+    /// </summary>
+    private void AddDoorLocksTimeRow()
+    {
+      //濡傛灉鏄櫤鑳介棬閿�
+      if (deviceEnumInfo.BeloneType == DeviceBeloneType.A鏅鸿兘闂ㄩ攣)
+      {
+        //闂ㄩ攣鏃堕棿
+        string caption = Language.StringByID(R.MyInternationalizationString.uDoorLocksTime);
+        var btnRow = new FrameRowControl(listview.rowSpace / 2);
+        listview.AddChidren(btnRow);
+        btnRow.AddLeftCaption(caption, 600);
+        //鍚戝彸鍥炬爣
+        btnRow.AddRightArrow();
+        //搴曠嚎
+        btnRow.AddBottomLine();
+        var doorLock = this.listNewDevice[0] as ZigBee.Device.DoorLock;
+        btnRow.ButtonClickEvent += async (sender, e) =>
+         {
+           if (UserCenterResourse.UserInfo.AuthorityNo == 1)
+           {
+             var tempPage = new Shared.Phone.UserCenter.DoorLock.TimeSettignPage(doorLock, "DoorLockTime");
+             Shared.Phone.UserView.HomePage.Instance.AddChidren(tempPage);
+             Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+             tempPage.Show();
+           }
+           else
+           {
+             var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, Shared.Common.Config.Instance.Guid);
+             if (result == false)
+             {
+               var tempPage = new Shared.Phone.UserCenter.DoorLock.TimeSettignPage(doorLock, "DoorLockTime");
+               Shared.Phone.UserView.HomePage.Instance.AddChidren(tempPage);
+               Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+               tempPage.Show();
+             }
+             else
+             {
+               this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AccountIsFreezed));
+             }
+           }
+         };
+      }
+    }
+
+    #endregion
+
+    #region 鈻� 鎸夐敭璁剧疆(闈㈡澘)_____________________
+
+    /// <summary>
+    /// 娣诲姞銆愭寜閿缃�戣(闈㈡澘)
+    /// </summary>
+    private void AddPanelSettionRow()
+    {
+      //蹇呴』鏄渤涓滆澶�,蹇呴』鏄潰鏉匡紝骞朵笖鏈夊共鎺ョ偣鎵嶈
+      if (deviceEnumInfo.IsHdlDevice == false || deviceEnumInfo.BeloneType != DeviceBeloneType.A鎸夐敭闈㈡澘 || listDeviceType.Contains(DeviceType.OnOffSwitch) == false)
+      {
+        return;
+      }
+      //鎸夐敭璁剧疆
+      string caption = Language.StringByID(R.MyInternationalizationString.uPanelSettion);
+      var btnFunction = new FrameRowControl(listview.rowSpace / 2);
+      listview.AddChidren(btnFunction);
+      btnFunction.AddLeftCaption(caption, 600);
+      //鍚戝彸鍥炬爣
+      btnFunction.AddRightArrow();
+      //搴曠嚎
+      btnFunction.AddBottomLine();
+      btnFunction.ButtonClickEvent += (sender, e) =>
+      {
+        var form = new DevicePanel.PanelButtonSettionForm();
+        form.AddForm(listNewDevice[0]);
+      };
+    }
+
+    #region 鈻� 绠�绾︾幆澧�(闈㈡澘)_____________________
+
+    /// <summary>
+    /// 娣诲姞銆愭寜閿缃�戣绠�绾︾幆澧�(闈㈡澘)
+    /// </summary>
+    private void AddSimplePanelSettionRow()
+    {
+      //鎸夐敭璁剧疆
+      string caption = Language.StringByID(R.MyInternationalizationString.uPanelSettion);
+      var btnFunction = new FrameRowControl(listview.rowSpace / 2);
+      listview.AddChidren(btnFunction);
+      btnFunction.AddLeftCaption(caption, 600);
+      //鍚戝彸鍥炬爣
+      btnFunction.AddRightArrow();
+      //搴曠嚎
+      btnFunction.AddBottomLine();
+      btnFunction.ButtonClickEvent += (sender, e) =>
+      {
+        //绠�绾︾幆澧冮潰鏉跨殑鎸夐敭閰嶇疆
+        var form = new DevicePanel.PanelSettionWithSourceForm();
+        form.AddForm(listNewDevice[0]);
+      };
+    }
+
+    #endregion
+
+    #endregion
+
+    #region 鈻� 鎸夐敭璁剧疆(鏂规偊)_____________________
+
+    /// <summary>
+    /// 娣诲姞銆愭寜閿缃�戣(鏂规偊)
+    /// </summary>
+    private bool AddFangyuePanelSettionRow()
+    {
+      if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueTwo
+          || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFour
+          || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEight
+          || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEnvironment
+          || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir)
+      {
+        //鎸夐敭璁剧疆
+        string caption = Language.StringByID(R.MyInternationalizationString.uPanelSettion);
+        var btnFunction = new FrameRowControl(listview.rowSpace / 2);
+        listview.AddChidren(btnFunction);
+        btnFunction.AddLeftCaption(caption, 600);
+        //鍚戝彸鍥炬爣
+        btnFunction.AddRightArrow();
+        //搴曠嚎
+        btnFunction.AddBottomLine();
+        btnFunction.ButtonClickEvent += (sender, e) =>
+        {
+          if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueTwo
+                  || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFour
+                  || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEight)
+          {
+            //鏂规偊鎸夐敭闈㈡澘[鍗曞紑鍙屾帶/鍙屽紑鍥涙帶/鍥涘紑鍏帶]閰嶇疆
+            var form = new DevicePanel.PanelFangyueButtonSettionForm();
+            form.AddForm(listNewDevice[0]);
+          }
+          else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEnvironment || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir)
+          {
+            //鏂规偊鐜闈㈡澘鐨勬寜閿厤缃�&鏂规偊鏂伴闈㈡澘鐨勬寜閿厤缃�
+            var form = new DevicePanel.PanelSettionWithSourceForm();
+            form.AddForm(listNewDevice[0]);
+          }
+          else
+          {
+            var form = new DevicePanel.PanelFangyueButtonSettionForm();
+            form.AddForm(listNewDevice[0]);
+          }
+        };
+        return true;
+      }
+      return false;
+    }
+
+    #endregion
+
+    #region 鈻� 骞叉帴鐐硅缃�(骞叉帴鐐�)_________________
+
+    /// <summary>
+    /// 娣诲姞銆愬共鎺ョ偣璁剧疆銆戣
+    /// </summary>
+    private void AddDryContactSettionRow()
+    {
+      if (this.listDeviceType.Contains(DeviceType.OnOffSwitch) == false)
+      {
+        //蹇呴』鏈変竴璺洖璺槸OnOffSwitch鎵嶈,闈㈡澘鐨勫共鎺ョ偣鐨勮瘽锛屼娇鐢ㄧ殑鏄埆鐨勮彍鍗�
+        return;
+      }
+      if (deviceEnumInfo.IsHdlDevice == true && deviceEnumInfo.BeloneType == DeviceBeloneType.A鎸夐敭闈㈡澘)
+      {
+        //娌充笢鐨勯潰鏉跨殑璇濓紝瀹冩湁鑷繁鐨勯厤缃晫闈�,
+        //濡傛灉鏄涓夋柟璁惧鐨勮瘽锛屼娇鐢ㄦ櫘閫氬共鎺ョ偣鐣岄潰(瀹冭兘浣跨敤缁戝畾鍔熻兘,鏃犺儗鍏夎缃�)
+        return;
+      }
+
+      //骞叉帴鐐硅缃�
+      string caption = Language.StringByID(R.MyInternationalizationString.uDryContactSettion);
+      var btnBackLight = new FrameRowControl(listview.rowSpace / 2);
+      listview.AddChidren(btnBackLight);
+      btnBackLight.AddLeftCaption(caption, 600);
+      //鍚戝彸鍥炬爣
+      btnBackLight.AddRightArrow();
+      //搴曠嚎
+      btnBackLight.AddBottomLine();
+      btnBackLight.ButtonClickEvent += (sender, e) =>
+      {
+        var form = new DeviceDryContactSettionForm();
+        form.AddForm(listNewDevice[0]);
+      };
+    }
+
+    #endregion
+
+    #region 鈻� 宸ヤ綔妯″紡(pir浼犳劅鍣ㄤ笓鐢�)____________
+
+    /// <summary>
+    /// 娣诲姞銆愬伐浣滄ā寮忋�戣(pir浼犳劅鍣ㄤ笓鐢�)
+    /// </summary>
+    private void AddPirSensorWorkModeRow()
+    {
+      if (this.deviceEnumInfo.ConcreteType != DeviceConcreteType.Sensor_Pir
+          || deviceEnumInfo.IsHdlDevice == false)
+      {
+        return;
+      }
+      //宸ヤ綔妯″紡
+      string caption = Language.StringByID(R.MyInternationalizationString.uWorkMode);
+      var btnFunction = new FrameRowControl(listview.rowSpace / 2);
+      listview.AddChidren(btnFunction);
+      btnFunction.AddLeftCaption(caption, 600);
+      //鍚戝彸鍥炬爣
+      btnFunction.AddRightArrow();
+      //搴曠嚎
+      btnFunction.AddBottomLine();
+      btnFunction.ButtonClickEvent += (sender, e) =>
+      {
+        var form = new DevicePirSensor.PirSensorWorkModeMenuForm();
+        form.AddForm((IASZone)this.listNewDevice[0]);
+      };
+    }
+
+    #endregion;
+
+    #region 鈻� 缁戝畾鐩爣(pir浼犳劅鍣ㄤ笓鐢�)____________
+
+    /// <summary>
+    /// 娣诲姞銆愮粦瀹氱洰鏍囥�戣(pir浼犳劅鍣ㄤ笓鐢�)
+    /// </summary>
+    private void AddPirSensorBindRow()
+    {
+      if (this.deviceEnumInfo.ConcreteType != DeviceConcreteType.Sensor_Pir)
+      {
+        return;
+      }
+      //缁戝畾鐩爣
+      string caption = Language.StringByID(R.MyInternationalizationString.uBindTargets);
+      var btnFunction = new FrameRowControl(listview.rowSpace / 2);
+      listview.AddChidren(btnFunction);
+      btnFunction.AddLeftCaption(caption, 600);
+      //鍚戝彸鍥炬爣
+      btnFunction.AddRightArrow();
+      //搴曠嚎
+      btnFunction.AddBottomLine();
+      btnFunction.ButtonClickEvent += (sender, e) =>
+      {
+        var form = new DevicePirSensor.PirSensorBindTargetSettionForm();
+        form.AddForm((IASZone)this.listNewDevice[0]);
+      };
+    }
+
+    #endregion;
+
+    #region 鈻� 鍔熻兘璁剧疆(閫氱敤)_____________________
+
+    /// <summary>
+    /// 娣诲姞銆愬姛鑳借缃�戣
+    /// </summary>
+    private void AddFunctionSettionRow()
+    {
+      //鍙湁鍥炶矾鏁板ぇ浜�1鎵嶈兘鏈夎繖涓彍鍗�
+      if (Common.LocalDevice.Current.GetDevicesCountByMac(listNewDevice[0].DeviceAddr) == 1)
+      {
+        //鏂伴灏忔ā鍧楀彧鏈変竴涓洖璺紝浣嗚姹傛柊椋庡皬妯″潡鐨勬柊椋庢湁鍔熻兘璁剧疆
+        //鏅捐。鏋堕粯璁ゅ彧瀛樺偍绗竴鍥炶矾锛屽叾浠栧洖璺杩囨护浜�
+        bool isSpecial = false;
+        if (deviceEnumInfo.ConcreteType == DeviceConcreteType.Relay_FangyueFreshAirModul)
+        {
+          isSpecial = true;
         }
+        if (deviceEnumInfo.ConcreteType == DeviceConcreteType.Airer)
+        {
+          isSpecial = true;
+          var dev = listNewDevice[0];
+          //鏅捐。鏋堕粯璁ゅ彧瀛樺偍绗竴鍥炶矾锛屽叾浠栧洖璺湪鍔熻兘鐣岄潰闇�瑕佽鍙栨椂闂达紝鎵�浠ユ彁鍓嶄竴涓晫闈㈣幏鍙�
+          for (int i = 3; i < 6; i++)
+          {
+            //娉ㄦ剰锛岃。鏋朵腑鐨勭姸鎬佺敱涓嶅悓绔偣鑾峰彇
+            //鍥炶矾3:璇诲彇椋庡共寮�鍏崇姸鎬佸拰鏃堕棿鍊� 
+            //鍥炶矾4:璇诲彇鐑樺共寮�鍏崇姸鎬佸拰鏃堕棿鍊�
+            //鍥炶矾5:璇诲彇娑堟瘨寮�鍏崇姸鎬佸拰鏃堕棿鍊�
+            HdlDeviceAttributeLogic.Current.SendAirerComand(dev, i);
+          }
+        }
+        if (!isSpecial)
+        {
+          return;
+        }
+      }
+      if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEnvironment
+          || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir)
+      {
+        //鐜闈㈡澘娌℃湁鍔熻兘璁剧疆
+        return;
+      }
 
-        #region 鈻� 璁剧疆鏁版嵁___________________________
+      //2020.03.06鏂拌拷鍔狅細濡傛灉鍏ㄩ儴閮芥槸骞叉帴鐐圭殑璇�,涔熶笉鑳芥湁杩欎釜涓滆タ
+      int dryContactCount = 0;
+      for (int i = 0; i < listNewDevice.Count; i++)
+      {
+        if (listNewDevice[i].Type == DeviceType.OnOffSwitch)
+        {
+          dryContactCount++;
+        }
+      }
+      if (listNewDevice.Count == dryContactCount)
+      {
+        //杩欎釜璁惧鍏ㄦ槸骞叉帴鐐�
+        return;
+      }
 
-        /// <summary>
-        /// 璁剧疆闈㈡澘鎺ヨ繎鎰熷簲鏁版嵁
-        /// </summary>
-        private void SetProximitySensor(CommonDevice curControlDev)
-        {
-            System.Threading.Tasks.Task.Run(async () =>
-            {
-                try
-                {
-                    Application.RunOnMainThread(() =>
-                    {
-                        CommonPage.Loading.Start("");
-                    });
-                    //鎺ヨ繎鎰熷簲(鎻愪緵璁惧鐨勫悓浜嬭闅忎究涓�涓洖璺氨琛�)
-                    var result = await HdlDevicePanelLogic.Current.SetProximitySensorStatus(curControlDev, proximitySensorsInfo.enable);
-                    if (result == false)
+      //鍔熻兘璁剧疆
+      string caption = Language.StringByID(R.MyInternationalizationString.uFunctionSettingUp);
+      var btnFunction = new FrameRowControl(listview.rowSpace / 2);
+      listview.AddChidren(btnFunction);
+      btnFunction.AddLeftCaption(caption, 600);
+      //鍚戝彸鍥炬爣
+      btnFunction.AddRightArrow();
+      //搴曠嚎
+      btnFunction.AddBottomLine();
+      btnFunction.ButtonClickEvent += (sender, e) =>
+      {
+        //鏂规偊闈㈡澘
+        if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueTwo
+            || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFour
+            || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEight)
+        {
+          var form = new DevicePanel.PanelFangyueFunctionSettionForm();
+          form.AddForm(listNewDevice[0], deviceEnumInfo);
+        }
+        //绠�绾﹀鍔熻兘闈㈡澘鐨勬寜閿厤缃�
+        else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleMultifunction)
+        {
+          foreach (var dev in listNewDevice)
+          {
+            if (dev.Type == DeviceType.OnOffOutput && dev.DeviceEpoint == 62)
+            {
+              var form = new DeviceFunctionSettionForm();
+              form.AddForm(dev, true);
+              break;
+            }
+          }
+
+        }
+        //娌充笢鐨勯潰鏉胯澶�
+        else if (deviceEnumInfo.BeloneType == DeviceBeloneType.A鎸夐敭闈㈡澘 && deviceEnumInfo.IsHdlDevice == true)
+        {
+          var form = new DevicePanel.PanelFunctionSettionForm();
+          form.AddForm(listNewDevice[0]);
+        }
+        else
+        {
+          var form = new DeviceFunctionSettionForm();
+          form.AddForm(listNewDevice[0], false);
+        }
+      };
+    }
+
+    /// <summary>
+    /// 娣诲姞浼犳劅鍣ㄣ�愬姛鑳借缃�戣
+    /// </summary>
+    private void AddFunctionSettionRowPM()
+    {
+      //鍔熻兘璁剧疆
+      string caption = Language.StringByID(R.MyInternationalizationString.uFunctionSettingUp);
+      var btnFunction = new FrameRowControl(listview.rowSpace / 2);
+      listview.AddChidren(btnFunction);
+      btnFunction.AddLeftCaption(caption, 600);
+      //鍚戝彸鍥炬爣
+      btnFunction.AddRightArrow();
+      //搴曠嚎
+      btnFunction.AddBottomLine();
+      btnFunction.ButtonClickEvent += (sender, e) =>
+      {
+        var form = new DeviceFunctionSettionForm();
+        form.AddForm(listNewDevice[0], false);
+      };
+    }
+
+    #endregion;
+
+    #region 鈻� 鏂瑰悜涓庨檺浣�(绐楀笜)___________________
+
+    /// <summary>
+    /// 娣诲姞銆愭柟鍚戜笌闄愪綅銆戣(绐楀笜涓撶敤)
+    /// </summary>
+    private void AddDirectionAndLimitRow()
+    {
+      if (deviceEnumInfo.BeloneType != DeviceBeloneType.A绐楀笜)
+      {
+        return;
+      }
+      var deviceCurtain = (Rollershade)this.listNewDevice[0];
+      if (deviceCurtain.WcdType != 4 && deviceCurtain.WcdType != 0)
+      {
+        //寮�鍚堝笜,鍗峰笜涓撶敤
+        return;
+      }
+
+      //鏂瑰悜涓庨檺浣�
+      string caption = Language.StringByID(R.MyInternationalizationString.uDirectionAndLimit);
+      var btnFunction = new FrameRowControl(listview.rowSpace / 2);
+      listview.AddChidren(btnFunction);
+      btnFunction.AddLeftCaption(caption, 600);
+      //鍚戝彸鍥炬爣
+      btnFunction.AddRightArrow();
+      //搴曠嚎
+      btnFunction.AddBottomLine();
+      btnFunction.ButtonClickEvent += (sender, e) =>
+      {
+        if (deviceCurtain.WcdType == 4)
+        {
+          var form = new DeviceCurtain.AutoOpenDirectionAndLimitSettionForm();
+          form.AddForm(deviceCurtain);
+        }
+        else if (deviceCurtain.WcdType == 0)
+        {
+          var form = new DeviceCurtain.SiphonateDirectionAndLimitSettionForm();
+          form.AddForm(deviceCurtain);
+        }
+      };
+    }
+
+    #endregion;
+
+    #region 鈻� 鎵嬫媺鎺у埗(寮�鍚堝笜)___________________
+
+    /// <summary>
+    /// 娣诲姞銆愭墜鎷夋帶鍒躲�戣(寮�鍚堝笜涓撶敤)
+    /// </summary>
+    private void AddHandPullControlRow()
+    {
+      if (deviceEnumInfo.BeloneType != DeviceBeloneType.A绐楀笜)
+      {
+        return;
+      }
+      var deviceCurtain = (Rollershade)this.listNewDevice[0];
+      if (deviceCurtain.WcdType != 4)
+      {
+        //寮�鍚堝笜涓撶敤
+        return;
+      }
+
+      //鎵嬫媺鎺у埗
+      string caption = Language.StringByID(R.MyInternationalizationString.uHandPullControl);
+      var btnFunction = new FrameRowControl(listview.rowSpace / 2);
+      btnFunction.UseClickStatu = false;
+      listview.AddChidren(btnFunction);
+      btnFunction.AddLeftCaption(caption, 600);
+      //寮�鍏冲浘鏍�
+      var btnSwitch = btnFunction.AddMostRightSwitchIcon();
+      //搴曠嚎
+      btnFunction.AddBottomLine();
+      btnSwitch.ButtonClickEvent += (sender, e) =>
+      {
+        //鍒囨崲妯″紡
+        bool statu = !btnSwitch.IsSelected;
+        var result = HdlDeviceCurtainLogic.Current.SetHandPullControl(deviceCurtain, statu);
+        if (result == true)
+        {
+          btnSwitch.IsSelected = statu;
+        }
+      };
+      //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
+      if (Common.Config.Instance.Home.IsShowTemplate == true)
+      {
+        btnSwitch.CanClick = false;
+        btnSwitch.IsSelected = TemplateData.TemplateDeviceDataLogic.Current.GetCurtainHandPullControl(deviceCurtain);
+        return;
+      }
+      //濡傛灉鏄櫄鎷熶綇瀹�
+      if (Common.Config.Instance.Home.IsVirtually == true)
+      {
+        btnSwitch.IsSelected = TemplateData.TemplateDeviceDataLogic.Current.GetCurtainHandPullControl(deviceCurtain);
+        return;
+      }
+
+      //娣诲姞灞炴�т笂鎶ョ洃鍚�
+      string mainkeys = LocalDevice.Current.GetDeviceMainKeys(this.listNewDevice[0]);
+      HdlGatewayReceiveLogic.Current.AddAttributeEvent("HandPullControl", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (device) =>
+      {
+        string checkKey = LocalDevice.Current.GetDeviceMainKeys(device);
+        if (mainkeys != checkKey || device.DeviceStatusReport.CluterID != 258)
+        {
+          return;
+        }
+        foreach (var attriBute in device.DeviceStatusReport.AttriBute)
+        {
+          if (attriBute.AttributeId == 23)
+          {
+            //鎵嬫媺鎺у埗
+            if (0 < (attriBute.AttriButeData & 0x04))
+            {
+              HdlThreadLogic.Current.RunMain(() =>
                     {
-                        return;
-                    }
-                }
-                catch (Exception ex)
-                {
-                    var mess = ex.Message;
-                }
-                finally
-                {
-                    Application.RunOnMainThread(() =>
-                    {
-                        CommonPage.Loading.Hide();
-                    });
-                }
-            });
+                      btnSwitch.IsSelected = true;
+                    });
+            }
+          }
         }
+      });
+      //鍙戦�佸懡浠�
+      deviceCurtain.ReadCurtainDirectionAndMode();
+    }
 
-        #endregion
-        #endregion
+    #endregion;
 
-        #region 鈻� 鍔熻兘绫诲瀷(绌烘皵寮�鍏充笓鐢�)_____________
+    #region 鈻� 瀹ゅ唴鏈鸿缃�(绌鸿皟)___________________
 
-        /// <summary>
-        /// 娣诲姞銆愬姛鑳界被鍨嬨�戣(绌烘皵寮�鍏充笓鐢�)
-        /// </summary>
-        private void AddAirSwitchFunctionTypeRow()
-        {
-            //2020.04.28鍙樻洿:鏈変釜鍒澶囧畠闄や簡缁х數鍣ㄥ洖璺紝浠�涔堥兘娌℃湁浜�,
-            //杩欎釜鏃跺�欎篃瑕佺幇瀹炲嚭鏉�
-            if (this.listNewDevice.Count != 1)
-            {
-                return;
-            }
-            if (this.listNewDevice[0].Type != DeviceType.OnOffOutput
-                && this.listNewDevice[0].Type != DeviceType.AirSwitch)
-            {
-                return;
-            }
-            //鑷畾涔夊姛鑳界被鍨嬫帶浠�
-            var rowFunction = new DeviceFunctionTypeRowControl(this.listNewDevice[0], listview.rowSpace / 2);
-            listview.AddChidren(rowFunction);
-            rowFunction.InitControl();
-            //搴曠嚎
-            rowFunction.AddBottomLine();
-            //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
-            if (Common.Config.Instance.Home.IsShowTemplate == true)
-            {
-                rowFunction.CanClick = false;
-            }
-        }
-
-        #endregion
-
-        #region 鈻� 閫氱敤淇℃伅___________________________
-
-        /// <summary>
-        /// 娣诲姞銆愰�氱敤淇℃伅銆戣
-        /// </summary>
-        private void AddGeneralInformationRow()
-        {
-            string caption = Language.StringByID(R.MyInternationalizationString.uGeneralInformation);
-            var btnGeneral = new FrameRowControl(listview.rowSpace / 2);
-            listview.AddChidren(btnGeneral);
-            btnGeneral.AddLeftCaption(caption, 600);
-            //鍚戝彸鍥炬爣
-            btnGeneral.AddRightArrow();
-            //搴曠嚎
-            btnGeneral.AddBottomLine();
-            btnGeneral.ButtonClickEvent += (sender, e) =>
-            {
-                var form = new DeviceGeneralInformationForm();
-                form.AddForm(listNewDevice[0].DeviceAddr);
-            };
-        }
-
-        #endregion
-
-        #region 鈻� 绌鸿皟妯″潡鐗堟湰(绌鸿皟涓撶敤)_____________
-
-        /// <summary>
-        /// 娣诲姞銆愮┖璋冩ā鍧楃増鏈�戣(娌充笢鐨勪腑澶┖璋�)
-        /// </summary>
-        private void AddAirConditionerModelVersionRow()
-        {
-            if (this.deviceEnumInfo.ConcreteType != DeviceConcreteType.AirConditioner_ZbGateway)
-            {
-                //涓嶆槸涓ぎ绌鸿皟
-                return;
-            }
-            string caption = Language.StringByID(R.MyInternationalizationString.uAirConditionerModelVersion);
-            var rowVersion = new FrameRowControl(listview.rowSpace / 2);
-            rowVersion.UseClickStatu = false;
-            listview.AddChidren(rowVersion);
-            rowVersion.AddLeftCaption(caption, 600);
-            //鐗堟湰
-            this.btnAirConditionerVersion = rowVersion.AddMostRightView(string.Empty, 900);
-            if (this.listNewDevice[0] is AC)
-            {
-                this.btnAirConditionerVersion.Text = ((AC)this.listNewDevice[0]).AcModelVersion;
-            }
-            //搴曠嚎
-            rowVersion.AddBottomLine();
-
-            //鑾峰彇涓ぎ绌鸿皟妯″潡鐨勭増鏈�
-            this.ReadAirConditionerVersion();
-        }
-
-        #endregion
-
-        #region 鈻� 鍥轰欢鍗囩骇___________________________
-
-        /// <summary>
-        /// 娣诲姞銆愬浐浠跺崌绾с�戣
-        /// </summary>
-        private void AddFirmwareUpdateRow()
-        {
-            //鎷ユ湁200绔彛杩欎釜涓滆タ鐨勬椂鍊欙紝鎵嶄細鏄剧ず杩欎竴琛�
-            var oTADevice = Common.LocalDevice.Current.GetOTADevice(listNewDevice[0].DeviceAddr);
-            if (oTADevice == null)
-            {
-                return;
-            }
-
-            //鍥轰欢鍗囩骇
-            string caption = Language.StringByID(R.MyInternationalizationString.uFirmwareUpdate);
-            var rowUpDate = new FrameRowControl(listview.rowSpace / 2);
-            listview.AddChidren(rowUpDate);
-            rowUpDate.AddLeftCaption(caption, 600);
-            //鍚戝彸鍥炬爣
-            rowUpDate.AddRightArrow();
-            //搴曠嚎
-            rowUpDate.AddBottomLine();
-
-            //鎻愮ず鏈夋柊鐗堟湰
-            var btnNewVersion = new PicViewControl(78, 55);
-            btnNewVersion.UnSelectedImagePath = "Item/NewVersion.png";
-            btnNewVersion.Visible = false;
-            btnNewVersion.X = Application.GetRealWidth(242);
-            btnNewVersion.Y = Application.GetRealHeight(23);
-            rowUpDate.AddChidren(btnNewVersion, ChidrenBindMode.BindEvent);
-
-            rowUpDate.ButtonClickEvent += (sender, e) =>
-            {
-                if (this.deviceEnumInfo.ConcreteType != DeviceConcreteType.AirConditioner_ZbGateway)
-                {
-                    //杩欎釜鏄竴鑸澶囩殑鍗囩骇
-                    var form = new DeviceFirmwareUpdateForm();
-                    form.AddForm(listNewDevice[0].DeviceAddr);
-                }
-                else
-                {
-                    //涓ぎ绌鸿皟鐨勫崌绾х殑璇濓紝鏄壒娈婄殑
-                    var form = new DeviceAirConditioner.ACZbGatewayUpdateMenuForm();
-                    form.AddForm(listNewDevice[0], btnNewVersion.Visible);
-                }
-                btnNewVersion.Visible = false;
-            };
-
-            //濡傛灉褰撳墠浣忓畢涓嶆槸铏氭嫙浣忓畢
-            if (Config.Instance.Home.IsVirtually == false
-                && Config.Instance.Home.IsShowTemplate == false)
-            {
-                //璁剧疆璁惧鐨勭増鏈俊鎭�
-                this.SetDeviceVersionInfo(btnNewVersion, oTADevice);
-            }
-        }
-
-        /// <summary>
-        /// 璁剧疆璁惧鐨勭増鏈俊鎭�
-        /// </summary>
-        /// <param name="btnNewVersion">鏈夋柊鐗堟湰鐨勬彁绀烘帶浠�</param>
-        /// <param name="oTADevice">ota璁惧</param>
-        private void SetDeviceVersionInfo(PicViewControl btnNewVersion, OTADevice oTADevice)
-        {
-            HdlThreadLogic.Current.RunThread(() =>
-            {
-                bool receiveImageInfo = false;
-                //璁剧疆璁惧鍏ㄩ儴鐨勯暅鍍忎俊鎭�
-                string checkKey = LocalDevice.Current.GetDeviceMainKeys(oTADevice.DeviceAddr, oTADevice.DeviceEpoint);
-                HdlGatewayReceiveLogic.Current.AddAttributeEvent("SetDeviceVersionInfo", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) =>
-                {
-                    if (report.DeviceStatusReport.CluterID == (int)Cluster_ID.Ota)
-                    {
-                        string mainKey = LocalDevice.Current.GetDeviceMainKeys(report.DeviceAddr, report.DeviceEpoint);
-                        if (checkKey == mainKey)
-                        {
-                            //宸茬粡鎺ユ敹寰楀埌
-                            receiveImageInfo = true;
-                        }
-                    }
-                });
-                //鍙戦�佸懡浠�
-                HdlDeviceImageInfoLogic.Current.SetFirmwareVersionComand(oTADevice);
-
-                int count = 5;
-                while (receiveImageInfo == false && count > 0)
-                {
-                    //绛夊緟璁惧闀滃儚鐨勫弽棣�
-                    System.Threading.Thread.Sleep(300);
-                    count--;
-                }
-                //绉婚櫎浜嬩欢
-                HdlGatewayReceiveLogic.Current.RemoveEvent("SetDeviceVersionInfo");
-
-                oTADevice = Common.LocalDevice.Current.GetOTADevice(listNewDevice[0].DeviceAddr);
-                //娣诲姞鍗囩骇鍥轰欢淇℃伅(鎴愪笉鎴愬姛閮芥棤鎵�璋�)
-                var result = HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.A璁惧, oTADevice.HwVersion.ToString(), oTADevice.ImgTypeId.ToString());
-
-                //鑾峰彇璁惧鏈�鏂扮増鏈�
-                var deviceFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.A璁惧,
-                    oTADevice.HwVersion.ToString(),
-                    oTADevice.ImgTypeId.ToString(),
-                    oTADevice.ImgVersion);
-
-                if (deviceFirmware != null && deviceFirmware.FirmwareVersion > oTADevice.ImgVersion)
-                {
-                    HdlThreadLogic.Current.RunMain(() =>
-                    {
-                        if (btnNewVersion != null)
-                        {
-                            btnNewVersion.Visible = true;
-                        }
-                    }, ShowErrorMode.NO);
-                }
-            });
-        }
-
-        #endregion
-
-        #region 鈻� 淇敼鍚嶅瓧___________________________
-
-        /// <summary>
-        /// 璁惧閲嶅懡鍚�
-        /// </summary>
-        /// <param name="i_deviceName">deviceName.</param>
-        private void DeviceReName(string i_deviceName, bool closeForm)
-        {
-            //淇敼MAC鍚�
-            string deviceName = i_deviceName.Trim();
-            var result = Common.LocalDevice.Current.ReMacName(this.listNewDevice, deviceName);
-            if (result == false)
-            {
-                return;
-            }
-            if (closeForm == true)
-            {
-                //鍏抽棴鐣岄潰
-                this.CloseForm();
-            }
-            else
-            {
-                //璁惧澶囨敞淇敼鎴愬姛!
-                string msg = Language.StringByID(R.MyInternationalizationString.uDeviceReNoteSuccess);
-                this.ShowMassage(ShowMsgType.Tip, msg);
-            }
-        }
-
-        #endregion
-
-        #region 鈻� 鍙充笂瑙掕彍鍗昣________________________
-
-        /// <summary>
-        /// 鍒濆鍖栧彸涓婅鑿滃崟
-        /// </summary>
-        private void InitTopRightMenu()
-        {
-            //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
-            if (Common.Config.Instance.Home.IsShowTemplate == true)
-            {
-                return;
-            }
-            var btnIcon = new MostRightIconControl(69, 69);
-            btnIcon.UnSelectedImagePath = "Item/More.png";
-            topFrameLayout.AddChidren(btnIcon);
-            btnIcon.InitControl();
-            btnIcon.ButtonClickEvent += ((sender, e) =>
-            {
-                //鏄剧ず鍙充笂瑙掕彍鍗曠晫闈�
-                this.ShowTopRightMenu();
-            });
-        }
-
-        /// <summary>
-        /// 鏄剧ず鍙充笂瑙掕彍鍗曠晫闈�
-        /// </summary>
-        private void ShowTopRightMenu()
-        {
-            //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘(鎷跨鐐规渶灏忕殑閭d釜鍥炶矾鍘诲畾浣�)
-            bool canTest = Common.LocalDevice.Current.DeviceIsCanFixedPosition(listNewDevice[0]);
-
-            TopRightMenuControl frame = null;
-
-            if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleMultifunction)
-            {
-                frame = new TopRightMenuControl(3, 1);
-            }
-            else
-            {
-                frame = new TopRightMenuControl(canTest == true ? 2 : 1, 1);
-            }
-
-            string deviceMenu = string.Empty;
-            if (canTest == true)
-            {
-                //瀹氫綅
-                deviceMenu = Language.StringByID(R.MyInternationalizationString.uFixedPosition);
-                frame.AddRowMenu(deviceMenu, "Item/FixedPosition.png", "Item/FixedPositionSelected.png", () =>
-                {
-                    //鍙戦�佸畾浣嶅姛鑳�
-                    Common.LocalDevice.Current.SetFixedPositionCommand(listNewDevice[0]);
-                });
-            }
-
-            //鍒犻櫎
-            deviceMenu = Language.StringByID(R.MyInternationalizationString.uDelete);
-            frame.AddRowMenu(deviceMenu, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
-            {
-                //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�,姝ゅ姛鑳芥棤鏁�
-                if (Common.Config.Instance.Home.IsVirtually == true)
-                {
-                    return;
-                }
-                //纭鍒犻櫎璇ヨ澶囧強鍔熻兘锛�
-                string msg = Language.StringByID(R.MyInternationalizationString.uDeleteDeviceMsg);
-                this.ShowMassage(ShowMsgType.Confirm, msg, () =>
-                {
-                    //鍒犻櫎鎸囧畾璁惧
-                    this.DoDeleteDevice();
-                });
-            });
-
-            //鍚屾
-            deviceMenu = Language.StringByID(R.MyInternationalizationString.Synchronization);
-            if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(listNewDevice[0]))
-            {
-                frame.AddRowMenu(deviceMenu, "", "Item/SynchronizationSelected.png", () =>
-                {
-                    //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�,姝ゅ姛鑳芥棤鏁�
-                    if (Common.Config.Instance.Home.IsVirtually == true)
-                    {
-                        return;
-                    }
-
-                    //鍚屾鎸囧畾璁惧
-                    this.SynchronizationDevice();
-                });
-            }
-
-        }
-
-        /// <summary>
-        /// 鍒犻櫎鎸囧畾璁惧
-        /// </summary>
-        private void DoDeleteDevice()
-        {
-            HdlThreadLogic.Current.RunThread(async () =>
-            {
-                //鎵撳紑杩涘害鏉�
-                this.ShowProgressBar();
-
-                //鍒犻櫎璁惧
-                bool result = await Common.LocalDevice.Current.DeleteDevice(listNewDevice);
-                //鍏抽棴杩涘害鏉�
-                this.CloseProgressBar();
-                if (result == false)
-                {
-                    return;
-                }
-                HdlThreadLogic.Current.RunMain(() =>
-                {
-                    //鍏抽棴鐣岄潰
-                    this.CloseForm();
-                });
-            });
-        }
-
-        /// <summary>
-        /// 鍚屾鎸囧畾璁惧
-        /// </summary>
-        private void SynchronizationDevice()
-        {
-            HdlThreadLogic.Current.RunThread(async () =>
-            {
-                //鎵撳紑杩涘害鏉�
-                this.ShowProgressBar();
-
-                //鍚屾璁惧
-                bool result = await Common.LocalDevice.Current.SynchronizationDevice(listNewDevice);
-                //鍏抽棴杩涘害鏉�
-                this.CloseProgressBar();
-                if (result == false)
-                {
-                    return;
-                }
-            });
-        }
-        #endregion
-
-        #region 鈻� 鍏抽棴鐣岄潰___________________________
-
-        /// <summary>
-        /// 鐢婚潰鍏抽棴
-        /// </summary>
-        public override void CloseFormBefore()
-        {
-            HdlGatewayReceiveLogic.Current.RemoveEvent("HandPullControl");
-            HdlGatewayReceiveLogic.Current.RemoveEvent("SetDeviceVersionInfo");
-
-            //璁惧鏂板叆缃�
-            if (UserCenterResourse.DicActionForm.ContainsKey("AddDeviceTypeListForm") == true)
-            {
-                this.LoadFormMethodByName("DeviceListMainForm", "RefreshDeviceRow", new object[] { listNewDevice[0].DeviceAddr });
-            }
-
-            base.CloseFormBefore();
-        }
-
-        #endregion
-
-        #region 鈻� 纭欢淇℃伅___________________________
-
-        /// <summary>
-        /// 閲嶆柊鑾峰彇纭欢淇℃伅
-        /// </summary>
-        private void RefreshHardFirmwareInfo()
-        {
-            if (listNewDevice[0].DriveCode > 0 || Common.Config.Instance.Home.IsShowTemplate == true)
-            {
-                //铏氭嫙璁惧娌℃湁杩欑鎿嶄綔
-                return;
-            }
-            //閲嶆柊鑾峰彇纭欢淇℃伅
-            HdlDeviceHardInfoLogic.Current.SetAllHardFirmwareInfoToDevice(listNewDevice[0]);
-        }
-
-        #endregion
-
-        #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________
-
-        /// <summary>
-        /// 鑷韩鐨勪笂灞傜晫闈㈠叧闂悗,瀹冭嚜韬浜庢渶涓婂眰鏃�,瑙﹀彂鐨勪簨浠�
-        /// </summary>
-        public override int FormActionAgainEvent()
-        {
-            //閲嶆柊鑾峰彇涓ぎ绌鸿皟妯″潡鐨勭増鏈�
-            this.ReadAirConditionerVersion();
-
-            return 0;
-        }
-
-        #endregion
-
-        #region 鈻� 涓�鑸柟娉昣__________________________
-
-        /// <summary>
-        /// 鑾峰彇涓ぎ绌鸿皟妯″潡鐨勭増鏈�
-        /// </summary>
-        private void ReadAirConditionerVersion()
-        {
-            if (this.btnAirConditionerVersion == null)
-            {
-                return;
-            }
-            //濡傛灉鏄櫄鎷熶綇瀹呮垨鑰呭睍绀烘ā鏉跨殑璇�
-            if (Config.Instance.Home.IsShowTemplate == true || Config.Instance.Home.IsVirtually == true)
-            {
-                return;
-            }
-
-            bool notVersion = true;
-            if (this.listNewDevice[0] is AC)
-            {
-                notVersion = ((AC)this.listNewDevice[0]).AcModelVersion == string.Empty;
-            }
-            if (notVersion == true)
-            {
-                //鑾峰彇涓�
-                btnAirConditionerVersion.Text = Language.StringByID(R.MyInternationalizationString.uGetting);
-            }
-            HdlThreadLogic.Current.RunThread(async () =>
-            {
-                //璇诲彇绌鸿皟妯″潡鐗堟湰
-                var result = await HdlDeviceAirConditionerLogic.Current.ReadACFirewareVersionAsync(listNewDevice[0]);
-                if (result == null || result.readACFirewareVersionResponData == null || result.readACFirewareVersionResponData.Status != 0)
-                {
-                    if (notVersion == true)
-                    {
-                        //鑾峰彇澶辫触
-                        HdlThreadLogic.Current.RunMain(() =>
-                        {
-                            btnAirConditionerVersion.Text = Language.StringByID(R.MyInternationalizationString.uGettingFail);
-                        });
-                    }
-                    return;
-                }
-                HdlThreadLogic.Current.RunMain(() =>
-                {
-                    string strVersion = result.readACFirewareVersionResponData.FirewareVersion.Replace("-", string.Empty);
-                    if (this.listNewDevice[0] is AC)
-                    {
-                        ((AC)this.listNewDevice[0]).AcModelVersion = strVersion;
-                        this.listNewDevice[0].ReSave();
-                    }
-                    btnAirConditionerVersion.Text = strVersion;
-                });
-            });
-        }
-
-        /// <summary>
-        /// 妫�娴嬭兘鍚︽樉绀哄姛鑳借缃殑鑿滃崟
-        /// </summary>
-        /// <returns></returns>
-        private bool CheckCanShowFunctionSettionRow()
-        {
-            //鏂规偊鏂伴闈㈡澘娌℃湁鍔熻兘璁剧疆
-            if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir
-                || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FourButtonScene
-                || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_TwoButtonCurtain)
-            {
-                return false;
-            }
-            return true;
-        }
-
-        #endregion
-    }
+    /// <summary>
+    /// 娣诲姞銆愬鍐呮満璁剧疆銆戣(绌鸿皟涓撶敤)
+    /// </summary>
+    private void AddIndoorUnitSettionRow()
+    {
+      if (this.deviceEnumInfo.ConcreteType != DeviceConcreteType.AirConditioner_ZbGateway
+          || this.listNewDevice[0] is OTADevice)//杩藉姞锛氬崟绾彧鏈�200绔偣鐨勮瘽锛屼笉鏄剧ず杩欎釜鑿滃崟
+      {
+        return;
+      }
+
+      //瀹ゅ唴鏈鸿缃�
+      string caption = Language.StringByID(R.MyInternationalizationString.uIndoorUnitSettion);
+      var btnFunction = new FrameRowControl(listview.rowSpace / 2);
+      listview.AddChidren(btnFunction);
+      btnFunction.AddLeftCaption(caption, 600);
+      //鍚戝彸鍥炬爣
+      btnFunction.AddRightArrow();
+      //搴曠嚎
+      btnFunction.AddBottomLine();
+      btnFunction.ButtonClickEvent += (sender, e) =>
+      {
+        var form = new DeviceAirConditioner.IndoorUnitListForm();
+        form.AddForm(listNewDevice[0].DeviceAddr);
+      };
+    }
+    #endregion
+
+    #region 鈻� 绠�绾﹀鍔熻兘闈㈡澘鐢╛__________________
+    /// <summary>
+    /// 娣诲姞銆愮粦瀹氱洰鏍囥�戣
+    /// </summary>
+    private void AddIBindRow(string deviceMac)
+    {
+      string bindTargets = Language.StringByID(R.MyInternationalizationString.uBindTargets);
+      var btnBindTargets = new FrameRowControl(listview.rowSpace / 2);
+      listview.AddChidren(btnBindTargets);
+      btnBindTargets.AddLeftCaption(bindTargets, 600);
+      //鍚戝彸鍥炬爣
+      btnBindTargets.AddRightArrow();
+      //搴曠嚎
+      btnBindTargets.AddBottomLine();
+      btnBindTargets.ButtonClickEvent += (sender, e) =>
+      {
+        var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 32);//绠�绾﹂潰鏉块殢渚夸竴涓寜閿潵鑾峰彇璁惧
+        if (dev != null)
+        {
+          var curControlDev = dev as Panel;
+          var simpleMutilfunctionTargetsPage = new Shared.Phone.UserCenter.DeviceBind.PanelSimpleMutilfunctionTargetsForm(curControlDev);
+          Shared.Phone.UserView.HomePage.Instance.AddChidren(simpleMutilfunctionTargetsPage);
+          Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+          simpleMutilfunctionTargetsPage.Show();
+        }
+      };
+    }
+
+    #region 鈻� 鎺ヨ繎鎰熷簲___________________________
+
+    /// <summary>
+    /// 鎺ヨ繎鎰熷簲琛�
+    /// </summary>
+    private void AddProximitySensorsRow(string deviceMac)
+    {
+      string proximity = Language.StringByID(R.MyInternationalizationString.ProximitySensors);
+      var proximitySensors = new FrameRowControl(listview.rowSpace / 2);
+      listview.AddChidren(proximitySensors);
+      proximitySensors.AddLeftCaption(proximity, 400);
+
+      //鎺ヨ繎鎰熷簲
+      proximitySensors.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.ProximitySensors), 400);
+      //寮�鍏虫帶浠�
+      var btnSwitch = proximitySensors.AddMostRightSwitchIcon();
+      //搴曠嚎
+      proximitySensors.AddBottomLine();
+
+      btnSwitch.ButtonClickEvent += async (sender, e) =>
+       {
+         btnSwitch.IsSelected = !btnSwitch.IsSelected;
+         proximitySensorsInfo.enable = btnSwitch.IsSelected;
+
+         //绠�绾﹂潰鏉块殢渚夸竴涓洖璺潵鑾峰彇璁惧淇℃伅
+         var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 62);
+         if (dev != null)
+         {
+           var key = new ZigBee.Device.Panel();
+           key.DeviceAddr = deviceMac;
+           key.CurrentGateWayId = dev.CurrentGateWayId;
+           SetProximitySensor(key);
+         }
+       };
+      if (proximitySensorsInfo.enable == true)
+      {
+        btnSwitch.IsSelected = true;
+      }
+    }
+    #endregion
+
+    #region 鈻� 鏁版嵁鐭_________________________ 
+    /// <summary>
+    ///  鏁版嵁鐭琛�
+    /// </summary>
+    private void DataCorrectionRow(string deviceMac)
+    {
+      //鏁版嵁鐭
+      var rowLight = new FrameRowControl(listview.rowSpace / 2);
+      listview.AddChidren(rowLight);
+      rowLight.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.DataCorrection), 600);
+      //搴曠嚎
+      rowLight.AddBottomLine();
+      //鍙崇澶�
+      rowLight.AddRightArrow();
+      rowLight.ButtonClickEvent += (sender, e) =>
+      {
+        var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 62);//绠�绾﹂潰鏉块殢渚夸竴涓洖璺潵鑾峰彇璁惧
+        var device = new CommonDevice();
+        if (dev != null)
+        {
+          device.CurrentGateWayId = dev.CurrentGateWayId;
+        }
+        device.DeviceAddr = deviceMac;
+        device.DeviceEpoint = 65;
+        var form = new Shared.Phone.UserCenter.DevicePanel.DataCorrectionForm();
+        form.AddForm(device);
+      };
+    }
+    #endregion
+
+    /// <summary>
+    ///  婀垮害鏉ユ簮琛�
+    /// </summary>
+    private void AddHumiditySourceRow(string deviceMac)
+    {
+      //婀垮害
+      var rowHumidity = new FrameRowControl(listview.rowSpace / 2);
+      listview.AddChidren(rowHumidity);
+      rowHumidity.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.HumiditySource), 600);
+      //搴曠嚎
+      rowHumidity.AddBottomLine();
+      //鍙崇澶�
+      rowHumidity.AddRightArrow();
+      var msg = Language.StringByID(R.MyInternationalizationString.nothing);
+      if (!string.IsNullOrEmpty(bindHumidityName))
+      {
+        msg = bindHumidityName;
+      }
+      var btnHumidityStatu = rowHumidity.AddMostRightView(msg, 700);
+      rowHumidity.ButtonClickEvent += (sender, e) =>
+      {
+
+        var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 62);//绠�绾﹂潰鏉块殢渚夸竴涓洖璺潵鑾峰彇璁惧
+        var device = new CommonDevice();
+        if (dev != null)
+        {
+          device.CurrentGateWayId = dev.CurrentGateWayId;
+        }
+        device.Type = DeviceType.OnOffSwitch;
+        device.DeviceAddr = deviceMac;
+        device.DeviceEpoint = 1;//鑳界粦瀹氭箍搴︾殑鍥炶矾
+        var paneTargetsBaseFormp = new PaneTargetsBaseForm(device, bindHumidityDev, BindInfo.BindType.Humidity);
+        Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp);
+        Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+        paneTargetsBaseFormp.Show();
+        paneTargetsBaseFormp.actionHumidityTarget += (bindName) =>
+              {
+                HdlThreadLogic.Current.RunMain(() =>
+                      {
+                        if (string.IsNullOrEmpty(bindName))
+                        {
+                          btnHumidityStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
+                        }
+                        else
+                        {
+                          btnHumidityStatu.Text = bindName;
+                        }
+                      });
+              };
+      };
+    }
+
+    /// <summary>
+    ///  娓╁害鏉ユ簮琛�
+    /// </summary>
+    private void AddTemperatureSensorRow(string deviceMac)
+    {
+      //娓╁害鏉ユ簮
+      var rowTemPerature = new FrameRowControl(listview.rowSpace / 2);
+      listview.AddChidren(rowTemPerature);
+      rowTemPerature.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.TemperatureSource), 600);
+      //搴曠嚎
+      rowTemPerature.AddBottomLine();
+      //鍙崇澶�
+      rowTemPerature.AddRightArrow();
+      var msg = Language.StringByID(R.MyInternationalizationString.nothing);
+      if (!string.IsNullOrEmpty(bindTemperatureName))
+      {
+        msg = bindTemperatureName;
+      }
+      var btnTemperatureStatu = rowTemPerature.AddMostRightView(msg, 700);
+      rowTemPerature.ButtonClickEvent += (sender, e) =>
+      {
+        var dev = Common.LocalDevice.Current.GetDevice(deviceMac, 62);//绠�绾﹂潰鏉块殢渚夸竴涓洖璺潵鑾峰彇璁惧
+        var device = new CommonDevice();
+        if (dev != null)
+        {
+          device.CurrentGateWayId = dev.CurrentGateWayId;
+        }
+        device.Type = DeviceType.OnOffSwitch;
+        device.DeviceAddr = deviceMac;
+        device.DeviceEpoint = 1;//鑳界粦瀹氭俯搴︾殑鍥炶矾
+        var paneTargetsBaseFormp = new PaneTargetsBaseForm(device, bindTemperatureDev, BindInfo.BindType.Temperature);
+        Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp);
+        Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+        paneTargetsBaseFormp.Show();
+        paneTargetsBaseFormp.actionTemperatureTarget += (bindName) =>
+              {
+                HdlThreadLogic.Current.RunMain(() =>
+                      {
+                        if (string.IsNullOrEmpty(bindName))
+                        {
+                          btnTemperatureStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
+                        }
+                        else
+                        {
+                          btnTemperatureStatu.Text = bindName;
+                        }
+                      });
+              };
+      };
+    }
+
+    /// <summary>
+    ///鍒濆鍖栨暟鎹� 
+    /// </summary>
+    void InitBindInfo(CommonDevice curControlDev)
+    {
+      System.Threading.Tasks.Task.Run(async () =>
+      {
+        try
+        {
+          Application.RunOnMainThread(() =>
+                {
+                  CommonPage.Loading.Start("");
+                });
+          //璇绘俯婀垮害鏁版嵁 
+          curControlDev.DeviceEpoint = 1;
+          var result = await GetBindName(curControlDev);
+          if (!result)
+          {
+            Application.RunOnMainThread(() =>
+                  {
+                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime) + "(" + "5007_2" + ")", Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                  });
+            return;
+          }
+
+          //2銆佽幏璁惧鎺ヨ繎鎰熷簲鍒濆鏁版嵁
+          //鎺ヨ繎鎰熷簲(浠栦滑璇撮殢渚挎嬁涓�璺洖璺氨琛屼簡)
+          proximitySensorsInfo = await HdlDevicePanelLogic.Current.GetDeviceProximitySensorsSettion(curControlDev);
+          if (proximitySensorsInfo == null)
+          {
+            proximitySensorsInfo = new Panel.PanelProximitySensorInfo();
+            //鍏抽棴杩涘害鏉�
+            this.CloseProgressBar(ShowReLoadMode.YES);
+            return;
+          }
+        }
+        catch (Exception ex)
+        {
+          var mess = ex.Message;
+        }
+        finally
+        {
+          Application.RunOnMainThread(() =>
+                {
+                  //鍒濆鍖栧彸涓婅鑿滃崟
+                  this.InitTopRightMenu();
+                  //鍒濆鍖栦腑閮ㄦ帶浠�
+                  this.InitMiddleFrame();
+                  CommonPage.Loading.Hide();
+                });
+        }
+      });
+    }
+
+    /// <summary>
+    /// 鑾峰彇缁戝畾鐨勬俯婀垮害鐩爣
+    /// </summary>
+    /// <param name="curControlDev"></param>
+    /// <returns></returns>
+    private async System.Threading.Tasks.Task<bool> GetBindName(CommonDevice curControlDev)
+    {
+      bool result = false;
+      var panelBindListRes = HdlDeviceBindLogic.Current.GetDeviceBindAsync(curControlDev);
+      if (panelBindListRes != null && panelBindListRes.getAllBindResponseData != null)
+      {
+        bindList = panelBindListRes.getAllBindResponseData.BindList;
+        foreach (var bDev in bindList)
+        {
+          var device = Common.LocalDevice.Current.GetDevice(bDev.BindMacAddr, bDev.BindEpoint);
+          if (device == null)
+          {
+            continue;
+          }
+          if (device.Type == DeviceType.TemperatureSensor)
+          {
+            var bD = device as TemperatureSensor;
+            if (bD.SensorDiv == 1 && bDev.BindCluster == 1026)
+            {
+              bindTemperatureName = Common.LocalDevice.Current.GetDeviceEpointName(device);
+              bindTemperatureDev = device;
+            }
+            if (bD.SensorDiv == 2 && bDev.BindCluster == 1029)
+            {
+              bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device);
+              bindHumidityDev = device;
+            }
+          }
+          if (device.Type == DeviceType.FreshAirHumiditySensor)
+          {
+            bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device);
+            bindHumidityDev = device;
+          }
+        }
+        result = true;
+      }
+      return result;
+    }
+
+    #region 鈻� 璁剧疆鏁版嵁___________________________
+
+    /// <summary>
+    /// 璁剧疆闈㈡澘鎺ヨ繎鎰熷簲鏁版嵁
+    /// </summary>
+    private void SetProximitySensor(CommonDevice curControlDev)
+    {
+      System.Threading.Tasks.Task.Run(async () =>
+      {
+        try
+        {
+          Application.RunOnMainThread(() =>
+                {
+                  CommonPage.Loading.Start("");
+                });
+          //鎺ヨ繎鎰熷簲(鎻愪緵璁惧鐨勫悓浜嬭闅忎究涓�涓洖璺氨琛�)
+          var result = await HdlDevicePanelLogic.Current.SetProximitySensorStatus(curControlDev, proximitySensorsInfo.enable);
+          if (result == false)
+          {
+            return;
+          }
+        }
+        catch (Exception ex)
+        {
+          var mess = ex.Message;
+        }
+        finally
+        {
+          Application.RunOnMainThread(() =>
+                {
+                  CommonPage.Loading.Hide();
+                });
+        }
+      });
+    }
+
+    #endregion
+    #endregion
+
+    #region 鈻� 鍔熻兘绫诲瀷(绌烘皵寮�鍏充笓鐢�)_____________
+
+    /// <summary>
+    /// 娣诲姞銆愬姛鑳界被鍨嬨�戣(绌烘皵寮�鍏充笓鐢�)
+    /// </summary>
+    private void AddAirSwitchFunctionTypeRow()
+    {
+      //2020.04.28鍙樻洿:鏈変釜鍒澶囧畠闄や簡缁х數鍣ㄥ洖璺紝浠�涔堥兘娌℃湁浜�,
+      //杩欎釜鏃跺�欎篃瑕佺幇瀹炲嚭鏉�
+      if (this.listNewDevice.Count != 1)
+      {
+        return;
+      }
+      if (this.listNewDevice[0].Type != DeviceType.OnOffOutput
+          && this.listNewDevice[0].Type != DeviceType.AirSwitch)
+      {
+        return;
+      }
+      //鑷畾涔夊姛鑳界被鍨嬫帶浠�
+      var rowFunction = new DeviceFunctionTypeRowControl(this.listNewDevice[0], listview.rowSpace / 2);
+      listview.AddChidren(rowFunction);
+      rowFunction.InitControl();
+      //搴曠嚎
+      rowFunction.AddBottomLine();
+      //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
+      if (Common.Config.Instance.Home.IsShowTemplate == true)
+      {
+        rowFunction.CanClick = false;
+      }
+    }
+
+    #endregion
+
+    #region 鈻� 閫氱敤淇℃伅___________________________
+
+    /// <summary>
+    /// 娣诲姞銆愰�氱敤淇℃伅銆戣
+    /// </summary>
+    private void AddGeneralInformationRow()
+    {
+      string caption = Language.StringByID(R.MyInternationalizationString.uGeneralInformation);
+      var btnGeneral = new FrameRowControl(listview.rowSpace / 2);
+      listview.AddChidren(btnGeneral);
+      btnGeneral.AddLeftCaption(caption, 600);
+      //鍚戝彸鍥炬爣
+      btnGeneral.AddRightArrow();
+      //搴曠嚎
+      btnGeneral.AddBottomLine();
+      btnGeneral.ButtonClickEvent += (sender, e) =>
+      {
+        var form = new DeviceGeneralInformationForm();
+        form.AddForm(listNewDevice[0].DeviceAddr);
+      };
+    }
+
+    #endregion
+
+    #region 鈻� 绌鸿皟妯″潡鐗堟湰(绌鸿皟涓撶敤)_____________
+
+    /// <summary>
+    /// 娣诲姞銆愮┖璋冩ā鍧楃増鏈�戣(娌充笢鐨勪腑澶┖璋�)
+    /// </summary>
+    private void AddAirConditionerModelVersionRow()
+    {
+      if (this.deviceEnumInfo.ConcreteType != DeviceConcreteType.AirConditioner_ZbGateway)
+      {
+        //涓嶆槸涓ぎ绌鸿皟
+        return;
+      }
+      string caption = Language.StringByID(R.MyInternationalizationString.uAirConditionerModelVersion);
+      var rowVersion = new FrameRowControl(listview.rowSpace / 2);
+      rowVersion.UseClickStatu = false;
+      listview.AddChidren(rowVersion);
+      rowVersion.AddLeftCaption(caption, 600);
+      //鐗堟湰
+      this.btnAirConditionerVersion = rowVersion.AddMostRightView(string.Empty, 900);
+      if (this.listNewDevice[0] is AC)
+      {
+        this.btnAirConditionerVersion.Text = ((AC)this.listNewDevice[0]).AcModelVersion;
+      }
+      //搴曠嚎
+      rowVersion.AddBottomLine();
+
+      //鑾峰彇涓ぎ绌鸿皟妯″潡鐨勭増鏈�
+      this.ReadAirConditionerVersion();
+    }
+
+    #endregion
+
+    #region 鈻� 鍥轰欢鍗囩骇___________________________
+
+    /// <summary>
+    /// 娣诲姞銆愬浐浠跺崌绾с�戣
+    /// </summary>
+    private void AddFirmwareUpdateRow()
+    {
+      //鎷ユ湁200绔彛杩欎釜涓滆タ鐨勬椂鍊欙紝鎵嶄細鏄剧ず杩欎竴琛�
+      var oTADevice = Common.LocalDevice.Current.GetOTADevice(listNewDevice[0].DeviceAddr);
+      if (oTADevice == null)
+      {
+        return;
+      }
+
+      //鍥轰欢鍗囩骇
+      string caption = Language.StringByID(R.MyInternationalizationString.uFirmwareUpdate);
+      var rowUpDate = new FrameRowControl(listview.rowSpace / 2);
+      listview.AddChidren(rowUpDate);
+      rowUpDate.AddLeftCaption(caption, 600);
+      //鍚戝彸鍥炬爣
+      rowUpDate.AddRightArrow();
+      //搴曠嚎
+      rowUpDate.AddBottomLine();
+
+      //鎻愮ず鏈夋柊鐗堟湰
+      var btnNewVersion = new PicViewControl(78, 55);
+      btnNewVersion.UnSelectedImagePath = "Item/NewVersion.png";
+      btnNewVersion.Visible = false;
+      btnNewVersion.X = Application.GetRealWidth(242);
+      btnNewVersion.Y = Application.GetRealHeight(23);
+      rowUpDate.AddChidren(btnNewVersion, ChidrenBindMode.BindEvent);
+
+      rowUpDate.ButtonClickEvent += (sender, e) =>
+      {
+        if (this.deviceEnumInfo.ConcreteType != DeviceConcreteType.AirConditioner_ZbGateway)
+        {
+          //杩欎釜鏄竴鑸澶囩殑鍗囩骇
+          var form = new DeviceFirmwareUpdateForm();
+          form.AddForm(listNewDevice[0].DeviceAddr);
+        }
+        else
+        {
+          //涓ぎ绌鸿皟鐨勫崌绾х殑璇濓紝鏄壒娈婄殑
+          var form = new DeviceAirConditioner.ACZbGatewayUpdateMenuForm();
+          form.AddForm(listNewDevice[0], btnNewVersion.Visible);
+        }
+        btnNewVersion.Visible = false;
+      };
+
+      //濡傛灉褰撳墠浣忓畢涓嶆槸铏氭嫙浣忓畢
+      if (Config.Instance.Home.IsVirtually == false
+          && Config.Instance.Home.IsShowTemplate == false)
+      {
+        //璁剧疆璁惧鐨勭増鏈俊鎭�
+        this.SetDeviceVersionInfo(btnNewVersion, oTADevice);
+      }
+    }
+
+    /// <summary>
+    /// 璁剧疆璁惧鐨勭増鏈俊鎭�
+    /// </summary>
+    /// <param name="btnNewVersion">鏈夋柊鐗堟湰鐨勬彁绀烘帶浠�</param>
+    /// <param name="oTADevice">ota璁惧</param>
+    private void SetDeviceVersionInfo(PicViewControl btnNewVersion, OTADevice oTADevice)
+    {
+      HdlThreadLogic.Current.RunThread(() =>
+      {
+        bool receiveImageInfo = false;
+        //璁剧疆璁惧鍏ㄩ儴鐨勯暅鍍忎俊鎭�
+        string checkKey = LocalDevice.Current.GetDeviceMainKeys(oTADevice.DeviceAddr, oTADevice.DeviceEpoint);
+        HdlGatewayReceiveLogic.Current.AddAttributeEvent("SetDeviceVersionInfo", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) =>
+              {
+                if (report.DeviceStatusReport.CluterID == (int)Cluster_ID.Ota)
+                {
+                  string mainKey = LocalDevice.Current.GetDeviceMainKeys(report.DeviceAddr, report.DeviceEpoint);
+                  if (checkKey == mainKey)
+                  {
+                    //宸茬粡鎺ユ敹寰楀埌
+                    receiveImageInfo = true;
+                  }
+                }
+              });
+        //鍙戦�佸懡浠�
+        HdlDeviceImageInfoLogic.Current.SetFirmwareVersionComand(oTADevice);
+
+        int count = 5;
+        while (receiveImageInfo == false && count > 0)
+        {
+          //绛夊緟璁惧闀滃儚鐨勫弽棣�
+          System.Threading.Thread.Sleep(300);
+          count--;
+        }
+        //绉婚櫎浜嬩欢
+        HdlGatewayReceiveLogic.Current.RemoveEvent("SetDeviceVersionInfo");
+
+        oTADevice = Common.LocalDevice.Current.GetOTADevice(listNewDevice[0].DeviceAddr);
+        //娣诲姞鍗囩骇鍥轰欢淇℃伅(鎴愪笉鎴愬姛閮芥棤鎵�璋�)
+        var result = HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.A璁惧, oTADevice.HwVersion.ToString(), oTADevice.ImgTypeId.ToString());
+
+        //鑾峰彇璁惧鏈�鏂扮増鏈�
+        var deviceFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.A璁惧,
+            oTADevice.HwVersion.ToString(),
+            oTADevice.ImgTypeId.ToString(),
+            oTADevice.ImgVersion);
+
+        if (deviceFirmware != null && deviceFirmware.FirmwareVersion > oTADevice.ImgVersion)
+        {
+          HdlThreadLogic.Current.RunMain(() =>
+                {
+                  if (btnNewVersion != null)
+                  {
+                    btnNewVersion.Visible = true;
+                  }
+                }, ShowErrorMode.NO);
+        }
+      });
+    }
+
+    #endregion
+
+    #region 鈻� 淇敼鍚嶅瓧___________________________
+
+    /// <summary>
+    /// 璁惧閲嶅懡鍚�
+    /// </summary>
+    /// <param name="i_deviceName">deviceName.</param>
+    private void DeviceReName(string i_deviceName, bool closeForm)
+    {
+      //淇敼MAC鍚�
+      string deviceName = i_deviceName.Trim();
+      var result = Common.LocalDevice.Current.ReMacName(this.listNewDevice, deviceName);
+      if (result == false)
+      {
+        return;
+      }
+      if (closeForm == true)
+      {
+        //鍏抽棴鐣岄潰
+        this.CloseForm();
+      }
+      else
+      {
+        //璁惧澶囨敞淇敼鎴愬姛!
+        string msg = Language.StringByID(R.MyInternationalizationString.uDeviceReNoteSuccess);
+        this.ShowMassage(ShowMsgType.Tip, msg);
+      }
+    }
+
+    #endregion
+
+    #region 鈻� 鍙充笂瑙掕彍鍗昣________________________
+
+    /// <summary>
+    /// 鍒濆鍖栧彸涓婅鑿滃崟
+    /// </summary>
+    private void InitTopRightMenu()
+    {
+      //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
+      if (Common.Config.Instance.Home.IsShowTemplate == true)
+      {
+        return;
+      }
+      var btnIcon = new MostRightIconControl(69, 69);
+      btnIcon.UnSelectedImagePath = "Item/More.png";
+      topFrameLayout.AddChidren(btnIcon);
+      btnIcon.InitControl();
+      btnIcon.ButtonClickEvent += ((sender, e) =>
+      {
+        //鏄剧ず鍙充笂瑙掕彍鍗曠晫闈�
+        this.ShowTopRightMenu();
+      });
+    }
+
+    /// <summary>
+    /// 鏄剧ず鍙充笂瑙掕彍鍗曠晫闈�
+    /// </summary>
+    private void ShowTopRightMenu()
+    {
+      //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘(鎷跨鐐规渶灏忕殑閭d釜鍥炶矾鍘诲畾浣�)
+      bool canTest = Common.LocalDevice.Current.DeviceIsCanFixedPosition(listNewDevice[0]);
+
+      TopRightMenuControl frame = null;
+
+      if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleMultifunction)
+      {
+        frame = new TopRightMenuControl(3, 1);
+      }
+      else
+      {
+        frame = new TopRightMenuControl(canTest == true ? 2 : 1, 1);
+      }
+
+      string deviceMenu = string.Empty;
+      if (canTest == true)
+      {
+        //瀹氫綅
+        deviceMenu = Language.StringByID(R.MyInternationalizationString.uFixedPosition);
+        frame.AddRowMenu(deviceMenu, "Item/FixedPosition.png", "Item/FixedPositionSelected.png", () =>
+        {
+          //鍙戦�佸畾浣嶅姛鑳�
+          Common.LocalDevice.Current.SetFixedPositionCommand(listNewDevice[0], true);
+        });
+      }
+
+      //鍒犻櫎
+      deviceMenu = Language.StringByID(R.MyInternationalizationString.uDelete);
+      frame.AddRowMenu(deviceMenu, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
+      {
+        //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�,姝ゅ姛鑳芥棤鏁�
+        if (Common.Config.Instance.Home.IsVirtually == true)
+        {
+          return;
+        }
+        //纭鍒犻櫎璇ヨ澶囧強鍔熻兘锛�
+        string msg = Language.StringByID(R.MyInternationalizationString.uDeleteDeviceMsg);
+        this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+              {
+                //鍒犻櫎鎸囧畾璁惧
+                this.DoDeleteDevice();
+              });
+      });
+
+      //鍚屾
+      deviceMenu = Language.StringByID(R.MyInternationalizationString.Synchronization);
+      if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(listNewDevice[0]))
+      {
+        frame.AddRowMenu(deviceMenu, "", "Item/SynchronizationSelected.png", () =>
+        {
+          //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�,姝ゅ姛鑳芥棤鏁�
+          if (Common.Config.Instance.Home.IsVirtually == true)
+          {
+            return;
+          }
+
+          //鍚屾鎸囧畾璁惧
+          this.SynchronizationDevice();
+        });
+      }
+
+    }
+
+    /// <summary>
+    /// 鍒犻櫎鎸囧畾璁惧
+    /// </summary>
+    private void DoDeleteDevice()
+    {
+      HdlThreadLogic.Current.RunThread(async () =>
+      {
+        //鎵撳紑杩涘害鏉�
+        this.ShowProgressBar();
+
+        //鍒犻櫎璁惧
+        bool result = await Common.LocalDevice.Current.DeleteDevice(listNewDevice);
+        //鍏抽棴杩涘害鏉�
+        this.CloseProgressBar();
+        if (result == false)
+        {
+          return;
+        }
+        HdlThreadLogic.Current.RunMain(() =>
+              {
+                //鍏抽棴鐣岄潰
+                this.CloseForm();
+              });
+      });
+    }
+
+    /// <summary>
+    /// 鍚屾鎸囧畾璁惧
+    /// </summary>
+    private void SynchronizationDevice()
+    {
+      HdlThreadLogic.Current.RunThread(async () =>
+      {
+        //鎵撳紑杩涘害鏉�
+        this.ShowProgressBar();
+
+        //鍚屾璁惧
+        bool result = await Common.LocalDevice.Current.SynchronizationDevice(listNewDevice);
+        //鍏抽棴杩涘害鏉�
+        this.CloseProgressBar();
+        if (result == false)
+        {
+          return;
+        }
+      });
+    }
+    #endregion
+
+    #region 鈻� 鍏抽棴鐣岄潰___________________________
+
+    /// <summary>
+    /// 鐢婚潰鍏抽棴
+    /// </summary>
+    public override void CloseFormBefore()
+    {
+      HdlGatewayReceiveLogic.Current.RemoveEvent("HandPullControl");
+      HdlGatewayReceiveLogic.Current.RemoveEvent("SetDeviceVersionInfo");
+
+      //璁惧鏂板叆缃�
+      if (UserCenterResourse.DicActionForm.ContainsKey("AddDeviceTypeListForm") == true)
+      {
+        this.LoadFormMethodByName("DeviceListMainForm", "RefreshDeviceRow", new object[] { listNewDevice[0].DeviceAddr });
+      }
+
+      base.CloseFormBefore();
+    }
+
+    #endregion
+
+    #region 鈻� 纭欢淇℃伅___________________________
+
+    /// <summary>
+    /// 閲嶆柊鑾峰彇纭欢淇℃伅
+    /// </summary>
+    private void RefreshHardFirmwareInfo()
+    {
+      if (listNewDevice[0].DriveCode > 0 || Common.Config.Instance.Home.IsShowTemplate == true)
+      {
+        //铏氭嫙璁惧娌℃湁杩欑鎿嶄綔
+        return;
+      }
+      //閲嶆柊鑾峰彇纭欢淇℃伅
+      HdlDeviceHardInfoLogic.Current.SetAllHardFirmwareInfoToDevice(listNewDevice[0]);
+    }
+
+    #endregion
+
+    #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________
+
+    /// <summary>
+    /// 鑷韩鐨勪笂灞傜晫闈㈠叧闂悗,瀹冭嚜韬浜庢渶涓婂眰鏃�,瑙﹀彂鐨勪簨浠�
+    /// </summary>
+    public override int FormActionAgainEvent()
+    {
+      //閲嶆柊鑾峰彇涓ぎ绌鸿皟妯″潡鐨勭増鏈�
+      this.ReadAirConditionerVersion();
+
+      return 0;
+    }
+
+    #endregion
+
+    #region 鈻� 涓�鑸柟娉昣__________________________
+
+    /// <summary>
+    /// 鑾峰彇涓ぎ绌鸿皟妯″潡鐨勭増鏈�
+    /// </summary>
+    private void ReadAirConditionerVersion()
+    {
+      if (this.btnAirConditionerVersion == null)
+      {
+        return;
+      }
+      //濡傛灉鏄櫄鎷熶綇瀹呮垨鑰呭睍绀烘ā鏉跨殑璇�
+      if (Config.Instance.Home.IsShowTemplate == true || Config.Instance.Home.IsVirtually == true)
+      {
+        return;
+      }
+
+      bool notVersion = true;
+      if (this.listNewDevice[0] is AC)
+      {
+        notVersion = ((AC)this.listNewDevice[0]).AcModelVersion == string.Empty;
+      }
+      if (notVersion == true)
+      {
+        //鑾峰彇涓�
+        btnAirConditionerVersion.Text = Language.StringByID(R.MyInternationalizationString.uGetting);
+      }
+      HdlThreadLogic.Current.RunThread(async () =>
+      {
+        //璇诲彇绌鸿皟妯″潡鐗堟湰
+        var result = await HdlDeviceAirConditionerLogic.Current.ReadACFirewareVersionAsync(listNewDevice[0]);
+        if (result == null || result.readACFirewareVersionResponData == null || result.readACFirewareVersionResponData.Status != 0)
+        {
+          if (notVersion == true)
+          {
+            //鑾峰彇澶辫触
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+              btnAirConditionerVersion.Text = Language.StringByID(R.MyInternationalizationString.uGettingFail);
+            });
+          }
+          return;
+        }
+        HdlThreadLogic.Current.RunMain(() =>
+              {
+                string strVersion = result.readACFirewareVersionResponData.FirewareVersion.Replace("-", string.Empty);
+                if (this.listNewDevice[0] is AC)
+                {
+                  ((AC)this.listNewDevice[0]).AcModelVersion = strVersion;
+                  this.listNewDevice[0].ReSave();
+                }
+                btnAirConditionerVersion.Text = strVersion;
+              });
+      });
+    }
+
+    /// <summary>
+    /// 妫�娴嬭兘鍚︽樉绀哄姛鑳借缃殑鑿滃崟
+    /// </summary>
+    /// <returns></returns>
+    private bool CheckCanShowFunctionSettionRow()
+    {
+      //鏂规偊鏂伴闈㈡澘娌℃湁鍔熻兘璁剧疆
+      if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir
+          || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FourButtonScene
+          || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_TwoButtonCurtain)
+      {
+        return false;
+      }
+      return true;
+    }
+
+    #endregion
+  }
 }

--
Gitblit v1.8.0