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/DeviceFunctionSettionForm.cs | 1247 ++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 723 insertions(+), 524 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs
old mode 100755
new mode 100644
index 3b352d4..36d7d65
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs
@@ -1,533 +1,732 @@
 锘縰sing System;
 using System.Collections.Generic;
 using System.Text;
+using Java.Util;
 using ZigBee.Device;
 
 namespace Shared.Phone.UserCenter.Device
-{
+{
+  /// <summary>
+  /// 璁惧鐨勫姛鑳借缃晫闈�
+  /// </summary>
+  public class DeviceFunctionSettionForm : EditorCommonForm
+  {
+    #region 鈻� 鍙橀噺澹版槑___________________________
+
     /// <summary>
-    /// 璁惧鐨勫姛鑳借缃晫闈�
+    /// 鍒楄〃鎺т欢
     /// </summary>
-    public class DeviceFunctionSettionForm : EditorCommonForm
-    {
-        #region 鈻� 鍙橀噺澹版槑___________________________
-
-        /// <summary>
-        /// 鍒楄〃鎺т欢
-        /// </summary>
-        private FrameListControl listview = null;
-        /// <summary>
-        /// 褰撳墠閫夋嫨鐨勮澶�
-        /// </summary>
-        private CommonDevice nowSelectDevice = null;
-        /// <summary>
-        /// 褰撳墠閫夋嫨鐨勫洖璺帶浠�
-        /// </summary>
-        private NormalViewControl nowSelectControl = null;
-        /// <summary>
-        /// 璁惧澶囨敞鐨勬帶浠�
-        /// </summary>
-        private FrameCaptionInputControl frameDeviceName = null;
-        /// <summary>
-        /// 璁惧鐨勬煇涓�鍥炶矾
-        /// </summary>
-        private CommonDevice deviceObj = null;
-        /// <summary>
-        /// 鍙樉绀哄悓涓�绉嶇被鍨嬬殑鍥炶矾
-        /// </summary>
-        private bool onlyType = false;
-        /// <summary>
-        /// 璁惧闇�瑕佷繚瀛樼殑璁惧鍚嶅瓧
-        /// </summary>
-        private Dictionary<int, string> dicDeviceSaveName = new Dictionary<int, string>();
-        /// <summary>
-        /// 淇℃伅缂栬緫鎺т欢
-        /// </summary>
-        private InformationEditorControl tableContr = null;
-
-        #endregion
-
-        #region 鈻� 鍒濆鍖朹____________________________
-
-        /// <summary>
-        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
-        /// </summary>
-        /// <param name="i_device">璁惧鐨勬煇涓�鍥炶矾</param>
-        /// <param name="i_onlyType">鍙樉绀哄悓涓�绉嶇被鍨嬬殑鍥炶矾</param>
-        public void ShowForm(CommonDevice i_device, bool i_onlyType)
-        {
-            this.deviceObj = i_device;
-            this.onlyType = i_onlyType;
-
-            //璁剧疆澶撮儴淇℃伅
-            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uFunctionSettingUp));
-
-            //鍒濆鍖栦腑閮ㄤ俊鎭�
-            this.InitMiddleFrame();
-
-            //鍒濆鍖栧彸涓婅鑿滃崟
-            this.InitTopRightMenu();
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
-        /// </summary>
-        private void InitMiddleFrame()
-        {
-            //娓呯┖bodyFrame
-            this.ClearBodyFrame();
-
-            var listBackControl = new VerticalFrameControl();
-            listBackControl.Height = bodyFrameLayout.Height;
-            bodyFrameLayout.AddChidren(listBackControl);
-
-            //鍒濆鍖栨甯�
-            this.tableContr = new InformationEditorControl();
-
-            if (this.deviceObj.Type == DeviceType.FreshAir || this.deviceObj.Type == DeviceType.PMSensor)
-            {
-                this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1028);
-            }
-            else
-            {
-                this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1128);
-            }
-
-            //鍒濆鍖栬澶囧洖璺浘鏍�
-            this.InitDeviceEpointIcon(listBackControl);
-
-            //淇濆瓨
-            var btnFinish = new BottomClickButton();
-            btnFinish.TextID = R.MyInternationalizationString.uSave;
-            bodyFrameLayout.AddChidren(btnFinish);
-            btnFinish.ButtonClickEvent += (sender, e) =>
-            {
-                //璁板綍璧峰綋鍓嶆鍦ㄦ搷浣滅殑鍥炶矾鍚嶅瓧
-                dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = frameDeviceName.Text.Trim();
-                foreach (var epoint in dicDeviceSaveName.Keys)
-                {
-                    var device = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, epoint);
-                    if (device == null || dicDeviceSaveName[epoint] == string.Empty)
-                    {
-                        //涓嶈兘鍏佽绌虹櫧鍚嶅瓧
-                        continue;
-                    }
-                    string newName = dicDeviceSaveName[epoint];
-                    string oldName = Common.LocalDevice.Current.GetDeviceEpointName(device);
-                    if (oldName != newName)
-                    {
-                        //璁惧鍚嶇О淇敼
-                        var result = Common.LocalDevice.Current.ReName(device, newName);
-                        if (result == false)
-                        {
-                            return;
-                        }
-                    }
-                }
-                //鍏抽棴鑷韩
-                this.CloseForm();
-            };
-            //濡傛灉褰撳墠鏄睍绀烘ā鏉�,鍒欎笉鑳界紪杈�
-            if (Common.Config.Instance.Home.IsShowTemplate == true)
-            {
-                btnFinish.CanClick = false;
-            }
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栬彍鍗曡
-        /// </summary>
-        private void InitMenuRow()
-        {
-            this.listview.RemoveAll();
-
-            //鍥炶矾澶囨敞
-            string caption = Language.StringByID(R.MyInternationalizationString.uDeviceEpointNote);
-            string nameValue = Common.LocalDevice.Current.GetDeviceEpointName(nowSelectDevice);
-            if (dicDeviceSaveName.ContainsKey(nowSelectDevice.DeviceEpoint) == true)
-            {
-                nameValue = dicDeviceSaveName[nowSelectDevice.DeviceEpoint];
-            }
-
-            this.frameDeviceName = new FrameCaptionInputControl(caption, nameValue, listview.rowSpace / 2);
-            this.frameDeviceName.txtInput.MaxByte = 48;//闄愬埗鍙兘杈撳叆48涓瓧鑺�
-            listview.AddChidren(frameDeviceName);
-            frameDeviceName.InitControl();
-            frameDeviceName.AddBottomLine();
-            //濡傛灉褰撳墠鏄睍绀烘ā鏉�,鍒欓渶瑕佸鐞�
-            if (Common.Config.Instance.Home.IsShowTemplate == false)
-            {
-                frameDeviceName.txtInput.FinishInputEvent += () =>
-                {
-                    string oldName = Common.LocalDevice.Current.GetDeviceEpointName(nowSelectDevice);
-                    if (frameDeviceName.Text.Trim() == string.Empty)
-                    {
-                        //灏嗗悕瀛楄繕鍘�
-                        frameDeviceName.Text = oldName;
-                    }
-                    if (oldName != frameDeviceName.Text.Trim())
-                    {
-                        //璁惧鍚嶇О淇敼
-                        var result = Common.LocalDevice.Current.ReName(nowSelectDevice, frameDeviceName.Text.Trim());
-                        if (result == false)
-                        {
-                            return;
-                        }
-                        //鍥炶矾澶囨敞淇敼鎴愬姛!
-                        string msg = Language.StringByID(R.MyInternationalizationString.uDeviceEpointReNoteSuccess);
-                        this.ShowMassage(ShowMsgType.Tip, msg);
-                    }
-                };
-            }
-
-            //鎵�灞炲尯鍩�
-            var rowBeloneArea = new BelongAreaControl(listview.rowSpace / 2);
-            listview.AddChidren(rowBeloneArea);
-            rowBeloneArea.InitControl(Language.StringByID(R.MyInternationalizationString.uBelongArea), nowSelectDevice);
-            //搴曠嚎
-            rowBeloneArea.AddBottomLine();
-            rowBeloneArea.SelectRoomEvent += (roomKeys) =>
-            {
-                //鍙樻洿鎴块棿
-                HdlRoomLogic.Current.ChangedRoom(nowSelectDevice, roomKeys);
-            };
-
-            //娣诲姞鍔熻兘绫诲瀷琛�
-            this.AddFunctionTypeRow();
-            //鍒濆鍖栨甯冨畬鎴�
-            tableContr.FinishInitControl();
-        }
-
-        #endregion
-
-        #region 鈻� 鍙充笂瑙掕彍鍗昣________________________
-
-        /// <summary>
-        /// 鍒濆鍖栧彸涓婅鑿滃崟
-        /// </summary>
-        private void InitTopRightMenu()
-        {
-            //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘
-            if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice) == false
-                || 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()
-        {
-            int menuCount = 1;
-            string deviceMenu = string.Empty;
-            //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘
-            bool canTest = Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice);
-            //if (canTest == true)
-            //{
-            //    menuCount = 2;
-            //}
-            var frame = new TopRightMenuControl(menuCount, 1);
-            if (canTest == true)
-            {
-                //瀹氫綅
-                deviceMenu = Language.StringByID(R.MyInternationalizationString.uFixedPosition);
-                frame.AddRowMenu(deviceMenu, "Item/FixedPosition.png", "Item/FixedPositionSelected.png", () =>
-                {
-                    //鍙戦�佸畾浣嶅姛鑳�
-                    Common.LocalDevice.Current.SetFixedPositionCommand(nowSelectDevice);
-                });
-            }
-
-            //鍒犻櫎
-            //deviceMenu = Language.StringByID(R.MyInternationalizationString.uDelete);
-            //frame.AddRowMenu(deviceMenu, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
-            //{
-            //});
-        }
-
-        #endregion
-
-        #region 鈻� 鍔熻兘绫诲瀷___________________________
-
-        /// <summary>
-        /// 娣诲姞鍔熻兘绫诲瀷琛�
-        /// </summary>
-        private void AddFunctionTypeRow()
-        {
-            //鑷畾涔夊姛鑳界被鍨嬫帶浠�
-            var rowFunction = new DeviceFunctionTypeRowControl(nowSelectDevice, listview.rowSpace / 2);
-            if (rowFunction.CanShowRow == false)
-            {
-                return;
-            }
-            listview.AddChidren(rowFunction);
-            rowFunction.InitControl();
-            //搴曠嚎
-            rowFunction.AddBottomLine();
-        }
-
-        #endregion
-
-        #region 鈻� 鍒濆鍖栬澶囧洖璺浘鏍嘷________________
-
-        /// <summary>
-        /// 鍒濆鍖栬澶囧洖璺浘鏍�
-        /// </summary>
-        private void InitDeviceEpointIcon(VerticalFrameControl listBackControl)
-        {
-            //鑾峰彇鎸夌粍鍒嗛厤鐨勮澶�
-            var listIcon = this.GetAllDeviceGroup();
-
-            var frameBorder = new FrameLayout();
-            frameBorder.Y = Application.GetRealHeight(147);
-            frameBorder.Gravity = Gravity.CenterHorizontal;
-            frameBorder.Width = this.GetPictrueRealSize(887);
-            frameBorder.Height = Application.GetRealHeight(423);
-            frameBorder.Radius = (uint)Application.GetRealHeight(6);
-            listBackControl.frameTable.AddChidren(frameBorder);
-
-            var frameBack = new FrameLayout();
-            frameBack.Height = frameBorder.Height;
-
-            if (listIcon.Count > 2)
-            {
-                //闇�瑕佹粦鍔ㄦ帶浠�
-                var listControl = new VerticalScrolViewLayout();
-                listControl.Height = frameBorder.Height;
-                frameBorder.AddChidren(listControl);
-
-                listControl.AddChidren(frameBack);
-            }
-            else
-            {
-                //涓嶉渶瑕佹粦鍔ㄦ帶浠�
-                frameBorder.AddChidren(frameBack);
-            }
-
-            int index = 0;
-            for (int i = 0; i < listIcon.Count; i++)
-            {
-                var frame = new FrameLayout();
-                frame.Width = frameBorder.Width;
-                frame.Height = this.GetPictrueRealSize(124);
-                frameBack.AddChidren(frame);
-                //鍒濆鍖栦竴琛岃澶囧浘鏍�
-                this.InitDeviceIconFrame(frame, listIcon[i], ref index);
-
-                if (listIcon.Count == 1)
-                {
-                    frame.Gravity = Gravity.CenterVertical;
-
-                    //濡傛灉鏄柊椋�
-                    if (deviceObj.Type == DeviceType.FreshAir)
-                    {
-                        frame.RemoveFromParent();
-                        frameBorder.Y = Application.GetRealHeight(0);
-                        frameBorder.Height = Application.GetRealHeight(709);
-                        frameBack.BackgroundImagePath = "FreshAir/FreshAirRealDevicePic.png";
-                        frameBack.Width = this.GetPictrueRealSize(878);
-                        frameBack.Height = this.GetPictrueRealSize(354);
-                        frameBack.Y = Application.GetRealHeight(153);
-                        frameBack.Gravity = Gravity.Center;
-                    }
-
-                    //濡傛灉鏄疨M2.5
-                    if (deviceObj.Type == DeviceType.PMSensor)
-                    {
-                        frame.RemoveFromParent();
-                        frameBorder.Y = Application.GetRealHeight(0);
-                        frameBorder.Height = Application.GetRealHeight(708);
-                        frameBack.BackgroundImagePath = "RealDevice/SensorPMTwoPointFive.png";
-                        frameBack.Width = this.GetPictrueRealSize(418);
-                        frameBack.Height = this.GetPictrueRealSize(403);
-                        frameBack.Y = Application.GetRealHeight(153);
-                        frameBack.Gravity = Gravity.Center;
-                    }
-                }
-                else
-                {
-                    frame.Y = this.GetPictrueRealSize(58) + (frameBack.ChildrenCount - 1) * (frame.Height + this.GetPictrueRealSize(60));
-                }
-            }
-
-            if (listIcon.Count > 2)
-            {
-                //璁$畻鐪熷疄楂樺害
-                int realHeight = this.GetPictrueRealSize(58 + 58);//涓婁笅闂磋窛
-                realHeight += frameBack.ChildrenCount * this.GetPictrueRealSize(124);//鍦嗗湀楂樺害
-                realHeight += (frameBack.ChildrenCount - 1) * this.GetPictrueRealSize(60);//鍦嗗湀闂磋窛
-                if (realHeight > frameBack.Height)
-                {
-                    //鍙樻洿楂樺害
-                    frameBack.Height = realHeight;
-                }
-            }
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栦竴琛岃澶囧浘鏍�
-        /// </summary>
-        /// <param name="frame"></param>
-        /// <param name="listDevice"></param>
-        /// <param name="index"></param>
-        /// <returns></returns>
-        private void InitDeviceIconFrame(FrameLayout frame, List<CommonDevice> listDevice, ref int index)
-        {
-            NormalViewControl btnTemp = null;
-            //闂磋窛
-            int space = this.GetPictrueRealSize(84);
-            int defultXX = (frame.Width - frame.Height * listDevice.Count - (listDevice.Count - 1) * space) / 2;
-            for (int i = 0; i < listDevice.Count; i++)
-            {
-                index++;
-                var btnIcon = new NormalViewControl(frame.Height, frame.Height, false);
-                btnIcon.Name = "btn" + listDevice[i].DeviceEpoint;
-                btnIcon.X = defultXX + i * (frame.Height + space);
-                btnIcon.Radius = (uint)frame.Height / 2;
-                btnIcon.BorderWidth = 2;
-                btnIcon.BorderColor = 0xff979797;
-                btnIcon.TextAlignment = TextAlignment.Center;
-                btnIcon.TextColor = UserCenterColor.Current.TextGrayColor3;
-                btnIcon.TextSize = 13;
-                btnIcon.Text = "CH" + index;
-                frame.AddChidren(btnIcon);
-                //鐐瑰嚮浜嬩欢
-                btnIcon.ButtonClickEvent += this.DeviceEpointSelectEvent;
-
-                if (listDevice[i].DeviceEpoint == deviceObj.DeviceEpoint)
-                {
-                    btnTemp = btnIcon;
-                }
-            }
-            if (btnTemp != null)
-            {
-                //鍒濆鍖栬彍鍗曡
-                this.DeviceEpointSelectEvent(btnTemp, null);
-            }
-        }
-
-        /// <summary>
-        /// 鑾峰彇鎸夌粍鍒嗛厤鐨勮澶�
-        /// </summary>
-        /// <returns></returns>
-        private List<List<CommonDevice>> GetAllDeviceGroup()
-        {
-            bool hadDevice = false;
-            var listDevice = Common.LocalDevice.Current.GetDevicesByMac(deviceObj.DeviceAddr);
-            var listRelay = new List<CommonDevice>();
-            foreach (var device in listDevice)
-            {
-                if (device.Type == DeviceType.OnOffSwitch)
-                {
-                    //杩欎釜鐣岄潰涓嶅鐞嗗共鎺ョ偣
-                    continue;
-                }
-                if (this.onlyType == true && device.Type != deviceObj.Type)
-                {
-                    //鍙鍚屼竴绉嶇被鍨嬬殑
-                    continue;
-                }
-
-                //鑾峰彇璁惧灞炰簬銆愮畝绾﹀鍔熻兘闈㈡澘銆�
-                var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listDevice);
-                if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_SimpleMultifunction)
-                {
-                    if (device.Type == DeviceType.TemperatureSensor && device.DeviceEpoint == 1)
-                    {
-                        //绠�绾﹀鍔熻兘闈㈡澘绗�1鍥炶矾鏄竴涓粦瀹氭俯婀垮害浼犳劅鍣ㄧ绫诲瀷锛屼笉鏄湡鐨勬俯婀垮害鐨勪紶鎰熷櫒锛岄渶瑕佸睆钄芥帀
-                        continue;
-                    }
-                }
-
-                listRelay.Add(device);
-                if (device.DeviceEpoint == deviceObj.DeviceEpoint)
-                {
-                    //鑳藉鍖归厤寰楀埌杩欎釜鍥炶矾
-                    hadDevice = true;
-                }
-            }
-            //鎺掑簭
-            listRelay.Sort((obj1, obj2) =>
-            {
-                if (obj1.DeviceEpoint > obj2.DeviceEpoint)
-                {
-                    return 1;
-                }
-                return -1;
-            });
-            if (hadDevice == false)
-            {
-                //濡傛灉鍖归厤涓嶅埌杩欎釜鍥炶矾,鍒欓粯璁ょ涓�涓�
-                this.deviceObj = listRelay[0];
-            }
-
-            //浠庝笅寰�涓�4涓负涓�缁�
-            var listIcon = new List<List<CommonDevice>>();
-            var listTemp = new List<CommonDevice>();
-            for (int i = listRelay.Count - 1; i >= 0; i--)
-            {
-                listTemp.Insert(0, listRelay[i]);
-                if (listTemp.Count == 4)
-                {
-                    listIcon.Insert(0, listTemp);
-                    listTemp = new List<CommonDevice>();
-                }
-            }
-            if (listTemp.Count > 0)
-            {
-                listIcon.Insert(0, listTemp);
-            }
-            return listIcon;
-        }
-        #endregion
-
-        #region 鈻� 鍥炶矾閫夋嫨___________________________
-
-        /// <summary>
-        /// 鍥炶矾閫夋嫨浜嬩欢
-        /// </summary>
-        /// <param name="sender"></param>
-        /// <param name="e"></param>
-        private void DeviceEpointSelectEvent(object sender, MouseEventArgs e)
-        {
-            var nowContr = (NormalViewControl)sender;
-            if (nowSelectControl != null)
-            {
-                //鍚屼竴涓笢瑗�,涓嶉笩浠�
-                if (nowSelectControl.Name == nowContr.Name)
-                {
-                    return;
-                }
-                //涓嶉�夋嫨鐘舵��
-                nowSelectControl.BorderColor = 0xff979797;
-                nowSelectControl.TextSize = 13;
-                nowSelectControl.TextColor = UserCenterColor.Current.TextGrayColor3;
-                //璁板綍瀹冪殑鍚嶅瓧
-                dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = frameDeviceName.Text.Trim();
-            }
-            //閫夋嫨鐘舵��
-            nowContr.BorderColor = 0xfffb744a;
-            nowContr.TextSize = 14;
-            nowContr.TextColor = UserCenterColor.Current.TextColor1;
-
-            nowSelectControl = nowContr;
-            nowSelectDevice = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, Convert.ToInt32(nowContr.Name.Replace("btn", string.Empty)));
-
-            //閲嶆柊鍒濆鍖栬彍鍗曡
-            this.InitMenuRow();
-        }
-
-        #endregion
-    }
+    private FrameListControl listview = null;
+    /// <summary>
+    /// 褰撳墠閫夋嫨鐨勮澶�
+    /// </summary>
+    private CommonDevice nowSelectDevice = null;
+    /// <summary>
+    /// 褰撳墠閫夋嫨鐨勫洖璺帶浠�
+    /// </summary>
+    private NormalViewControl nowSelectControl = null;
+    /// <summary>
+    /// 璁惧澶囨敞鐨勬帶浠�
+    /// </summary>
+    private FrameCaptionInputControl frameDeviceName = null;
+    /// <summary>
+    /// 璁惧鐨勬煇涓�鍥炶矾
+    /// </summary>
+    private CommonDevice deviceObj = null;
+    /// <summary>
+    /// 鍙樉绀哄悓涓�绉嶇被鍨嬬殑鍥炶矾
+    /// </summary>
+    private bool onlyType = false;
+    /// <summary>
+    /// 璁惧闇�瑕佷繚瀛樼殑璁惧鍚嶅瓧
+    /// </summary>
+    private Dictionary<int, string> dicDeviceSaveName = new Dictionary<int, string>();
+    /// <summary>
+    /// 淇℃伅缂栬緫鎺т欢
+    /// </summary>
+    private InformationEditorControl tableContr = null;
+
+    #endregion
+
+    #region 鈻� 鍒濆鍖朹____________________________
+
+    /// <summary>
+    /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+    /// </summary>
+    /// <param name="i_device">璁惧鐨勬煇涓�鍥炶矾</param>
+    /// <param name="i_onlyType">鍙樉绀哄悓涓�绉嶇被鍨嬬殑鍥炶矾</param>
+    public void ShowForm(CommonDevice i_device, bool i_onlyType)
+    {
+      this.deviceObj = i_device;
+      this.onlyType = i_onlyType;
+
+      //璁剧疆澶撮儴淇℃伅
+      base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uFunctionSettingUp));
+
+      //鍒濆鍖栦腑閮ㄤ俊鎭�
+      this.InitMiddleFrame();
+
+      //鍒濆鍖栧彸涓婅鑿滃崟
+      this.InitTopRightMenu();
+    }
+
+    /// <summary>
+    /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+    /// </summary>
+    private void InitMiddleFrame()
+    {
+      //娓呯┖bodyFrame
+      this.ClearBodyFrame();
+
+      var listBackControl = new VerticalFrameControl();
+      listBackControl.Height = bodyFrameLayout.Height;
+      bodyFrameLayout.AddChidren(listBackControl);
+
+      //鍒濆鍖栨甯�
+      this.tableContr = new InformationEditorControl();
+
+      if (this.deviceObj.Type == DeviceType.FreshAir || this.deviceObj.Type == DeviceType.PMSensor)
+      {
+        this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1028);
+      }
+      else if (this.deviceObj.Type == DeviceType.Airer)
+      {
+        //鏅捐。鏋惰澶囧彧瀛樺彇鍥炶矾1锛屽鏋滄槸鏅捐。鏋讹紝榛樿绔偣閮芥槸1锛�
+        this.deviceObj.DeviceEpoint = 1;
+        this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1342);
+      }
+
+      else
+      {
+        this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1128);
+      }
+
+      //鍒濆鍖栬澶囧洖璺浘鏍�
+      this.InitDeviceEpointIcon(listBackControl);
+
+      //淇濆瓨
+      var btnFinish = new BottomClickButton();
+      btnFinish.TextID = R.MyInternationalizationString.uSave;
+      bodyFrameLayout.AddChidren(btnFinish);
+      btnFinish.ButtonClickEvent += (sender, e) =>
+      {
+        //璁板綍璧峰綋鍓嶆鍦ㄦ搷浣滅殑鍥炶矾鍚嶅瓧
+        dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = frameDeviceName.Text.Trim();
+        foreach (var epoint in dicDeviceSaveName.Keys)
+        {
+          var device = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, epoint);
+          if (device == null || dicDeviceSaveName[epoint] == string.Empty)
+          {
+            //涓嶈兘鍏佽绌虹櫧鍚嶅瓧
+            continue;
+          }
+          string newName = dicDeviceSaveName[epoint];
+          string oldName = Common.LocalDevice.Current.GetDeviceEpointName(device);
+          if (oldName != newName)
+          {
+            //璁惧鍚嶇О淇敼
+            var result = Common.LocalDevice.Current.ReName(device, newName);
+            if (result == false)
+            {
+              return;
+            }
+          }
+        }
+
+        //濡傛灉鏄櫨琛f灦
+        if (deviceObj.Type == DeviceType.Airer)
+        {
+          var airer = deviceObj as Airer;
+          SetAirerFunTimeDevice(airer);
+        }
+        else
+        {
+          //鍏抽棴鑷韩
+          this.CloseForm();
+        }
+
+      };
+      //濡傛灉褰撳墠鏄睍绀烘ā鏉�,鍒欎笉鑳界紪杈�
+      if (Common.Config.Instance.Home.IsShowTemplate == true)
+      {
+        btnFinish.CanClick = false;
+      }
+    }
+
+    /// <summary>
+    /// 鍒濆鍖栬彍鍗曡
+    /// </summary>
+    private void InitMenuRow()
+    {
+      this.listview.RemoveAll();
+
+      //鍥炶矾澶囨敞
+      string caption = Language.StringByID(R.MyInternationalizationString.uDeviceEpointNote);
+      string nameValue = Common.LocalDevice.Current.GetDeviceEpointName(nowSelectDevice);
+      if (this.deviceObj.Type == DeviceType.Airer)
+      {
+        nameValue = Common.LocalDevice.Current.GetDeviceMacName(nowSelectDevice);
+      }
+      if (dicDeviceSaveName.ContainsKey(nowSelectDevice.DeviceEpoint) == true)
+      {
+        nameValue = dicDeviceSaveName[nowSelectDevice.DeviceEpoint];
+      }
+
+      this.frameDeviceName = new FrameCaptionInputControl(caption, nameValue, listview.rowSpace / 2);
+      this.frameDeviceName.txtInput.MaxByte = 48;//闄愬埗鍙兘杈撳叆48涓瓧鑺�
+      listview.AddChidren(frameDeviceName);
+      frameDeviceName.InitControl();
+      frameDeviceName.AddBottomLine();
+      //濡傛灉褰撳墠鏄睍绀烘ā鏉�,鍒欓渶瑕佸鐞�
+      if (Common.Config.Instance.Home.IsShowTemplate == false)
+      {
+        frameDeviceName.txtInput.FinishInputEvent += () =>
+        {
+          string oldName = Common.LocalDevice.Current.GetDeviceEpointName(nowSelectDevice);
+          if (frameDeviceName.Text.Trim() == string.Empty)
+          {
+            //灏嗗悕瀛楄繕鍘�
+            frameDeviceName.Text = oldName;
+          }
+          if (oldName != frameDeviceName.Text.Trim())
+          {
+            //璁惧鍚嶇О淇敼
+            var result = Common.LocalDevice.Current.ReName(nowSelectDevice, frameDeviceName.Text.Trim());
+            if (result == false)
+            {
+              return;
+            }
+            //鍥炶矾澶囨敞淇敼鎴愬姛!
+            string msg = Language.StringByID(R.MyInternationalizationString.uDeviceEpointReNoteSuccess);
+            this.ShowMassage(ShowMsgType.Tip, msg);
+          }
+        };
+      }
+
+      //鎵�灞炲尯鍩�
+      var rowBeloneArea = new BelongAreaControl(listview.rowSpace / 2);
+      listview.AddChidren(rowBeloneArea);
+      rowBeloneArea.InitControl(Language.StringByID(R.MyInternationalizationString.uBelongArea), nowSelectDevice);
+      //搴曠嚎
+      rowBeloneArea.AddBottomLine();
+      rowBeloneArea.SelectRoomEvent += (roomKeys) =>
+      {
+        //鍙樻洿鎴块棿
+        HdlRoomLogic.Current.ChangedRoom(nowSelectDevice, roomKeys);
+      };
+      //娣诲姞鍔熻兘绫诲瀷琛�
+      this.AddFunctionTypeRow();
+
+      if (this.deviceObj.Type == DeviceType.Airer)
+      {
+        var airer = this.deviceObj as Airer;
+        //娣诲姞鐑樺共鏃堕棿琛�
+        this.AddAirerDryTimeRow(airer);
+        //娣诲姞椋庡共鏃堕棿琛�
+        this.AddAirerWindTimeRow(airer);
+        //娣诲姞娑堟瘨鏃堕棿琛�
+        this.AddAirerDisinfectTimeRow(airer);
+      }
+
+      //鍒濆鍖栨甯冨畬鎴�
+      tableContr.FinishInitControl();
+    }
+
+    #endregion
+
+    #region 鈻� 鍙充笂瑙掕彍鍗昣________________________
+
+    /// <summary>
+    /// 鍒濆鍖栧彸涓婅鑿滃崟
+    /// </summary>
+    private void InitTopRightMenu()
+    {
+      //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘
+      if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice) == false
+          || 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()
+    {
+      int menuCount = 1;
+      string deviceMenu = string.Empty;
+      //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘
+      bool canTest = Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice);
+      //if (canTest == true)
+      //{
+      //    menuCount = 2;
+      //}
+      var frame = new TopRightMenuControl(menuCount, 1);
+      if (canTest == true)
+      {
+        //瀹氫綅
+        deviceMenu = Language.StringByID(R.MyInternationalizationString.uFixedPosition);
+        frame.AddRowMenu(deviceMenu, "Item/FixedPosition.png", "Item/FixedPositionSelected.png", () =>
+        {
+          //鍙戦�佸畾浣嶅姛鑳�
+          Common.LocalDevice.Current.SetFixedPositionCommand(nowSelectDevice);
+        });
+      }
+
+      //鍒犻櫎
+      //deviceMenu = Language.StringByID(R.MyInternationalizationString.uDelete);
+      //frame.AddRowMenu(deviceMenu, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
+      //{
+      //});
+    }
+
+    #endregion
+
+    #region 鈻� 鍔熻兘绫诲瀷___________________________
+
+    /// <summary>
+    /// 娣诲姞鍔熻兘绫诲瀷琛�
+    /// </summary>
+    private void AddFunctionTypeRow()
+    {
+      //鑷畾涔夊姛鑳界被鍨嬫帶浠�
+      var rowFunction = new DeviceFunctionTypeRowControl(nowSelectDevice, listview.rowSpace / 2);
+      if (rowFunction.CanShowRow == false)
+      {
+        return;
+      }
+      listview.AddChidren(rowFunction);
+      rowFunction.InitControl();
+      //搴曠嚎
+      rowFunction.AddBottomLine();
+    }
+    #endregion
+
+    #region 鈻� 鏅捐。鏋朵笓鐢╛________________________ 
+    #region 鈻� 鐑樺共鏃堕棿_________________________ 
+    /// <summary>
+    ///  鐑樺共鏃堕棿琛�
+    /// </summary>
+    private void AddAirerDryTimeRow(Airer airer)
+    {
+      var rowAirer = new AiererTimeControl(listview.rowSpace / 2);
+      listview.AddChidren(rowAirer);
+      var text = Language.StringByID(R.MyInternationalizationString.AirerDefault) + 3 + Language.StringByID(R.MyInternationalizationString.AirerHour);
+      if (airer.DryTime != 0)
+      {
+        double result = airer.DryTime / 60.0;
+        var hour = Math.Round(result, 2);
+        text = hour + Language.StringByID(R.MyInternationalizationString.AirerHour);
+      }
+      rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerDryTime), text, 1);
+      //搴曠嚎
+      rowAirer.AddBottomLine();
+      rowAirer.SelectTimeEvent += (v1, v2) =>
+      {
+        //double result = second / 3600.0;
+        //var hour = Math.Round(result, 1);
+        //text = hour + Language.StringByID(R.MyInternationalizationString.AirerHour);
+        //rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerDryTime), text, 1);
+      };
+
+    }
+    #endregion
+
+    #region 鈻� 椋庡共鏃堕棿_________________________ 
+    /// <summary>
+    ///  椋庡共鏃堕棿琛�
+    /// </summary>
+    private void AddAirerWindTimeRow(Airer airer)
+    {
+      var rowAirer = new AiererTimeControl(listview.rowSpace / 2);
+      listview.AddChidren(rowAirer);
+      var text = Language.StringByID(R.MyInternationalizationString.AirerDefault) + 3 + Language.StringByID(R.MyInternationalizationString.AirerHour);
+      if (airer.WindTime != 0)
+      {
+        double result = airer.WindTime / 60.0;
+        var hour = Math.Round(result, 1);
+        text = hour + Language.StringByID(R.MyInternationalizationString.AirerHour);
+      }
+      rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerWindTime), text, 2);
+      //搴曠嚎
+      rowAirer.AddBottomLine();
+      rowAirer.SelectTimeEvent += (v1, v2) =>
+      {
+        //double result = second / 3600.0;
+        //var hour = Math.Round(result, 1);
+        //text = hour + Language.StringByID(R.MyInternationalizationString.AirerHour);
+        //rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerDryTime), text, 1);
+      };
+    }
+    #endregion
+
+    #region 鈻� 娑堟瘨鏃堕棿_________________________ 
+    /// <summary>
+    ///  娑堟瘨鏃堕棿琛�
+    /// </summary>
+    private void AddAirerDisinfectTimeRow(Airer airer)
+    {
+      var rowAirer = new AiererTimeControl(listview.rowSpace / 2);
+      listview.AddChidren(rowAirer);
+      var text = Language.StringByID(R.MyInternationalizationString.AirerDefault) + 30 + Language.StringByID(R.MyInternationalizationString.AirerMin);
+      if (airer.DisinfectTime != 0)
+      {
+        text = airer.DisinfectTime + Language.StringByID(R.MyInternationalizationString.AirerMin);
+      }
+      rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerDisinfectTime), text, 3);
+      //搴曠嚎
+      rowAirer.AddBottomLine();
+      rowAirer.SelectTimeEvent += (v1, v2) =>
+      {
+
+      };
+    }
+    #endregion
+
+    #region 鈻�  璇诲彇鏃堕棿鍛戒护___________________
+
+    /// <summary>
+    /// 璇诲彇鏃堕棿鍛戒护
+    /// </summary>
+    public void ReadAirerFunTimeDevice()
+    {
+
+    }
+
+    #endregion
+
+    /// <summary>
+    /// 璁惧鏃堕棿璁剧疆
+    /// </summary>
+    private void SetAirerFunTimeDevice(Airer airer)
+    {
+      HdlThreadLogic.Current.RunThread(async () =>
+      {
+        //鎵撳紑杩涘害鏉�
+        this.ShowProgressBar();
+
+        //鍒欒璁剧疆瀵瑰簲鐨勫姛鑳芥椂闂�
+        List<CommonDevice> listdevice = new List<CommonDevice>();
+
+        for (int i = 3; i < 6; i++)
+        {
+          int time = 0;
+          listdevice.Add(deviceObj);
+          switch (i)
+          {
+            case 3:
+              time = airer.WindTime;
+              break;
+            case 4:
+              time = airer.DryTime;
+              break;
+            case 5:
+              time = airer.DisinfectTime;
+              break;
+          }
+          bool result = await Common.LocalDevice.Current.SetAirerTimeDevice(listdevice, airer, time, i);
+          if (result == false)
+          {
+            airer.WindTime = airer.WindRemainTime = 0;
+            airer.DryTime = airer.DryRemainTime = 0;
+            airer.DisinfectTime = airer.DisinfectTime = 0;
+            HdlThreadLogic.Current.RunMainInThread(() =>
+            {
+              this.InitMiddleFrame();
+            });
+            //鍏抽棴杩涘害鏉�
+            this.CloseProgressBar();
+            return;
+          }
+        }
+        //鍏抽棴杩涘害鏉�
+        this.CloseProgressBar();
+        //鍏抽棴鑷韩
+        this.CloseForm();
+      });
+    }
+    #endregion
+
+    #region 鈻� 鍒濆鍖栬澶囧洖璺浘鏍嘷________________
+
+    /// <summary>
+    /// 鍒濆鍖栬澶囧洖璺浘鏍�
+    /// </summary>
+    private void InitDeviceEpointIcon(VerticalFrameControl listBackControl)
+    {
+      //鑾峰彇鎸夌粍鍒嗛厤鐨勮澶�
+      var listIcon = this.GetAllDeviceGroup();
+
+      var frameBorder = new FrameLayout();
+      frameBorder.Y = Application.GetRealHeight(147);
+      frameBorder.Gravity = Gravity.CenterHorizontal;
+      frameBorder.Width = this.GetPictrueRealSize(887);
+      frameBorder.Height = Application.GetRealHeight(423);
+      frameBorder.Radius = (uint)Application.GetRealHeight(6);
+      listBackControl.frameTable.AddChidren(frameBorder);
+
+      var frameBack = new FrameLayout();
+      frameBack.Height = frameBorder.Height;
+
+      if (listIcon.Count > 2)
+      {
+        //闇�瑕佹粦鍔ㄦ帶浠�
+        var listControl = new VerticalScrolViewLayout();
+        listControl.Height = frameBorder.Height;
+        frameBorder.AddChidren(listControl);
+
+        listControl.AddChidren(frameBack);
+      }
+      else
+      {
+        //涓嶉渶瑕佹粦鍔ㄦ帶浠�
+        frameBorder.AddChidren(frameBack);
+      }
+
+      int index = 0;
+      for (int i = 0; i < listIcon.Count; i++)
+      {
+        var frame = new FrameLayout();
+        frame.Width = frameBorder.Width;
+        frame.Height = this.GetPictrueRealSize(124);
+        frameBack.AddChidren(frame);
+        //鍒濆鍖栦竴琛岃澶囧浘鏍�
+        this.InitDeviceIconFrame(frame, listIcon[i], ref index);
+
+        if (listIcon.Count == 1)
+        {
+          frame.Gravity = Gravity.CenterVertical;
+
+          //濡傛灉鏄柊椋�
+          if (deviceObj.Type == DeviceType.FreshAir)
+          {
+            frame.RemoveFromParent();
+            frameBorder.Y = Application.GetRealHeight(0);
+            frameBorder.Height = Application.GetRealHeight(709);
+            frameBack.BackgroundImagePath = "FreshAir/FreshAirRealDevicePic.png";
+            frameBack.Width = this.GetPictrueRealSize(878);
+            frameBack.Height = this.GetPictrueRealSize(354);
+            frameBack.Y = Application.GetRealHeight(153);
+            frameBack.Gravity = Gravity.Center;
+          }
+
+          //濡傛灉鏄疨M2.5
+          if (deviceObj.Type == DeviceType.PMSensor)
+          {
+            frame.RemoveFromParent();
+            frameBorder.Y = Application.GetRealHeight(0);
+            frameBorder.Height = Application.GetRealHeight(708);
+            frameBack.BackgroundImagePath = "RealDevice/SensorPMTwoPointFive.png";
+            frameBack.Width = this.GetPictrueRealSize(418);
+            frameBack.Height = this.GetPictrueRealSize(403);
+            frameBack.Y = Application.GetRealHeight(153);
+            frameBack.Gravity = Gravity.Center;
+          }
+
+          //濡傛灉鏄櫨琛f灦
+          if (deviceObj.Type == DeviceType.Airer)
+          {
+            frame.RemoveFromParent();
+            frameBorder.Y = Application.GetRealHeight(0);
+            frameBorder.Height = Application.GetRealHeight(709);
+            frameBack.BackgroundImagePath = "Airer/Airer216.png";
+            frameBack.Width = this.GetPictrueRealSize(207);
+            frameBack.Height = this.GetPictrueRealSize(207);
+            frameBack.Y = Application.GetRealHeight(92);
+            frameBack.Gravity = Gravity.CenterHorizontal;
+          }
+        }
+        else
+        {
+          frame.Y = this.GetPictrueRealSize(58) + (frameBack.ChildrenCount - 1) * (frame.Height + this.GetPictrueRealSize(60));
+        }
+      }
+
+      //濡傛灉鏄櫨琛f灦,鏈�5涓洖璺紝浣嗘槸5涓洖璺彧鏄唬琛ㄤ笉鍚屽姛鑳戒娇鐢紝涓嶆槸鐪熷疄鐨勫搴旇澶囷紝鎵�浠ラ粯璁ゅ彧鏄剧ず绗竴鍥炶矾
+      if (deviceObj.Type != DeviceType.Airer)
+      {
+        if (listIcon.Count > 2)
+        {
+          //璁$畻鐪熷疄楂樺害
+          int realHeight = this.GetPictrueRealSize(58 + 58);//涓婁笅闂磋窛
+          realHeight += frameBack.ChildrenCount * this.GetPictrueRealSize(124);//鍦嗗湀楂樺害
+          realHeight += (frameBack.ChildrenCount - 1) * this.GetPictrueRealSize(60);//鍦嗗湀闂磋窛
+          if (realHeight > frameBack.Height)
+          {
+            //鍙樻洿楂樺害
+            frameBack.Height = realHeight;
+          }
+        }
+      }
+    }
+
+    /// <summary>
+    /// 鍒濆鍖栦竴琛岃澶囧浘鏍�
+    /// </summary>
+    /// <param name="frame"></param>
+    /// <param name="listDevice"></param>
+    /// <param name="index"></param>
+    /// <returns></returns>
+    private void InitDeviceIconFrame(FrameLayout frame, List<CommonDevice> listDevice, ref int index)
+    {
+      NormalViewControl btnTemp = null;
+      //闂磋窛
+      int space = this.GetPictrueRealSize(84);
+      int defultXX = (frame.Width - frame.Height * listDevice.Count - (listDevice.Count - 1) * space) / 2;
+      for (int i = 0; i < listDevice.Count; i++)
+      {
+        index++;
+        var btnIcon = new NormalViewControl(frame.Height, frame.Height, false);
+        btnIcon.Name = "btn" + listDevice[i].DeviceEpoint;
+        btnIcon.X = defultXX + i * (frame.Height + space);
+        btnIcon.Radius = (uint)frame.Height / 2;
+        btnIcon.BorderWidth = 2;
+        btnIcon.BorderColor = 0xff979797;
+        btnIcon.TextAlignment = TextAlignment.Center;
+        btnIcon.TextColor = UserCenterColor.Current.TextGrayColor3;
+        btnIcon.TextSize = 13;
+        btnIcon.Text = "CH" + index;
+        frame.AddChidren(btnIcon);
+        //鐐瑰嚮浜嬩欢
+        btnIcon.ButtonClickEvent += this.DeviceEpointSelectEvent;
+
+        if (listDevice[i].DeviceEpoint == deviceObj.DeviceEpoint)
+        {
+          btnTemp = btnIcon;
+        }
+      }
+      if (btnTemp != null)
+      {
+        //鍒濆鍖栬彍鍗曡
+        this.DeviceEpointSelectEvent(btnTemp, null);
+      }
+    }
+
+    /// <summary>
+    /// 鑾峰彇鎸夌粍鍒嗛厤鐨勮澶�
+    /// </summary>
+    /// <returns></returns>
+    private List<List<CommonDevice>> GetAllDeviceGroup()
+    {
+      bool hadDevice = false;
+      var listDevice = Common.LocalDevice.Current.GetDevicesByMac(deviceObj.DeviceAddr);
+      var listRelay = new List<CommonDevice>();
+      foreach (var device in listDevice)
+      {
+        if (device.Type == DeviceType.OnOffSwitch)
+        {
+          //杩欎釜鐣岄潰涓嶅鐞嗗共鎺ョ偣
+          continue;
+        }
+        if (this.onlyType == true && device.Type != deviceObj.Type)
+        {
+          //鍙鍚屼竴绉嶇被鍨嬬殑
+          continue;
+        }
+
+        //鑾峰彇璁惧灞炰簬銆愮畝绾﹀鍔熻兘闈㈡澘銆�
+        var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listDevice);
+        if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_SimpleMultifunction)
+        {
+          if (device.Type == DeviceType.TemperatureSensor && device.DeviceEpoint == 1)
+          {
+            //绠�绾﹀鍔熻兘闈㈡澘绗�1鍥炶矾鏄竴涓粦瀹氭俯婀垮害浼犳劅鍣ㄧ绫诲瀷锛屼笉鏄湡鐨勬俯婀垮害鐨勪紶鎰熷櫒锛岄渶瑕佸睆钄芥帀
+            continue;
+          }
+        }
+
+        listRelay.Add(device);
+        if (device.DeviceEpoint == deviceObj.DeviceEpoint)
+        {
+          //鑳藉鍖归厤寰楀埌杩欎釜鍥炶矾
+          hadDevice = true;
+        }
+      }
+      //鎺掑簭
+      listRelay.Sort((obj1, obj2) =>
+      {
+        if (obj1.DeviceEpoint > obj2.DeviceEpoint)
+        {
+          return 1;
+        }
+        return -1;
+      });
+      if (hadDevice == false)
+      {
+        //濡傛灉鍖归厤涓嶅埌杩欎釜鍥炶矾,鍒欓粯璁ょ涓�涓�
+        this.deviceObj = listRelay[0];
+      }
+
+      //浠庝笅寰�涓�4涓负涓�缁�
+      var listIcon = new List<List<CommonDevice>>();
+      var listTemp = new List<CommonDevice>();
+      for (int i = listRelay.Count - 1; i >= 0; i--)
+      {
+        listTemp.Insert(0, listRelay[i]);
+        if (listTemp.Count == 4)
+        {
+          listIcon.Insert(0, listTemp);
+          listTemp = new List<CommonDevice>();
+        }
+      }
+      if (listTemp.Count > 0)
+      {
+        listIcon.Insert(0, listTemp);
+      }
+      return listIcon;
+    }
+    #endregion
+
+    #region 鈻� 鍥炶矾閫夋嫨___________________________
+
+    /// <summary>
+    /// 鍥炶矾閫夋嫨浜嬩欢
+    /// </summary>
+    /// <param name="sender"></param>
+    /// <param name="e"></param>
+    private void DeviceEpointSelectEvent(object sender, MouseEventArgs e)
+    {
+      var nowContr = (NormalViewControl)sender;
+      if (nowSelectControl != null)
+      {
+        //鍚屼竴涓笢瑗�,涓嶉笩浠�
+        if (this.deviceObj.Type != DeviceType.Airer)
+        {
+          if (nowSelectControl.Name == nowContr.Name)
+          {
+            return;
+          }
+        }
+
+        //涓嶉�夋嫨鐘舵��
+        nowSelectControl.BorderColor = 0xff979797;
+        nowSelectControl.TextSize = 13;
+        nowSelectControl.TextColor = UserCenterColor.Current.TextGrayColor3;
+        //璁板綍瀹冪殑鍚嶅瓧
+        dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = frameDeviceName.Text.Trim();
+      }
+      //閫夋嫨鐘舵��
+      nowContr.BorderColor = 0xfffb744a;
+      nowContr.TextSize = 14;
+      nowContr.TextColor = UserCenterColor.Current.TextColor1;
+
+      nowSelectControl = nowContr;
+      nowSelectDevice = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, Convert.ToInt32(nowContr.Name.Replace("btn", string.Empty)));
+
+      //閲嶆柊鍒濆鍖栬彍鍗曡
+      this.InitMenuRow();
+    }
+
+    #endregion
+  }
 }

--
Gitblit v1.8.0