From b7b3e92bed9c4553e30e2901a1877f088a5f8823 Mon Sep 17 00:00:00 2001 From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local> Date: 星期一, 04 十一月 2019 17:20:52 +0800 Subject: [PATCH] 2019.11.4 --- ZigbeeApp/Shared/Phone/Device/Category/Category.cs | 391 +++++++++++++++++++++---------------------------------- 1 files changed, 152 insertions(+), 239 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/Category/Category.cs b/ZigbeeApp/Shared/Phone/Device/Category/Category.cs index 4405a9a..716fece 100644 --- a/ZigbeeApp/Shared/Phone/Device/Category/Category.cs +++ b/ZigbeeApp/Shared/Phone/Device/Category/Category.cs @@ -162,118 +162,87 @@ { case DeviceType.OnOffOutput: //寮�鍏冲姛鑳� - if ((common as ToggleLight).DeviceStatusReport.CluterID == 6) + if (common.DeviceStatusReport.CluterID == 6) { var light = deviceUI.CommonDevice as ToggleLight; - light.DeviceStatusReport = (common as ToggleLight).DeviceStatusReport; - for (int j = 0; j < rowLayout.ChildrenCount; j++) + light.DeviceStatusReport = common.DeviceStatusReport; + //璁板綍銆佹洿鏂扮姸鎬� + if (light.DeviceStatusReport.AttriBute == null || light.DeviceStatusReport.AttriBute.Count == 0) { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_OnOffStatus) - { - //璁板綍銆佹洿鏂扮姸鎬� - if (light.DeviceStatusReport.AttriBute == null || light.DeviceStatusReport.AttriBute.Count == 0) - { - continue; - } - light.OnOffStatus = light.DeviceStatusReport.AttriBute[0].AttriButeData; - (tempView as Button).IsSelected = light.OnOffStatus == 1; - //璁板綍鍥炲鏃堕棿 - light.LastDateTime = DateTime.Now; - } + continue; } - } - if ((common as ToggleLight).DeviceStatusReport.CluterID == 3) - { - var light = deviceUI.CommonDevice as ToggleLight; - light.IsOnline = 1; + light.OnOffStatus = light.DeviceStatusReport.AttriBute[0].AttriButeData; + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + + row.SetStatu(light.OnOffStatus == 1); + row.SetStatuText(deviceUI.GetDeviceStatu()); //璁板綍鍥炲鏃堕棿 light.LastDateTime = DateTime.Now; - for (int j = 0; j < rowLayout.ChildrenCount; j++) - { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_Online) - { - (tempView as Button).IsSelected = light.IsOnline == 1; - } - } + } + if (common.DeviceStatusReport.CluterID == 3) + { + deviceUI.CommonDevice.IsOnline = 1; + deviceUI.CommonDevice.LastDateTime = DateTime.Now; + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + row.SetStatu(true); } break; case DeviceType.AirSwitch: //寮�鍏冲姛鑳� - if ((common as ZigBee.Device.AirSwitch).DeviceStatusReport.CluterID == 6) + if (common.DeviceStatusReport.CluterID == 6) { var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch; - airSwitch.DeviceStatusReport = (common as ZigBee.Device.AirSwitch).DeviceStatusReport; - for (int j = 0; j < rowLayout.ChildrenCount; j++) + airSwitch.DeviceStatusReport = common.DeviceStatusReport; + //璁板綍銆佹洿鏂扮姸鎬� + if (airSwitch.DeviceStatusReport.AttriBute == null || airSwitch.DeviceStatusReport.AttriBute.Count == 0) { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_OnOffStatus) - { - //璁板綍銆佹洿鏂扮姸鎬� - if (airSwitch.DeviceStatusReport.AttriBute == null || airSwitch.DeviceStatusReport.AttriBute.Count == 0) - { - return; - } - airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData; - (tempView as Button).IsSelected = airSwitch.OnOffStatus == 1; - //璁板綍鍥炲鏃堕棿 - airSwitch.LastDateTime = DateTime.Now; - } + return; } - } - if ((common as ZigBee.Device.AirSwitch).DeviceStatusReport.CluterID == 3) - { - var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch; - airSwitch.IsOnline = 1; + airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData; + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + row.SetStatu(airSwitch.OnOffStatus == 1); + row.SetStatuText(deviceUI.GetDeviceStatu()); //璁板綍鍥炲鏃堕棿 airSwitch.LastDateTime = DateTime.Now; - for (int j = 0; j < rowLayout.ChildrenCount; j++) - { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_Online) - { - (tempView as Button).IsSelected = airSwitch.IsOnline == 1; - } - } + } + if (common.DeviceStatusReport.CluterID == 3) + { + deviceUI.CommonDevice.IsOnline = 1; + deviceUI.CommonDevice.LastDateTime = DateTime.Now; + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + row.SetStatu(true); } break; case DeviceType.WindowCoveringDevice: - if ((common as Rollershade).DeviceStatusReport.CluterID == 3) + + if (common.DeviceStatusReport.CluterID == 258) { - var rollerShape = deviceUI.CommonDevice as Rollershade; - //璁板綍鍥炲鏃堕棿 - rollerShape.LastDateTime = DateTime.Now; - rollerShape.IsOnline = 1; - for (int j = 0; j < rowLayout.ChildrenCount; j++) + if (common.DeviceStatusReport.AttriBute[0].AttributeId == 0) { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_Online) - { - (tempView as Button).IsSelected = rollerShape.IsOnline == 1; - } + //绐楀笜绫诲瀷 + var rollerShade = deviceUI.CommonDevice as Rollershade; + rollerShade.DeviceStatusReport = common.DeviceStatusReport; + rollerShade.WcdType = common.DeviceStatusReport.AttriBute[0].AttriButeData; + rollerShade.LastDateTime = DateTime.Now; } + if (common.DeviceStatusReport.AttriBute[0].AttributeId == 8) + { + var row = rowLayout.GetChildren(0) as CategoryFunctionForWinRow; + //绐楀笜鐧惧垎姣� + var rollerShade = deviceUI.CommonDevice as Rollershade; + rollerShade.DeviceStatusReport = common.DeviceStatusReport; + rollerShade.WcdCurrentPositionLiftPercentage = common.DeviceStatusReport.AttriBute[0].AttriButeData; + row.SetStatuText($"{Language.StringByID(R.MyInternationalizationString.Current)} { deviceUI.GetDeviceStatu()}"); + rollerShade.LastDateTime = DateTime.Now; + } + } + if (common.DeviceStatusReport.CluterID == 3) + { + deviceUI.CommonDevice.IsOnline = 1; + deviceUI.CommonDevice.LastDateTime = DateTime.Now; + var row = rowLayout.GetChildren(0) as CategoryFunctionForWinRow; + row.SetStatu(true); } break; @@ -358,49 +327,29 @@ break; case DeviceType.DimmableLight: //璋冨厜鐏姛鑳� - if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 6) + if (common.DeviceStatusReport.CluterID == 6) { - var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight; - dimmableLight.DeviceStatusReport = (common as ZigBee.Device.DimmableLight).DeviceStatusReport; - for (int j = 0; j < rowLayout.ChildrenCount; j++) + var dimmableLight = deviceUI.CommonDevice as DimmableLight; + dimmableLight.DeviceStatusReport = common.DeviceStatusReport; + //璁板綍銆佹洿鏂扮姸鎬� + if (dimmableLight.DeviceStatusReport.AttriBute == null || dimmableLight.DeviceStatusReport.AttriBute.Count == 0) { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_OnOffStatus) - { - //璁板綍銆佹洿鏂扮姸鎬� - if (dimmableLight.DeviceStatusReport.AttriBute == null || dimmableLight.DeviceStatusReport.AttriBute.Count == 0) - { - return; - } - dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData; - (tempView as Button).IsSelected = dimmableLight.OnOffStatus == 1; - //璁板綍鍥炲鏃堕棿 - dimmableLight.LastDateTime = DateTime.Now; - } + continue; } - } - if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 3) - { - var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight; - dimmableLight.IsOnline = 1; + dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData; + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + + row.SetStatu(dimmableLight.OnOffStatus == 1); + row.SetStatuText(deviceUI.GetDeviceStatu()); //璁板綍鍥炲鏃堕棿 dimmableLight.LastDateTime = DateTime.Now; - for (int j = 0; j < rowLayout.ChildrenCount; j++) - { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_Online) - { - (tempView as Button).IsSelected = dimmableLight.IsOnline == 1; - } - } + } + if (common.DeviceStatusReport.CluterID == 3) + { + deviceUI.CommonDevice.IsOnline = 1; + deviceUI.CommonDevice.LastDateTime = DateTime.Now; + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + row.SetStatu(true); } break; } @@ -433,77 +382,35 @@ switch (deviceUI.CommonDevice.Type) { case DeviceType.OnOffOutput: - var light = deviceUI.CommonDevice as ToggleLight; - light.IsOnline = (common as ToggleLight).IsOnline; - //璁板綍鍥炲鏃堕棿 - light.LastDateTime = DateTime.Now; - for (int j = 0; j < rowLayout.ChildrenCount; j++) - { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_Online) - { - (tempView as Button).IsSelected = light.IsOnline == 1; - } - } + deviceUI.CommonDevice.IsOnline = common.IsOnline; + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + row.SetStatu(deviceUI.CommonDevice.IsOnline == 1); + deviceUI.CommonDevice.LastDateTime = DateTime.Now; break; case DeviceType.AirSwitch: - var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch; - airSwitch.IsOnline = (common as ZigBee.Device.AirSwitch).IsOnline; - //璁板綍鍥炲鏃堕棿 - airSwitch.LastDateTime = DateTime.Now; - for (int j = 0; j < rowLayout.ChildrenCount; j++) - { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_Online) - { - (tempView as Button).IsSelected = airSwitch.IsOnline == 1; - } - } + deviceUI.CommonDevice.IsOnline = common.IsOnline; + var row1 = rowLayout.GetChildren(0) as CategoryFunctionRow; + row1.SetStatu(deviceUI.CommonDevice.IsOnline == 1); + deviceUI.CommonDevice.LastDateTime = DateTime.Now; break; case DeviceType.WindowCoveringDevice: - var rollerShape = deviceUI.CommonDevice as Rollershade; - //璁板綍鍥炲鏃堕棿 - rollerShape.LastDateTime = DateTime.Now; - rollerShape.IsOnline = (common as Rollershade).IsOnline; - for (int j = 0; j < rowLayout.ChildrenCount; j++) - { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_Online) - { - (tempView as Button).IsSelected = rollerShape.IsOnline == 1; - } - } + deviceUI.CommonDevice.LastDateTime = DateTime.Now; + deviceUI.CommonDevice.IsOnline = common.IsOnline; + var row2 = rowLayout.GetChildren(0) as CategoryFunctionForWinRow; + row2.SetStatu(deviceUI.CommonDevice.IsOnline == 1); break; + case DeviceType.DimmableLight: + deviceUI.CommonDevice.LastDateTime = DateTime.Now; + deviceUI.CommonDevice.IsOnline = common.IsOnline; + var row3 = rowLayout.GetChildren(0) as CategoryFunctionRow; + row3.SetStatu(deviceUI.CommonDevice.IsOnline == 1); + break; case DeviceType.Thermostat: - var ac = deviceUI.CommonDevice as ZigBee.Device.AC; - //璁板綍鍥炲鏃堕棿 - ac.LastDateTime = DateTime.Now; - ac.IsOnline = (common as ZigBee.Device.AC).IsOnline; - for (int j = 0; j < rowLayout.ChildrenCount; j++) - { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_Online) - { - (tempView as Button).IsSelected = ac.IsOnline == 1; - } - } + deviceUI.CommonDevice.LastDateTime = DateTime.Now; + deviceUI.CommonDevice.IsOnline = common.IsOnline; + //var row4 = rowLayout.GetChildren(0) as CategoryFunctionRow; + //row4.SetStatu(deviceUI.CommonDevice.IsOnline == 1); break; } } @@ -994,8 +901,9 @@ var deviceRow = new CategoryFunctionRow(0, 35); deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); - deviceRow.SetStatu(light.IsOnline == 1); - deviceRow.SetZoneText(deviceUI.GetZone()); + deviceRow.SetOnLineStatu(light.IsOnline == 1); + deviceRow.SetStatuText(deviceUI.GetDeviceStatu()); + deviceRow.SetStatu(light.OnOffStatus == 1); deviceTypeRowLayout.AddChidren(deviceRow); deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => @@ -1014,6 +922,7 @@ { light.SwitchControl(0); } + deviceRow.SetStatuText(deviceUI.GetDeviceStatu()); //鎺у埗寤舵椂鍥炶皟 DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => { @@ -1034,7 +943,7 @@ var lightControl = new Phone.Device.Light.LightControl(); UserView.HomePage.Instance.AddChidren(lightControl); UserView.HomePage.Instance.PageIndex += 1; - lightControl.action = RefreshBodyView; + //lightControl.action = RefreshBodyView; lightControl.Show(deviceUI, room); }; @@ -1082,7 +991,7 @@ var deviceTypeRowLayout = new RowLayout() { - Height = Application.GetRealHeight(127 + 35), + Height = Application.GetRealHeight(129 + 35), LineColor = ZigbeeColor.Current.GXCBackgroundColor, Tag = deviceUI }; @@ -1091,8 +1000,9 @@ var deviceRow = new CategoryFunctionRow(0, 35); deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); - deviceRow.SetStatu(airSwitch.IsOnline == 1); - deviceRow.SetZoneText(deviceUI.GetZone()); + deviceRow.SetOnLineStatu(airSwitch.IsOnline == 1); + deviceRow.SetStatu(airSwitch.OnOffStatus == 1); + deviceRow.SetStatuText(deviceUI.GetDeviceStatu()); deviceTypeRowLayout.AddChidren(deviceRow); deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => @@ -1111,6 +1021,7 @@ { airSwitch.SwitchControl(0); } + deviceRow.SetStatuText(deviceUI.GetDeviceStatu()); //鎺у埗寤舵椂鍥炶皟 DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => { @@ -1128,10 +1039,10 @@ deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) => { - var lightControl = new Phone.Device.Light.LightControl(); + var lightControl = new Phone.Device.Light.AirSwitchControl(); UserView.HomePage.Instance.AddChidren(lightControl); UserView.HomePage.Instance.PageIndex += 1; - lightControl.action = RefreshBodyView; + //lightControl.action = RefreshBodyView; lightControl.Show(deviceUI, room); }; @@ -1190,8 +1101,9 @@ var deviceRow = new CategoryFunctionRow(0, 35); deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); - deviceRow.SetStatu(dimmableLight.IsOnline == 1); - deviceRow.SetZoneText(deviceUI.GetZone()); + deviceRow.SetOnLineStatu(dimmableLight.IsOnline == 1); + deviceRow.SetStatuText(deviceUI.GetDeviceStatu()); + deviceRow.SetStatu(dimmableLight.OnOffStatus == 1); deviceTypeRowLayout.AddChidren(deviceRow); deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => @@ -1210,6 +1122,7 @@ { dimmableLight.SwitchControl(0); } + deviceRow.SetStatuText(deviceUI.GetDeviceStatu()); //鎺у埗寤舵椂鍥炶皟 DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => { @@ -1231,7 +1144,7 @@ UserView.HomePage.Instance.AddChidren(dimmableLightControl); UserView.HomePage.Instance.PageIndex += 1; UserView.HomePage.Instance.ScrollEnabled = false; - dimmableLightControl.action = RefreshBodyView; + //dimmableLightControl.action = RefreshBodyView; dimmableLightControl.Show(deviceUI, room); }; @@ -1296,10 +1209,12 @@ }; deviceListScrolView.AddChidren(deviceTypeRowLayout); - var deviceRow = new FunctionRow(0, 35); + var deviceRow = new CategoryFunctionRow(0, 35); deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); - deviceRow.SetStatu(ac.IsOnline == 1); + deviceRow.SetOnLineStatu(ac.IsOnline == 1); + deviceRow.SetStatuText(deviceUI.GetDeviceStatu()); + deviceRow.SetStatu(ac.currentSystemMode != 1); deviceTypeRowLayout.AddChidren(deviceRow); deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => @@ -1318,6 +1233,7 @@ { ac.Close(); } + deviceRow.SetStatuText(deviceUI.GetDeviceStatu()); //鎺у埗寤舵椂鍥炶皟 DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => { @@ -1377,17 +1293,37 @@ var deviceTypeRowLayout = new RowLayout() { - Height = Application.GetRealHeight(127 + 35), - LineColor = ZigbeeColor.Current.GXCLineColor, + Height = Application.GetRealHeight(129 + 35), + LineColor = ZigbeeColor.Current.GXCBackgroundColor, Tag = deviceUI }; deviceListScrolView.AddChidren(deviceTypeRowLayout); - var deviceRow = new FunctionRow(0, 35); - deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); + var deviceRow = new CategoryFunctionForWinRow(0, 35); + deviceRow.Init(deviceUI); deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); - deviceRow.SetStatu(rollerShade.IsOnline == 1); + deviceRow.SetOnLineStatu(rollerShade.IsOnline == 1); + deviceRow.SetStatuText(deviceUI.GetDeviceStatu()); + deviceRow.SetStatu(rollerShade.WcdCurrentPositionLiftPercentage != 0); + deviceRow.SetRollerShadeIcon(rollerShade.WcdType); deviceTypeRowLayout.AddChidren(deviceRow); + + if (rollerShade.WcdType == -1) + { + CommonPage.Loading.Start(); + new System.Threading.Thread(() => + { + Rollershade.ReadWcdTypeAction(rollerShade, () => + { + Application.RunOnMainThread(() => + { + deviceRow.SetRollerShadeIcon(rollerShade.WcdType); + CommonPage.Loading.Hide(); + }); + }); + }) + { IsBackground = true }.Start(); + } var editBtn = new CommonForm.RowLayoutEditButton() { @@ -1405,37 +1341,14 @@ deviceTypeRowLayout.AddRightView(delBtn); delBtn.MouseUpEventHandler += delEvent; - - deviceRow.SwitchBtn.MouseUpEventHandler += (sender, e) => + deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) => { - zbGateway = deviceUI.CommonDevice.Gateway; - sendedControlCommand = false; - zbGateway.ReportAction += UpdateDeviceControllStatu; - AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice); - - (sender as CommonForm.SelectedStatuButton).IsSelected = !(sender as CommonForm.SelectedStatuButton).IsSelected; - if ((sender as CommonForm.SelectedStatuButton).IsSelected) - { - rollerShade.CurtainUpDownStopControl(0); - } - else - { - rollerShade.CurtainUpDownStopControl(1); - } - - //鎺у埗寤舵椂鍥炶皟 - DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => - { - if (Parent == null) - { - return; - } - RemoveUpdateControlDeviceStatuAction(zbGateway); - if (sendedControlCommand == false) - { - DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); - } - }); + var rollerShadeControl = new Phone.Device.Curtain.RollerShadeControl(); + UserView.HomePage.Instance.AddChidren(rollerShadeControl); + UserView.HomePage.Instance.PageIndex += 1; + UserView.HomePage.Instance.ScrollEnabled = false; + //rollerShadeControl.action = RefreshBodyView; + rollerShadeControl.Show(deviceUI, room); }; } else -- Gitblit v1.8.0