From c7698e163e43cea9e7f8ee45f8e3f91c9265cca4 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期一, 04 十一月 2019 19:11:41 +0800
Subject: [PATCH] 合并了全部的代码

---
 ZigbeeApp/Shared/Common/Device.cs |  196 +++++++++++++++++++-----------------------------
 1 files changed, 77 insertions(+), 119 deletions(-)

diff --git a/ZigbeeApp/Shared/Common/Device.cs b/ZigbeeApp/Shared/Common/Device.cs
index c175a45..5e8b4ad 100755
--- a/ZigbeeApp/Shared/Common/Device.cs
+++ b/ZigbeeApp/Shared/Common/Device.cs
@@ -37,22 +37,21 @@
             }
         }
         /// <summary>
-        /// 鏈湴鎵�鏈夎澶囩殑缂撳瓨
+        /// 鏈湴鎵�鏈夎澶囩殑缂撳瓨(鎺掑簭)
         /// </summary>
         public List<CommonDevice> listAllDevice
         {
             get
             {
-                var list = new List<CommonDevice>();
-                foreach (var listMac in this.dicDeviceSort.Values)
+                lock (dicAllDevice)
                 {
-                    foreach (var strMac in listMac)
+                    var list = new List<CommonDevice>();
+                    foreach (var device in dicAllDevice.Values)
                     {
-                        var listTemp = this.GetDevicesByMac(strMac);
-                        list.AddRange(listTemp);
+                        list.Add(device);
                     }
+                    return list;
                 }
-                return list;
             }
         }
 
@@ -85,13 +84,9 @@
         /// </summary>
         private Dictionary<string, HashSet<int>> dicDeviceEpoint = new Dictionary<string, HashSet<int>>();
         /// <summary>
-        /// 璁惧Mac椤哄簭(閲岄潰鏄疢ac鍦板潃)
+        /// 鐗╃悊璁惧灞炰簬鍝釜鎴块棿鐨勮褰�
         /// </summary>
-        private Dictionary<string, List<string>> dicDeviceSort = null;
-        /// <summary>
-        /// 璁惧鏂囦欢鐨勫墠缂�鍚嶅瓧
-        /// </summary>
-        public const string deviceFirstName = "Device_";
+        private Dictionary<string, string> dicDeviceRoomId = null;
 
         #endregion
 
@@ -175,9 +170,9 @@
                 }
             }
             //鎴愬憳韬唤鐨勬椂鍊�,鍒犻櫎鎺夐潪娉曠殑缃戝叧鏂囦欢
-            this.DeleteGatewayFileByMemberModel();
-            //鍒濆鍖栬澶囬『搴�
-            this.InitDeviceSort();
+            this.DeleteGatewayFileByMemberModel();
+            //鍒濆鍖栫墿鐞嗚澶囨墍灞炴埧闂寸殑璁板綍
+            this.InitRealDeviceRoomId();
         }
 
         /// <summary>
@@ -312,16 +307,6 @@
         /// <param name="device">璁惧瀵硅薄(杩欎釜涓滆タ鏈夊彲鑳戒細琚洿鏀�)</param>
         public void AddDeviceToMemory(ref CommonDevice device)
         {
-            if (dicDeviceSort.ContainsKey(device.CurrentGateWayId) == false)
-            {
-                dicDeviceSort[device.CurrentGateWayId] = new List<string>();
-            }
-            if (dicDeviceSort[device.CurrentGateWayId].Contains(device.DeviceAddr) == false)
-            {
-                //淇濆瓨椤哄簭
-                dicDeviceSort[device.CurrentGateWayId].Add(device.DeviceAddr);
-                UserCenterLogic.SaveFileContent(UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DeviceSortFile), dicDeviceSort);
-            }
             string mainKeys = this.GetDeviceMainKeys(device);
             //濡傛灉瀹冩槸鍗囩骇鐨勯《绔鐐�,鍒欎笉鑳借瀹冨姞鍏ュ埌缂撳瓨锛屼絾鏄彲浠ヨ浠栫敓鎴愭枃浠�
             if (device is OTADevice)
@@ -521,18 +506,17 @@
                 this.ShowErrorMsg(msg);
                 return false;
             }
-            if (dicDeviceSort.ContainsKey(listdevice[0].CurrentGateWayId) == true &&
-                dicDeviceSort[listdevice[0].CurrentGateWayId].Contains(info.DeviceAddr) == true)
-            {
-                //淇濆瓨椤哄簭
-                dicDeviceSort[listdevice[0].CurrentGateWayId].Remove(info.DeviceAddr);
-                UserCenterLogic.SaveFileContent(UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DeviceSortFile), dicDeviceSort);
-            }
 
             //鍒犻櫎鏂囦欢
             foreach (CommonDevice device in listdevice)
             {
                 this.DeleteMemmoryDevice(device);
+            }
+            if (this.dicDeviceRoomId.ContainsKey(listdevice[0].DeviceAddr) == true)
+            {
+                //绉婚櫎鐪熷疄璁惧鐨勬埧闂寸储寮�
+                this.dicDeviceRoomId.Remove(listdevice[0].DeviceAddr);
+                this.SaveRealDeviceRoomId(null, null);
             }
             return true;
         }
@@ -683,32 +667,14 @@
             List<CommonDevice> list = new List<CommonDevice>();
             lock (dicAllDevice)
             {
-                List<string> listSort = null;
-                if (dicDeviceSort.ContainsKey(gwId) == false)
-                {
-                    dicDeviceSort[gwId] = new List<string>();
-                }
-                listSort = dicDeviceSort[gwId];
-
                 //鍚勭綉鍏崇殑鎵�鏈夎澶�
                 foreach (CommonDevice device in this.dicAllDevice.Values)
                 {
                     if (gwId == device.CurrentGateWayId)
                     {
-                        if (listSort.Contains(device.DeviceAddr) == false)
-                        {
-                            listSort.Add(device.DeviceAddr);
-                        }
+                        list.Add(device);
                     }
                 }
-                //鎺掑簭
-                foreach (var strMac in listSort)
-                {
-                    var listTemp = this.GetDevicesByMac(strMac);
-                    list.AddRange(listTemp);
-                }
-                //淇濆瓨椤哄簭
-                UserCenterLogic.SaveFileContent(UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DeviceSortFile), dicDeviceSort);
             }
 
             return list;
@@ -783,9 +749,10 @@
         {
             List<string> listDeviceFile = new List<string>();
             List<string> listAllFile = Global.FileListByHomeId();
+
             foreach (string file in listAllFile)
             {
-                if (file.StartsWith(deviceFirstName) == false)
+                if (file.StartsWith("Device_") == false)
                 {
                     //濡傛灉涓嶆槸璁惧鏂囦欢
                     continue;
@@ -1000,6 +967,11 @@
         /// <returns></returns>
         public void SetDeviceIconToControl(Button btnIcon, CommonDevice device)
         {
+            if (device == null)
+            {
+                btnIcon.UnSelectedImagePath = "Device/ThirdPartyDevice.png";
+                return;
+            }
             string unSelectFilePath = string.Empty;
             string selectFilePath = string.Empty;
 
@@ -1512,89 +1484,75 @@
 
         #endregion
 
-        #region 鈻� 璁惧鎺掑簭___________________________
+        #region 鈻� 鐗╃悊璁惧鎵�灞炴埧闂確__________________
 
         /// <summary>
-        /// 鍒濆鍖栬澶囬『搴�
+        /// 鍒濆鍖栫墿鐞嗚澶囨墍灞炴埧闂寸殑璁板綍
         /// </summary>
-        private void InitDeviceSort()
+        private void InitRealDeviceRoomId()
         {
-            //璇诲彇璁惧椤哄簭
-            this.dicDeviceSort = new Dictionary<string, List<string>>();
-            string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DeviceSortFile);
+            this.dicDeviceRoomId = new Dictionary<string, string>();
+            string fullName = UserCenterLogic.CombinePath(DirNameResourse.DeviceRoomIdFile);
             var strData = UserCenterLogic.LoadFileContent(fullName);
             if (strData != null)
             {
-                this.dicDeviceSort = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(strData);
+                this.dicDeviceRoomId = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(strData);
             }
-            foreach (var device in dicAllDevice.Values)
-            {
-                if (dicDeviceSort.ContainsKey(device.CurrentGateWayId) == false)
-                {
-                    dicDeviceSort[device.CurrentGateWayId] = new List<string>();
-                }
-                if (dicDeviceSort[device.CurrentGateWayId].Contains(device.DeviceAddr) == false)
-                {
-                    //鏂版坊鍔犵殑璁惧
-                    dicDeviceSort[device.CurrentGateWayId].Add(device.DeviceAddr);
-                }
-            }
-            foreach (var keys in dicDeviceSort.Keys)
-            {
-                var list = dicDeviceSort[keys];
-                for (int i = 0; i < list.Count; i++)
-                {
-                    if (this.dicDeviceEpoint.ContainsKey(list[i]) == false)
-                    {
-                        //杩欎釜涓滆タ鑾悕鐨勪笉瑙佷簡锛熷拰璁惧鍒楄〃鍖归厤涓嶄笂?
-                        list.RemoveAt(i);
-                        i--;
-                    }
-                }
-            }
-
-            //淇濆瓨椤哄簭
-            UserCenterLogic.SaveFileContent(fullName, dicDeviceEpoint);
         }
 
         /// <summary>
-        /// 璁惧鎺掑簭
+        /// 淇濆瓨鐗╃悊璁惧鎵�灞炴埧闂寸殑璁板綍
         /// </summary>
-        /// <param name="listDevice">闇�瑕佹帓搴忕殑璁惧鍒楄〃</param>
-        /// <returns></returns>
-        public List<CommonDevice> SortDevice(List<CommonDevice> listDevice)
+        /// <param name="listDevice">闇�瑕佷繚瀛樼殑璁惧瀵硅薄</param>
+        /// <param name="roomId">闇�瑕佷繚瀛樼殑鍝釜璁惧鐨勬埧闂碔D</param>
+        public void SaveRealDeviceRoomId(List<CommonDevice> listDevice, string roomId)
         {
-            var dic = new Dictionary<string, List<CommonDevice>>();
-            for (int i = 0; i < listDevice.Count; i++)
+            this.dicDeviceRoomId[listDevice[0].DeviceAddr] = roomId;
+
+            //淇濆瓨璁板綍
+            string fullName = UserCenterLogic.CombinePath(DirNameResourse.DeviceRoomIdFile);
+            UserCenterLogic.SaveFileContent(fullName, this.dicDeviceRoomId);
+
+            //濡傛灉璁惧鍙湁涓�涓洖璺紝濡傛灉鏀瑰彉浜嗙湡瀹炶澶囧尯鍩燂紝鍒欏畠鐨勫洖璺殑鍖哄煙涔熶竴璧锋敼浜�
+            if (listDevice.Count == 1)
             {
-                if (dic.ContainsKey(listDevice[i].DeviceAddr) == false)
-                {
-                    dic[listDevice[i].DeviceAddr] = new List<CommonDevice>();
-                }
-                dic[listDevice[i].DeviceAddr].Add(listDevice[i]);
+                Common.Room.CurrentRoom.ChangedRoom(listDevice[0], roomId);
             }
-            var list = new List<CommonDevice>();
-            var listCheck = new HashSet<string>();
-            foreach (var listSort in this.dicDeviceSort.Values)
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐪熷疄鐗╃悊璁惧鐨勬埧闂村悕瀛�
+        /// </summary>
+        /// <param name="device">璁惧鐨勬煇涓�涓洖璺�</param>
+        /// <returns></returns>
+        public string GeteRealDeviceRoomName(CommonDevice device)
+        {
+            if (this.dicDeviceRoomId.ContainsKey(device.DeviceAddr) == false)
             {
-                for (int i = 0; i < listSort.Count; i++)
-                {
-                    if (dic.ContainsKey(listSort[i]) == true && listCheck.Contains(listSort[i]) == false)
-                    {
-                        listCheck.Add(listSort[i]);
-                        dic[listSort[i]].Sort((obj1, obj2) =>
-                        {
-                            if (obj1.DeviceEpoint > obj2.DeviceEpoint)
-                            {
-                                return 1;
-                            }
-                            return -1;
-                        });
-                        list.AddRange(dic[listSort[i]]);
-                    }
-                }
+                //鏈垎閰嶅尯鍩�
+                return Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom);
             }
-            return list;
+            var room = Room.CurrentRoom.GetRoomById(this.dicDeviceRoomId[device.DeviceAddr]);
+            if (room != null)
+            {
+                return room.Name;
+            }
+            //鏈垎閰嶅尯鍩�
+            return Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐪熷疄鐗╃悊璁惧灞炰簬鍝釜鎴块棿
+        /// </summary>
+        /// <param name="device">璁惧鐨勬煇涓�涓洖璺�</param>
+        /// <returns></returns>
+        public Room GeteRealDeviceRoom(CommonDevice device)
+        {
+            if (this.dicDeviceRoomId.ContainsKey(device.DeviceAddr) == false)
+            {
+                return null;
+            }
+            return Room.CurrentRoom.GetRoomById(this.dicDeviceRoomId[device.DeviceAddr]);
         }
 
         #endregion

--
Gitblit v1.8.0