From 944b87b6bcccb095cd73f13f4410fb20faf48f74 Mon Sep 17 00:00:00 2001 From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local> Date: 星期三, 25 十二月 2019 11:21:06 +0800 Subject: [PATCH] 2019.12.25 --- ZigbeeApp/Shared/Phone/Device/Category/Category.cs | 3585 +++++++++++++++++++++++++++++++++-------------------------- 1 files changed, 1,990 insertions(+), 1,595 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/Category/Category.cs b/ZigbeeApp/Shared/Phone/Device/Category/Category.cs index 0ce62bb..05ddd7c 100644 --- a/ZigbeeApp/Shared/Phone/Device/Category/Category.cs +++ b/ZigbeeApp/Shared/Phone/Device/Category/Category.cs @@ -4,6 +4,10 @@ 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; namespace Shared.Phone.Device.Category { @@ -19,21 +23,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 +62,6 @@ /// 鍙充笂瑙掓坊鍔犳寜閽� /// </summary> private Device.CommonForm.SelectedStatuButton addBtn; - /// <summary> - /// 鍒嗘爮搴曢儴绾挎潯. - /// </summary> - private Button line; /// <summary> /// 缃戝叧 /// </summary> @@ -73,11 +81,11 @@ /// <summary> /// 褰撳墠鍔熻兘绫诲瀷鎸夐挳 /// </summary> - private Button tempFunctionTypeBtn; + private FunctionButton tempFunctionTypeBtn; /// <summary> /// 鍔熻兘绫诲瀷鎸夐挳 /// </summary> - private Button functionTypeIMG; + //private FunctionButton functionTypeIMG; /// <summary> /// 鍔熻兘绫诲瀷 /// </summary> @@ -85,8 +93,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<DeviceUI>> typeDeviceDic; + /// <summary> + /// 璁惧绫诲瀷鐨勫浘id + /// </summary> + private Dictionary<int, DeviceConcreteType> typeIdDic; + /// <summary> + /// dList + /// </summary> + private List<DeviceUI> devList; + /// <summary> + /// sceneList + /// </summary> + private List<SceneUI> sceneList; + /// <summary> + /// 褰撳墠閫変腑鎴块棿 + /// </summary> + private Common.Room curRoom; #endregion #region 鈼� 鎺ュ彛____________________________ @@ -133,6 +169,10 @@ { 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; @@ -149,245 +189,180 @@ { 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; - //璁板綍鍥炲鏃堕棿 + 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(deviceUI.GetDeviceStatu()); light.LastDateTime = DateTime.Now; - for (int j = 0; j < rowLayout.ChildrenCount; j++) - { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_Online) - { - (tempView as Button).IsSelected = light.IsOnline == 1; - } - } + } + if (common.DeviceStatusReport.CluterID == 3) + { + deviceUI.CommonDevice.IsOnline = 1; + deviceUI.CommonDevice.LastDateTime = DateTime.Now; } 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; - //璁板綍鍥炲鏃堕棿 + 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(deviceUI.GetDeviceStatu()); airSwitch.LastDateTime = DateTime.Now; - for (int j = 0; j < rowLayout.ChildrenCount; j++) - { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_Online) - { - (tempView as Button).IsSelected = airSwitch.IsOnline == 1; - } - } + } + if (common.DeviceStatusReport.CluterID == 3) + { + deviceUI.CommonDevice.IsOnline = 1; + deviceUI.CommonDevice.LastDateTime = DateTime.Now; } break; case DeviceType.WindowCoveringDevice: - if ((common as Rollershade).DeviceStatusReport.CluterID == 3) + + if (common.DeviceStatusReport.CluterID == 258) { - var rollerShape = deviceUI.CommonDevice as Rollershade; - //璁板綍鍥炲鏃堕棿 - rollerShape.LastDateTime = DateTime.Now; - rollerShape.IsOnline = 1; - for (int j = 0; j < rowLayout.ChildrenCount; j++) + if (common.DeviceStatusReport.AttriBute[0].AttributeId == 0) { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_Online) - { - (tempView as Button).IsSelected = rollerShape.IsOnline == 1; - } + //绐楀笜绫诲瀷 + var rollerShade = deviceUI.CommonDevice as Rollershade; + rollerShade.DeviceStatusReport = common.DeviceStatusReport; + rollerShade.WcdType = common.DeviceStatusReport.AttriBute[0].AttriButeData; + rollerShade.LastDateTime = DateTime.Now; } + if (common.DeviceStatusReport.AttriBute[0].AttributeId == 8) + { + var row = rowLayout.GetChildren(0) as CategoryFunctionForWinRow; + //绐楀笜鐧惧垎姣� + var rollerShade = deviceUI.CommonDevice as Rollershade; + rollerShade.DeviceStatusReport = common.DeviceStatusReport; + rollerShade.WcdCurrentPositionLiftPercentage = common.DeviceStatusReport.AttriBute[0].AttriButeData; + row.SetStatuText($"{Language.StringByID(R.MyInternationalizationString.Current)} { deviceUI.GetDeviceStatu()}"); + row.IsSelected = rollerShade.WcdCurrentPositionLiftPercentage != 0; + rollerShade.LastDateTime = DateTime.Now; + } + } + if (common.DeviceStatusReport.CluterID == 3) + { + deviceUI.CommonDevice.IsOnline = 1; + deviceUI.CommonDevice.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) - { - return; - } + var attriButeList = common.DeviceStatusReport.AttriBute; var ac = deviceUI.CommonDevice as ZigBee.Device.AC; - ac.DeviceStatusReport = (common as ZigBee.Device.AC).DeviceStatusReport; - switch (attriButeList[0].AttributeId) + ac.DeviceStatusReport = common.DeviceStatusReport; + foreach(var attList in attriButeList) { - 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) + 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 4099: + var value = Convert.ToString(attList.AttriButeData, 2).PadLeft(16, '0'); + var modeStr = value.Substring(value.Length - 5, 5); + for (int j = 0; j < modeStr.Length; j++) { - continue; + ac.listSupportMode[j] = Convert.ToInt32(modeStr[j]) == 49 ? 1 : 0; } - if (tempView.Tag.ToString() == deviceStatus_OnOffStatus) - { - if (ac.currentSystemMode == 0) - { - (tempView as Button).IsSelected = false; - } - else - { - (tempView as Button).IsSelected = true; - } - } - } - break; + break; + case 4097: + //杩囪檻缃戞竻娲楁爣蹇�:42 + ac.CleanStatu = attList.AttriButeData == 42; + break; + } } - + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + row.IsSelected = ac.currentSystemMode != 0; + row.SetStatuText(deviceUI.GetDeviceStatu()); } - if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 3) + + if (common.DeviceStatusReport.CluterID == 514) + { + var ac = deviceUI.CommonDevice as ZigBee.Device.AC; + var attriButeList = common.DeviceStatusReport.AttriBute; + ac.DeviceStatusReport = common.DeviceStatusReport; + foreach(var attList in attriButeList) + { + switch (attList.AttributeId) + { + 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(deviceUI.GetDeviceStatu()); + } + + if (common.DeviceStatusReport.CluterID == 3) { var ac = deviceUI.CommonDevice as ZigBee.Device.AC; ac.IsOnline = 1; - //璁板綍鍥炲鏃堕棿 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_Online) - { - (tempView as Button).IsSelected = ac.IsOnline == 1; - } - } } 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 tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_OnOffStatus) - { - //璁板綍銆佹洿鏂扮姸鎬� - if (dimmableLight.DeviceStatusReport.AttriBute == null || dimmableLight.DeviceStatusReport.AttriBute.Count == 0) - { - return; - } - dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData; - (tempView as Button).IsSelected = dimmableLight.OnOffStatus == 1; - //璁板綍鍥炲鏃堕棿 - dimmableLight.LastDateTime = DateTime.Now; - } - } - } - if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 3) - { - var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight; - dimmableLight.IsOnline = 1; - //璁板綍鍥炲鏃堕棿 + var dimmableLight = deviceUI.CommonDevice 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(deviceUI.GetDeviceStatu()); dimmableLight.LastDateTime = DateTime.Now; - for (int j = 0; j < rowLayout.ChildrenCount; j++) - { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_Online) - { - (tempView as Button).IsSelected = dimmableLight.IsOnline == 1; - } - } + } + if (common.DeviceStatusReport.CluterID == 8) + { + var dimmableLight = deviceUI.CommonDevice 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(deviceUI.GetDeviceStatu()); + dimmableLight.LastDateTime = DateTime.Now; + } + if (common.DeviceStatusReport.CluterID == 3) + { + deviceUI.CommonDevice.IsOnline = 1; + deviceUI.CommonDevice.LastDateTime = DateTime.Now; } break; } @@ -420,77 +395,67 @@ switch (deviceUI.CommonDevice.Type) { case DeviceType.OnOffOutput: - var light = deviceUI.CommonDevice as ToggleLight; - light.IsOnline = (common as ToggleLight).IsOnline; - //璁板綍鍥炲鏃堕棿 - light.LastDateTime = DateTime.Now; - for (int j = 0; j < rowLayout.ChildrenCount; j++) - { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_Online) - { - (tempView as Button).IsSelected = light.IsOnline == 1; - } - } + deviceUI.CommonDevice.IsOnline = common.IsOnline; + deviceUI.CommonDevice.LastDateTime = DateTime.Now; break; + case DeviceType.AirSwitch: - var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch; - airSwitch.IsOnline = (common as ZigBee.Device.AirSwitch).IsOnline; - //璁板綍鍥炲鏃堕棿 - airSwitch.LastDateTime = DateTime.Now; - for (int j = 0; j < rowLayout.ChildrenCount; j++) - { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_Online) - { - (tempView as Button).IsSelected = airSwitch.IsOnline == 1; - } - } + deviceUI.CommonDevice.IsOnline = common.IsOnline; + deviceUI.CommonDevice.LastDateTime = DateTime.Now; break; + case DeviceType.WindowCoveringDevice: - var rollerShape = deviceUI.CommonDevice as Rollershade; - //璁板綍鍥炲鏃堕棿 - rollerShape.LastDateTime = DateTime.Now; - rollerShape.IsOnline = (common as Rollershade).IsOnline; - for (int j = 0; j < rowLayout.ChildrenCount; j++) - { - var tempView = rowLayout.GetChildren(j); - if (tempView.Tag == null) - { - continue; - } - if (tempView.Tag.ToString() == deviceStatus_Online) - { - (tempView as Button).IsSelected = rollerShape.IsOnline == 1; - } - } + deviceUI.CommonDevice.LastDateTime = DateTime.Now; + deviceUI.CommonDevice.IsOnline = common.IsOnline; + break; + + case DeviceType.DimmableLight: + deviceUI.CommonDevice.LastDateTime = DateTime.Now; + deviceUI.CommonDevice.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.CommonDevice.LastDateTime = DateTime.Now; + deviceUI.CommonDevice.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 = rowLayout.Tag as DeviceUI; + if (deviceUI == null || deviceUI.CommonDevice == null) + { + continue; + } + if (deviceUI.CommonDevice.DeviceAddr != common.DeviceAddr || deviceUI.CommonDevice.DeviceEpoint != common.DeviceEpoint) + { + continue; + } + switch (deviceUI.CommonDevice.Type) + { + case DeviceType.IASZone: + //寮�鍏冲姛鑳� + var ias = common as IASZone; + var iAS = deviceUI.CommonDevice as ZigBee.Device.IASZone; + iAS.iASInfo = ias.iASInfo; + var row = rowLayout.GetChildren(0) as CategoryFunctionRow; + row.IsSelected = iAS.iASInfo?.Alarm1 == 1; + row.SetStatuText(deviceUI.GetDeviceStatu()); + iAS.LastDateTime = DateTime.Now; break; } } @@ -520,8 +485,9 @@ /// </summary> public Category() { - BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor; + BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor; instance = this; + ZbGateway.StatusList.Add(this); } /// <summary> @@ -530,160 +496,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 +641,35 @@ 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); + RefreshBodyView(); + }; } /// <summary> @@ -714,7 +682,6 @@ functionBtn.IsSelected = true; sceneBtn.IsSelected = false; automationBtn.IsSelected = false; - line.X = functionBtn.X; addBtn.Visible = false; RefreshBodyView(); } @@ -729,7 +696,6 @@ functionBtn.IsSelected = false; sceneBtn.IsSelected = true; automationBtn.IsSelected = false; - line.X = sceneBtn.X; addBtn.Visible = true; RefreshBodyView(); } @@ -740,11 +706,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,12 +750,6 @@ 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(); } @@ -803,6 +767,15 @@ UserView.HomePage.Instance.PageIndex += 1; addLogicPage.Show(); } + /// <summary> + /// HidenFloor + /// </summary> + /// <param name="statu"></param> + private void HidenFloor(bool statu) + { + selectFloorBtn.Visible = !statu; + floorBtn.Visible = !statu; + } #endregion @@ -812,18 +785,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<DeviceUI>> { }; + typeIdDic = new Dictionary<int, DeviceConcreteType> { }; + } + + /// <summary> + /// RefreshData + /// </summary> + private void RefreshData(Common.Room room) + { + devList = room.DeviceUIList; + sceneList = room.SceneUIList; + typeDeviceDic.Clear(); + typeIdDic.Clear(); + foreach (var device in devList) + { + var info = Common.LocalDevice.Current.GetNotHdlMyDeviceEnumInfo(new List<CommonDevice> { device.CommonDevice }); + if (info.BeloneType == DeviceBeloneType.A骞叉帴鐐� || info.BeloneType == DeviceBeloneType.A涓户鍣�) + { + continue; + } + if (typeDeviceDic.ContainsKey(info.BeloneTextId) == false) + { + var sameDevList = new List<DeviceUI> { }; + sameDevList.Add(device); + typeDeviceDic[info.BeloneTextId] = sameDevList; + } + else + { + typeDeviceDic[info.BeloneTextId].Add(device); + } + typeIdDic[info.BeloneTextId] = info.ConcreteType; } } @@ -835,67 +850,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.GetDeviceBeloneIcon(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 +978,788 @@ /// <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) + 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); - } - } - } - foreach (var deviceUI in sameTypeList) - { - //鍒犻櫎璁惧 - EventHandler<MouseEventArgs> delEvent = (delSender, delE) => - { - 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) => - { - if (e2) + try { - Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.CommonDevice, false); - deviceListScrolView.RemoveViewByTag((delSender as Button).Tag); - sameTypeList.Remove(deviceUI); - if (sameTypeList.Count == 0) + //鍒犻櫎璁惧 + EventHandler<MouseEventArgs> delEvent = (delSender, delE) => { - RefreshBodyView(); + var alert = new CustomAlert(); + AddChidren(alert); + alert.Show(Language.StringByID(R.MyInternationalizationString.DeleteFunction)); + alert.ResultEventHandler += (e2) => + { + if (e2) + { + if(curRoom.IsLove) + { + Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.FileName); + deviceListScrolView.RemoveViewByTag((delSender as Button).Tag); + sameTypeList.Remove(deviceUI); + } + else + { + Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.CommonDevice); + 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 == DeviceType.OnOffOutput) + { + //鐏� + var light = deviceUI.CommonDevice 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.CommonDevice); + }); + } + else + { + //闃叉鐭椂闂村唴澶氭璇诲彇鐘舵�� + if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds) + { + ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI.CommonDevice); + } + } + }) + { IsBackground = true }.Start(); + + var deviceTypeRowLayout = new RowLayout() + { + Height = Application.GetRealHeight(129 + 35), + LineColor = ZigbeeColor.Current.GXCBackgroundColor, + Tag = deviceUI + }; + deviceListScrolView.AddChidren(deviceTypeRowLayout); + + var deviceRow = new CategoryFunctionRow(0, 35); + deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); + //deviceRow.SetOnLineStatu(light.IsOnline == 1); + deviceRow.SetStatuText(deviceUI.GetDeviceStatu()); + deviceRow.IsSelected = light.OnOffStatus == 1; + deviceTypeRowLayout.AddChidren(deviceRow); + + deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => + { + zbGateway = deviceUI.CommonDevice.Gateway; + sendedControlCommand = false; + zbGateway.ReportAction += UpdateDeviceControllStatu; + AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice); + (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(deviceUI.GetDeviceStatu()); + //鎺у埗寤舵椂鍥炶皟 + DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => + { + if (Parent == null) + { + return; + } + RemoveUpdateControlDeviceStatuAction(zbGateway); + if (sendedControlCommand == false) + { + DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); + } + }); + }; + + deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) => + { + if (deviceUI.CommonDevice.DfunctionType == DeviceFunctionType.A寮�鍏�) + { + var lightControl = new Phone.Device.Light.OnOffControl(); + UserView.HomePage.Instance.AddChidren(lightControl); + UserView.HomePage.Instance.PageIndex += 1; + //lightControl.action = RefreshBodyView; + lightControl.Show(deviceUI, curRoom); + } + else if (deviceUI.CommonDevice.DfunctionType == DeviceFunctionType.A鎻掑骇) + { + var lightControl = new Phone.Device.Light.PlugControl(); + UserView.HomePage.Instance.AddChidren(lightControl); + UserView.HomePage.Instance.PageIndex += 1; + //lightControl.action = RefreshBodyView; + lightControl.Show(deviceUI, curRoom); + } + else + { + var lightControl = new Phone.Device.Light.LightControl(); + UserView.HomePage.Instance.AddChidren(lightControl); + UserView.HomePage.Instance.PageIndex += 1; + //lightControl.action = RefreshBodyView; + lightControl.Show(deviceUI, curRoom); + } + }; + + var editBtn = new CommonForm.RowLayoutEditButton() + { + Tag = deviceUI, + Radius = 0 + }; + var delBtn = new CommonForm.RowLayoutDeleteButton() + { + Tag = deviceUI, + Radius = 0 + }; + if (curRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(editBtn); + editBtn.MouseUpEventHandler += deviceDetailHandler; + deviceTypeRowLayout.AddRightView(delBtn); + delBtn.MouseUpEventHandler += delEvent; + } + } + } + else if (deviceUI.CommonDevice.Type == DeviceType.AirSwitch) + { + //绌烘皵寮�鍏� + var airSwitch = deviceUI.CommonDevice 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.CommonDevice); + }); + } + else + { + if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) + { + ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI.CommonDevice); + } + } + }) + { IsBackground = true }.Start(); + + var deviceTypeRowLayout = new RowLayout() + { + Height = Application.GetRealHeight(129 + 35), + LineColor = ZigbeeColor.Current.GXCBackgroundColor, + Tag = deviceUI + }; + deviceListScrolView.AddChidren(deviceTypeRowLayout); + + var deviceRow = new CategoryFunctionRow(0, 35); + deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); + //deviceRow.SetOnLineStatu(airSwitch.IsOnline == 1); + deviceRow.IsSelected = airSwitch.OnOffStatus == 1; + deviceRow.SetStatuText(deviceUI.GetDeviceStatu()); + deviceTypeRowLayout.AddChidren(deviceRow); + + deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => + { + zbGateway = deviceUI.CommonDevice.Gateway; + sendedControlCommand = false; + zbGateway.ReportAction += UpdateDeviceControllStatu; + AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice); + (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(deviceUI.GetDeviceStatu()); + //鎺у埗寤舵椂鍥炶皟 + DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => + { + if (Parent == null) + { + return; + } + RemoveUpdateControlDeviceStatuAction(zbGateway); + if (sendedControlCommand == false) + { + DeviceUI.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.action = RefreshBodyView; + lightControl.Show(deviceUI, curRoom); + }; + + var editBtn = new CommonForm.RowLayoutEditButton() + { + Tag = deviceUI, + Radius = 0 + }; + var delBtn = new CommonForm.RowLayoutDeleteButton() + { + Tag = deviceUI, + Radius = 0 + }; + if (curRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(editBtn); + editBtn.MouseUpEventHandler += deviceDetailHandler; + deviceTypeRowLayout.AddRightView(delBtn); + delBtn.MouseUpEventHandler += delEvent; + } + } + } + else if (deviceUI.CommonDevice.Type == DeviceType.DimmableLight) + { + //璋冨厜鐏� + var dimmableLight = deviceUI.CommonDevice 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.CommonDevice); + }); + } + else + { + if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) + { + ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(deviceUI.CommonDevice); + } + } + }) + { IsBackground = true }.Start(); + + var deviceTypeRowLayout = new RowLayout() + { + Height = Application.GetRealHeight(129 + 35), + LineColor = ZigbeeColor.Current.GXCBackgroundColor, + Tag = deviceUI + }; + deviceListScrolView.AddChidren(deviceTypeRowLayout); + + var deviceRow = new CategoryFunctionRow(0, 35); + deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); + //deviceRow.SetOnLineStatu(dimmableLight.IsOnline == 1); + deviceRow.SetStatuText(deviceUI.GetDeviceStatu()); + deviceRow.IsSelected = dimmableLight.OnOffStatus == 1; + deviceTypeRowLayout.AddChidren(deviceRow); + + deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => + { + zbGateway = deviceUI.CommonDevice.Gateway; + sendedControlCommand = false; + zbGateway.ReportAction += UpdateDeviceControllStatu; + AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice); + (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(deviceUI.GetDeviceStatu()); + //鎺у埗寤舵椂鍥炶皟 + DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => + { + if (Parent == null) + { + return; + } + RemoveUpdateControlDeviceStatuAction(zbGateway); + if (sendedControlCommand == false) + { + DeviceUI.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.action = RefreshBodyView; + dimmableLightControl.Show(deviceUI, curRoom); + }; + + var editBtn = new CommonForm.RowLayoutEditButton() + { + Tag = deviceUI, + Radius = 0 + }; + var delBtn = new Device.CommonForm.RowLayoutDeleteButton() + { + Tag = deviceUI, + Radius = 0 + }; + if (curRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(editBtn); + editBtn.MouseUpEventHandler += deviceDetailHandler; + deviceTypeRowLayout.AddRightView(delBtn); + delBtn.MouseUpEventHandler += delEvent; + } + } + } + else if (deviceUI.CommonDevice.Type == DeviceType.Thermostat) + { + //绌鸿皟 + var ac = deviceUI.CommonDevice 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.CommonDevice); + }); + } + else + { + //闃叉鐭椂闂村唴澶氭璇诲彇璁惧鐘舵�� + if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) + { + ReadDeviceAttributeLogic.Instance.SendACStatuComand(deviceUI.CommonDevice); + } + } + }) + { IsBackground = true }.Start(); + + var deviceTypeRowLayout = new RowLayout() + { + Height = Application.GetRealHeight(129 + 35), + LineColor = ZigbeeColor.Current.GXCBackgroundColor, + Tag = deviceUI + }; + deviceListScrolView.AddChidren(deviceTypeRowLayout); + + var deviceRow = new CategoryFunctionRow(0, 35); + deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); + //deviceRow.SetOnLineStatu(ac.IsOnline == 1); + deviceRow.SetStatuText(deviceUI.GetDeviceStatu()); + deviceRow.IsSelected = ac.currentSystemMode != 1; + deviceTypeRowLayout.AddChidren(deviceRow); + + deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => + { + zbGateway = deviceUI.CommonDevice.Gateway; + sendedControlCommand = false; + zbGateway.ReportAction += UpdateDeviceControllStatu; + AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice); + + (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(deviceUI.GetDeviceStatu()); + //鎺у埗寤舵椂鍥炶皟 + DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => + { + if (Parent == null) + { + return; + } + RemoveUpdateControlDeviceStatuAction(zbGateway); + if (sendedControlCommand == false) + { + DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); + } + }); + }; + + var editBtn = new CommonForm.RowLayoutEditButton() + { + Tag = deviceUI, + Radius = 0 + }; + var delBtn = new CommonForm.RowLayoutDeleteButton() + { + Tag = deviceUI, + Radius = 0 + }; + if (curRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(editBtn); + editBtn.MouseUpEventHandler += deviceDetailHandler; + deviceTypeRowLayout.AddRightView(delBtn); + delBtn.MouseUpEventHandler += delEvent; + } + + 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; + //rollerShadeControl.action = RefreshBodyView; + acControl.Show(deviceUI, curRoom); + }; + } + } + else if (deviceUI.CommonDevice.Type == DeviceType.WindowCoveringDevice) + { + //鍗峰笜 + var rollerShade = deviceUI.CommonDevice 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.CommonDevice); + }); + } + else + { + //闃叉鐭椂闂村唴澶氭璇诲彇 + if ((DateTime.Now - rollerShade.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) + { + ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(deviceUI.CommonDevice); + } + } + }) + { IsBackground = true }.Start(); + + var deviceTypeRowLayout = new RowLayout() + { + Height = Application.GetRealHeight(129 + 35), + LineColor = ZigbeeColor.Current.GXCBackgroundColor, + Tag = deviceUI + }; + deviceListScrolView.AddChidren(deviceTypeRowLayout); + + var deviceRow = new CategoryFunctionForWinRow(0, 35); + deviceRow.Init(deviceUI); + deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); + //deviceRow.SetOnLineStatu(rollerShade.IsOnline == 1); + deviceRow.SetStatuText(deviceUI.GetDeviceStatu()); + 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(); + } + + var editBtn = new CommonForm.RowLayoutEditButton() + { + Tag = deviceUI, + Radius = 0 + }; + var delBtn = new Device.CommonForm.RowLayoutDeleteButton() + { + Tag = deviceUI, + Radius = 0 + }; + if (curRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(editBtn); + editBtn.MouseUpEventHandler += deviceDetailHandler; + deviceTypeRowLayout.AddRightView(delBtn); + delBtn.MouseUpEventHandler += delEvent; + } + + 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.action = RefreshBodyView; + rollerShadeControl.Show(deviceUI, curRoom); + }; + } + } + else if (deviceUI.CommonDevice.Type == DeviceType.DoorLock) + { + var deviceTypeRowLayout = new RowLayout() + { + Height = Application.GetRealHeight(129 + 35), + LineColor = ZigbeeColor.Current.GXCBackgroundColor, + Tag = deviceUI + }; + deviceListScrolView.AddChidren(deviceTypeRowLayout); + + var deviceRow = new CategoryFunctionRow(0, 35); + deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); + //deviceRow.SetOnLineStatu(deviceUI.CommonDevice.IsOnline == 1); + deviceRow.SetStatuText(deviceUI.GetDeviceStatu()); + deviceRow.HideSwitchBtn(true); + deviceTypeRowLayout.AddChidren(deviceRow); + + deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) => + { + var userDoorLockPage = new UserDoorLockPage(curRoom, deviceUI); + HomePage.Instance.AddChidren(userDoorLockPage); + HomePage.Instance.PageIndex += 1; + userDoorLockPage.Show(); + }; + + var editBtn = new CommonForm.RowLayoutEditButton() + { + Tag = deviceUI + }; + var delBtn = new Device.CommonForm.RowLayoutDeleteButton() + { + Tag = deviceUI + }; + if (curRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(editBtn); + editBtn.MouseUpEventHandler += deviceDetailHandler; + deviceTypeRowLayout.AddRightView(delBtn); + delBtn.MouseUpEventHandler += delEvent; + } + } + else if (deviceUI.CommonDevice.Type == DeviceType.IASZone) + { + var deviceTypeRowLayout = new RowLayout() + { + Height = Application.GetRealHeight(129 + 35), + LineColor = ZigbeeColor.Current.GXCBackgroundColor, + Tag = deviceUI + }; + deviceListScrolView.AddChidren(deviceTypeRowLayout); + + var deviceRow = new CategoryFunctionRow(0, 35); + deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); + deviceRow.SetStatuText(deviceUI.GetDeviceStatu()); + deviceRow.IsSelected = (deviceUI.CommonDevice as IASZone).iASInfo?.Alarm1 == 1; + deviceRow.HideSwitchBtn(true); + deviceTypeRowLayout.AddChidren(deviceRow); + + deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) => + { + var userDoorLockPage = new UserDoorLockPage(curRoom, deviceUI); + HomePage.Instance.AddChidren(userDoorLockPage); + HomePage.Instance.PageIndex += 1; + userDoorLockPage.Show(); + }; + + var editBtn = new CommonForm.RowLayoutEditButton() + { + Tag = deviceUI + }; + var delBtn = new Device.CommonForm.RowLayoutDeleteButton() + { + Tag = deviceUI + }; + if (curRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(editBtn); + editBtn.MouseUpEventHandler += deviceDetailHandler; + deviceTypeRowLayout.AddRightView(delBtn); + delBtn.MouseUpEventHandler += delEvent; + } + } + else + { + var deviceTypeRowLayout = new RowLayout() + { + Height = Application.GetRealHeight(129 + 35), + LineColor = ZigbeeColor.Current.GXCBackgroundColor, + Tag = deviceUI + }; + deviceListScrolView.AddChidren(deviceTypeRowLayout); + + var deviceRow = new CategoryFunctionRow(0, 35); + deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); + deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); + //deviceRow.SetOnLineStatu(deviceUI.CommonDevice.IsOnline == 1); + deviceRow.SetStatuText(deviceUI.GetDeviceStatu()); + deviceRow.HideSwitchBtn(true); + deviceTypeRowLayout.AddChidren(deviceRow); + + var editBtn = new CommonForm.RowLayoutEditButton() + { + Tag = deviceUI + }; + var delBtn = new Device.CommonForm.RowLayoutDeleteButton() + { + Tag = deviceUI + }; + if (curRoom.IsSharedRoom == false) + { + deviceTypeRowLayout.AddRightView(editBtn); + editBtn.MouseUpEventHandler += deviceDetailHandler; + deviceTypeRowLayout.AddRightView(delBtn); + delBtn.MouseUpEventHandler += delEvent; + } } } - }; - }; - 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; - }; + catch + { - if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput) - { - //鐏� - var light = deviceUI.CommonDevice as ZigBee.Device.ToggleLight; - //琛ヤ笂闈炶繙绋� - if (light.Gateway == null) - { - continue; - } - 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; - } + }); + }) + { IsBackground = true }.Start(); } } /// <summary> - /// 鎻愮ず娌℃湁鍔熻兘 + /// AddRoomView /// </summary> - private void ShowNoFunctionTip() + private void AddRoomView() { - var noFunctionTip = new Button() + var roomFL = new HorizontalScrolViewLayout() { - Height = Application.GetMinRealAverage(200), - TextID = R.MyInternationalizationString.NoFunction, - TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor, - TextAlignment = TextAlignment.Center, - Gravity = Gravity.CenterVertical + 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); + foreach (var room in Common.Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom()) + { + 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.IsLove) + { + roomBtn.IsSelected = true; + this.curRoom = room; + 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; + this.curRoom = room; + if (sceneBtn.IsSelected) + { + RefreshScene(room); + } + else + { + RefreshFunction(room); + } + }; + } } #endregion @@ -1644,15 +1770,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,222 +1789,12 @@ { 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(obj.Split(' ')[0]); - sceneRoomUI.room.Save(); - RefreshBodyView(); - return; - } - } - }, Language.StringByID(R.MyInternationalizationString.Confrim), tList[(int)(sender as CommonForm.RowLayoutEditButton).Tag]); - }; + var sceneView = new SceneCategoryView(0, 0); + sceneScrolView.AddChidren(sceneView); + sceneView.Init(scene, room); + GetDelayScene(sceneScrolView); } } } @@ -1886,18 +1804,96 @@ /// </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); } + /// <summary> + /// GetDelayScene + /// </summary> + /// <param name="scrolViewLayout"></param> + private async void GetDelayScene(VerticalScrolViewLayout scrolViewLayout) + { + 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; + + for (int i = 0; scrolViewLayout != null && i < scrolViewLayout.ChildrenCount; i++) + { + var sceneView = scrolViewLayout.GetChildren(i) as SceneCategoryView; + foreach (var delayScenesListResponseInfo in delayList) + { + if (delayScenesListResponseInfo.ScenesId == sceneView.scene.Id) + { + sceneView.scene.RemainTime = delayScenesListResponseInfo.RemainTime; + var remainTime= delayScenesListResponseInfo.RemainTime; + if (remainTime > 0) + { + new System.Threading.Thread(() => + { + while (remainTime-- > 0) + { + System.Threading.Thread.Sleep(1000); + Application.RunOnMainThread(() => + { + sceneView.SetTimeText(CommonFormResouce.GetTimeString(remainTime)); + }); + } + Application.RunOnMainThread(() => + { + sceneView.scene.RemainTime = 0; + sceneView.SetTimeImage(); + }); + }) + { IsBackground = true }.Start(); + } + break; + } + } + } + } + + /// <summary> + /// GetExecScene + /// </summary> + /// <param name="scrolViewLayout"></param> + private void GetExecScene(VerticalScrolViewLayout scrolViewLayout) + { + new System.Threading.Thread(() => + { + + }) + { IsBackground = true }.Start(); + } #endregion #region 鈼� 鑷姩鍖朹_________________________ @@ -1905,305 +1901,286 @@ /// <summary> /// 鑷姩鍖� /// </summary> - public async void ShowAutotion() - { - var logicScrolView = new VerticalScrolViewLayout { }; - functionSceneBodyView.AddChidren(logicScrolView); + private async 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(25, HDLUtils.RectCornerTopLeft | 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); - //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); - //} + 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 VerticalScrolViewLayout + { + Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30), + BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, + X = Application.GetRealWidth(58), + //Radius = (uint)Application.GetRealHeight(50), + Y = scenehorizontalScrol.Bottom, + }; + functionSceneAutoBodyView.AddChidren(logicScrolView); + logicScrolView.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerBottomLeft); + + + recommendswitchBtn.MouseUpEventHandler += (sender, e) => + { + int Yheight = 0; + recommendswitchBtn.IsSelected = !recommendswitchBtn.IsSelected; + scenehorizontalScrol.RemoveAll(); + if (recommendswitchBtn.IsSelected) + { + 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;// Language.StringByID(MyInternationalizationString.automation1); + var addLogicPage = new Logic.AddLogicPage(); + HomePage.Instance.AddChidren(addLogicPage); + HomePage.Instance.PageIndex += 1; + addLogicPage.Show(); + } + else + { + + Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text; + 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 + { + 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); + }; 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); CommonPage.Loading.Hide(); + } /// <summary> /// 鑷姩鍖栧垪琛ㄧ晫闈� /// </summary> /// <param name="refresview">Refresview.</param> - public async void Automationview(VerticalScrolViewLayout refresview) + private async void Automationview(VerticalScrolViewLayout refresview) { refresview.RemoveAll(); foreach (var logic in Common.Logic.LogicList) { - var logicrowlayout = new RowLayout - { - Height = Application.GetRealHeight(180), - LineColor = ZigbeeColor.Current.LogicLineColor, - }; - refresview.AddChidren(logicrowlayout); - var btnname = new Button + + var logicRowlayout = new RowLayout { - //Text = "閫昏緫涓�", + Height = Application.GetRealHeight(190 + 30), + Width = Application.GetRealWidth(1080), + LineColor = ZigbeeColor.Current.LogicBackgroundColor, + BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, + }; + refresview.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 + 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); }); }; @@ -2211,23 +2188,439 @@ ///鍒犻櫎 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 Alert(Language.StringByID(MyInternationalizationString.tip), Language.StringByID(MyInternationalizationString.doyouwanttodelete), + Language.StringByID(MyInternationalizationString.cancel), Language.StringByID(MyInternationalizationString.confrim)); + alert.ResultEventHandler += (sender1, e1) => + { + if (e1) + { + Common.Logic.LogicList.Remove(logic); + Automationview(refresview); + Logic.Send.DelLogic(logic.LogicId); + } + }; + alert.Show(); + }; + var line = new Button + { + Y = Application.GetRealHeight(215), + Height = Application.GetRealHeight(5), + Width = Application.GetRealWidth(1080 - 58), + BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor, + X = Application.GetRealWidth(58), + }; + logicRowlayout.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 + 58), + 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 #region 鈼� 鎺у埗鐘舵�乢________________________ @@ -2301,5 +2694,7 @@ } #endregion + + } } -- Gitblit v1.8.0