From 00ab3ddb140ba8bb88b5cf572b004a85e1da85e9 Mon Sep 17 00:00:00 2001 From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local> Date: 星期四, 02 一月 2020 19:51:56 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev-tzy' into DEV_GXC --- ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs | 422 +++++++++++++++++++++++++++++++++------------------- 1 files changed, 265 insertions(+), 157 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs b/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs index 454b8cb..a5d22e8 100644 --- a/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs +++ b/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs @@ -7,6 +7,7 @@ using Shared.Phone.UserCenter.DoorLock; using System.Timers; using Shared.Phone.Device.DeviceLogic; +using Shared.Phone.UserCenter; namespace Shared.Phone.UserView { @@ -88,6 +89,8 @@ /// sceneScrolView /// </summary> private VerticalScrolViewLayout sceneScrolView ; + + #endregion #region 鈼� 鎺ュ彛____________________________ @@ -135,7 +138,7 @@ continue; } - for (int j=0;j<rowFL.ChildrenCount;j++) + for (int j = 0; j < rowFL.ChildrenCount; j++) { var deviceUI = (rowFL.GetChildren(j) as FunctionMainView).Tag as DeviceUI; if (deviceUI == null || deviceUI.CommonDevice == null) @@ -221,7 +224,7 @@ var ac = deviceUI.CommonDevice as ZigBee.Device.AC; ac.DeviceStatusReport = common.DeviceStatusReport; var attriButeList = ac.DeviceStatusReport.AttriBute; - foreach(var attList in attriButeList) + foreach (var attList in attriButeList) { var curTemp = (attList.AttriButeData / 100 < ACControlBase.Temperature_High && attList.AttriButeData / 100 > ACControlBase.Temperature_Low) ? attList.AttriButeData / 100 : ACControlBase.Temperature_Default; switch (attList.AttributeId) @@ -270,7 +273,7 @@ var ac = deviceUI.CommonDevice as ZigBee.Device.AC; var attriButeList = common.DeviceStatusReport.AttriBute; ac.DeviceStatusReport = common.DeviceStatusReport; - foreach(var attList in attriButeList) + foreach (var attList in attriButeList) { switch (attList.AttributeId) { @@ -320,9 +323,68 @@ //姝ゅ睘鎬ц〃鏄庡綋鍓嶄寒搴︾▼搴� dimmableLight.Level = attriButeList[0].AttriButeData; dimmableLight.LastDateTime = DateTime.Now; - (rowFL.GetChildren(j) as FunctionMainView).IsSelected = true; + //(rowFL.GetChildren(j) as FunctionMainView).IsSelected = true; (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); break; + } + } + break; + case DeviceType.TemperatureSensor: + //娓╁害 + if (common.DeviceStatusReport.CluterID == 1026) + { + var tempera = deviceUI.CommonDevice as TemperatureSensor; + foreach (var data in common.DeviceStatusReport.AttriBute) + { + if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) + { + if (data.AttriButeData == 0) + { + tempera.Temperatrue = 0; + } + else if (data.AttriButeData > 32767) + { + //璐熸暟(鐗规畩澶勭悊) + string strValue = (data.AttriButeData - 65536).ToString(); + //灏忔暟鐐归渶瑕佷竴浣� + strValue = strValue.Substring(0, strValue.Length - 1); + tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, ".")); + } + else + { + //灏忔暟鐐归渶瑕佷竴浣� + string strValue = data.AttriButeData.ToString(); + strValue = strValue.Substring(0, strValue.Length - 1); + tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, ".")); + } + + tempera.LastDateTime = DateTime.Now; + (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); + } + } + } + //婀垮害 + if (common.DeviceStatusReport.CluterID == 1029) + { + var tempera = deviceUI.CommonDevice as TemperatureSensor; + foreach (var data in common.DeviceStatusReport.AttriBute) + { + if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) + { + if (data.AttriButeData == 0) + { + tempera.Humidity = 0; + } + else + { + //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟) + string strValue = data.AttriButeData.ToString(); + strValue = strValue.Substring(0, strValue.Length - 1); + tempera.Humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, ".")); + } + tempera.LastDateTime = DateTime.Now; + (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); + } } } break; @@ -336,7 +398,56 @@ } }); } + else if (typeTag == "IASInfoReport") + { + Application.RunOnMainThread(() => + { + try + { + for (int i = 0; deviceVerticalScrolViewLayout != null && i < deviceVerticalScrolViewLayout.ChildrenCount; i++) + { + var rowFL = deviceVerticalScrolViewLayout.GetChildren(i) as FrameLayout; + if (rowFL.ChildrenCount == 0) + { + //璁惧涓虹┖鎴栬�呮帶浠朵负绌� + continue; + } + + for (int j = 0; j < rowFL.ChildrenCount; j++) + { + var deviceUI = (rowFL.GetChildren(j) as FunctionMainView).Tag as DeviceUI; + if (deviceUI == null || deviceUI.CommonDevice == null) + { + //璁惧涓虹┖鎴栬�呮帶浠朵负绌� + continue; + } + if (common.DeviceAddr != deviceUI.CommonDevice.DeviceAddr || common.DeviceEpoint != deviceUI.CommonDevice.DeviceEpoint) + { + //鍒ゆ柇鏄惁涓哄綋鍓嶈澶� + continue; + } + switch (deviceUI.CommonDevice.Type) + { + case DeviceType.IASZone: + //ias + var ias = common as IASZone; + var iAS = deviceUI.CommonDevice as ZigBee.Device.IASZone; + iAS.iASInfo = ias.iASInfo; + (rowFL.GetChildren(j) as FunctionMainView).IsSelected = iAS.iASInfo?.Alarm1 == 1; + (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); + iAS.LastDateTime = DateTime.Now; + break; + } + } + } + } + catch (Exception ex) + { + System.Console.WriteLine($"Error:{ex.Message}"); + } + }); + } } /// <summary> /// Changeds the IL ogic status. @@ -420,22 +531,27 @@ TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.GXCTextColor, Text = Config.Instance.Home.GetCurrentFloorName, - IsBold=true + IsBold = true, + TextSize = 14 }; if (Config.Instance.Home.FloorDics.Count > 0) { topFrameLayout.AddChidren(floorBtn); } - var messageBtn = new Button() + if(UserCenterResourse.Option.SafetyShortcut) { - X = Application.GetRealWidth(953), - Width = Application.GetMinRealAverage(69), - Height = Application.GetMinRealAverage(69), - Gravity = Gravity.CenterVertical, - UnSelectedImagePath = "Item/Message.png", - SelectedImagePath = "Item/MessageSelected.png" - }; + var safetyBtn = new SafetyShortcutControl(); + safetyBtn.X = Application.GetRealWidth(860); + safetyBtn.Gravity = Gravity.CenterVertical; + topFrameLayout.AddChidren(safetyBtn); + } + + var messageBtn = new MessageManagementControl(); + messageBtn.X = Application.GetRealWidth(953); + messageBtn.Gravity = Gravity.CenterVertical; + messageBtn.UnSelectedImagePath = "Item/Message.png"; + messageBtn.SelectedImagePath = "Item/MessageSelected.png"; topFrameLayout.AddChidren(messageBtn); var residecneName = new Button() @@ -447,7 +563,7 @@ TextAlignment = TextAlignment.CenterLeft, Text = Config.Instance.Home.Name ?? Language.StringByID(R.MyInternationalizationString.TheResidenceNameNull), TextSize = 24, - TextColor = ZigbeeColor.Current.GXCTextBlackColor, + TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor, IsBold=true }; if (Config.Instance.Home.IsOthreShare) @@ -476,143 +592,13 @@ } else { - var residenceListView = new Dialog(); - residenceListView.Show(); - var closeBGview = new FrameLayout(); - residenceListView.AddChidren(closeBGview); - closeBGview.MouseUpEventHandler += (send1, e1) => + var selectHouse = new Device.Category.SelectHouse(); + selectHouse.Init(); + selectHouse.HouseAction = (houseId) => { - residenceListView.Close(); - }; - - var bg = new Button - { - X = Application.GetRealWidth(35), - Y = Application.GetRealHeight(248), - Width = Application.GetMinRealAverage(449), - Height = Application.GetMinRealAverage(478), - UnSelectedImagePath = "Item/SelectHouse.png" - }; - closeBGview.AddChidren(bg); - - var changeHomeFL = new FrameLayout() - { - X = Application.GetRealWidth(35), - Y = Application.GetRealHeight(271), - Height = Application.GetMinRealAverage(449), - Width = Application.GetMinRealAverage(440), - Radius = CommonPage.BigFormRadius, - BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor - }; - closeBGview.AddChidren(changeHomeFL); - - var changeHomeBtn = new Button() - { - X = Application.GetRealWidth(80), - Width = Application.GetRealWidth(350), - Height = Application.GetRealHeight(150), - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - TextID = R.MyInternationalizationString.ChangeHome, - TextAlignment = TextAlignment.CenterLeft - }; - changeHomeFL.AddChidren(changeHomeBtn); - - var scrolView = new VerticalScrolViewLayout() - { - Y = changeHomeBtn.Bottom, - Height = Application.GetMinRealAverage(305 - 10) - }; - changeHomeFL.AddChidren(scrolView); - - var clickCheckBtn = new Device.CommonForm.SelectedStatuButton(); - var clickNameBtn = new Device.CommonForm.SelectedStatuButton(); - foreach (var homeFilePath in Config.Instance.HomeFilePathList) - { - var home = House.GetHouseByFilePath(homeFilePath); - if (home == null) - { - continue; - } - var rowView = new RowLayout() - { - Height = Application.GetRealHeight(150) - }; - scrolView.AddChidren(rowView); - var pointBtn = new Device.CommonForm.SelectedStatuButton() - { - X = Application.GetRealWidth(80), - Width = Application.GetMinRealAverage(80), - Height = Application.GetMinRealAverage(80), - Gravity = Gravity.CenterVertical, - UnSelectedImagePath = "Item/House.png", - SelectedImagePath = "Item/HouseSelected.png", - IsSelected = home.Id == Config.Instance.Home.Id - }; - rowView.AddChidren(pointBtn); - var nameBtn = new Device.CommonForm.SelectedStatuButton() - { - X = Application.GetRealWidth(173), - Width = Application.GetRealWidth(280), - TextAlignment = TextAlignment.CenterLeft, - Text = home.Name, - TextColor = ZigbeeColor.Current.GXCTextGrayColor, - SelectedTextColor = ZigbeeColor.Current.GXCTextBlackColor, - IsSelected = home.Id == Config.Instance.Home.Id - }; - if (home.IsOthreShare) - { - nameBtn.Text = $"{home.Name}"; - } - rowView.AddChidren(nameBtn); - - EventHandler<MouseEventArgs> selectedResidenceHandler = (send1, e1) => - { - if (Config.Instance.Home.FileName == homeFilePath) - { - return; - } - clickCheckBtn.IsSelected = false; - clickNameBtn.IsSelected = false; - pointBtn.IsSelected = true; - nameBtn.IsSelected = true; - - residecneName.Text = home.Name; - if (home.IsOthreShare) - { - nameBtn.Text = $"{home.Name}"; - } - clickCheckBtn = pointBtn; - clickNameBtn = nameBtn; - residenceListView.Close(); - ChangeResidence(home); - }; - nameBtn.MouseUpEventHandler += selectedResidenceHandler; - pointBtn.MouseUpEventHandler += selectedResidenceHandler; - rowView.MouseUpEventHandler += selectedResidenceHandler; - if (home.Id == Config.Instance.Home.Id) - { - pointBtn.IsSelected = true; - nameBtn.IsSelected = true; - clickCheckBtn = pointBtn; - clickNameBtn = nameBtn; - residecneName.Text = home.Name; - if (home.IsOthreShare) - { - residecneName.Text = nameBtn.Text = $"{home.Name}"; - } - } - else - { - pointBtn.IsSelected = false; - nameBtn.IsSelected = false; - } + ChangeResidence(House.GetHouseByHouseId(houseId)); }; } - }; - //娑堟伅 - messageBtn.MouseUpEventHandler += (send, e) => - { - }; #endregion @@ -628,23 +614,30 @@ }; AddChidren(roomPageView); //绐佸嚭杈硅窛 - roomPageView.TCBJ = Application.GetRealWidth(112); + roomPageView.TCBJ = Application.GetRealWidth(181); //涓や釜page涔嬮棿鐨勯棿璺� - roomPageView.JMBJ = Application.GetRealWidth(69); + roomPageView.JMBJ = Application.GetRealWidth(0); //褰撳墠鎴块棿 - //Room.CurrentRoom = Room.CurrentRoom == null ? Room.Lists[0] : Room.CurrentRoom; var rList = Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom(); - Room.CurrentRoom = rList[0]; + Room.CurrentRoom = Room.CurrentRoom ?? rList[0]; foreach (var room in rList) { var roomView = new Device.CommonForm.RoomView(0, 0); roomPageView.AddChidren(roomView); roomView.Init(room); + roomView.HideName(true); roomView.action += () => { Show(); }; + } + var curIndex = rList.FindIndex((obj) => obj.Id == Room.CurrentRoom.Id); + roomPageView.PageIndex = curIndex; + if (roomPageView.GetChildren(roomPageView.PageIndex) != null) + { + (roomPageView.GetChildren(roomPageView.PageIndex) as RoomView).HideName(false); + } var functionSceneView = new FrameLayout() @@ -725,9 +718,22 @@ roomPageView.PageChange += (sender, e) => { + if(roomPageView.GetChildren(roomPageView.PageIndex - 1) !=null) + { + (roomPageView.GetChildren(roomPageView.PageIndex - 1) as RoomView).HideName(true); + } + if (roomPageView.GetChildren(roomPageView.PageIndex + 1) != null) + { + (roomPageView.GetChildren(roomPageView.PageIndex + 1) as RoomView).HideName(true); + } + if (roomPageView.GetChildren(roomPageView.PageIndex) != null) + { + (roomPageView.GetChildren(roomPageView.PageIndex) as RoomView).HideName(false); + } //鍒囨崲褰撳墠鎴块棿 Room.CurrentRoom = rList[roomPageView.PageIndex]; RefreshBodyView(); + }; } else @@ -770,6 +776,7 @@ floorFL.FloorAction = (floorId) => { floorBtn.Text = Config.Instance.Home.GetFloorNameById(floorId); + Common.Room.CurrentRoom = Common.Room.CurrentRoom?.GetLoveRoom(); Show(); }; } @@ -901,6 +908,7 @@ Height = Application.GetRealHeight(200), Text = Language.StringByID(R.MyInternationalizationString.NoFunction_Tip).Replace("{\\r\\n}", "\r\n"), TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor, + TextAlignment=TextAlignment.Center, IsMoreLines = true }; functionSceneBodyView.AddChidren(noFunctionTip); @@ -924,14 +932,25 @@ } else { + var dList = new List<DeviceUI> { }; + foreach(var device in deviceList) + { + var info = Common.LocalDevice.Current.GetNotHdlMyDeviceEnumInfo(new List<CommonDevice> { device.CommonDevice }); + if (info.BeloneType == DeviceBeloneType.A骞叉帴鐐� || info.BeloneType == DeviceBeloneType.A涓户鍣�) + { + continue; + } + dList.Add(device); + } + deviceVerticalScrolViewLayout = new VerticalScrolViewLayout { }; functionSceneBodyView.AddChidren(deviceVerticalScrolViewLayout); - for (int i = 0; i < deviceList.Count; i++) + for (int i = 0; i < dList.Count; i++) { - var device = deviceList[i]; + var device = dList[i]; //new System.Threading.Thread(() => //{ - Application.RunOnMainThread(() => + Application.RunOnMainThread(() => { try { @@ -1015,7 +1034,7 @@ (device.CommonDevice as Rollershade).CurtainUpDownStopControl(0); - ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(true)); + ((sender as Button).Parent as FunctionMainView).SetStatuText(Language.StringByID(R.MyInternationalizationString.Open)); ((sender as Button).Parent as FunctionMainView).IsSelected = true; //鎺у埗寤舵椂鍥炶皟 @@ -1041,7 +1060,7 @@ (device.CommonDevice as Rollershade).CurtainUpDownStopControl(1); - ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(false)); + ((sender as Button).Parent as FunctionMainView).SetStatuText(Language.StringByID(R.MyInternationalizationString.Close)); ((sender as Button).Parent as FunctionMainView).IsSelected = false; //鎺у埗寤舵椂鍥炶皟 @@ -1539,6 +1558,94 @@ lightView.CollectButton.MouseUpEventHandler += collectionEvent; } } + else if (device.CommonDevice.Type == DeviceType.IASZone) + { + //鍚勭被浼犳劅鍣� + var ias = device.CommonDevice as IASZone; + + var lightView = new FunctionMainView(xx, yy); + itemView.AddChidren(lightView); + lightView.Init(); + lightView.Tag = device; + lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath); + lightView.SetStatuText(device.GetDeviceStatu()); + lightView.SetDeviceName(device.CommonDevice.DeviceEpointName); + lightView.IsSelected = ias.iASInfo?.Alarm1 == 1; + lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName)); + lightView.CanControl(false); + var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName); + if (dev == null) + { + lightView.CollectButton.IsSelected = false; + } + else + { + lightView.CollectButton.IsSelected = true; + } + lightView.CollectButton.MouseUpEventHandler += collectionEvent; + } + else if (device.CommonDevice.Type == DeviceType.TemperatureSensor) + { + var tempera = device.CommonDevice as TemperatureSensor; + + if (tempera.Gateway != null) + { + new System.Threading.Thread(() => + { + System.Threading.Thread.Sleep(100 * i); + if (tempera.Gateway.IsVirtual) + { + ReadStatus(tempera, () => + { + if (tempera.SensorDiv == 1) + { + ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(device.CommonDevice); + } + else if (tempera.SensorDiv == 2) + { + ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(device.CommonDevice); + } + }); + } + else + { + if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - tempera.LastDateTime).TotalSeconds) + { + if (tempera.SensorDiv == 1) + { + ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(device.CommonDevice); + } + else if (tempera.SensorDiv == 2) + { + ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(device.CommonDevice); + } + } + } + }) + { IsBackground = true }.Start(); + + var lightView = new FunctionMainView(xx, yy); + itemView.AddChidren(lightView); + lightView.Init(); + lightView.Tag = device; + lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath); + lightView.SetStatuText(device.GetDeviceStatu()); + lightView.SetDeviceName(device.CommonDevice.DeviceEpointName); + lightView.IsSelected = false; + lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName)); + lightView.CanControl(false); + var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName); + if (dev == null) + { + lightView.CollectButton.IsSelected = false; + } + else + { + lightView.CollectButton.IsSelected = true; + } + lightView.CollectButton.MouseUpEventHandler += collectionEvent; + } + } else if (device.CommonDevice.Type == DeviceType.DoorLock) { //闂ㄩ攣 @@ -1634,6 +1741,7 @@ Height = Application.GetRealHeight(200), Text = Language.StringByID(R.MyInternationalizationString.NoScene_Tip).Replace("{\\r\\n}", "\r\n"), TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor, + TextAlignment=TextAlignment.Center, IsMoreLines = true }; functionSceneBodyView.AddChidren(noScenceTip); -- Gitblit v1.8.0