From 652243206427f35a256400a149a1734085824cb9 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期三, 02 九月 2020 17:35:03 +0800 Subject: [PATCH] 2020-09-02-4 --- ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs | 317 ++++++++++++++++------------------------------------ 1 files changed, 96 insertions(+), 221 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs index 299fbba..973a50d 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs @@ -17,13 +17,13 @@ /// </summary> private Common.Room lookRoom = null; /// <summary> - /// 褰撳墠閫夋嫨鐨勫垎鏀紝1锛氬満鏅� 2锛氬姛鑳� - /// </summary> - private int nowSelectIndex = 1; - /// <summary> /// 妗屽竷鎺т欢 /// </summary> - private FrameLayout frameTable = null; + private NormalFrameLayout frameTable = null; + /// <summary> + /// 璁惧鍒楄〃 + /// </summary> + private List<CommonDevice> listDevice = new List<CommonDevice>(); #endregion @@ -52,17 +52,14 @@ //娓呯┖bodyFrame this.ClearBodyFrame(); - //鍒濆鍖栧垎鏀帶浠� - this.InitSwitchControl(); - //鍒濆鍖栨甯冩帶浠� - this.frameTable = new FrameLayout(); + this.frameTable = new NormalFrameLayout(); frameTable.Y = Application.GetRealHeight(187); frameTable.Height = bodyFrameLayout.Height - Application.GetRealHeight(187); bodyFrameLayout.AddChidren(frameTable); - //鏄剧ず鍦烘櫙鍒楄〃 - this.ShowSceneList(); + //鍒濆鍖栧垎鏀帶浠� + this.InitSwitchControl(); } /// <summary> @@ -70,93 +67,27 @@ /// </summary> private void InitSwitchControl() { - var btnTemp = new NormalViewControl(10, 10, false); - btnTemp.TextID = R.MyInternationalizationString.uScence; - - //鍦烘櫙妗�(鐐瑰嚮鑼冨洿鏈夌偣灏忥紝闇�瑕佹墿澶у畠鐨勭偣鍑昏寖鍥�) - var frameScene = new FrameLayoutControl(); - frameScene.UseClickStatu = false; - frameScene.Height = Application.GetRealHeight(90); - frameScene.Width = btnTemp.GetRealWidthByText(16); - frameScene.X = ControlCommonResourse.XXLeft; - frameScene.Y = Application.GetRealHeight(40); - bodyFrameLayout.AddChidren(frameScene); - //鍦烘櫙 - var btnScene = new NormalViewControl(frameScene.Width, Application.GetRealHeight(63), false); - btnScene.Text = btnTemp.Text; - btnScene.TextSize = 16; - btnScene.TextColor = UserCenterColor.Current.TextColor2; - frameScene.AddChidren(btnScene, ChidrenBindMode.BindEventOnly); - //搴曠嚎 - var btnSceneLine = new NormalViewControl(40, 10, true); - btnSceneLine.Y = btnScene.Bottom + Application.GetRealHeight(14); - btnSceneLine.X = btnScene.X + btnScene.Width / 2 - Application.GetRealWidth(40) / 2; - btnSceneLine.Radius = (uint)Application.GetRealHeight(10) / 2; - btnSceneLine.BackgroundColor = UserCenterColor.Current.TextOrangeColor; - frameScene.AddChidren(btnSceneLine, ChidrenBindMode.BindEventOnly); - - btnTemp.TextID = R.MyInternationalizationString.uFunction; - //鍔熻兘妗�(鐐瑰嚮鑼冨洿鏈夌偣灏忥紝闇�瑕佹墿澶у畠鐨勭偣鍑昏寖鍥�) - var frameFunc = new FrameLayoutControl(); - frameFunc.UseClickStatu = false; - frameFunc.Height = Application.GetRealHeight(90); - frameFunc.Width = btnTemp.GetRealWidthByText(16); - frameFunc.X = frameScene.Right + Application.GetRealWidth(58); - frameFunc.Y = Application.GetRealHeight(40); - bodyFrameLayout.AddChidren(frameFunc); - //鍔熻兘 - var btnFunc = new NormalViewControl(frameFunc.Width, Application.GetRealHeight(63), false); - btnFunc.Text = btnTemp.Text; - btnFunc.TextColor = UserCenterColor.Current.TextGrayColor3; - frameFunc.AddChidren(btnFunc, ChidrenBindMode.BindEventOnly); - //搴曠嚎 - var btnFuncLine = new NormalViewControl(40, 10, true); - btnFuncLine.Y = btnFunc.Bottom + Application.GetRealHeight(14); - btnFuncLine.X = btnFunc.X + btnFunc.Width / 2 - Application.GetRealWidth(40) / 2; - btnFuncLine.Radius = (uint)Application.GetRealHeight(10) / 2; - btnFuncLine.BackgroundColor = UserCenterColor.Current.TextOrangeColor; - frameFunc.AddChidren(btnFuncLine, ChidrenBindMode.BindEventOnly); - btnFuncLine.Visible = false; - - frameScene.ButtonClickEvent += (sender, e) => + var tabControl = new SceneFunctionSwitchControl(); + tabControl.Y = Application.GetRealHeight(40); + bodyFrameLayout.AddChidren(tabControl); + tabControl.SelectTabEvent += (tabIndex) => { - //鍦烘櫙鍒嗘敮閫夋嫨 - if (this.nowSelectIndex == 1) + if (tabIndex == 0) { - return; + //鏄剧ず鍦烘櫙鍒楄〃 + this.ShowSceneList(); } - this.nowSelectIndex = 1; - - btnScene.TextSize = 16; - btnScene.TextColor = UserCenterColor.Current.TextColor2; - btnFunc.TextSize = 14; - btnFunc.TextColor = UserCenterColor.Current.TextGrayColor3; - btnSceneLine.Visible = true; - btnFuncLine.Visible = false; - - //鏄剧ず鍦烘櫙鍒楄〃 - this.ShowSceneList(); - }; - - frameFunc.ButtonClickEvent += (sender, e) => - { - //鍔熻兘鍒嗘敮閫夋嫨 - if (this.nowSelectIndex == 2) + else { - return; + //鏄剧ず鍔熻兘鍒楄〃 + this.ShowFunctionList(); } - this.nowSelectIndex = 2; - - btnScene.TextSize = 14; - btnScene.TextColor = UserCenterColor.Current.TextGrayColor3; - btnFunc.TextSize = 16; - btnFunc.TextColor = UserCenterColor.Current.TextColor2; - btnFuncLine.Visible = true; - btnSceneLine.Visible = false; - - //鏄剧ず鍔熻兘鍒楄〃 - this.ShowFunctionList(); }; + var listTitle = new List<string>(); + //鍦烘櫙,鍔熻兘 + listTitle.Add(Language.StringByID(R.MyInternationalizationString.uScence)); + listTitle.Add(Language.StringByID(R.MyInternationalizationString.uFunction)); + tabControl.InitControl(listTitle); } #endregion @@ -172,42 +103,27 @@ this.frameTable.RemoveAll(); HdlThreadLogic.Current.RunMainInThread(() => { - if (lookRoom.SceneUIList.Count == 0) + if (lookRoom.ListSceneId.Count == 0) { //杩樻病鏈夋坊鍔犲満鏅摝 this.ShowNotDataImage(frameTable, Language.StringByID(R.MyInternationalizationString.uDoNotHadAddScenceMsg)); return; } - var listView = new VerticalFrameControl(29); + var listView = new VerticalFrameControl(3); listView.Height = frameTable.Height; frameTable.AddChidren(listView); - foreach (var data in lookRoom.SceneUIList) + foreach (var dataId in lookRoom.ListSceneId) { - var frameContr = new FrameLayout(); - frameContr.Height = Application.GetRealHeight(470); - frameContr.Gravity = Gravity.CenterHorizontal; - listView.AddChidrenFrame(frameContr); - - //鍦烘櫙鍥剧墖 - var btnPic = new ImageView(); - btnPic.X = Application.GetRealWidth(179); - btnPic.Width = Application.GetRealWidth(844); - btnPic.Height = Application.GetRealHeight(420); - btnPic.ImagePath = data.IconPath; - btnPic.Radius = 8; - frameContr.AddChidren(btnPic); - - var btnName = new NormalViewControl(251, 282, true); - btnName.X = ControlCommonResourse.XXLeft; - btnName.Y = Application.GetRealHeight(58); - btnName.BackgroundColor = 0xff333333; - btnName.Radius = 8; - btnName.Text = data.Name; - btnName.TextSize = 15; - btnName.TextColor = UserCenterColor.Current.White; - btnName.TextAlignment = TextAlignment.Center; - frameContr.AddChidren(btnName); + var data = HdlSceneLogic.Current.GetSceneUIBySceneId(dataId); + if (data == null) + { + continue; + } + //鍦烘櫙鎺т欢 + var frameContr = new ScenePictrueControl(); + listView.AddChidren(frameContr); + frameContr.InitControl(data); } }); } @@ -240,7 +156,7 @@ frameBack.BackgroundColor = UserCenterColor.Current.White; frameBack.Width = bodyFrameLayout.Width; frameBack.Height = Application.GetRealHeight(1650); - frameBack.Radius = 20; + frameBack.Radius = (uint)Application.GetRealHeight(58); frameTable.AddChidren(frameBack); var listView = new VerticalListControl(23); @@ -249,26 +165,24 @@ 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)); - //寮�鍚澶囧湪绾跨洃娴� - this.StartCheckDeviceOnline(listView, listGwId, dicData); + //濡傛灉涓嶆槸铏氭嫙浣忓畢 + if (Common.Config.Instance.Home.IsVirtually == false) + { + //寮�鍚澶囧湪绾跨洃娴� + this.StartCheckDeviceOnline(listView, dicData); + } }); } @@ -280,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; @@ -293,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(); @@ -305,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); }; } @@ -317,63 +231,25 @@ /// 鑾峰彇鍒嗙粍鍚庣殑璁惧 /// </summary> /// <returns></returns> - private Dictionary<int, DeviceRowInfo> GetAllGroupDevice() + private Dictionary<string, DeviceRowInfo> GetAllGroupDevice() { //鍏ㄩ儴鐨勮澶� - var listDevice = lookRoom.GetRoomListDevice(); - 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.GetNotHdlMyDeviceEnumInfo(new List<ZigBee.Device.CommonDevice>() { device }); - if (device.Type == DeviceType.IASZone) + var typeInfo = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device); + //鎸夋墍灞濱D鍒嗙粍 + if (dic.ContainsKey(typeInfo.BeloneText) == false) { - //杩欎釜寮哄埗涓轰紶鎰熷櫒 - typeInfo.BeloneTextId = R.MyInternationalizationString.uDeviceBelongId1200; - typeInfo.ConcreteType = Common.DeviceConcreteType.Sensor; + 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.BeloneText].IconPath = path1; } - if (device.Type == DeviceType.OnOffOutput) - { - string iconPath = string.Empty; - //缁х數鍣ㄧ殑鏃跺��,闇�瑕佺壒娈婂鐞� - if (device.DfunctionType == DeviceFunctionType.A寮�鍏�) - { - typeInfo.BeloneTextId = R.MyInternationalizationString.uSwitch; - iconPath = "Device/Switch.png"; - } - else if (device.DfunctionType == DeviceFunctionType.A鎻掑骇) - { - typeInfo.BeloneTextId = R.MyInternationalizationString.uSocket1; - iconPath = "Device/Socket1.png"; - } - else if (device.DfunctionType == DeviceFunctionType.A鐏厜) - { - typeInfo.BeloneTextId = R.MyInternationalizationString.uLight; - iconPath = "Device/Light.png"; - } - else - { - //缁х數鍣� - typeInfo.BeloneTextId = R.MyInternationalizationString.uDeviceBelongId2300; - iconPath = "Device/Relay.png"; - } - if (dic.ContainsKey(typeInfo.BeloneTextId) == false) - { - dic[typeInfo.BeloneTextId] = new DeviceRowInfo(); - dic[typeInfo.BeloneTextId].IconPath = iconPath; - } - } - else - { - if (dic.ContainsKey(typeInfo.BeloneTextId) == false) - { - dic[typeInfo.BeloneTextId] = new DeviceRowInfo(); - string path1 = string.Empty; - string path2 = string.Empty; - Common.LocalDevice.Current.GetDeviceBeloneIcon(typeInfo.ConcreteType, ref path1, ref path2); - dic[typeInfo.BeloneTextId].IconPath = path1; - } - } - dic[typeInfo.BeloneTextId].listDeviceKeys.Add(Common.LocalDevice.Current.GetDeviceMainKeys(device)); + dic[typeInfo.BeloneText].listDeviceKeys.Add(Common.LocalDevice.Current.GetDeviceMainKeys(device)); } return dic; } @@ -386,49 +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(() => { - 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 == null) + if (listView.Parent == null) { return; } - //杩欓噷涓昏鍙槸鑾峰彇鍦ㄧ嚎鐘舵�� - var zbway = HdlGatewayLogic.Current.GetLocalGateway(listGwId[i]); - var result = Common.LocalDevice.Current.GetDeviceListFromGateway(zbway, false, (device) => - { - string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(device); - if (listView.Parent == null) - { - return; - } - if (listView == null || dicData.ContainsKey(mainkeys) == false) - { - return; - } - var localDevice = Common.LocalDevice.Current.GetDevice(mainkeys); - if (localDevice != null && localDevice.IsOnline != device.IsOnline) - { - //鍦ㄧ嚎鐘舵�佷竴鏍风殑璇濓紝涓嶉渶瑕佸埛鏂� - localDevice.IsOnline = device.IsOnline; - localDevice.ReSave(); - } - if (device.IsOnline == 1) - { - HdlThreadLogic.Current.RunMain(() => - { - dicData[mainkeys].OnlineCount += 1; - dicData[mainkeys].btnOnline.Text = dicData[mainkeys].OnlineCount + "/" + dicData[mainkeys].listDeviceKeys.Count; - }); - } - }, ShowErrorMode.NO); + 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(() => + { + 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