From 2029e64ec0491f7e511dc15bffaf821bfbabe2de Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期一, 20 七月 2020 14:10:22 +0800 Subject: [PATCH] 上传一个很特别的新版本 --- ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs | 101 +++++++++++++++++++++++--------------------------- 1 files changed, 47 insertions(+), 54 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs index 2aadc19..973a50d 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs @@ -20,6 +20,10 @@ /// 妗屽竷鎺т欢 /// </summary> private NormalFrameLayout frameTable = null; + /// <summary> + /// 璁惧鍒楄〃 + /// </summary> + private List<CommonDevice> listDevice = new List<CommonDevice>(); #endregion @@ -161,21 +165,15 @@ frameBack.AddChidren(listView); var dicData = new Dictionary<string, DeviceRowInfo>(); - var listGwId = new List<string>(); - foreach (var textId in dicGroupDevice.Keys) + foreach (var strText in dicGroupDevice.Keys) { //娣诲姞璁惧琛� - this.AddDeviceRow(dicGroupDevice[textId], textId, listView); - foreach (var deviceKey in dicGroupDevice[textId].listDeviceKeys) + this.AddDeviceRow(dicGroupDevice[strText], strText, listView); + foreach (var deviceKey in dicGroupDevice[strText].listDeviceKeys) { var device = Common.LocalDevice.Current.GetDevice(deviceKey); - if (listGwId.Contains(device.CurrentGateWayId) == false) - { - //缃戝叧ID - listGwId.Add(device.CurrentGateWayId); - } //浠ュ洖璺綔涓虹储寮曞幓鎸囧畾瀵硅薄 - dicData[deviceKey] = dicGroupDevice[textId]; + dicData[deviceKey] = dicGroupDevice[strText]; } } listView.AdjustRealHeight(Application.GetRealHeight(23)); @@ -183,7 +181,7 @@ if (Common.Config.Instance.Home.IsVirtually == false) { //寮�鍚澶囧湪绾跨洃娴� - this.StartCheckDeviceOnline(listView, listGwId, dicData); + this.StartCheckDeviceOnline(listView, dicData); } }); } @@ -196,9 +194,9 @@ /// 娣诲姞璁惧琛� /// </summary> /// <param name="rowInfo"></param> - /// <param name="TextId"></param> + /// <param name="strText"></param> /// <param name="listView"></param> - private void AddDeviceRow(DeviceRowInfo rowInfo, int TextId, VerticalListControl listView) + private void AddDeviceRow(DeviceRowInfo rowInfo, string strText, VerticalListControl listView) { var frameRow = new FrameRowControl(listView.rowSpace / 2); frameRow.LeftOffset = Application.GetRealWidth(46) - ControlCommonResourse.XXLeft; @@ -209,7 +207,7 @@ btnIcon.UnSelectedImagePath = rowInfo.IconPath; //鍚嶇О var btnView = frameRow.AddLeftCaption(string.Empty, 600); - btnView.TextID = TextId; + btnView.Text = strText; btnView.TextSize = 15; //鍙崇澶� frameRow.AddRightArrow(); @@ -221,7 +219,7 @@ frameRow.ButtonClickEvent += (sender, e) => { var form = new LookRoomDeviceListForm(); - form.AddForm(lookRoom.Name, Language.StringByID(TextId), rowInfo.listDeviceKeys); + form.AddForm(lookRoom.Name, strText, rowInfo.listDeviceKeys); }; } @@ -233,25 +231,25 @@ /// 鑾峰彇鍒嗙粍鍚庣殑璁惧 /// </summary> /// <returns></returns> - private Dictionary<int, DeviceRowInfo> GetAllGroupDevice() + private Dictionary<string, DeviceRowInfo> GetAllGroupDevice() { //鍏ㄩ儴鐨勮澶� - var listDevice = HdlRoomLogic.Current.GetRoomListDevice(lookRoom); - var dic = new Dictionary<int, DeviceRowInfo>(); + this.listDevice = HdlRoomLogic.Current.GetRoomListDevice(lookRoom); + var dic = new Dictionary<string, DeviceRowInfo>(); foreach (var device in listDevice) { var typeInfo = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device); //鎸夋墍灞濱D鍒嗙粍 - if (dic.ContainsKey(typeInfo.BeloneTextId) == false) + if (dic.ContainsKey(typeInfo.BeloneText) == false) { - dic[typeInfo.BeloneTextId] = new DeviceRowInfo(); + dic[typeInfo.BeloneText] = new DeviceRowInfo(); string path1 = string.Empty; string path2 = string.Empty; //鑾峰彇鍥剧墖 Common.LocalDevice.Current.GetDeviceFunctionTypeMenuIcon(typeInfo.ConcreteType, ref path1, ref path2); - dic[typeInfo.BeloneTextId].IconPath = path1; + dic[typeInfo.BeloneText].IconPath = path1; } - dic[typeInfo.BeloneTextId].listDeviceKeys.Add(Common.LocalDevice.Current.GetDeviceMainKeys(device)); + dic[typeInfo.BeloneText].listDeviceKeys.Add(Common.LocalDevice.Current.GetDeviceMainKeys(device)); } return dic; } @@ -264,53 +262,48 @@ /// 寮�鍚澶囧湪绾跨洃娴� /// </summary> /// <param name="listView">鍒ゆ柇閫�鍑烘椂浣跨敤</param> - /// <param name="listGwId">缃戝叧ID</param> /// <param name="dicData">浠ュ洖璺綔涓虹储寮曞幓鎸囧畾瀵硅薄</param> - private void StartCheckDeviceOnline(VerticalListControl listView, List<string> listGwId, Dictionary<string, DeviceRowInfo> dicData) + private void StartCheckDeviceOnline(VerticalListControl listView, Dictionary<string, DeviceRowInfo> dicData) { HdlThreadLogic.Current.RunThread(() => { - var listCheck = new HashSet<string>(); - for (int i = 0; i < listGwId.Count; i++) + var dicCheck = new Dictionary<string, bool>(); + for (int i = 0; i < this.listDevice.Count; i++) { if (listView.Parent == null) { return; } - //杩欓噷涓昏鍙槸鑾峰彇鍦ㄧ嚎鐘舵�� - var zbway = HdlGatewayLogic.Current.GetLocalGateway(listGwId[i]); - int statu = 0; - var list = Common.LocalDevice.Current.GetDeviceListFromGateway(zbway, ref statu, false, ShowErrorMode.NO); - if (statu != -1) + var localDevice = this.listDevice[i]; + if (dicCheck.ContainsKey(localDevice.DeviceAddr) == false) + { + //鍙渶瑕佹娴嬩竴璺� + var deviceInfo = Common.LocalDevice.Current.ReadDeviceEpointDeviceInfo(localDevice); + if (deviceInfo != null) + { + localDevice.IsOnline = deviceInfo.IsOnline; + dicCheck[localDevice.DeviceAddr] = Common.LocalDevice.Current.CheckDeviceIsOnline(localDevice, false); + } + } + if (dicCheck.ContainsKey(localDevice.DeviceAddr) == false + || dicCheck[localDevice.DeviceAddr] == false) + { + //缃戝叧娌℃湁鍥炲,鎴栬�呬笉鍦ㄧ嚎 + continue; + } + string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(localDevice); + if (dicData.ContainsKey(mainkeys) == true) { HdlThreadLogic.Current.RunMain(() => { - for (int j = 0; j < list.Count; j++) - { - string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(list[j]); - if (listView.Parent == null || dicData.ContainsKey(mainkeys) == false || listCheck.Contains(mainkeys) == true) - { - return; - } - listCheck.Add(mainkeys); + dicData[mainkeys].OnlineCount += 1; + dicData[mainkeys].btnOnline.Text = dicData[mainkeys].OnlineCount + "/" + dicData[mainkeys].listDeviceKeys.Count; - var localDevice = Common.LocalDevice.Current.GetDevice(mainkeys); - if (localDevice != null && localDevice.IsOnline != list[j].IsOnline) - { - //鍦ㄧ嚎鐘舵�佷竴鏍风殑璇濓紝涓嶉渶瑕佸埛鏂� - localDevice.IsOnline = list[j].IsOnline; - localDevice.ReSave(); - } - if (Common.LocalDevice.Current.CheckDeviceIsOnline(list[j]) == true) - { - dicData[mainkeys].OnlineCount += 1; - dicData[mainkeys].btnOnline.Text = dicData[mainkeys].OnlineCount + "/" + dicData[mainkeys].listDeviceKeys.Count; - } - } - }); + }, ShowErrorMode.NO); } + System.Threading.Thread.Sleep(30); } - }); + }, ShowErrorMode.NO); } #endregion -- Gitblit v1.8.0