From 94e4e5b9fd3da964c44b7b14227d6fe2bbb426d7 Mon Sep 17 00:00:00 2001 From: WJC <wjc@hdlchina.com.cn> Date: 星期四, 02 四月 2020 13:56:39 +0800 Subject: [PATCH] 2020-04-02-2 --- ZigbeeApp/Shared/Phone/Device/Category/Category.cs | 3875 ++++++++++++++++++++++++++++++++++------------------------- 1 files changed, 2,242 insertions(+), 1,633 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/Category/Category.cs b/ZigbeeApp/Shared/Phone/Device/Category/Category.cs old mode 100755 new mode 100644 index c41f1d2..e87c0be --- a/ZigbeeApp/Shared/Phone/Device/Category/Category.cs +++ b/ZigbeeApp/Shared/Phone/Device/Category/Category.cs @@ -4,6 +4,11 @@ using Shared.Phone.UserView; using Shared.R; using ZigBee.Device; +using Shared.Phone.Device.CommonForm; +using Shared.Phone.Device.AC; +using Shared.Phone.UserCenter.DoorLock; +using Shared.Phone.Device.DeviceLogic; +using Shared.Phone.UserCenter; namespace Shared.Phone.Device.Category { @@ -19,21 +24,29 @@ /// </summary> public static Category instance; /// <summary> + /// low_High + /// </summary> + private const int low_High = 127; + /// <summary> /// 鍔熻兘 /// </summary> - public Button functionBtn; + private ButtonLineForm functionBtn; /// <summary> /// 鍦烘櫙 /// </summary> - public Button sceneBtn; + private ButtonLineForm sceneBtn; /// <summary> /// 鑷姩鍖� /// </summary> - public Button automationBtn; + private ButtonLineForm automationBtn; + /// <summary> + /// 鍦烘櫙鍔熻兘涓儴鑳屾櫙bodyView + /// </summary> + public FrameLayout functionSceneBodyView; /// <summary> /// 涓儴鑳屾櫙bodyView /// </summary> - public FrameLayout functionSceneBodyView; + public FrameLayout functionSceneAutoBodyView; /// <summary> /// 鐩稿悓鐨勮澶囧垪琛� /// </summary> @@ -50,10 +63,6 @@ /// 鍙充笂瑙掓坊鍔犳寜閽� /// </summary> private Device.CommonForm.SelectedStatuButton addBtn; - /// <summary> - /// 鍒嗘爮搴曢儴绾挎潯. - /// </summary> - private Button line; /// <summary> /// 缃戝叧 /// </summary> @@ -73,11 +82,11 @@ /// <summary> /// 褰撳墠鍔熻兘绫诲瀷鎸夐挳 /// </summary> - private Button tempFunctionTypeBtn; + private FunctionButton tempFunctionTypeBtn; /// <summary> /// 鍔熻兘绫诲瀷鎸夐挳 /// </summary> - private Button functionTypeIMG; + //private FunctionButton functionTypeIMG; /// <summary> /// 鍔熻兘绫诲瀷 /// </summary> @@ -85,35 +94,36 @@ /// <summary> /// 璁惧绫诲瀷RowLayout /// </summary> - private RowLayout typeRowLayout; + //private FrameLayout typeRowLayout; + /// <summary> + /// 妤煎眰 + /// </summary> + private Button floorBtn; + /// <summary> + /// 閫夋嫨妤煎眰 + /// </summary> + private Button selectFloorBtn; + /// <summary> + /// 鐩稿悓绫诲瀷鐨勮澶囧垪琛� + /// </summary> + private Dictionary<int, List<CommonDevice>> typeDeviceDic; + /// <summary> + /// 璁惧绫诲瀷鐨勫浘id + /// </summary> + private Dictionary<int, DeviceConcreteType> typeIdDic; + /// <summary> + /// dList + /// </summary> + private List<CommonDevice> devList; + /// <summary> + /// sceneList + /// </summary> + private List<SceneUI> sceneList; #endregion #region 鈼� 鎺ュ彛____________________________ - /// <summary> - /// 璇ユ帴鍙e皢寮冪敤 鏀圭敤DeviceInfoChange() - /// </summary> - /// <param name="common">Common.</param> - public void Changed(CommonDevice common) - { - - } - /// <summary> - /// Changeds the IL ogic status. - /// </summary> - /// <param name="logic">Logic.</param> - public void ChangedILogicStatus(ZigBee.Device.Logic logic) - { - - } - /// <summary> - /// Changeds the IS cene status. - /// </summary> - /// <param name="scene">Scene.</param> - public void ChangedISceneStatus(Scene scene) - { - - } + /// <summary> /// 璁惧鐘舵�佹洿鏂版帴鍙� /// <para>type锛氬鏋滀负 DeviceInComingRespon:璁惧鏂颁笂鎶�</para> @@ -133,259 +143,250 @@ { try { + if (common.DeviceStatusReport.AttriBute == null || common.DeviceStatusReport.AttriBute.Count == 0) + { + return; + } for (int i = 0; deviceListScrolView != null && i < deviceListScrolView.ChildrenCount; i++) { var rowLayout = deviceListScrolView.GetChildren(i) as RowLayout; - var deviceUI = rowLayout.Tag as DeviceUI; - if (deviceUI == null || deviceUI.CommonDevice == null) + var deviceUI = LocalDevice.Current.GetDevice(rowLayout.Tag.ToString()); + if (deviceUI == null) { continue; } - if (deviceUI.CommonDevice.DeviceAddr != common.DeviceAddr || deviceUI.CommonDevice.DeviceEpoint != common.DeviceEpoint) + if (deviceUI.DeviceAddr != common.DeviceAddr || deviceUI.DeviceEpoint != common.DeviceEpoint) { continue; } - switch (deviceUI.CommonDevice.Type) + switch (deviceUI.Type) { 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++) - { - 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; - } - } - } - if ((common as ToggleLight).DeviceStatusReport.CluterID == 3) - { - var light = deviceUI.CommonDevice as ToggleLight; - light.IsOnline = 1; - //璁板綍鍥炲鏃堕棿 + var light = deviceUI as ToggleLight; + light.DeviceStatusReport = common.DeviceStatusReport; + light.OnOffStatus = light.DeviceStatusReport.AttriBute[0].AttriButeData; + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + row.IsSelected = light.OnOffStatus == 1; + row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); 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.IsOnline = 1; + deviceUI.LastDateTime = DateTime.Now; } 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++) - { - 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; - } - } - } - if ((common as ZigBee.Device.AirSwitch).DeviceStatusReport.CluterID == 3) - { - var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch; - airSwitch.IsOnline = 1; - //璁板綍鍥炲鏃堕棿 + var airSwitch = deviceUI as ZigBee.Device.AirSwitch; + airSwitch.DeviceStatusReport = common.DeviceStatusReport; + airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData; + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + row.IsSelected = airSwitch.OnOffStatus == 1; + row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); 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.IsOnline = 1; + deviceUI.LastDateTime = DateTime.Now; } 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 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 as Rollershade; + rollerShade.DeviceStatusReport = common.DeviceStatusReport; + rollerShade.WcdCurrentPositionLiftPercentage = common.DeviceStatusReport.AttriBute[0].AttriButeData; + row.SetStatuText($"{Language.StringByID(R.MyInternationalizationString.Current)} { HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)}"); + row.IsSelected = rollerShade.WcdCurrentPositionLiftPercentage != 0; + rollerShade.LastDateTime = DateTime.Now; + } + } + if (common.DeviceStatusReport.CluterID == 3) + { + deviceUI.IsOnline = 1; + deviceUI.LastDateTime = DateTime.Now; } break; case DeviceType.Thermostat: //AC鍔熻兘 - if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 513) + if (common.DeviceStatusReport.CluterID == 513) { - var attriButeList = (common as ZigBee.Device.AC).DeviceStatusReport.AttriBute; - if (attriButeList == null || attriButeList.Count == 0) + var attriButeList = common.DeviceStatusReport.AttriBute; + var ac = deviceUI as ZigBee.Device.AC; + ac.DeviceStatusReport = common.DeviceStatusReport; + foreach (var attList in attriButeList) { - return; + var curTemp = (attList.AttriButeData / 100 < ACControlBase.Temperature_High && attList.AttriButeData / 100 > ACControlBase.Temperature_Low) ? attList.AttriButeData / 100 : ACControlBase.Temperature_Default; + switch (attList.AttributeId) + { + case 0: + ac.currentLocalTemperature = curTemp; + ac.LastDateTime = DateTime.Now; + break; + case 17: + ac.currentCoolingSetpoint = curTemp; + ac.LastDateTime = DateTime.Now; + break; + case 18: + ac.currentHeatingSetpoint = curTemp; + ac.LastDateTime = DateTime.Now; + break; + case 4096: + ac.currentAutoSetpoint = curTemp; + ac.LastDateTime = DateTime.Now; + break; + case 28: + ac.currentSystemMode = attList.AttriButeData; + ac.LastDateTime = DateTime.Now; + break; + case 4097: + //杩囪檻缃戞竻娲楁爣蹇�:42 + ac.CleanStatu = attList.AttriButeData == 42; + break; + } } - var ac = deviceUI.CommonDevice as ZigBee.Device.AC; - ac.DeviceStatusReport = (common as ZigBee.Device.AC).DeviceStatusReport; - switch (attriButeList[0].AttributeId) - { - case 0: - //姝ゅ睘鎬ц〃鏄庡鍐呭綋鍓嶇殑娓╁害 * 100锛屽疄闄呮俯搴︿负鈥淟ocalTemperature / 100鈥濓紝鍗曚綅锛氣剝 - ac.currentLocalTemperature = attriButeList[0].AttriButeData / 100; - ac.LastDateTime = DateTime.Now; - break; - - case 17: - //姝ゅ睘鎬ц〃鏄庢璁惧褰撳墠鐨勫埗鍐锋俯搴︼紝瀹為檯娓╁害涓衡�淐oolingSetpoint / 100鈥濓紝鍗曚綅锛氣剝銆� - ac.currentCoolingSetpoint = attriButeList[0].AttriButeData / 100; - ac.LastDateTime = DateTime.Now; - break; - - case 18: - //姝ゅ睘鎬ц〃鏄庢璁惧褰撳墠鐨勫埗鐑俯搴︼紝瀹為檯娓╁害涓衡�淗eatingSetpoint / 100鈥濓紝鍗曚綅锛氣剝銆� - ac.currentHeatingSetpoint = attriButeList[0].AttriButeData / 100; - ac.LastDateTime = DateTime.Now; - break; - - case 28: - //姝ゅ睘鎬ф弿杩版亽娓╄澶囨澶勪簬鍝妯″紡 - //Off = 0 Auto = 1 Cool = 3 Heat = 4 FanOnly = 7 Dry = 8 - ac.currentSystemMode = attriButeList[0].AttriButeData; - ac.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_OnOffStatus) - { - if (ac.currentSystemMode == 0) - { - (tempView as Button).IsSelected = false; - } - else - { - (tempView as Button).IsSelected = true; - } - } - } - break; - } - + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + row.IsSelected = ac.currentSystemMode != 0; + row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); } - if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 3) + + if (common.DeviceStatusReport.CluterID == 514) { - var ac = deviceUI.CommonDevice as ZigBee.Device.AC; - ac.IsOnline = 1; - //璁板綍鍥炲鏃堕棿 - ac.LastDateTime = DateTime.Now; - for (int j = 0; j < rowLayout.ChildrenCount; j++) + var ac = deviceUI as ZigBee.Device.AC; + var attriButeList = common.DeviceStatusReport.AttriBute; + ac.DeviceStatusReport = common.DeviceStatusReport; + foreach (var attList in attriButeList) { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) + switch (attList.AttributeId) { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_Online) - { - (tempView as Button).IsSelected = ac.IsOnline == 1; + case 0: + ac.currentFanMode = attList.AttriButeData; + ac.LastDateTime = DateTime.Now; + break; + case 4096: + ac.currentFanSwingMode = attList.AttriButeData; + ac.LastDateTime = DateTime.Now; + break; } } + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + row.IsSelected = ac.currentSystemMode != 0; + row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); + } + + if (common.DeviceStatusReport.CluterID == 3) + { + var ac = deviceUI as ZigBee.Device.AC; + ac.IsOnline = 1; + ac.LastDateTime = DateTime.Now; } 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 as DimmableLight; + dimmableLight.DeviceStatusReport = common.DeviceStatusReport; + dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData; + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + row.IsSelected = dimmableLight.OnOffStatus == 1; + row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); + dimmableLight.LastDateTime = DateTime.Now; + } + if (common.DeviceStatusReport.CluterID == 8) + { + var dimmableLight = deviceUI as DimmableLight; + dimmableLight.DeviceStatusReport = common.DeviceStatusReport; + dimmableLight.Level = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData; + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + row.IsSelected = dimmableLight.OnOffStatus == 1; + row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); + dimmableLight.LastDateTime = DateTime.Now; + } + if (common.DeviceStatusReport.CluterID == 3) + { + deviceUI.IsOnline = 1; + deviceUI.LastDateTime = DateTime.Now; + } + break; + + case DeviceType.TemperatureSensor: + //娓╁害 + if (common.DeviceStatusReport.CluterID == 1026) + { + var tempera = deviceUI as TemperatureSensor; + foreach (var data in common.DeviceStatusReport.AttriBute) { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) + if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_OnOffStatus) - { - //璁板綍銆佹洿鏂扮姸鎬� - if (dimmableLight.DeviceStatusReport.AttriBute == null || dimmableLight.DeviceStatusReport.AttriBute.Count == 0) + if (data.AttriButeData == 0) { - return; + tempera.Temperatrue = 0; } - dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData; - (tempView as Button).IsSelected = dimmableLight.OnOffStatus == 1; - //璁板綍鍥炲鏃堕棿 - dimmableLight.LastDateTime = DateTime.Now; + 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, ".")); + } + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); } } } - if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 3) + //婀垮害 + if (common.DeviceStatusReport.CluterID == 1029) { - var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight; - dimmableLight.IsOnline = 1; - //璁板綍鍥炲鏃堕棿 - dimmableLight.LastDateTime = DateTime.Now; - for (int j = 0; j < rowLayout.ChildrenCount; j++) + var tempera = deviceUI as TemperatureSensor; + foreach (var data in common.DeviceStatusReport.AttriBute) { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) + if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_Online) - { - (tempView as Button).IsSelected = dimmableLight.IsOnline == 1; + 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; + } + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); } } } @@ -408,89 +409,79 @@ for (int i = 0; deviceListScrolView != null && i < deviceListScrolView.ChildrenCount; i++) { var rowLayout = deviceListScrolView.GetChildren(i) as RowLayout; - var deviceUI = rowLayout.Tag as DeviceUI; - if (deviceUI == null || deviceUI.CommonDevice == null) + var deviceUI = LocalDevice.Current.GetDevice(rowLayout.Tag.ToString()); + if (deviceUI == null) { continue; } - if (deviceUI.CommonDevice.DeviceAddr != common.DeviceAddr || deviceUI.CommonDevice.DeviceEpoint != common.DeviceEpoint) + if (deviceUI.DeviceAddr != common.DeviceAddr || deviceUI.DeviceEpoint != common.DeviceEpoint) { continue; } - switch (deviceUI.CommonDevice.Type) + switch (deviceUI.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.IsOnline = common.IsOnline; + deviceUI.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.IsOnline = common.IsOnline; + deviceUI.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; - } - } + + case DeviceType.WindowCoveringDevice: + deviceUI.LastDateTime = DateTime.Now; + deviceUI.IsOnline = common.IsOnline; + break; + + case DeviceType.DimmableLight: + deviceUI.LastDateTime = DateTime.Now; + deviceUI.IsOnline = common.IsOnline; 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.LastDateTime = DateTime.Now; + deviceUI.IsOnline = common.IsOnline; + break; + } + } + } + catch (Exception ex) + { + System.Console.WriteLine($"鍒嗙被璁惧鐘舵��-Error:{ex.Message}"); + } + }); + } + else if (typeTag == "IASInfoReport") + { + Application.RunOnMainThread(() => + { + try + { + for (int i = 0; deviceListScrolView != null && i < deviceListScrolView.ChildrenCount; i++) + { + var rowLayout = deviceListScrolView.GetChildren(i) as RowLayout; + var deviceUI = LocalDevice.Current.GetDevice(rowLayout.Tag.ToString()); + if (deviceUI == null) + { + continue; + } + if (deviceUI.DeviceAddr != common.DeviceAddr || deviceUI.DeviceEpoint != common.DeviceEpoint) + { + continue; + } + switch (deviceUI.Type) + { + case DeviceType.IASZone: + //寮�鍏冲姛鑳� + var ias = common as IASZone; + var iAS = deviceUI as ZigBee.Device.IASZone; + iAS.iASInfo = ias.iASInfo; + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + row.IsSelected = iAS.iASInfo?.Alarm1 == 1; + row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); + iAS.LastDateTime = DateTime.Now; break; } } @@ -520,8 +511,9 @@ /// </summary> public Category() { - BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor; + BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor; instance = this; + ZbGateway.StatusList.Add(this); } /// <summary> @@ -530,160 +522,140 @@ /// <param name="selectedBtn">閫変腑閭d釜鐣岄潰 0--鍔熻兘 1--鍦烘櫙 2--鑷姩鍖� </param> public void Show(int selectedBtn = 1) { - ZbGateway.StatusList.Add(this); + InitData(); + RemoveAll(); + #region topview var topView = new FrameLayout() { - Height = Application.GetRealHeight(CommonPage.Navigation_Height), - BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor, + Y = Application.GetRealHeight(104), + Height = Application.GetRealHeight(low_High), + BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor, }; this.AddChidren(topView); var title = new Button() { - Y = Application.GetRealHeight(CommonPage.NavigationTitle_Y), - Height = Application.GetRealHeight(CommonPage.Navigation_Height - CommonPage.NavigationTitle_Y), - TextAlignment = TextAlignment.Center, + X = Application.GetRealWidth(CommonFormResouce.X_Left), + Height = Application.GetRealHeight(95), + Width = Application.GetRealWidth(CommonFormResouce.TopTitle_Width), + Gravity = Gravity.CenterVertical, + TextAlignment = TextAlignment.CenterLeft, TextID = R.MyInternationalizationString.Category, - TextSize = 20, - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - Width = Application.GetRealWidth(CommonPage.AppRealWidth - 500), - Gravity = Gravity.CenterHorizontal + TextSize = 24, + TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor, + IsBold = true }; topView.AddChidren(title); - addBtn = new Device.CommonForm.SelectedStatuButton() + addBtn = new SelectedStatuButton() { - Y = Application.GetRealHeight(CommonPage.NavigationTitle_Y), - Width = Application.GetMinRealAverage(100), - Height = Application.GetMinRealAverage(100), - UnSelectedImagePath = "Item/Add.png", - SelectedImagePath = "Item/AddSelected.png", - X = Application.GetRealWidth(CommonPage.AppRealWidth - 150), + X = Application.GetRealWidth(953), + Width = Application.GetMinRealAverage(104), + Height = Application.GetMinRealAverage(104), + Gravity = Gravity.CenterVertical, + UnSelectedImagePath = "Item/Add_Category.png", + SelectedImagePath = "Item/Add_Category.png" }; topView.AddChidren(addBtn); #endregion #region midFL - int functionSceneAuto_width; - //鎴愬憳娌℃湁鏉冮檺灞曠ず鑷姩鍖栫晫闈� - if (UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 3) - { - functionSceneAuto_width = 1080 / 2; - } - else - { - functionSceneAuto_width = 1080 / 3; - } - var functionSceneAuto_height = 120; var midFL = new FrameLayout { Y = topView.Bottom, - Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.TabbarHeight) - topView.Bottom + Height = Application.GetRealHeight(1549), + BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor }; AddChidren(midFL); + var functionSceneAutoBG = new FrameLayout() { - Height = Application.GetRealHeight(functionSceneAuto_height), - BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor + Height = Application.GetRealHeight(low_High), + BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor }; midFL.AddChidren(functionSceneAutoBG); - //鍔熻兘 - functionBtn = new Button() - { - Width = Application.GetRealWidth(functionSceneAuto_width), - Height = Application.GetRealHeight(functionSceneAuto_height), - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - SelectedTextColor = ZigbeeColor.Current.GXCTextBlueColor, - TextAlignment = TextAlignment.Center, - TextSize = 16, - TextID = R.MyInternationalizationString.Function, - IsSelected = false - }; - midFL.AddChidren(functionBtn); + //鍦烘櫙 - sceneBtn = new Button() - { - X = functionBtn.Right, - Width = Application.GetRealWidth(functionSceneAuto_width), - Height = Application.GetRealHeight(functionSceneAuto_height), - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - SelectedTextColor = ZigbeeColor.Current.GXCTextBlueColor, - TextAlignment = TextAlignment.Center, - TextSize = 16, - TextID = R.MyInternationalizationString.Scence, - IsSelected = false - }; - midFL.AddChidren(sceneBtn); + sceneBtn = new ButtonLineForm(CommonFormResouce.X_Left, 34); + functionSceneAutoBG.AddChidren(sceneBtn); + sceneBtn.Init(); + sceneBtn.SetTitle(R.MyInternationalizationString.Scence); + //鍔熻兘 + functionBtn = new ButtonLineForm(CommonFormResouce.X_Left + 150 + 20, 34); + functionSceneAutoBG.AddChidren(functionBtn); + functionBtn.Init(); + functionBtn.SetTitle(R.MyInternationalizationString.Function); + functionBtn.X = sceneBtn.Right; //鑷姩鍖� - automationBtn = new Button() - { - X = sceneBtn.Right, - Width = Application.GetRealWidth(functionSceneAuto_width), - Height = Application.GetRealHeight(functionSceneAuto_height), - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - SelectedTextColor = ZigbeeColor.Current.GXCTextBlueColor, - TextAlignment = TextAlignment.Center, - TextSize = 16, - TextID = R.MyInternationalizationString.Automation, - IsSelected = false - }; + automationBtn = new ButtonLineForm(CommonFormResouce.X_Left + 150 * 2 + 20 + 50, 34); + automationBtn.Init(); + automationBtn.SetTitle(R.MyInternationalizationString.Automation); + automationBtn.X = functionBtn.Right; //闅愯棌鑷姩鍖� if (UserCenter.UserCenterResourse.UserInfo.AuthorityNo != 3) { - midFL.AddChidren(automationBtn); + functionSceneAutoBG.AddChidren(automationBtn); } - var functionSceneBottomLine = new Button() + floorBtn = new Button() { - Y = functionBtn.Bottom, - Height = CommonPage.LineHeight, - X = functionBtn.X, - BackgroundColor = ZigbeeColor.Current.GXCLineColor + X = Application.GetRealWidth(750), + Width = Application.GetRealWidth(200), + Height = Application.GetRealHeight(60), + Gravity = Gravity.CenterVertical, + TextAlignment = TextAlignment.CenterRight, + TextColor = ZigbeeColor.Current.GXCTextBlackColor, + TextSize = 14, + IsBold = true }; - midFL.AddChidren(functionSceneBottomLine); - line = new Button() + + selectFloorBtn = new Button() { - Y = functionBtn.Bottom, - Height = CommonPage.LineHeight, - X = sceneBtn.X, - Width = Application.GetRealWidth(functionSceneAuto_width), - BackgroundColor = ZigbeeColor.Current.GXCButtonBlueColor + X = Application.GetRealWidth(950), + Width = Application.GetMinRealAverage(69), + Height = Application.GetMinRealAverage(69), + Gravity = Gravity.CenterVertical, + UnSelectedImagePath = "Item/Drop_Down.png" }; - midFL.AddChidren(line); - //鍔熻兘鍜屽満鏅痓odyView - functionSceneBodyView = new FrameLayout() + + if (Config.Instance.Home.FloorDics.Count > 0) { - Y = line.Bottom, - Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.TabbarHeight) - functionBtn.Height - topView.Height - CommonPage.LineHeight, + floorBtn.Text = Config.Instance.Home.GetCurrentFloorName; + functionSceneAutoBG.AddChidren(floorBtn); + functionSceneAutoBG.AddChidren(selectFloorBtn); + } + + functionSceneAutoBodyView = new FrameLayout + { + Y = functionSceneAutoBG.Bottom, + Height = Application.GetRealHeight(1423), + BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor }; - midFL.AddChidren(functionSceneBodyView); + midFL.AddChidren(functionSceneAutoBodyView); if (selectedBtn == 0) { addBtn.Visible = false; functionBtn.IsSelected = true; - line.X = functionBtn.X; } else if (selectedBtn == 1) { addBtn.Visible = true; sceneBtn.IsSelected = true; - line.X = sceneBtn.X; } else if (selectedBtn == 2) { addBtn.Visible = true; automationBtn.IsSelected = true; - line.X = automationBtn.X; } RefreshBodyView(); - #endregion //缁戝畾鎸夐挳浜嬩欢 BindEvent(); + } #endregion @@ -695,13 +667,36 @@ private void BindEvent() { //閫夋嫨鍔熻兘鍒嗘爮 - functionBtn.MouseUpEventHandler += FunctionBtn_MouseUpEventHandler; + functionBtn.NameBtn.MouseUpEventHandler += FunctionBtn_MouseUpEventHandler; //閫夋嫨鍦烘櫙鍒嗘爮 - sceneBtn.MouseUpEventHandler += SceneBtn_MouseUpEventHandler; + sceneBtn.NameBtn.MouseUpEventHandler += SceneBtn_MouseUpEventHandler; //閫変腑鑷姩鍖� - automationBtn.MouseUpEventHandler += AutomationBtn_MouseUpEventHandler; + automationBtn.NameBtn.MouseUpEventHandler += AutomationBtn_MouseUpEventHandler; //鍙充笂瑙掓坊鍔犳寜閽� addBtn.MouseUpEventHandler += AddBtn_MouseUpEventHandler; + + selectFloorBtn.MouseUpEventHandler += SelectedFloor_MouseUpEventHandler; + floorBtn.MouseUpEventHandler += SelectedFloor_MouseUpEventHandler; + + } + + /// <summary> + /// 閫夋嫨妤煎眰 + /// </summary> + /// <param name="sender">Sender.</param> + /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> + private void SelectedFloor_MouseUpEventHandler(object sender, MouseEventArgs mouseEventArgs) + { + var floors = new SelectFloor(); + AddChidren(floors); + floors.Init(580, 330, Direction.Right); + floors.changeFloor = true; + floors.FloorAction += (floorId) => + { + floorBtn.Text = Config.Instance.Home.GetFloorNameById(floorId); + HdlRoomLogic.Current.CurrentRoom = HdlRoomLogic.Current.GetLoveRoom(); + RefreshBodyView(); + }; } /// <summary> @@ -714,7 +709,6 @@ functionBtn.IsSelected = true; sceneBtn.IsSelected = false; automationBtn.IsSelected = false; - line.X = functionBtn.X; addBtn.Visible = false; RefreshBodyView(); } @@ -729,7 +723,6 @@ functionBtn.IsSelected = false; sceneBtn.IsSelected = true; automationBtn.IsSelected = false; - line.X = sceneBtn.X; addBtn.Visible = true; RefreshBodyView(); } @@ -740,11 +733,15 @@ /// <param name="sender">Sender.</param> /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> private void AutomationBtn_MouseUpEventHandler(object sender, MouseEventArgs mouseEventArgs) - { + { + Common.Logic.LogicDviceList.Clear(); + if (Common.Logic.LogicDviceList.Count == 0) + { + Common.Logic.LogicDviceList.AddRange(LocalDevice.Current.listAllDevice.ToArray()); + } functionBtn.IsSelected = false; sceneBtn.IsSelected = false; automationBtn.IsSelected = true; - line.X = automationBtn.X; addBtn.Visible = true; RefreshBodyView(); } @@ -780,13 +777,11 @@ var scene = new CategoryAddScene(); UserView.HomePage.Instance.AddChidren(scene); UserView.HomePage.Instance.PageIndex += 1; - CategoryAddScene.sceneTargetDevicesList?.Clear(); - CategoryAddScene.SceneText = ""; - CategoryAddScene.CurrentRoom = Shared.Common.Room.CurrentRoom; - CategoryAddScene.ModifySceneUI = null; - CategoryAddScene.Modify = false; - CategoryAddScene.ImagePath = "Scene/Scene0.png"; scene.Show(); + scene.AddAction = () => + { + ShowScene(); + }; } /// <summary> @@ -794,14 +789,24 @@ /// </summary> private void Add_Automation() { - //new涓�涓柊閫昏緫瀵硅薄锛� - Common.Logic.CurrentLogic = new Common.Logic(); - Common.Logic.CurrentLogic.IsEnable = 1;//榛樿涓哄紑 - Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.automation1); - var addLogicPage = new Shared.Phone.Device.Logic.AddLogicPage(); - UserView.HomePage.Instance.AddChidren(addLogicPage); - UserView.HomePage.Instance.PageIndex += 1; - addLogicPage.Show(); + ////new涓�涓柊閫昏緫瀵硅薄锛� + //Common.Logic.CurrentLogic = new Common.Logic(); + //Common.Logic.CurrentLogic.IsEnable = 1;//榛樿涓哄紑 + //Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.automation1); + //var addLogicPage = new Shared.Phone.Device.Logic.AddLogicPage(); + //UserView.HomePage.Instance.AddChidren(addLogicPage); + //UserView.HomePage.Instance.PageIndex += 1; + //addLogicPage.Show(); + Shared.Phone.Device.Logic.SkipView.SkipAddLogic(0); + } + /// <summary> + /// HidenFloor + /// </summary> + /// <param name="statu"></param> + private void HidenFloor(bool statu) + { + selectFloorBtn.Visible = !statu; + floorBtn.Visible = !statu; } #endregion @@ -812,18 +817,60 @@ /// </summary> public void RefreshBodyView() { - functionSceneBodyView.RemoveAll(); + functionSceneAutoBodyView.RemoveAll(); if (functionBtn.IsSelected) { + HidenFloor(false); ShowFunction(); } else if (sceneBtn.IsSelected) { + HidenFloor(false); ShowScene(); } else if (automationBtn.IsSelected) { + HidenFloor(true); ShowAutotion(); + } + } + + /// <summary> + /// InitData + /// </summary> + private void InitData() + { + typeDeviceDic = new Dictionary<int, List<CommonDevice>> { }; + typeIdDic = new Dictionary<int, DeviceConcreteType> { }; + } + + /// <summary> + /// RefreshData + /// </summary> + private void RefreshData(Common.Room room) + { + devList = HdlRoomLogic.Current.GetRoomListDevice(room); + sceneList = HdlSceneLogic.Current.GetRoomSceneList(room); + typeDeviceDic.Clear(); + typeIdDic.Clear(); + foreach (var device in devList) + { + var info = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device); + if (info.BeloneType == DeviceBeloneType.A骞叉帴鐐� || info.BeloneType == DeviceBeloneType.A涓户鍣�) + { + continue; + } + if (typeDeviceDic.ContainsKey(info.BeloneTextId) == false) + { + var sameDevList = new List<CommonDevice> { }; + sameDevList.Add(device); + typeDeviceDic[info.BeloneTextId] = sameDevList; + } + else + { + typeDeviceDic[info.BeloneTextId].Add(device); + } + typeIdDic[info.BeloneTextId] = info.ConcreteType; } } @@ -835,67 +882,122 @@ /// </summary> public void ShowFunction() { + AddRoomView(); + } + + /// <summary> + /// 鎻愮ず娌℃湁鍔熻兘 + /// </summary> + private void ShowNoFunctionTip() + { + var noFunction = new Button() + { + Y = Application.GetRealHeight(320), + Width = Application.GetMinRealAverage(757), + Height = Application.GetMinRealAverage(435), + UnSelectedImagePath = "Item/NoFunction.png", + Gravity = Gravity.CenterHorizontal + }; + functionSceneBodyView.AddChidren(noFunction); + + var noFunctionTip = new Button() + { + Y = noFunction.Bottom + Application.GetRealHeight(32), + Height = Application.GetRealHeight(200), + Width = Application.GetRealWidth(700), + Gravity = Gravity.CenterHorizontal, + Text = Language.StringByID(R.MyInternationalizationString.NoFunction).Replace("{\\r\\n}", "\r\n"), + TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor, + TextAlignment = TextAlignment.Center, + IsMoreLines = true + }; + functionSceneBodyView.AddChidren(noFunctionTip); + } + + /// <summary> + /// RefreshFunction + /// </summary> + /// <param name="room"></param> + private void RefreshFunction(Common.Room room) + { + RefreshData(room); //绉婚櫎鐩戝惉 RemoveAllUpdateControlDeviceStatuAction(); - //閫夋嫨鍔熻兘--鐩存帴浠庢埧闂寸殑devicelist涓幏鍙� - Shared.Common.Room.GetAllRoomDeviceUIList(); - Shared.Common.Room.GetAllRoomDeviceTypeList(); - if (Common.Room.AllRoomDeviceUIList == null) - { - return; - } - if (Common.Room.AllRoomDeviceUIList.Count == 0) + functionSceneBodyView.RemoveAll(); + + if (typeDeviceDic.Count == 0) { ShowNoFunctionTip(); } else { + var functionTypeView1 = new FrameLayout + { + X = Application.GetRealWidth(CommonFormResouce.X_Left), + Height = Application.GetRealHeight(160), + Width = Application.GetRealWidth(1028), + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor + }; + functionSceneBodyView.AddChidren(functionTypeView1); + functionTypeView1.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerTopLeft); + + var functionTypeView2 = new FrameLayout + { + X = Application.GetRealWidth(CommonFormResouce.X_Left), + Y = Application.GetRealHeight(150), + Height = Application.GetRealHeight(279 - 150), + Width = Application.GetRealWidth(1028), + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor + }; + functionSceneBodyView.AddChidren(functionTypeView2); + functionTypeView2.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft); + functionTypeScrowView = new HorizontalScrolViewLayout { - Height = Application.GetRealHeight(CommonPage.RowHeight) - 1, - Width = Application.GetRealWidth(CommonPage.AppRealWidth) + X = Application.GetRealWidth(CommonFormResouce.X_Left), + Height = Application.GetRealHeight(279), + Width = Application.GetRealWidth(1028), }; functionSceneBodyView.AddChidren(functionTypeScrowView); - var typeLine = new Button() - { - Y = functionTypeScrowView.Bottom, - Width = Application.GetRealWidth(CommonPage.AppRealWidth), - Height = 1, - BackgroundColor = ZigbeeColor.Current.GXCLineColor - }; - functionSceneBodyView.AddChidren(typeLine); + deviceListScrolView = new VerticalScrolViewLayout { - Y = typeLine.Bottom, - Height = functionSceneBodyView.Height - Application.GetRealHeight(CommonPage.RowHeight) - 1 + X = Application.GetRealWidth(CommonFormResouce.X_Left), + Y = Application.GetRealHeight(35 + 279), + Width = Application.GetRealWidth(1028), + Height = Application.GetRealHeight(942), + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor }; functionSceneBodyView.AddChidren(deviceListScrolView); - tempFunctionTypeBtn = new Button(); - foreach (var deviceType in Common.Room.AllRoomDeviceTypeList) + deviceListScrolView.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft); + + tempFunctionTypeBtn = new FunctionButton(); + tempFunctionTypeBtn.Init("", ""); + + foreach (var deviceType in typeIdDic) { - typeRowLayout = new RowLayout() + var typeRowLayout = new FrameLayout() { - Width = Application.GetRealWidth(CommonPage.AppRealWidth / 5), - LineColor = ZigbeeColor.Current.GXCBackgroundColor, - Tag = deviceType + Width = Application.GetRealWidth(220), }; functionTypeScrowView.AddChidren(typeRowLayout); - functionTypeIMG = new Button() + + var functionTypeIMG = new FunctionButton() { - Width = Application.GetMinRealAverage(110), - Height = Application.GetMinRealAverage(110), - Gravity = Gravity.Center, - UnSelectedImagePath = DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType), - SelectedImagePath = DeviceUI.GetDeviceTypeSelectedImagePath(deviceType), - Tag = deviceType + Tag = deviceType.Key }; + string imgPath = string.Empty; + string imgSeletedPath = string.Empty; + Common.LocalDevice.Current.GetDeviceObjectIcon(deviceType.Value, ref imgPath, ref imgSeletedPath); + functionTypeIMG.Init(imgPath, imgSeletedPath); + functionTypeIMG.SetTitle(deviceType.Key); typeRowLayout.AddChidren(functionTypeIMG); - functionTypeIMG.MouseUpEventHandler += ShowSameTypeFunction; + functionTypeIMG.ClickBtn.MouseUpEventHandler += ShowSameTypeFunction; - if (deviceType == Shared.Common.Room.AllRoomDeviceUIList[0].CommonDevice.Type) + if (functionTypeScrowView.ChildrenCount == 1) { - ShowSameTypeFunction(functionTypeIMG, null); + ShowSameTypeFunction(functionTypeIMG.ImageBtn, null); } } } @@ -908,732 +1010,898 @@ /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> private void ShowSameTypeFunction(object typeSender, MouseEventArgs mouseEventArgs) { - //閫夋嫨鍔熻兘--鐩存帴浠庢埧闂寸殑devicelist涓幏鍙� - Shared.Common.Room.GetAllRoomDeviceUIList(); tempFunctionTypeBtn.IsSelected = false; - (typeSender as Button).IsSelected = true; - tempFunctionTypeBtn = (typeSender as Button); + tempFunctionTypeBtn = (typeSender as Button).Parent as FunctionButton; + ((typeSender as Button).Parent as FunctionButton).IsSelected = true; + deviceListScrolView.RemoveAll(); - var sameTypeList = new List<DeviceUI> { }; - foreach (var devieceUI in Common.Room.AllRoomDeviceUIList) + var sameTypeList = new List<CommonDevice> { }; + sameTypeList = typeDeviceDic[int.Parse((typeSender as Button).Tag.ToString())]; + + for (int i = 0; i < sameTypeList.Count; i++) { - if (devieceUI == null || devieceUI.CommonDevice == null) + var deviceUI = sameTypeList[i]; + new System.Threading.Thread(() => { - continue; - } - if (devieceUI.CommonDevice.Type.ToString() == (typeSender as Button).Tag.ToString()) - { - if (!sameTypeList.Contains(devieceUI)) + Application.RunOnMainThread(() => { - sameTypeList.Add(devieceUI); + try + { + var deviceTypeRowLayout = new RowLayout() + { + Height = Application.GetRealHeight(127 + 35), + LineColor = ZigbeeColor.Current.GXCClearColor, + Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI), + SubViewWidth = Application.GetRealWidth(184) + }; + deviceListScrolView.AddChidren(deviceTypeRowLayout); + + if (deviceUI.Type == DeviceType.OnOffOutput) + { + //鐏� + var light = deviceUI as ToggleLight; + if (light.Gateway != null) + { + new System.Threading.Thread(() => + { + System.Threading.Thread.Sleep(100 * i); + if (light.Gateway.IsVirtual) + { + UserHomeView.ReadStatus(light, () => + { + ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI); + }); + } + else + { + //闃叉鐭椂闂村唴澶氭璇诲彇鐘舵�� + if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds) + { + ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI); + } + } + }) + { IsBackground = true }.Start(); + + var deviceRow = new CategoryFunctionRow(0, 35); + deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI)); + deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); + deviceRow.IsSelected = light.OnOffStatus == 1; + deviceTypeRowLayout.AddChidren(deviceRow); + + deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => + { + zbGateway = deviceUI.Gateway; + sendedControlCommand = false; + zbGateway.ReportAction += UpdateDeviceControllStatu; + AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI); + (send2 as Button).IsSelected = !(send2 as Button).IsSelected; + deviceRow.IsSelected = (send2 as Button).IsSelected; + if ((send2 as Button).IsSelected) + { + light.SwitchControl(1); + } + else + { + light.SwitchControl(0); + } + deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); + //鎺у埗寤舵椂鍥炶皟 + HdlDeviceOtherLogic.Current.SendCommandDelayAction(deviceUI, () => + { + if (Parent == null) + { + return; + } + RemoveUpdateControlDeviceStatuAction(zbGateway); + if (sendedControlCommand == false) + { + HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL); + } + }); + }; + deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) => + { + var lightControl = new Phone.Device.Light.OnOffControl(); + UserView.HomePage.Instance.AddChidren(lightControl); + UserView.HomePage.Instance.PageIndex += 1; + lightControl.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom); + lightControl.action += (curDev, curRoom) => + { + ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow); + }; + }; + + EventHandler<MouseEventArgs> deviceDetailHandler = (send2, e2) => + { + var detailInfo = new Device.CommonForm.DeviceDetailInfo { }; + UserView.HomePage.Instance.AddChidren(detailInfo); + UserView.HomePage.Instance.PageIndex += 1; + detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom); + detailInfo.EditAction += (curDevice, curRoom) => + { + ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow); + }; + }; + var editBtn = new CommonForm.RowLayoutEditButton() + { + Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI) + }; + if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(editBtn); + editBtn.MouseUpEventHandler += deviceDetailHandler; + } + } + } + else if (deviceUI.Type == DeviceType.AirSwitch) + { + //绌烘皵寮�鍏� + var airSwitch = deviceUI as AirSwitch; + if (airSwitch.Gateway != null) + { + new System.Threading.Thread(() => + { + System.Threading.Thread.Sleep(100 * i); + if (airSwitch.Gateway.IsVirtual) + { + UserHomeView.ReadStatus(airSwitch, () => + { + ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI); + }); + } + else + { + if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) + { + ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI); + } + } + }) + { IsBackground = true }.Start(); + + var deviceRow = new CategoryFunctionRow(0, 35); + deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI)); + deviceRow.IsSelected = airSwitch.OnOffStatus == 1; + deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); + deviceTypeRowLayout.AddChidren(deviceRow); + deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => + { + zbGateway = deviceUI.Gateway; + sendedControlCommand = false; + zbGateway.ReportAction += UpdateDeviceControllStatu; + AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI); + (send2 as Button).IsSelected = !(send2 as Button).IsSelected; + deviceRow.IsSelected = (send2 as Button).IsSelected; + if ((send2 as Button).IsSelected) + { + airSwitch.SwitchControl(1); + } + else + { + airSwitch.SwitchControl(0); + } + deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); + //鎺у埗寤舵椂鍥炶皟 + HdlDeviceOtherLogic.Current.SendCommandDelayAction(deviceUI, () => + { + if (Parent == null) + { + return; + } + RemoveUpdateControlDeviceStatuAction(zbGateway); + if (sendedControlCommand == false) + { + HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL); + } + }); + }; + deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) => + { + + var lightControl = new Phone.Device.Light.AirSwitchControl(); + UserView.HomePage.Instance.AddChidren(lightControl); + UserView.HomePage.Instance.PageIndex += 1; + lightControl.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom); + lightControl.action += (curDev, curRoom) => + { + + ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow); + + }; + }; + + EventHandler<MouseEventArgs> deviceDetailHandler = (send2, e2) => + { + var detailInfo = new Device.CommonForm.DeviceDetailInfo { }; + UserView.HomePage.Instance.AddChidren(detailInfo); + UserView.HomePage.Instance.PageIndex += 1; + detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom); + detailInfo.EditAction += (curDevice, curRoom) => + { + ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow); + + }; + }; + var editBtn = new CommonForm.RowLayoutEditButton() + { + Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI) + }; + if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(editBtn); + editBtn.MouseUpEventHandler += deviceDetailHandler; + } + } + } + else if (deviceUI.Type == DeviceType.DimmableLight) + { + //璋冨厜鐏� + var dimmableLight = deviceUI as ZigBee.Device.DimmableLight; + if (dimmableLight.Gateway != null) + { + new System.Threading.Thread(() => + { + System.Threading.Thread.Sleep(100 * i); + if (dimmableLight.Gateway.IsVirtual) + { + UserHomeView.ReadStatus(dimmableLight, () => + { + ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(deviceUI); + }); + } + else + { + if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) + { + ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(deviceUI); + } + } + }) + { IsBackground = true }.Start(); + + var deviceRow = new CategoryFunctionRow(0, 35); + deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI)); + deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); + deviceRow.IsSelected = dimmableLight.OnOffStatus == 1; + deviceTypeRowLayout.AddChidren(deviceRow); + + deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => + { + zbGateway = deviceUI.Gateway; + sendedControlCommand = false; + zbGateway.ReportAction += UpdateDeviceControllStatu; + AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI); + (send2 as Button).IsSelected = !(send2 as Button).IsSelected; + deviceRow.IsSelected = (send2 as Button).IsSelected; + if ((send2 as Button).IsSelected) + { + dimmableLight.SwitchControl(1); + } + else + { + dimmableLight.SwitchControl(0); + } + deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); + //鎺у埗寤舵椂鍥炶皟 + HdlDeviceOtherLogic.Current.SendCommandDelayAction(deviceUI, () => + { + if (Parent == null) + { + return; + } + RemoveUpdateControlDeviceStatuAction(zbGateway); + if (sendedControlCommand == false) + { + HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL); + } + }); + }; + + deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) => + { + var dimmableLightControl = new Phone.Device.Light.DimmableLightControl(); + UserView.HomePage.Instance.AddChidren(dimmableLightControl); + UserView.HomePage.Instance.PageIndex += 1; + UserView.HomePage.Instance.ScrollEnabled = false; + dimmableLightControl.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom); + dimmableLightControl.action += (curDev, curRoom) => + { + ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow); + }; + + }; + + EventHandler<MouseEventArgs> deviceDetailHandler = (send2, e2) => + { + var detailInfo = new Device.CommonForm.DeviceDetailInfo { }; + UserView.HomePage.Instance.AddChidren(detailInfo); + UserView.HomePage.Instance.PageIndex += 1; + detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom); + detailInfo.EditAction += (curDevice, curRoom) => + { + ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow); + }; + }; + var editBtn = new CommonForm.RowLayoutEditButton() + { + Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI) + }; + if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(editBtn); + editBtn.MouseUpEventHandler += deviceDetailHandler; + } + } + } + else if (deviceUI.Type == DeviceType.Thermostat) + { + //绌鸿皟 + var ac = deviceUI as ZigBee.Device.AC; + if (ac.Gateway != null) + { + new System.Threading.Thread(() => + { + System.Threading.Thread.Sleep(100 * i); + if (ac.Gateway.IsVirtual) + { + //鍙戦�佽鍙栫姸鎬佸懡浠� + UserView.UserHomeView.ReadStatus(ac, () => + { + ReadDeviceAttributeLogic.Instance.SendACStatuComand(deviceUI); + }); + } + else + { + //闃叉鐭椂闂村唴澶氭璇诲彇璁惧鐘舵�� + if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) + { + ReadDeviceAttributeLogic.Instance.SendACStatuComand(deviceUI); + } + } + }) + { IsBackground = true }.Start(); + + var deviceRow = new CategoryFunctionRow(0, 35); + deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI)); + deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); + deviceRow.IsSelected = ac.currentSystemMode != 1; + deviceTypeRowLayout.AddChidren(deviceRow); + + deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => + { + zbGateway = deviceUI.Gateway; + sendedControlCommand = false; + zbGateway.ReportAction += UpdateDeviceControllStatu; + AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI); + + (send2 as Button).IsSelected = !(send2 as Button).IsSelected; + deviceRow.IsSelected = (send2 as Button).IsSelected; + if ((send2 as Button).IsSelected) + { + ac.Open(); + } + else + { + ac.Close(); + } + deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); + //鎺у埗寤舵椂鍥炶皟 + HdlDeviceOtherLogic.Current.SendCommandDelayAction(deviceUI, () => + { + if (Parent == null) + { + return; + } + RemoveUpdateControlDeviceStatuAction(zbGateway); + if (sendedControlCommand == false) + { + HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL); + } + }); + }; + deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) => + { + var acControl = new Phone.Device.AC.ACControl(); + UserView.HomePage.Instance.AddChidren(acControl); + UserView.HomePage.Instance.PageIndex += 1; + UserView.HomePage.Instance.ScrollEnabled = false; + acControl.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom); + acControl.action += (curDev, curRoom) => + { + ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow); + + }; + }; + + EventHandler<MouseEventArgs> deviceDetailHandler = (send2, e2) => + { + var detailInfo = new Device.CommonForm.DeviceDetailInfo { }; + UserView.HomePage.Instance.AddChidren(detailInfo); + UserView.HomePage.Instance.PageIndex += 1; + detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom); + detailInfo.EditAction += (curDevice, curRoom) => + { + ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow); + + }; + }; + var editBtn = new CommonForm.RowLayoutEditButton() + { + Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI) + }; + if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(editBtn); + editBtn.MouseUpEventHandler += deviceDetailHandler; + } + } + } + else if (deviceUI.Type == DeviceType.WindowCoveringDevice) + { + //鍗峰笜 + var rollerShade = deviceUI as ZigBee.Device.Rollershade; + if (rollerShade.Gateway != null) + { + new System.Threading.Thread(() => + { + System.Threading.Thread.Sleep(100 * i); + if (rollerShade.Gateway.IsVirtual) + { + UserHomeView.ReadStatus(rollerShade, () => + { + ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(deviceUI); + }); + } + else + { + //闃叉鐭椂闂村唴澶氭璇诲彇 + if ((DateTime.Now - rollerShade.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) + { + ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(deviceUI); + } + } + }) + { IsBackground = true }.Start(); + + var deviceRow = new CategoryFunctionForWinRow(0, 35); + deviceRow.Init(deviceUI); + deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI)); + deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); + deviceRow.IsSelected = 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(); + } + + deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) => + { + var rollerShadeControl = new Phone.Device.Curtain.RollerShadeControl(); + UserView.HomePage.Instance.AddChidren(rollerShadeControl); + UserView.HomePage.Instance.PageIndex += 1; + UserView.HomePage.Instance.ScrollEnabled = false; + rollerShadeControl.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom); + rollerShadeControl.action += (curDev, curRoom) => + { + ReFreshDeviceActionForWin(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow); + }; + }; + + EventHandler<MouseEventArgs> deviceDetailHandler = (send2, e2) => + { + var detailInfo = new Device.CommonForm.DeviceDetailInfo { }; + UserView.HomePage.Instance.AddChidren(detailInfo); + UserView.HomePage.Instance.PageIndex += 1; + detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom); + detailInfo.EditAction += (curDevice, curRoom) => + { + ReFreshDeviceActionForWin(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow); + }; + }; + var editBtn = new CommonForm.RowLayoutEditButton() + { + Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI) + }; + if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(editBtn); + editBtn.MouseUpEventHandler += deviceDetailHandler; + } + } + } + else if (deviceUI.Type == DeviceType.DoorLock) + { + var deviceRow = new CategoryFunctionRow(0, 35); + deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI)); + deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); + deviceRow.HideSwitchBtn(true); + deviceTypeRowLayout.AddChidren(deviceRow); + + deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) => + { + var userDoorLockPage = new UserDoorLockPage(HdlRoomLogic.Current.CurrentRoom, deviceUI); + HomePage.Instance.AddChidren(userDoorLockPage); + HomePage.Instance.PageIndex += 1; + userDoorLockPage.Show(); + }; + EventHandler<MouseEventArgs> deviceDetailHandler = (send2, e2) => + { + var detailInfo = new Device.CommonForm.DeviceDetailInfo { }; + UserView.HomePage.Instance.AddChidren(detailInfo); + UserView.HomePage.Instance.PageIndex += 1; + detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom); + detailInfo.EditAction += (curDevice, curRoom) => + { + ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow); + }; + }; + var editBtn = new CommonForm.RowLayoutEditButton() + { + Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI) + }; + if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(editBtn); + editBtn.MouseUpEventHandler += deviceDetailHandler; + } + } + else if (deviceUI.Type == DeviceType.IASZone) + { + var deviceRow = new CategoryFunctionRow(0, 35); + deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI)); + deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); + deviceRow.IsSelected = (deviceUI as IASZone).iASInfo?.Alarm1 == 1; + deviceRow.HideSwitchBtn(true); + deviceTypeRowLayout.AddChidren(deviceRow); + + EventHandler<MouseEventArgs> deviceDetailHandler = (send2, e2) => + { + var detailInfo = new Device.CommonForm.DeviceDetailInfo { }; + UserView.HomePage.Instance.AddChidren(detailInfo); + UserView.HomePage.Instance.PageIndex += 1; + detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom); + detailInfo.EditAction += (curDevice, curRoom) => + { + ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow); + }; + }; + var editBtn = new CommonForm.RowLayoutEditButton() + { + Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI) + }; + if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(editBtn); + editBtn.MouseUpEventHandler += deviceDetailHandler; + } + } + else if (deviceUI.Type == DeviceType.TemperatureSensor) + { + var tempera = deviceUI as TemperatureSensor; + if (tempera.Gateway != null) + { + new System.Threading.Thread(() => + { + System.Threading.Thread.Sleep(100 * i); + if (tempera.Gateway.IsVirtual) + { + UserHomeView.ReadStatus(tempera, () => + { + if (tempera.SensorDiv == 1) + { + ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(deviceUI); + } + else if (tempera.SensorDiv == 2) + { + ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(deviceUI); + } + }); + } + else + { + if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - tempera.LastDateTime).TotalSeconds) + { + if (tempera.SensorDiv == 1) + { + ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(deviceUI); + } + else if (tempera.SensorDiv == 2) + { + ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(deviceUI); + } + } + } + }) + { IsBackground = true }.Start(); + + var deviceRow = new CategoryFunctionRow(0, 35); + deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI)); + deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); + deviceRow.IsSelected = false; + deviceRow.HideSwitchBtn(true); + deviceTypeRowLayout.AddChidren(deviceRow); + + EventHandler<MouseEventArgs> deviceDetailHandler = (send2, e2) => + { + var detailInfo = new Device.CommonForm.DeviceDetailInfo { }; + UserView.HomePage.Instance.AddChidren(detailInfo); + UserView.HomePage.Instance.PageIndex += 1; + detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom); + detailInfo.EditAction += (curDevice, curRoom) => + { + ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow); + }; + }; + var editBtn = new CommonForm.RowLayoutEditButton() + { + Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI) + }; + if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(editBtn); + editBtn.MouseUpEventHandler += deviceDetailHandler; + } + } + } + else + { + var deviceRow = new CategoryFunctionRow(0, 35); + deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI)); + deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)); + deviceRow.HideSwitchBtn(true); + deviceTypeRowLayout.AddChidren(deviceRow); + + EventHandler<MouseEventArgs> deviceDetailHandler = (send2, e2) => + { + var detailInfo = new Device.CommonForm.DeviceDetailInfo { }; + UserView.HomePage.Instance.AddChidren(detailInfo); + UserView.HomePage.Instance.PageIndex += 1; + detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom); + detailInfo.EditAction += (curDevice, curRoom) => + { + ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow); + }; + }; + var editBtn = new CommonForm.RowLayoutEditButton() + { + Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI) + }; + if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(editBtn); + editBtn.MouseUpEventHandler += deviceDetailHandler; + } + } + + //鍒犻櫎璁惧 + EventHandler<MouseEventArgs> delEvent = (delSender, delE) => + { + var alert = new UserCenter.ShowMsgControl(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.DeleteFunction)); + alert.Show(); + alert.ConfirmClickEvent += () => + { + if (HdlRoomLogic.Current.CurrentRoom.IsLove) + { + HdlRoomLogic.Current.DeleteLoveDevice(deviceUI); + deviceListScrolView.RemoveViewByTag((delSender as Button).Tag); + sameTypeList.Remove(deviceUI); + } + else + { + HdlRoomLogic.Current.DeleteDevice(deviceUI); + deviceListScrolView.RemoveViewByTag((delSender as Button).Tag); + sameTypeList.Remove(deviceUI); + + HdlRoomLogic.Current.DeleteLoveDevice(deviceUI); + } + if (sameTypeList.Count == 0) + { + RefreshBodyView(); + } + }; + }; + var delBtn = new CommonForm.RowLayoutDeleteButton() + { + Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI) + }; + if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(delBtn); + delBtn.MouseUpEventHandler += delEvent; + } + } + catch { } + }); + }) + { IsBackground = true }.Start(); + } + } + + /// <summary> + /// ReFreshDeviceAction + /// </summary> + /// <param name="curRoom"></param> + /// <param name="sameTypeList"></param> + /// <param name="devListScrolView"></param> + /// <param name="deviceRow"></param> + private void ReFreshDeviceAction(CommonDevice deviceUI, Common.Room curRoom, List<CommonDevice> sameTypeList, VerticalScrolViewLayout devListScrolView, CategoryFunctionRow deviceRow) + { + if (HdlRoomLogic.Current.CurrentRoom.IsLove) + { + deviceRow.SetDeviceIcon(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI)); + if (HdlRoomLogic.Current.IsCollectInRoom(deviceUI) == false) + { + devListScrolView.RemoveViewByTag(deviceUI); + sameTypeList.Remove(deviceUI); + if (sameTypeList.Count == 0) + { + RefreshFunction(HdlRoomLogic.Current.CurrentRoom); } } } - foreach (var deviceUI in sameTypeList) + else { - //鍒犻櫎璁惧 - EventHandler<MouseEventArgs> delEvent = (delSender, delE) => + if (curRoom.Id != HdlRoomLogic.Current.CurrentRoom.Id) { - var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.ConfirmDelete), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim)); - alert.Show(); - alert.ResultEventHandler += (send1, e2) => + HdlRoomLogic.Current.DeleteDevice(deviceUI); + devListScrolView.RemoveViewByTag(deviceUI); + sameTypeList.Remove(deviceUI); + if (sameTypeList.Count == 0) { - if (e2) - { - Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.CommonDevice, false); - deviceListScrolView.RemoveViewByTag((delSender as Button).Tag); - sameTypeList.Remove(deviceUI); - if (sameTypeList.Count == 0) - { - RefreshBodyView(); - } - } - }; - }; - EventHandler<MouseEventArgs> deviceDetailHandler = (send2, e2) => - { - var detailInfo = new Device.CommonForm.DeviceDetailInfo { }; - UserView.HomePage.Instance.AddChidren(detailInfo); - UserView.HomePage.Instance.PageIndex += 1; - detailInfo.Show(deviceUI, Shared.Common.Room.CurrentRoom); - detailInfo.action = RefreshBodyView; - }; - - if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput) - { - //鐏� - var light = deviceUI.CommonDevice as ZigBee.Device.ToggleLight; - //琛ヤ笂闈炶繙绋� - if (light.Gateway == null) - { - continue; + RefreshFunction(HdlRoomLogic.Current.CurrentRoom); } - if (light.Gateway.IsVirtual) - { - UserHomeView.ReadStatus(light, () => - { - light.ReadOnOffStatus(); - light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); - }); - } - else - { - //闃叉鐭椂闂村唴澶氭璇诲彇鐘舵�� - if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds) - { - light.ReadOnOffStatus(); - light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); - } - } - - var deviceTypeRowLayout = new RowLayout() - { - Height = Application.GetRealHeight(CommonPage.RowHeight), - LineColor = ZigbeeColor.Current.GXCLineColor, - Tag = deviceUI - }; - deviceListScrolView.AddChidren(deviceTypeRowLayout); - var deviceIMG = new Button() - { - X = Application.GetRealWidth(CommonPage.XLeft), - Width = Application.GetMinRealAverage(110), - Height = Application.GetMinRealAverage(110), - UnSelectedImagePath = deviceUI.IconPath, - SelectedImagePath = deviceUI.OnlineIconPath, - Gravity = Gravity.CenterVertical, - IsSelected = light.IsOnline == 1, - Tag = deviceStatus_Online - }; - deviceTypeRowLayout.AddChidren(deviceIMG); - var deviceNameBtn = new Button() - { - X = Application.GetRealWidth(50) + deviceIMG.Right, - Width = Application.GetRealWidth(500), - Text = deviceUI.CommonDevice.DeviceEpointName, - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - TextAlignment = TextAlignment.CenterLeft - }; - deviceTypeRowLayout.AddChidren(deviceNameBtn); - var switchBtn = new Button - { - X = deviceTypeRowLayout.Right - Application.GetRealWidth(200), - Width = Application.GetMinRealAverage(183), - Height = Application.GetMinRealAverage(123), - UnSelectedImagePath = "Item/Switch.png", - SelectedImagePath = "Item/SwitchSelected.png", - IsSelected = light.OnOffStatus == 1, - Tag = deviceStatus_OnOffStatus, - Gravity = Gravity.CenterVertical - }; - deviceTypeRowLayout.AddChidren(switchBtn); - - switchBtn.MouseUpEventHandler += (send2, e2) => - { - zbGateway = deviceUI.CommonDevice.Gateway; - sendedControlCommand = false; - zbGateway.ReportAction += UpdateDeviceControllStatu; - AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice); - switchBtn.IsSelected = !switchBtn.IsSelected; - if (switchBtn.IsSelected == true) - { - light.SwitchControl(1); - } - else - { - light.SwitchControl(0); - } - //鎺у埗寤舵椂鍥炶皟 - DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => - { - if (Parent == null) - { - return; - } - RemoveUpdateControlDeviceStatuAction(zbGateway); - if (sendedControlCommand == false) - { - DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); - } - }); - }; - - var delBtn = new Device.CommonForm.RowLayoutDeleteButton() - { - Tag = deviceUI, - Radius = 0 - }; - deviceTypeRowLayout.AddRightView(delBtn); - delBtn.MouseUpEventHandler += delEvent; - - deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler; - deviceIMG.MouseUpEventHandler += deviceDetailHandler; - deviceNameBtn.MouseUpEventHandler += deviceDetailHandler; - } - else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch) - { - //绌烘皵寮�鍏� - var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch; - //琛ヤ笂闈炶繙绋� - if (airSwitch.Gateway == null) - { - continue; - } - if (airSwitch.Gateway.IsVirtual) - { - UserHomeView.ReadStatus(airSwitch, () => - { - airSwitch.ReadOnOffStatus(); - airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); - }); - } - else - { - if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) - { - airSwitch.ReadOnOffStatus(); - airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); - } - } - - var deviceTypeRowLayout = new RowLayout() - { - Height = Application.GetRealHeight(CommonPage.RowHeight), - LineColor = ZigbeeColor.Current.GXCLineColor, - Tag = deviceUI - }; - deviceListScrolView.AddChidren(deviceTypeRowLayout); - var deviceIMG = new Button() - { - X = Application.GetRealWidth(CommonPage.XLeft), - Width = Application.GetMinRealAverage(110), - Height = Application.GetMinRealAverage(110), - UnSelectedImagePath = deviceUI.IconPath, - SelectedImagePath = deviceUI.OnlineIconPath, - Gravity = Gravity.CenterVertical, - IsSelected = airSwitch.IsOnline == 1, - Tag = deviceStatus_Online - }; - deviceTypeRowLayout.AddChidren(deviceIMG); - var deviceNameBtn = new Button() - { - X = Application.GetRealWidth(50) + deviceIMG.Right, - Width = Application.GetRealWidth(500), - Text = deviceUI.CommonDevice.DeviceEpointName, - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - TextAlignment = TextAlignment.CenterLeft - }; - deviceTypeRowLayout.AddChidren(deviceNameBtn); - var switchBtn = new Button - { - X = deviceTypeRowLayout.Right - Application.GetRealWidth(200), - Width = Application.GetMinRealAverage(183), - Height = Application.GetMinRealAverage(123), - UnSelectedImagePath = "Item/Switch.png", - SelectedImagePath = "Item/SwitchSelected.png", - IsSelected = airSwitch.OnOffStatus == 1, - Tag = deviceStatus_OnOffStatus, - Gravity = Gravity.CenterVertical - }; - deviceTypeRowLayout.AddChidren(switchBtn); - switchBtn.MouseUpEventHandler += (send2, e2) => - { - zbGateway = deviceUI.CommonDevice.Gateway; - sendedControlCommand = false; - zbGateway.ReportAction += UpdateDeviceControllStatu; - AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice); - - switchBtn.IsSelected = !switchBtn.IsSelected; - if (switchBtn.IsSelected == true) - { - airSwitch.SwitchControl(1); - } - else - { - airSwitch.SwitchControl(0); - } - //鎺у埗寤舵椂鍥炶皟 - DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => - { - if (Parent == null) - { - return; - } - RemoveUpdateControlDeviceStatuAction(zbGateway); - if (sendedControlCommand == false) - { - DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); - } - }); - }; - var delBtn = new Device.CommonForm.RowLayoutDeleteButton() - { - Tag = deviceUI, - Radius = 0 - }; - deviceTypeRowLayout.AddRightView(delBtn); - delBtn.MouseUpEventHandler += delEvent; - - deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler; - deviceIMG.MouseUpEventHandler += deviceDetailHandler; - deviceNameBtn.MouseUpEventHandler += deviceDetailHandler; - } - else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight) - { - //璋冨厜鐏� - var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight; - //琛ヤ笂闈炶繙绋� - if (dimmableLight.Gateway == null) - { - continue; - } - if (dimmableLight.Gateway.IsVirtual) - { - UserHomeView.ReadStatus(dimmableLight, () => - { - dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); - dimmableLight.ReadOnOffStatus(); - dimmableLight.ReadLevel(); - }); - } - else - { - if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) - { - dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); - dimmableLight.ReadOnOffStatus(); - dimmableLight.ReadLevel(); - } - } - - var deviceTypeRowLayout = new RowLayout() - { - Height = Application.GetRealHeight(CommonPage.RowHeight), - LineColor = ZigbeeColor.Current.GXCLineColor, - Tag = deviceUI - }; - deviceListScrolView.AddChidren(deviceTypeRowLayout); - var deviceIMG = new Button() - { - X = Application.GetRealWidth(CommonPage.XLeft), - Width = Application.GetMinRealAverage(110), - Height = Application.GetMinRealAverage(110), - UnSelectedImagePath = deviceUI.IconPath, - SelectedImagePath = deviceUI.OnlineIconPath, - Gravity = Gravity.CenterVertical, - IsSelected = dimmableLight.IsOnline == 1, - Tag = deviceStatus_Online - }; - deviceTypeRowLayout.AddChidren(deviceIMG); - var deviceNameBtn = new Button() - { - X = Application.GetRealWidth(50) + deviceIMG.Right, - Width = Application.GetRealWidth(500), - Text = deviceUI.CommonDevice.DeviceEpointName, - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - TextAlignment = TextAlignment.CenterLeft - }; - deviceTypeRowLayout.AddChidren(deviceNameBtn); - var switchBtn = new Button - { - X = deviceTypeRowLayout.Right - Application.GetRealWidth(200), - Width = Application.GetMinRealAverage(183), - Height = Application.GetMinRealAverage(123), - UnSelectedImagePath = "Item/Switch.png", - SelectedImagePath = "Item/SwitchSelected.png", - IsSelected = dimmableLight.OnOffStatus == 1, - Tag = deviceStatus_OnOffStatus, - Gravity = Gravity.CenterVertical - }; - deviceTypeRowLayout.AddChidren(switchBtn); - switchBtn.MouseUpEventHandler += (send2, e2) => - { - zbGateway = deviceUI.CommonDevice.Gateway; - sendedControlCommand = false; - zbGateway.ReportAction += UpdateDeviceControllStatu; - AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice); - - switchBtn.IsSelected = !switchBtn.IsSelected; - if (switchBtn.IsSelected == true) - { - dimmableLight.SwitchControl(1); - } - else - { - dimmableLight.SwitchControl(0); - } - //鎺у埗寤舵椂鍥炶皟 - DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => - { - if (Parent == null) - { - return; - } - RemoveUpdateControlDeviceStatuAction(zbGateway); - if (sendedControlCommand == false) - { - DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); - } - }); - }; - var delBtn = new Device.CommonForm.RowLayoutDeleteButton() - { - Tag = deviceUI, - Radius = 0 - }; - deviceTypeRowLayout.AddRightView(delBtn); - delBtn.MouseUpEventHandler += delEvent; - - deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler; - deviceIMG.MouseUpEventHandler += deviceDetailHandler; - deviceNameBtn.MouseUpEventHandler += deviceDetailHandler; - } - else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat) - { - //绌鸿皟 - var ac = deviceUI.CommonDevice as ZigBee.Device.AC; - //琛ヤ笂闈炶繙绋� - if (ac.Gateway == null) - { - continue; - } - if (ac.Gateway.IsVirtual) - { - //鍙戦�佽鍙栫姸鎬佸懡浠� - UserView.UserHomeView.ReadStatus(ac, () => - { - ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); - ac.ReadFanMode(); - ac.ReadSystemMode(); - ac.ReadLocalTemperature(); - ac.ReadCoolingSetpoint(); - ac.ReadHeatingSetpoint(); - }); - } - else - { - //闃叉鐭椂闂村唴澶氭璇诲彇璁惧鐘舵�� - if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) - { - ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); - ac.ReadFanMode(); - ac.ReadSystemMode(); - ac.ReadLocalTemperature(); - ac.ReadCoolingSetpoint(); - ac.ReadHeatingSetpoint(); - } - } - - var deviceTypeRowLayout = new RowLayout() - { - Height = Application.GetRealHeight(CommonPage.RowHeight), - LineColor = ZigbeeColor.Current.GXCLineColor, - Tag = deviceUI - }; - deviceListScrolView.AddChidren(deviceTypeRowLayout); - var deviceIMG = new Button() - { - X = Application.GetRealWidth(CommonPage.XLeft), - Width = Application.GetMinRealAverage(110), - Height = Application.GetMinRealAverage(110), - UnSelectedImagePath = deviceUI.IconPath, - SelectedImagePath = deviceUI.OnlineIconPath, - Gravity = Gravity.CenterVertical, - IsSelected = ac.IsOnline == 1, - Tag = deviceStatus_Online - }; - deviceTypeRowLayout.AddChidren(deviceIMG); - var deviceNameBtn = new Button() - { - X = Application.GetRealWidth(50) + deviceIMG.Right, - Width = Application.GetRealWidth(500), - Text = deviceUI.CommonDevice.DeviceEpointName, - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - TextAlignment = TextAlignment.CenterLeft - }; - deviceTypeRowLayout.AddChidren(deviceNameBtn); - var switchBtn = new Button - { - X = deviceTypeRowLayout.Right - Application.GetRealWidth(200), - Width = Application.GetMinRealAverage(183), - Height = Application.GetMinRealAverage(123), - UnSelectedImagePath = "Item/Switch.png", - SelectedImagePath = "Item/SwitchSelected.png", - IsSelected = Device.AC.ACControlBase.IsOpen(ac), - Tag = deviceStatus_OnOffStatus, - Gravity = Gravity.CenterVertical - }; - deviceTypeRowLayout.AddChidren(switchBtn); - switchBtn.MouseUpEventHandler += (send2, e2) => - { - zbGateway = deviceUI.CommonDevice.Gateway; - sendedControlCommand = false; - zbGateway.ReportAction += UpdateDeviceControllStatu; - AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice); - - switchBtn.IsSelected = !switchBtn.IsSelected; - if (switchBtn.IsSelected == true) - { - ac.Open(); - } - else - { - ac.Close(); - } - //鎺у埗寤舵椂鍥炶皟 - DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => - { - if (Parent == null) - { - return; - } - RemoveUpdateControlDeviceStatuAction(zbGateway); - if (sendedControlCommand == false) - { - DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); - } - }); - }; - var delBtn = new Device.CommonForm.RowLayoutDeleteButton() - { - Tag = deviceUI, - Radius = 0 - }; - deviceTypeRowLayout.AddRightView(delBtn); - delBtn.MouseUpEventHandler += delEvent; - - deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler; - deviceIMG.MouseUpEventHandler += deviceDetailHandler; - deviceNameBtn.MouseUpEventHandler += deviceDetailHandler; - } - else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice) - { - //鍗峰笜 - var rollerShade = deviceUI.CommonDevice as ZigBee.Device.Rollershade; - //涓嶄笂闈炶繙绋� - if (rollerShade.Gateway == null) - { - continue; - } - if (rollerShade.Gateway.IsVirtual) - { - UserHomeView.ReadStatus(rollerShade, () => - { - rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); - }); - } - else - { - //闃叉鐭椂闂村唴澶氭璇诲彇 - if ((DateTime.Now - rollerShade.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) - { - rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); - } - } - - - var deviceTypeRowLayout = new RowLayout() - { - Height = Application.GetRealHeight(CommonPage.RowHeight), - LineColor = ZigbeeColor.Current.GXCLineColor, - Tag = deviceUI - }; - deviceListScrolView.AddChidren(deviceTypeRowLayout); - var deviceIMG = new Button() - { - X = Application.GetRealWidth(CommonPage.XLeft), - Width = Application.GetMinRealAverage(110), - Height = Application.GetMinRealAverage(110), - UnSelectedImagePath = deviceUI.IconPath, - SelectedImagePath = deviceUI.OnlineIconPath, - Gravity = Gravity.CenterVertical, - IsSelected = rollerShade.IsOnline == 1, - Tag = deviceStatus_Online - }; - deviceTypeRowLayout.AddChidren(deviceIMG); - var deviceNameBtn = new Button() - { - X = Application.GetRealWidth(50) + deviceIMG.Right, - Width = Application.GetRealWidth(350), - Text = deviceUI.CommonDevice.DeviceEpointName, - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - TextAlignment = TextAlignment.CenterLeft - }; - deviceTypeRowLayout.AddChidren(deviceNameBtn); - - var closeBtn = new Device.CommonForm.SelectedStatuButton() - { - X = Application.GetRealWidth(50) + deviceNameBtn.Right, - Width = Application.GetMinRealAverage(110), - Height = Application.GetMinRealAverage(110), - Gravity = Gravity.CenterVertical, - UnSelectedImagePath = "WindowCovering/RollerShadeClose.png", - SelectedImagePath = "WindowCovering/RollerShadeCloseSelected.png", - }; - deviceTypeRowLayout.AddChidren(closeBtn); - var stopBtn = new Device.CommonForm.SelectedStatuButton() - { - X = Application.GetRealWidth(50) + closeBtn.Right, - Width = Application.GetMinRealAverage(110), - Height = Application.GetMinRealAverage(110), - Gravity = Gravity.CenterVertical, - UnSelectedImagePath = "WindowCovering/RollerShadeStop.png", - SelectedImagePath = "WindowCovering/RollerShadeStopSelected.png", - }; - deviceTypeRowLayout.AddChidren(stopBtn); - var openBtn = new Device.CommonForm.SelectedStatuButton() - { - X = Application.GetRealWidth(50) + stopBtn.Right, - Width = Application.GetMinRealAverage(110), - Height = Application.GetMinRealAverage(110), - Gravity = Gravity.CenterVertical, - UnSelectedImagePath = "WindowCovering/RollerShadeOpen.png", - SelectedImagePath = "WindowCovering/RollerShadeOpenSelected.png", - }; - deviceTypeRowLayout.AddChidren(openBtn); - - var delBtn = new Device.CommonForm.RowLayoutDeleteButton() - { - Tag = deviceUI, - Radius = 0 - }; - deviceTypeRowLayout.AddRightView(delBtn); - delBtn.MouseUpEventHandler += delEvent; - - //绐楀笜鍏� - closeBtn.MouseUpEventHandler += (sender, e) => - { - zbGateway = deviceUI.CommonDevice.Gateway; - sendedControlCommand = false; - zbGateway.ReportAction += UpdateDeviceControllStatu; - AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice); - - rollerShade.CurtainUpDownStopControl(1); - - //鎺у埗寤舵椂鍥炶皟 - DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => - { - if (Parent == null) - { - return; - } - RemoveUpdateControlDeviceStatuAction(zbGateway); - if (sendedControlCommand == false) - { - DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); - } - }); - }; - //绐楀笜鍋� - stopBtn.MouseUpEventHandler += (sender, e) => - { - zbGateway = deviceUI.CommonDevice.Gateway; - sendedControlCommand = false; - zbGateway.ReportAction += UpdateDeviceControllStatu; - AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice); - - rollerShade.CurtainUpDownStopControl(2); - - //鎺у埗寤舵椂鍥炶皟 - DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => - { - if (Parent == null) - { - return; - } - RemoveUpdateControlDeviceStatuAction(zbGateway); - if (sendedControlCommand == false) - { - DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); - } - }); - }; - //绐楀笜寮� - openBtn.MouseUpEventHandler += (sender, e) => - { - zbGateway = deviceUI.CommonDevice.Gateway; - sendedControlCommand = false; - zbGateway.ReportAction += UpdateDeviceControllStatu; - AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice); - - rollerShade.CurtainUpDownStopControl(0); - - //鎺у埗寤舵椂鍥炶皟 - DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => - { - if (Parent == null) - { - return; - } - RemoveUpdateControlDeviceStatuAction(zbGateway); - if (sendedControlCommand == false) - { - DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); - } - }); - }; - deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler; - deviceIMG.MouseUpEventHandler += deviceDetailHandler; - deviceNameBtn.MouseUpEventHandler += deviceDetailHandler; } else { - var deviceTypeRowLayout = new RowLayout() - { - Height = Application.GetRealHeight(CommonPage.RowHeight), - LineColor = ZigbeeColor.Current.GXCLineColor, - Tag = deviceUI - }; - deviceListScrolView.AddChidren(deviceTypeRowLayout); - var deviceIMG = new Button() - { - X = Application.GetRealWidth(CommonPage.XLeft), - Width = Application.GetMinRealAverage(110), - Height = Application.GetMinRealAverage(110), - UnSelectedImagePath = deviceUI.IconPath, - SelectedImagePath = deviceUI.OnlineIconPath, - Gravity = Gravity.CenterVertical, - Tag = deviceStatus_Online - }; - deviceTypeRowLayout.AddChidren(deviceIMG); - var deviceNameBtn = new Button() - { - X = Application.GetRealWidth(50) + deviceIMG.Right, - Width = Application.GetRealWidth(500), - Text = deviceUI.CommonDevice.DeviceEpointName, - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - TextAlignment = TextAlignment.CenterLeft - }; - deviceTypeRowLayout.AddChidren(deviceNameBtn); - var delBtn = new Device.CommonForm.RowLayoutDeleteButton() - { - Tag = deviceUI, - Radius = 0 - }; - deviceTypeRowLayout.AddRightView(delBtn); - delBtn.MouseUpEventHandler += delEvent; - - deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler; - deviceIMG.MouseUpEventHandler += deviceDetailHandler; - deviceNameBtn.MouseUpEventHandler += deviceDetailHandler; + deviceRow.SetDeviceIcon(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI)); } } } /// <summary> - /// 鎻愮ず娌℃湁鍔熻兘 + /// ReFreshDeviceAction /// </summary> - private void ShowNoFunctionTip() + /// <param name="curRoom"></param> + /// <param name="sameTypeList"></param> + /// <param name="devListScrolView"></param> + /// <param name="deviceRow"></param> + private void ReFreshDeviceActionForWin(CommonDevice deviceUI, Common.Room curRoom, List<CommonDevice> sameTypeList, VerticalScrolViewLayout devListScrolView, CategoryFunctionForWinRow deviceRow) { - var noFunctionTip = new Button() + if (HdlRoomLogic.Current.CurrentRoom.IsLove) { - Height = Application.GetMinRealAverage(200), - TextID = R.MyInternationalizationString.NoFunction, - TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor, - TextAlignment = TextAlignment.Center, - Gravity = Gravity.CenterVertical + deviceRow.SetDeviceIcon(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI)); + if (HdlRoomLogic.Current.IsCollectInRoom(deviceUI) == false) + { + devListScrolView.RemoveViewByTag(deviceUI); + sameTypeList.Remove(deviceUI); + if (sameTypeList.Count == 0) + { + RefreshFunction(HdlRoomLogic.Current.CurrentRoom); + } + } + } + else + { + if (curRoom.Id != HdlRoomLogic.Current.CurrentRoom.Id) + { + HdlRoomLogic.Current.DeleteDevice(deviceUI); + devListScrolView.RemoveViewByTag(deviceUI); + sameTypeList.Remove(deviceUI); + if (sameTypeList.Count == 0) + { + RefreshFunction(HdlRoomLogic.Current.CurrentRoom); + } + } + else + { + deviceRow.SetDeviceIcon(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI)); + } + } + } + + + /// <summary> + /// AddRoomView + /// </summary> + private void AddRoomView() + { + var roomFL = new HorizontalScrolViewLayout() + { + X = Application.GetRealWidth(CommonFormResouce.X_Left), + Height = Application.GetRealHeight(170), + Width = Application.GetRealWidth(CommonPage.AppRealWidth - CommonFormResouce.X_Left), + BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor }; - functionSceneBodyView.AddChidren(noFunctionTip); + functionSceneAutoBodyView.AddChidren(roomFL); + + //鍔熻兘鍜屽満鏅痓odyView + functionSceneBodyView = new FrameLayout() + { + Y = roomFL.Bottom, + Height = Application.GetRealHeight(973 + 279), + BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor + }; + functionSceneAutoBodyView.AddChidren(functionSceneBodyView); + + RoomButton curBtn = new RoomButton(0, 0); + var lisrRoom = HdlRoomLogic.Current.GetRoomsByCurrentFloorIdAppendLoveRoom(); + foreach (var room in lisrRoom) + { + var row = new FrameLayout() + { + Width = Application.GetRealWidth(255), + Height = Application.GetRealHeight(167) + }; + roomFL.AddChidren(row); + + RoomButton roomBtn = new RoomButton(0, 0); + roomBtn.Gravity = Gravity.Center; + roomBtn.Init(); + roomBtn.SetTitle(room.Name); + row.AddChidren(roomBtn); + + if (room.Id == HdlRoomLogic.Current.CurrentRoom.Id) + { + roomBtn.IsSelected = true; + curBtn = roomBtn; + if (sceneBtn.IsSelected) + { + RefreshScene(room); + } + else + { + RefreshFunction(room); + } + } + + roomBtn.ButtonClickEvent += (sender, e) => + { + if (sender == curBtn) + { + return; + } + sender.IsSelected = true; + curBtn.IsSelected = false; + curBtn = sender; + HdlRoomLogic.Current.CurrentRoom = room; + if (sceneBtn.IsSelected) + { + RefreshScene(room); + } + else + { + RefreshFunction(room); + } + }; + } } #endregion @@ -1644,15 +1912,17 @@ /// </summary> public void ShowScene() { - //鍒锋柊鍦烘櫙 - //var reFreshResult=await Shared.Common.Room.RefreshSceneUIList(); - Shared.Common.SceneRoomUI.GetAllSceneRoomUIList(); - if (SceneRoomUI.AllSceneRoomUIList == null) - { - return; - } - var sceneList = SceneRoomUI.AllSceneRoomUIList; - Shared.Common.Room.GetAllRoomDeviceUIList(); + AddRoomView(); + } + + /// <summary> + /// RefreshScene + /// </summary> + /// <param name="room"></param> + public void RefreshScene(Common.Room room) + { + RefreshData(room); + functionSceneBodyView.RemoveAll(); if (sceneList.Count == 0) { ShowNoSceneTip(); @@ -1661,223 +1931,13 @@ { var sceneScrolView = new VerticalScrolViewLayout { }; functionSceneBodyView.AddChidren(sceneScrolView); - foreach (var sceneRoomUI in sceneList) + foreach (var scene in sceneList) { - var sceneFL = new FrameLayout() - { - Width = Application.GetRealWidth(CommonPage.AppRealWidth - 100), - Height = Application.GetRealHeight(400), - Gravity = Gravity.CenterHorizontal, - BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor, - Tag = sceneRoomUI - }; - sceneScrolView.AddChidren(sceneFL); - var sceneRowLayout = new RowLayout() - { - Y = Application.GetRealHeight(30), - Height = Application.GetRealHeight(400 - 30 - 10), - Gravity = Gravity.CenterHorizontal, - LineColor = ZigbeeColor.Current.GXCBackgroundColor, - Radius = CommonPage.BigFormRadius - }; - sceneFL.AddChidren(sceneRowLayout); - var sceneItemFL = new FrameLayout() - { - BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor, - Radius = CommonPage.BigFormRadius - }; - sceneRowLayout.AddChidren(sceneItemFL); - var sceneImg = new Button() - { - UnSelectedImagePath = sceneRoomUI.sceneUI.IconPath, - Radius = CommonPage.BigFormRadius - }; - sceneRowLayout.AddChidren(sceneImg); - - var sceneBGBtn = new Button() - { - BackgroundColor = ZigbeeColor.Current.GXCBlack70Color, - SelectedBackgroundColor = ZigbeeColor.Current.GXCBlack80Color, - Radius = CommonPage.BigFormRadius - }; - sceneRowLayout.AddChidren(sceneBGBtn); - var roomNameBtn = new Button() - { - X = Application.GetRealWidth(30), - Y = Application.GetRealHeight(1), - Width = Application.GetRealWidth(600), - Height = Application.GetRealHeight(110), - Text = $"{sceneRoomUI.room.Name}", - TextColor = ZigbeeColor.Current.GXCTextWhiteColor, - TextSize = 12, - TextAlignment = TextAlignment.CenterLeft - }; - sceneRowLayout.AddChidren(roomNameBtn); - - var sceneNameBtn = new Button() - { - Width = Application.GetRealWidth(700), - Height = Application.GetRealHeight(200), - TextColor = ZigbeeColor.Current.GXCTextWhiteColor, - TextSize = 20, - Text = sceneRoomUI.sceneUI.Name, - Gravity = Gravity.Center - }; - sceneRowLayout.AddChidren(sceneNameBtn); - var moreBtn = new Device.CommonForm.SelectedStatuButton() - { - Y = Application.GetRealHeight(1), - X = sceneRowLayout.Width - Application.GetRealWidth(150), - Width = Application.GetMinRealAverage(110), - Height = Application.GetMinRealAverage(110), - UnSelectedImagePath = "Item/MoreWhite.png", - SelectedImagePath = "Item/MoreSelected.png" - }; - sceneRowLayout.AddChidren(moreBtn); - - //缂栬緫寤舵椂 - var leftDelayTimeBtn = new Device.CommonForm.RowLayoutEditButton() - { - Tag = sceneRoomUI.sceneUI.SceneDelayTime - }; - - //鍒犻櫎 - var deleteBtn = new Device.CommonForm.RowLayoutDeleteButton - { - Tag = sceneRoomUI - }; - - if(!sceneRoomUI.room.IsSharedRoom) - { - sceneRowLayout.AddRightView(leftDelayTimeBtn); - sceneRowLayout.AddRightView(deleteBtn); - } - - //璋冪敤鍦烘櫙 - EventHandler<MouseEventArgs> sceneDownHandler = (sender, e) => - { - sceneBGBtn.IsSelected = true; - }; - sceneBGBtn.MouseDownEventHandler += sceneDownHandler; - sceneImg.MouseDownEventHandler += sceneDownHandler; - sceneRowLayout.MouseDownEventHandler += sceneDownHandler; - sceneNameBtn.MouseDownEventHandler += sceneDownHandler; - sceneFL.MouseDownEventHandler += sceneDownHandler; - - EventHandler<MouseEventArgs> sceneUpHandler = async (sender, e) => - { - sceneBGBtn.IsSelected = false; - //1鎴愬姛 0澶辫触 - //鍚庨潰琛ヤ笂鐩稿叧鎻愮ず - //瑕佸厛浠庣綉鍏宠鍙栧欢鏃舵槸鍚︽鍦ㄦ墽琛岋紝濡傛灉鏄繘琛屽�掕鏃讹紝涓嶅厑璁稿湪鐐瑰嚮 - var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(sceneRoomUI.sceneUI.Id, sceneRoomUI.sceneUI.SceneDelayTime); - //涓荤綉鍏充笉鍦ㄧ嚎 - if (sceneOpenAllData == null) - { - //CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheMainGatewayIsNotOnLine); - CommonPage.Instance.FailureToServer(); - return; - } - if (sceneOpenAllData.sceneOpenData == null) - { - CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain); - return; - } - //鎴愬姛 - if (sceneOpenAllData.sceneOpenData.Result == 1) - { - - } - //澶辫触 - else - { - CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain); - return; - } - }; - sceneBGBtn.MouseUpEventHandler += sceneUpHandler; - sceneImg.MouseUpEventHandler += sceneUpHandler; - sceneRowLayout.MouseUpEventHandler += sceneUpHandler; - sceneFL.MouseUpEventHandler += sceneUpHandler; - sceneNameBtn.MouseUpEventHandler += sceneUpHandler; - //鍒犻櫎鍦烘櫙 - EventHandler<MouseEventArgs> delEvent = (sender, e) => - { - var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.ConfirmDelete), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim)); - alert.Show(); - alert.ResultEventHandler += async (send1, e1) => - { - if (e1) - { - //0 绉婚櫎澶辫触 1 绉婚櫎鎴愬姛 2 娌℃湁璇ュ満鏅� - var removeSceneAllData = await ZigBee.Device.Scene.DeleteSceneAsync(sceneRoomUI.sceneUI.Id); - if (removeSceneAllData == null || removeSceneAllData.removeSceneData == null) - { - //CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheMainGatewayIsNotOnLine); - CommonPage.Instance.FailureToServer(); - return; - } - //1鎴愬姛 - if (removeSceneAllData.removeSceneData.Result == 1) - { - sceneRoomUI.room.RemoveScene(sceneRoomUI.sceneUI); - //RefreshBodyView(); - sceneScrolView.RemoveViewByTag((sender as Button).Tag); - } - //0 绉婚櫎澶辫触 - else if (removeSceneAllData.removeSceneData.Result == 0) - { - CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain); - return; - } - //2 娌℃湁璇ュ満鏅� - else if (removeSceneAllData.removeSceneData.Result == 2) - { - sceneRoomUI.room.RemoveScene(sceneRoomUI.sceneUI); - //RefreshBodyView(); - sceneScrolView.RemoveViewByTag((sender as Button).Tag); - CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneIsNull); - return; - } - } - }; - }; - deleteBtn.MouseUpEventHandler += delEvent; - //缂栬緫鍦烘櫙 - moreBtn.MouseUpEventHandler += (sender, e) => - { - SceneRoomUI.EditScene(sceneRoomUI.sceneUI, sceneRoomUI.room); - }; - //缂栬緫寤舵椂 - leftDelayTimeBtn.MouseUpEventHandler += (sender, e) => - { - var tList = new List<string>() { }; - - for (int i = 0; i < 60; i++) - { - tList.Add($"{i} {Language.StringByID(R.MyInternationalizationString.Second)}"); - } - //int beforeIndex = (int)(sender as CommonForm.RowLayoutEditButton).Tag; - PickerView.Show(tList, (obj) => - { - var tempRoom = Shared.Common.Room.GetRoomByFilePath(sceneRoomUI.room.FileName); - if (tempRoom == null) - { - return; - } - foreach (var ss in tempRoom.SceneUIList) - { - if (ss.Id == sceneRoomUI.sceneUI.Id) - { - ss.SceneDelayTime = int.Parse(tList[obj].Split(' ')[0]); - sceneRoomUI.room.Save(); - RefreshBodyView(); - return; - } - } - },0,"", Language.StringByID(R.MyInternationalizationString.Confrim), tList[(int)(sender as CommonForm.RowLayoutEditButton).Tag]); - }; - } + var sceneView = new SceneCategoryView(); + sceneScrolView.AddChidren(sceneView); + sceneView.InitControl(scene, room); + } + GetDelayScene(sceneScrolView); } } @@ -1886,324 +1946,456 @@ /// </summary> private void ShowNoSceneTip() { + var noFunction = new Button() + { + Y = Application.GetRealHeight(320), + Width = Application.GetMinRealAverage(757), + Height = Application.GetMinRealAverage(435), + UnSelectedImagePath = "Item/NoFunction.png", + Gravity = Gravity.CenterHorizontal + }; + functionSceneBodyView.AddChidren(noFunction); + var noScenceTip = new Button() { - Height = Application.GetMinRealAverage(200), - TextID = R.MyInternationalizationString.NoScene, + Y = noFunction.Bottom + Application.GetRealHeight(32), + Height = Application.GetRealHeight(200), + Width = Application.GetRealWidth(700), + Gravity = Gravity.CenterHorizontal, + Text = Language.StringByID(R.MyInternationalizationString.NoScene).Replace("{\\r\\n}", "\r\n"), TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor, TextAlignment = TextAlignment.Center, - Gravity = Gravity.CenterVertical + IsMoreLines = true }; functionSceneBodyView.AddChidren(noScenceTip); } - #endregion - - #region 鈼� 鑷姩鍖朹_________________________ - /// <summary> - /// 鑷姩鍖� + /// GetDelayScene /// </summary> - public async void ShowAutotion() + /// <param name="scrolViewLayout"></param> + private async void GetDelayScene(VerticalScrolViewLayout scrolViewLayout) { - var logicScrolView = new VerticalScrolViewLayout { }; - functionSceneBodyView.AddChidren(logicScrolView); + var catDelaySceneResponseAllData = await Scene.CatDelaySceneAsync(); + if (catDelaySceneResponseAllData == null) + { + return; + } + var catDelaySceneResponseData = catDelaySceneResponseAllData.catDelaySceneResponseData; + if (catDelaySceneResponseData == null || catDelaySceneResponseData.DelayScenesList.Count == 0) + { + return; + } + var delayList = catDelaySceneResponseData.DelayScenesList; - //Shared.Common.ResponseEntity.Logic.LogicDviceList = await gateway.GetGwDeviceList(); - // gateway.DeviceList.Clear(); - ////// Shared.Common.ResponseEntity.Logic.LogicDviceList = LocalDevice.Current.GetDeviceByGatewayID(gateway.getGatewayBaseInfo.gwID); - //if (gateway.DeviceList.Count != 0) - //{ - // Shared.IO.FileUtils.WriteFileByBytes("ZigbeeDeviceListFilePath", System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(gateway.DeviceList))); - //} - //else - //{//涓存椂淇濆瓨璁惧鍒楄〃鏁版嵁缁欓�昏緫寮�鍙� - // var devicestring = System.Text.Encoding.UTF8.GetString(Shared.IO.FileUtils.ReadFile("ZigbeeDeviceListFilePath")); - // gateway.DeviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<CommonDevice>>(devicestring); - //} + for (int i = 0; scrolViewLayout != null && i < scrolViewLayout.ChildrenCount; i++) + { + var sceneView = scrolViewLayout.GetChildren(i) as SceneCategoryView; + if (sceneView == null) + { + continue; + } + foreach (var delayScenesListResponseInfo in delayList) + { + if (delayScenesListResponseInfo.ScenesId == sceneView.scene.Id) + { + sceneView.scene.RemainTime = delayScenesListResponseInfo.RemainTime; + var remainTime = delayScenesListResponseInfo.RemainTime; + if (remainTime > 0) + { + //寮�鍚唴閮ㄥ欢鏃舵椂闂寸嚎绋�(鏃ㄥ湪鍏ㄩ儴鍦版柟鐨勫悓涓�鍦烘櫙鏃堕棿鍚屾) + HdlSceneLogic.Current.StartDelayTimeThread(sceneView.scene); + new System.Threading.Thread(() => + { + while (remainTime > 0 && this.Parent != null) + { + System.Threading.Thread.Sleep(1000); + Application.RunOnMainThread(() => + { + sceneView.SetTimeText(CommonFormResouce.GetTimeString(remainTime)); + }); + remainTime--; + } + Application.RunOnMainThread(() => + { + if (this.Parent != null) + { + sceneView.SetTimeImage(); + } + }); + }) + { IsBackground = true }.Start(); + } + break; + } + } + } + } + + #endregion + + #region 鈼� 鑷姩鍖朹_________________________ + + /// <summary> + /// 鑷姩鍖栧姛鑳戒唬鐮佸叆鍙� + /// </summary> + private void ShowAutotion() + { + // functionSceneAutoBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; + + var bjFrameLayout = new FrameLayout + { + Width = Application.GetRealWidth(1080 - 58), + Height = Application.GetRealHeight(170), + BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, + X = Application.GetRealWidth(58), + //Radius = (uint)Application.GetRealHeight(50), + Y = Application.GetRealHeight(30), + }; + functionSceneAutoBodyView.AddChidren(bjFrameLayout); + bjFrameLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft); + var sigBtn = new Button + { + Width = Application.GetMinRealAverage(84), + Height = Application.GetMinRealAverage(84), + UnSelectedImagePath = "ZigeeLogic/sign.png", + X = Application.GetRealWidth(58), + Gravity = Gravity.CenterVertical, + }; + bjFrameLayout.AddChidren(sigBtn); + var recommendtextBtn = new Button + { + Width = Application.GetMinRealAverage(300), + Height = Application.GetMinRealAverage(84), + X = sigBtn.Right + Application.GetRealWidth(35), + TextAlignment = TextAlignment.CenterLeft, + //Text = "鎺ㄨ崘妯℃澘", + TextID = MyInternationalizationString.logictemplate, + Gravity = Gravity.CenterVertical, + TextColor = ZigbeeColor.Current.LogicBtnSelectedColor, + TextSize = 15, + }; + bjFrameLayout.AddChidren(recommendtextBtn); + + var recommendswitchBtn = new Button + { + Width = Application.GetMinRealAverage(104), + Height = Application.GetMinRealAverage(63), + UnSelectedImagePath = "ZigeeLogic/logicclose.png", + SelectedImagePath = "ZigeeLogic/logicopen.png", + X = bjFrameLayout.Width - Application.GetRealWidth(104 + 58), + Gravity = Gravity.CenterVertical, + }; + bjFrameLayout.AddChidren(recommendswitchBtn); + + + var scenehorizontalScrol = new HorizontalScrolViewLayout + { + Width = Application.GetRealWidth(1080 - 58), + X = Application.GetRealWidth(58), + Y = bjFrameLayout.Bottom + Application.GetRealHeight(30), + Height = Application.GetRealHeight(0), + }; + functionSceneAutoBodyView.AddChidren(scenehorizontalScrol); + + var logicScrolView = new VerticalRefreshLayout//VerticalScrolViewLayout + { + Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30), + //BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,/ + X = Application.GetRealWidth(58), + Y = scenehorizontalScrol.Bottom, + }; + functionSceneAutoBodyView.AddChidren(logicScrolView); + logicScrolView.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft); + bool no = false; + recommendswitchBtn.MouseUpEventHandler += (sender, e) => + { + int Yheight = 0; + recommendswitchBtn.IsSelected = !recommendswitchBtn.IsSelected; + scenehorizontalScrol.RemoveAll(); + if (recommendswitchBtn.IsSelected) + { + no = true; + scenehorizontalScrol.Height = Application.GetRealHeight(246); + Yheight = 20; + for (int i = 1; i < 4; i++) + { + + var frameLayout = new FrameLayout + { + Width = Application.GetMinRealAverage(369 + 46), + Height = Application.GetMinRealAverage(246), + }; + scenehorizontalScrol.AddChidren(frameLayout); + var logiciocnBtn = new Button + { + Width = Application.GetMinRealAverage(369), + Height = Application.GetMinRealAverage(246), + UnSelectedImagePath = "ZigeeLogic/" + i + ".png", + Tag = i, + }; + frameLayout.AddChidren(logiciocnBtn); + + var logicnameBtn = new Button + { + Width = Application.GetMinRealAverage(250), + Height = Application.GetMinRealAverage(80), + X = Application.GetRealWidth(23), + Y = Application.GetRealHeight(246 - 23 - 80), + TextAlignment = TextAlignment.CenterLeft, + TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, + TextSize = 14, + }; + frameLayout.AddChidren(logicnameBtn); + + if (i == 1) + { + logicnameBtn.Text = Language.StringByID(MyInternationalizationString.onlight); + } + else if (i == 2) + { + logicnameBtn.Text = Language.StringByID(MyInternationalizationString.offlight); + } + else if (i == 3) + { + logicnameBtn.Text = Language.StringByID(MyInternationalizationString.automation1); + } + + + EventHandler<MouseEventArgs> iconclick = (sender1, e1) => + { + Common.Logic.CurrentLogic = new Common.Logic(); + Common.Logic.CurrentLogic.IsEnable = 1;//榛樿涓哄紑 + if (logiciocnBtn.Tag.ToString() == "3") + { + Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text; + //Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext); + var addLogicPage = new Logic.AddLogicPage(); + HomePage.Instance.AddChidren(addLogicPage); + HomePage.Instance.PageIndex += 1; + addLogicPage.Show(); + } + else + { + + Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text; + //Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext); + Logic.TemplatePage templatePage = new Logic.TemplatePage(); + Logic.TemplatePage.s = logiciocnBtn.Tag.ToString(); + HomePage.Instance.AddChidren(templatePage); + HomePage.Instance.PageIndex += 1; + templatePage.Show(); + } + }; + logiciocnBtn.MouseUpEventHandler += iconclick; + logicnameBtn.MouseUpEventHandler += iconclick; + } + } + else + { + no = false; + scenehorizontalScrol.Height = Application.GetRealHeight(0); + Yheight = 0; + } + logicScrolView.Y = scenehorizontalScrol.Bottom + Yheight; + logicScrolView.Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30) - Yheight; + Automationview(logicScrolView, no); + }; + logicScrolView.BeginHeaderRefreshingAction += () => + { + //閲嶆柊鍒锋柊logic鍒楄〃 + Common.Logic.LogicList.Clear(); + Read(logicScrolView, no); + //鍏抽棴鍒锋柊View锛� + logicScrolView.EndHeaderRefreshing(); + }; + + Read(logicScrolView, no); + + } + /// <summary> + /// 璇诲彇鑷姩鍖栧垪琛ㄦ暟鎹紱 + /// </summary> + /// <param name="logicScrolView"></param> + private async void Read(VerticalRefreshLayout logicScrolView, bool no) + { CommonPage.Loading.Start(); - //if (Common.Logic.LogicDviceList.Count != 0) - //{ - // foreach (var gateway in ZbGateway.GateWayList) - // { - // if (gateway.IsMainGateWay) - // { - // Common.Logic.LogicDviceList = LocalDevice.Current.GetDeviceByGatewayID(gateway.getGatewayBaseInfo.gwID); - // } - // } - //} - - - //CommonPage.Loading.Start(); if (Common.Logic.LogicList.Count == 0) { - var Idlist = await Logic.Send.GetLogicId(); + var Idlist = await Logic.Send.GetLogicId(0); if (Idlist.Count != 0) { - foreach (var LogicId in Idlist) + var listlogic = await Logic.Send.ReadList(Idlist.Count, 0); + //foreach鍙兘闆嗗悎宸茶淇敼,鏋氫妇鎿嶄綔鍙兘涓嶄細鎵ц,鍙兘鍑虹幇宕╂簝(寤鸿for)銆� + for (int j = 0; j < listlogic.Count; j++) { - var logic = await Logic.Send.GetLogic(LogicId); - if (logic != null) + var logic = listlogic[j]; + if (logic.LogicType != 0) { - Common.Logic.LogicList.Add(logic); + continue; } + Common.Logic.LogicList.Add(logic); } } } //鑷姩鍖� - Automationview(logicScrolView); + Automationview(logicScrolView, no); CommonPage.Loading.Hide(); } - /// <summary> - /// 鑷姩鍖栧垪琛ㄧ晫闈� + /// 鍔犺浇鑷姩鍖栧垪琛ㄧ晫闈� /// </summary> /// <param name="refresview">Refresview.</param> - public async void Automationview(VerticalScrolViewLayout refresview) + private async void Automationview(VerticalRefreshLayout refresview, bool no) { refresview.RemoveAll(); + if (Common.Logic.LogicList.Count == 0 && no == false) + { + //灏辨槸涓轰簡鏄剧ず寮曞娣诲姞鍥炬爣; + refresview.BackgroundColor = 0x00000000; + var noFrameLayout = new FrameLayout + { + Height = Application.GetRealHeight(434 + 200 + 32 + 160), + //BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, + }; + refresview.AddChidren(noFrameLayout); + + + var noIconBtn = new Button + { + Y = Application.GetRealHeight(160), + Width = Application.GetMinRealAverage(756), + Height = Application.GetMinRealAverage(434), + UnSelectedImagePath = "Item/NoFunction.png", + X = Application.GetRealWidth(104), + }; + noFrameLayout.AddChidren(noIconBtn); + + var noTextBtn = new Button() + { + Y = noIconBtn.Bottom, + Height = Application.GetRealHeight(200) + Application.GetRealHeight(32), + Width = Application.GetRealWidth(700), + //Gravity = Gravity.CenterHorizontal, + Text = Language.StringByID(MyInternationalizationString.automationaddtext).Replace("{\\r\\n}", "\r\n"), + TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor, + TextAlignment = TextAlignment.Center, + IsMoreLines = true, + X = Application.GetRealWidth(190 - 58), + }; + noFrameLayout.AddChidren(noTextBtn); + + } + else + { + + if (Common.Logic.LogicList.Count == 0 && no == true) + { + ///鏀瑰彉婊戝姩view鐨勯鑹诧紱 + refresview.BackgroundColor = 0x00000000; + } + else + { + refresview.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor; + } + } foreach (var logic in Common.Logic.LogicList) { - var logicrowlayout = new RowLayout + var fLayout = new FrameLayout { - Height = Application.GetRealHeight(180), - LineColor = ZigbeeColor.Current.LogicLineColor, + Height = Application.GetRealHeight(190 + 30), + Width = Application.GetRealWidth(1080 - 58), + BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, }; - refresview.AddChidren(logicrowlayout); - - var btnname = new Button + refresview.AddChidren(fLayout); + + var logicRowlayout = new RowLayout { - //Text = "閫昏緫涓�", + Height = Application.GetRealHeight(190 + 30), + Width = Application.GetRealWidth(1080 - 58), + LineColor = ZigbeeColor.Current.LogicBackgroundColor, + BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, + + }; + fLayout.AddChidren(logicRowlayout); + + + + var logicnameBtn = new Button + { + Height = Application.GetRealHeight(58), + Width = Application.GetRealWidth(350), Text = logic.LogicName, - X = Application.GetRealWidth(50), + X = Application.GetRealWidth(12 + 46), + Y = Application.GetRealHeight(30), TextAlignment = TextAlignment.CenterLeft, - Gravity = Gravity.CenterVertical, TextColor = ZigbeeColor.Current.LogicTextBlackColor, + TextSize = 14, }; - logicrowlayout.AddChidren(btnname); + logicRowlayout.AddChidren(logicnameBtn); - var btnswitch = new Button + + var logicswitchBtn = new Button { - Width = Application.GetMinRealAverage(183), - Height = Application.GetMinRealAverage(123), - UnSelectedImagePath = "ZigeeLogic/Switch.png", - SelectedImagePath = "ZigeeLogic/SwitchSelected.png", - X = Application.GetRealWidth(1080 - 200), - Gravity = Gravity.CenterVertical, + Width = Application.GetMinRealAverage(104), + Height = Application.GetMinRealAverage(63), + UnSelectedImagePath = "ZigeeLogic/logicclose.png", + SelectedImagePath = "ZigeeLogic/logicopen.png", + X = logicRowlayout.Width - Application.GetRealWidth(104 + 58), + Y = Application.GetRealHeight(58 + 30 + 9 + 30), }; - logicrowlayout.AddChidren(btnswitch); + logicRowlayout.AddChidren(logicswitchBtn); - btnswitch.MouseUpEventHandler += (sender1, e1) => + + + logicswitchBtn.MouseUpEventHandler += (sender1, e1) => { - btnswitch.IsSelected = !btnswitch.IsSelected; - if (btnswitch.IsSelected) + logicswitchBtn.IsSelected = !logicswitchBtn.IsSelected; + if (logicswitchBtn.IsSelected) { //閫昏緫寮� logic.IsEnable = 1; + StatusColor(logic, logicRowlayout, 1); } else { //閫昏緫鍏� logic.IsEnable = 0; + StatusColor(logic, logicRowlayout, 0); } - Logic.Send.AddModifyLogic(logic); + Logic.Send.LogicControlSwitch(logic); + //Logic.Send.AddModifyLogic(logic); }; if (logic.IsEnable == 1) { - btnswitch.IsSelected = true; + logicswitchBtn.IsSelected = true; + StatusColor(logic, logicRowlayout, 1); } else if (logic.IsEnable == 0) { - btnswitch.IsSelected = false; + logicswitchBtn.IsSelected = false; + StatusColor(logic, logicRowlayout, 0); } ///缂栬緫 var edit = new Button { - //TextID = MyInternationalizationString.Musicdel - BackgroundColor = 0xFF00aaf0, + BackgroundColor = ZigbeeColor.Current.LogicEditBlackColor1, Text = Language.StringByID(MyInternationalizationString.edit), - TextColor = ZigbeeColor.Current.LogicTextBlackColor, + TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, }; - logicrowlayout.AddRightView(edit); + logicRowlayout.AddRightView(edit); edit.MouseUpEventHandler += (sender, e) => { - Common.Logic.LogicDviceList.Clear(); - if (Common.Logic.LogicDviceList.Count == 0) - { - Common.Logic.LogicDviceList.AddRange(LocalDevice.Current.listAllDevice.ToArray()); - } Common.Logic.CurrentLogic = logic; var logicCommunalPage = new Logic.LogicCommunalPage(); - UserView.HomePage.Instance.AddChidren(logicCommunalPage); - UserView.HomePage.Instance.PageIndex += 1; - logicCommunalPage.Show(() => { btnname.Text = logic.LogicName; Automationview(refresview); }); - - }; - - - var btndelay = new Button - { - Width = Application.GetRealWidth(150), - Height = Application.GetRealHeight(50), - X = Application.GetRealWidth(300), - Y = Application.GetRealHeight(25), - TextAlignment = TextAlignment.Center, - TextColor = 0xffcccccc, - }; - logicrowlayout.AddChidren(btndelay); - - ///寤舵椂鎺т欢 - var btndelaytext = new Button - { - BackgroundColor = 0xff676767, - Text = Language.StringByID(R.MyInternationalizationString.delayed), - }; - //logicrowlayout.AddRightView(btndelaytext); - - //if (logic.param.ContainsKey ("delay")) { - // var delayvalue = logic.param ["delay"]?.ToString (); - // if (delayvalue != "" && delayvalue != "0") { - // var l = int.Parse (delayvalue) / 10; - // btndelay.Text = l.ToString () + "s"; - // } - //} - - btndelaytext.MouseUpEventHandler += (sender, e) => - { - - Dialog window = new Dialog(); - window.Show(); - - var frameLayout = new FrameLayout - { - Width = Application.GetRealWidth(580), - Height = Application.GetRealHeight(300), - X = Application.GetRealWidth(30), - Y = Application.GetRealHeight(330), - BackgroundColor = 0xffffffff, - }; - window.AddChidren(frameLayout); - - var Modifyname = new Button - { - Width = Application.GetRealWidth(580), - Height = Application.GetRealHeight(80), - TextID = R.MyInternationalizationString.devicedelaytime, - //Text = "璇疯緭鍏ヨ澶囧欢鏃剁殑鏃堕棿(鍗曚綅/s)", - Y = Application.GetRealHeight(10), - TextSize = 16, - TextColor = ZigbeeColor.Current.MusicTipTextColor, - }; - frameLayout.AddChidren(Modifyname); - - var delaytext = new EditText - { - Width = Application.GetRealWidth(540), - Height = Application.GetRealHeight(80), - Y = Application.GetRealHeight(80), - X = Application.GetRealWidth(20), - Gravity = Gravity.CenterVertical, - // BackgroundColor = SkinStyle.Current.MusicTipBackgroundColor, - //TextColor = 0xff000000, - Radius = 1, - BorderWidth = 1, - //BorderColor = SkinStyle.Current.MusicEditBorderColor, - //TextColor = SkinStyle.Current.MusicTextColor, - }; - frameLayout.AddChidren(delaytext); - - var line = new Button - { - Height = Application.GetRealHeight(2), - Y = Application.GetRealHeight(218), - BackgroundColor = 0xff666666, - }; - frameLayout.AddChidren(line); - - var cancelrow = new RowLayout - { - Y = Application.GetRealHeight(220), - Height = Application.GetRealHeight(80), - Width = Application.GetRealWidth(289), - BackgroundColor = 0xffcccccc, - }; - frameLayout.AddChidren(cancelrow); - - var cancel = new Button - { - TextID = R.MyInternationalizationString.cancel, - //TextColor = 0xff000000, - TextSize = 18, - //TextColor = SkinStyle.Current.MusicTextColor, - }; - cancelrow.AddChidren(cancel); - cancel.MouseUpEventHandler += (sender1, e1) => - { - window.Close(); - }; - - var ther = new Button - { - Y = Application.GetRealHeight(220), - Height = Application.GetRealHeight(80), - Width = Application.GetRealWidth(2), - X = Application.GetRealHeight(289), - BackgroundColor = 0xff666666, - }; - frameLayout.AddChidren(ther); - - var confirmrow = new RowLayout - { - Y = Application.GetRealHeight(220), - X = Application.GetRealWidth(291), - Height = Application.GetRealHeight(80), - Width = Application.GetRealWidth(289), - BackgroundColor = 0xffcccccc, - }; - frameLayout.AddChidren(confirmrow); - - var confirm = new Button - { - TextID = R.MyInternationalizationString.confrim, - //TextColor = 0xff000000, - TextSize = 18, - // TextColor = SkinStyle.Current.MusicTextColor, - }; - confirmrow.AddChidren(confirm); - //if (logic.param.ContainsKey ("delay")) { - // var delayvalue = logic.param ["delay"]?.ToString (); - // if (delayvalue != "" && delayvalue != "0") { - // var l = int.Parse (delayvalue) / 10; - // delaytext.Text = l.ToString () + "s"; - // } - //} - - confirm.MouseUpEventHandler += (sender1, e1) => - { - var isNumber = delaytext.Text.Trim(); - if (!int.TryParse(isNumber, out int number) || isNumber == "") - { - new Alert(Language.StringByID(R.MyInternationalizationString.Tip), - Language.StringByID(R.MyInternationalizationString.inputnumber), - Language.StringByID(R.MyInternationalizationString.Close)).Show(); - return; - } - - var vel = int.Parse(isNumber); - //if (logic.param.ContainsKey ("delay")) { - // logic.param.Remove ("delay"); - // logic.param.Add ("delay", vel * 10); - //} else { - // logic.param.Add ("delay", vel * 10); - //} - //btndelay.Text = isNumber + "s"; - window.Close(); - Automationview(refresview); - - - }; + HomePage.Instance.AddChidren(logicCommunalPage); + HomePage.Instance.PageIndex += 1; + logicCommunalPage.Show(() => { + logicnameBtn.Text = logic.LogicName; + Automationview(refresview, no); + }); }; @@ -2211,21 +2403,436 @@ ///鍒犻櫎 var del = new Button { - //TextID = MyInternationalizationString.Musicdel, - BackgroundColor = 0xFFFF0000, + BackgroundColor = ZigbeeColor.Current.LogicDelBlackColor1, Text = Language.StringByID(MyInternationalizationString.del), + TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, }; - logicrowlayout.AddRightView(del); + logicRowlayout.AddRightView(del); del.MouseUpEventHandler += (sender, e) => { - Common.Logic.LogicList.Remove(logic); - Automationview(refresview); - Logic.Send.DelLogic(logic.LogicId); - }; + var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Confirm, + Language.StringByID(MyInternationalizationString.doyouwanttodelete), + Language.StringByID(MyInternationalizationString.confrim)); + alert.Show(); + alert.ConfirmClickEvent += () => + { + Common.Logic.LogicList.Remove(logic); + Automationview(refresview, no); + Logic.Send.DelLogic(logic.LogicId); + }; + }; + var line = new Button + { + Y = fLayout.Height - 1, + Height = 1, + X = Application.GetRealWidth(58), + Width = Application.GetRealWidth(1080 - 58), + BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor, + }; + fLayout.AddChidren(line); } + } + /// <summary> + /// 鏄剧ず鑷姩鍖栬緭鍑哄姛鑳芥ā鍧楀浘鏍囩殑棰滆壊 + /// </summary> + /// <param name="logic"></param> + /// <param name="logicRowlayout"></param> + /// <param name="intvalue"></param> + private void StatusColor(Common.Logic logic, RowLayout logicRowlayout, int intvalue) + { + var logictimeBtn = new Button + { + Height = Application.GetRealHeight(58), + Width = logicRowlayout.Width - Application.GetRealWidth(58 + 12 + 350), + Y = Application.GetRealHeight(30), + X = Application.GetRealWidth(365), + TextAlignment = TextAlignment.CenterRight, + TextColor = ZigbeeColor.Current.LogicListWeekTextColor, + }; + logicRowlayout.AddChidren(logictimeBtn); + + ///鏄剧ず鎵ц鍛ㄦ湡 + switch (logic.TimeAttribute.Repeat) + { + ///0:鍙墽琛屼竴娆★紝鎵ц鍚嶪sEnable鍊肩疆;1,浠婂勾鍐呮墽琛�;2锛氭瘡澶╂墽琛�;3锛氭瘡鏈堟墽琛�;4锛氭瘡骞存墽琛�;5锛氬懆閲嶅銆� + case 0: + { + logictimeBtn.Text = Language.StringByID(MyInternationalizationString.executeonce); + }; break; + case 1: { }; break; + case 2: + { + logictimeBtn.Text = Language.StringByID(MyInternationalizationString.everyday); + }; break; + case 3: + { + + string len = "", value = ""; + var stringvalue = Convert.ToString(logic.TimeAttribute.MonthDate, 2); + var str = stringvalue.Insert(0, new string('0', 32 - stringvalue.Length)); + for (int j = 31; j >= 0; j--) + { + len += str.Substring(j, 1); + } + for (int j = 0; j < len.Length; j++) + { + var strvalue = len.Substring(j, 1); + if (strvalue == "1") + { + value += (j + 1).ToString() + ","; + } + } + logictimeBtn.Text = Language.StringByID(MyInternationalizationString.monthly) + value.TrimEnd(',') + Language.StringByID(MyInternationalizationString.day); + + }; break; + case 4: + { + + Dictionary<int, int> dictionary = new Dictionary<int, int>(); + ///鎵惧嚭鎵ц鐨勬湀浠藉拰澶╂暟 + if (logic.TimeAttribute.SelectMonDate.Count != 0) + { + for (int i = 0; i < logic.TimeAttribute.SelectMonDate.Count; i++) + { + var dayvalue = logic.TimeAttribute.SelectMonDate[i]; + if (dayvalue != 0) + { + dictionary.Add(i + 1, dayvalue); + } + } + } + if (dictionary.Count != 0 && dictionary.Count == 1) + { + string len = "", leng = ""; + int minvalue = 0, Maximum = 0; + foreach (var value in dictionary) + { + ///鍙栧嚭鏈堜唤 + var month = value.Key; + ///鍙栧嚭鏃ユ暟 + var day = value.Value; + var maxvalue = Convert.ToString(day, 2); + var str = maxvalue.Insert(0, new string('0', 32 - maxvalue.Length)); + for (int j = 31; j >= 0; j--) + { + len += str.Substring(j, 1); + } + + for (int j = 0; j < len.Length; j++) + { + var strvalue = len.Substring(j, 1); + if (strvalue == "1") + { + minvalue = j + 1; + break; + } + } + for (int j = 0; j < len.Length; j++) + { + var strvalue = len.Substring(j, 1); + if (strvalue == "1") + { + Maximum = j + 1; + } + } + + if (month.ToString().Length < 2) + { + leng = "0" + month.ToString(); + } + else + { + leng = month.ToString(); + } + if (minvalue == Maximum) + { + logictimeBtn.Text = Language.StringByID(MyInternationalizationString.everyyear) + leng + "/" + (minvalue.ToString().Length < 2 ? "0" + minvalue.ToString() : minvalue.ToString()); + } + else + { + logictimeBtn.Text = Language.StringByID(MyInternationalizationString.everyyear) + leng + "/" + (minvalue.ToString().Length < 2 ? "0" + minvalue.ToString() : minvalue.ToString()) + "-" + leng + "/" + (Maximum.ToString().Length < 2 ? "0" + Maximum.ToString() : Maximum.ToString()); + } + } + + } + else + { + int b = 0; + string stringtext = ""; + foreach (var value in dictionary) + { + string len = "", leng = ""; + int minvalue = 0, Maximum = 0; + ///鍙栧嚭鏈堜唤 + var month = value.Key; + ///鍙栧嚭鏃ユ暟 + var day = value.Value; + var maxvalue = Convert.ToString(day, 2); + var str = maxvalue.Insert(0, new string('0', 32 - maxvalue.Length)); + for (int j = 31; j >= 0; j--) + { + len += str.Substring(j, 1); + } + + + if (month.ToString().Length < 2) + { + leng = "0" + month.ToString(); + } + else + { + leng = month.ToString(); + } + + + + if (b == 0) + { + for (int j = 0; j < len.Length; j++) + { + var strvalue = len.Substring(j, 1); + if (strvalue == "1") + { + minvalue = j + 1; + break; + } + } + stringtext += leng + "/" + (minvalue.ToString().Length < 2 ? "0" + minvalue.ToString() : minvalue.ToString()) + "-"; + + } + + if (b == dictionary.Count - 1) + { + for (int j = 0; j < len.Length; j++) + { + var strvalue = len.Substring(j, 1); + if (strvalue == "1") + { + Maximum = j + 1; + } + } + stringtext += leng + "/" + (Maximum.ToString().Length < 2 ? "0" + Maximum.ToString() : Maximum.ToString()); + + } + b++; + } + logictimeBtn.Text = Language.StringByID(MyInternationalizationString.everyyear) + stringtext; + } + + }; break; + case 5: + { + string len = "", text = ""; + List<int> listvalueInt = new List<int>(); + listvalueInt.Clear(); + var maxvalue = Convert.ToString(logic.TimeAttribute.WeekDay, 2); + var str = maxvalue.Insert(0, new string('0', 8 - maxvalue.Length)); + for (int j = 7; j >= 0; j--) + { + len += str.Substring(j, 1); + } + + for (int j = 0; j < len.Length; j++) + { + var strvalue = len.Substring(j, 1); + if (strvalue == "1") + { + listvalueInt.Add(j + 1); + + + if ((j + 1) == 1) + { + text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.mon1) + ","; + //text += Language.StringByID(MyInternationalizationString.mon) + ","; + } + else if ((j + 1) == 2) + { + text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.tue1) + ","; + //text += Language.StringByID(MyInternationalizationString.tue) + ","; + } + else if ((j + 1) == 3) + { + text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.wed1) + ","; + //text += Language.StringByID(MyInternationalizationString.wed) + ","; + } + else if ((j + 1) == 4) + { + text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.thu1) + ","; + //text += Language.StringByID(MyInternationalizationString.thu) + ","; + } + else if ((j + 1) == 5) + { + text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.frl1) + ","; + //text += Language.StringByID(MyInternationalizationString.frl) + ","; + } + else if ((j + 1) == 6) + { + text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.sat1) + ","; + //text += Language.StringByID(MyInternationalizationString.sat) + ","; + } + else if ((j + 1) == 7) + { + text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.sun1) + ","; + //text += Language.StringByID(MyInternationalizationString.sun) + ","; + } + + + } + } + //鏆傛椂闅愯棌鎺夛紝闇�瑕佹樉绀哄懆鏈拰宸ヤ綔鏃ュ啀鏀惧紑锛� + //if (listvalueInt.Count == 5 && !listvalueInt.Contains(6) && !listvalueInt.Contains(7)) + //{ + // btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.workingday); + //} + //else if (listvalueInt.Count == 2 && listvalueInt.Contains(6) && listvalueInt.Contains(7)) + //{ + // btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.weekend); + //} + //else if (listvalueInt.Count == 7) + //{ + // btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.everyday); + //} + //else + //{ + // btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.week1) + text.Replace(Language.StringByID(MyInternationalizationString.week1), "").TrimEnd(','); + //} + logictimeBtn.Text = Language.StringByID(MyInternationalizationString.week1) + text.Replace(Language.StringByID(MyInternationalizationString.week1), "").TrimEnd(','); + //btndisplaycycle.Text = text.TrimEnd(','); + }; break; + } + + List<string> indexlist = new List<string>(); + List<string> iconIndexlist = new List<string>(); + for (int i = 0; i < logic.Actions.Count; i++) + { + var linkType = logic.Actions[i]["LinkType"].ToString(); + var d = indexlist.Find((value) => { return value == linkType; }); + if (d == null) + { + indexlist.Add(linkType); + } + } + if (indexlist.Contains("0")) + { + iconIndexlist.Add("0"); + } + if (indexlist.Contains("2")) + { + iconIndexlist.Add("2"); + } + if (indexlist.Contains("6")) + { + iconIndexlist.Add("6"); + } + if (indexlist.Contains("7")) + { + iconIndexlist.Add("7"); + } + for (int i = 0; i < iconIndexlist.Count; i++) + { + var iconindex = iconIndexlist[i]; + var typebjBtn = new FrameLayout + { + Width = Application.GetRealWidth(82), + Height = Application.GetRealHeight(82), + X = Application.GetRealWidth(58) + Application.GetRealWidth(12 + (12 + 82 + 45 + 12) * i), + Y = Application.GetRealHeight(58 + 30 + 30), + Radius = (uint)Application.GetRealHeight(41), + BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, + }; + logicRowlayout.AddChidren(typebjBtn); + + var typeIconBtn = new Button + { + Width = Application.GetRealWidth(58), + Height = Application.GetRealHeight(58), + Gravity = Gravity.Center, + + }; + typebjBtn.AddChidren(typeIconBtn); + + var connectIconBtn = new Button + { + Y = typebjBtn.Y + Application.GetRealHeight(35), + X = Application.GetRealWidth(58) + Application.GetRealWidth((12 + 82 + 12) + (12 + 45 + 82 + 12) * i), + Width = Application.GetRealWidth(48), + Height = Application.GetRealHeight(15), + UnSelectedImagePath = "ZigeeLogic/connect.png", + }; + logicRowlayout.AddChidren(connectIconBtn); + if (iconIndexlist.Count - 1 == i) + { + connectIconBtn.Visible = false; + } + switch (iconindex) + { + case "0": + { + if (intvalue == 1) + { + typeIconBtn.UnSelectedImagePath = "ZigeeLogic/function1.png"; + typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicFunction1Color; + } + else + { + typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nofunction.png"; + typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; + } + } + break; + case "2": + { + + if (intvalue == 1) + { + typeIconBtn.UnSelectedImagePath = "ZigeeLogic/scene1.png"; + typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicScene1Color; + } + else + { + typeIconBtn.UnSelectedImagePath = "ZigeeLogic/noscene.png"; + typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; + } + + } + break; + case "6": + { + if (intvalue == 1) + { + typeIconBtn.UnSelectedImagePath = "ZigeeLogic/security1.png"; + typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicSecurity1Color; + + } + else + { + typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nosecurity.png"; + typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; + } + + } + break; + case "7": + { + if (intvalue == 1) + { + typeIconBtn.UnSelectedImagePath = "ZigeeLogic/delay1.png"; + typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicDelay1Color; + } + else + { + typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nodelay.png"; + typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; + } + + } + break; + + } + } } #endregion @@ -2298,8 +2905,10 @@ { commonDeviceList.Add(common); } - } - + } + #endregion + + } } -- Gitblit v1.8.0