using System; using System.Collections.Generic; using System.Globalization; using Shared.Common; using Shared.Phone.Device.CommonForm; using Shared.Phone.Device.Room; using static ZigBee.Device.Scene; namespace Shared.Phone.Device.Category { public class CategoryAddScene : FrameLayout { #region ◆ 变量____________________________ /// /// bodyFrameLayout /// private FrameLayout bodyFrameLayout; #endregion public static string ImagePath; public static string SceneText; public static Shared.Common.Room CurrentRoom; public static List sceneTargetDevicesList = new List { }; /// /// 记录编辑前的设备列表 /// public static List beforeSceneTargetDevicesList = new List { }; public static bool Modify = false; public static SceneUI ModifySceneUI = null; /// /// 图片来源 0--本地图库 1--拍照 2--系统图库 /// public static int IconType = 0; /// /// 添加目标后的展示列表 /// public VerticalScrolViewLayout TargetListScrolView; /// /// 添加的执行目标的行高 /// private readonly int TargetListScrolView_RowHeight = 170; /// /// The confirm button. /// private CommonForm.CompleteButton confirmBtn; /// /// 确定按钮最开始的坐标 /// private readonly int ConfirmButton_Y = CommonPage.AppRealHeight - 300; /// /// 确定按钮下移后的坐标 /// private readonly int ConfirmButton_Change_Y = CommonPage.AppRealHeight - 130; /// /// 记录更改前的房间 /// private Shared.Common.Room oldRoom; public CategoryAddScene() { BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor; Tag = "categoryAddScene"; } public override void RemoveFromParent() { Category.instance?.RefreshBodyView(); base.RemoveFromParent(); } /// ///刷新添加目标后的展示列表 /// public void RefreshTargetListView() { TargetListScrolView.RemoveAll(); if (sceneTargetDevicesList.Count >= 2) { TargetListScrolView.Height = Application.GetRealHeight(TargetListScrolView_RowHeight * 3); confirmBtn.Y = Application.GetRealHeight(ConfirmButton_Change_Y); } else { TargetListScrolView.Height = Application.GetRealHeight(TargetListScrolView_RowHeight * 2); confirmBtn.Y = Application.GetRealHeight(ConfirmButton_Y); } if (sceneTargetDevicesList.Count > 0) { foreach (var targetDevice in sceneTargetDevicesList) { string devImgPath = string.Empty; string devNameText = string.Empty; if (targetDevice.Type == 0) { if (targetDevice.DeviceUI == null || targetDevice.DeviceUI.CommonDevice == null) continue; devImgPath = targetDevice.DeviceUI.IconPath; devNameText = targetDevice.DeviceUI.CommonDevice.DeviceEpointName; } else if (targetDevice.Type == 1) { devImgPath = "Item/Timer.png"; devNameText = $"{targetDevice.DelayTime} {Language.StringByID(R.MyInternationalizationString.Second)}"; } else if (targetDevice.Type == 2) { devImgPath = "Item/Scene.png"; devNameText = targetDevice.SceneName; } var targetRowLayout = new RowLayout() { LineColor = ZigbeeColor.Current.GXCLineColor, Height = Application.GetRealHeight(170) }; TargetListScrolView.AddChidren(targetRowLayout); var targetFL = new FrameLayout() { }; targetRowLayout.AddChidren(targetFL); var devIMG = new Button() { X = Application.GetRealWidth(CommonPage.XLeft), Width = Application.GetMinRealAverage(110), Height = Application.GetMinRealAverage(110), UnSelectedImagePath = devImgPath, Gravity = Gravity.CenterVertical }; targetRowLayout.AddChidren(devIMG); var devName = new Button() { X = devIMG.Right, Width = Application.GetRealWidth(500), Height = Application.GetRealHeight(100), Gravity = Gravity.CenterVertical, Text = devNameText, TextColor = ZigbeeColor.Current.GXCTextBlackColor, TextAlignment = TextAlignment.CenterLeft }; targetRowLayout.AddChidren(devName); var devTimer = new Button() { X = targetRowLayout.Width - Application.GetRealWidth(150), Width = Application.GetMinRealAverage(110), Height = Application.GetMinRealAverage(110), UnSelectedImagePath = "Item/Timer.png", Gravity = Gravity.CenterVertical }; /////******暂时先不加延时,安卓控件有问题*******//// //targetRowLayout.AddChidren(devTimer); var devRight = new Button() { BackgroundColor = ZigbeeColor.Current.GXCRedColor, TextID = R.MyInternationalizationString.Delete, TextColor = ZigbeeColor.Current.GXCTextWhiteColor }; targetRowLayout.AddRightView(devRight); //延时 devTimer.MouseUpEventHandler += (sender, e) => { /////******暂时先不加延时,安卓控件有问题*******//// var tList = new List { }; for (int i = 1; i <= 60; i++) { tList.Add($"{i} {Language.StringByID(R.MyInternationalizationString.Second)}"); } //1-60秒 //PickerView.Show(tList, (obj) => // { // targetDevice.DelayTime = int.Parse(obj.Split(' ')[0]); // }, Language.StringByID(R.MyInternationalizationString.Confrim)); }; //删除设备 devRight.MouseUpEventHandler += (sender, e) => { sceneTargetDevicesList.Remove(targetDevice); RefreshTargetListView(); }; //设备详细设置界面 void detailMouseUpEventHandler(object sender, MouseEventArgs e) { //设备 if (targetDevice.Type == 0) { if (targetDevice.DeviceUI == null || targetDevice.DeviceUI.CommonDevice == null) { return; } if (targetDevice.DeviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput) { //开关灯 var taskList = targetDevice.TaskList; if (taskList.Count == 0) { return; } var detail = new CategorySceneSelectLightSetting(); UserView.HomePage.Instance.AddChidren(detail); UserView.HomePage.Instance.PageIndex += 1; detail.Show(targetDevice.DeviceUI, targetDevice.SceneTargetDeviceUIID, taskList[0].Data1); } else if (targetDevice.DeviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch) { //空气开关 var taskList = targetDevice.TaskList; if (taskList.Count == 0) { return; } var detail = new CategorySceneSelectAirSwitchSetting(); UserView.HomePage.Instance.AddChidren(detail); UserView.HomePage.Instance.PageIndex += 1; detail.Show(targetDevice.DeviceUI, targetDevice.SceneTargetDeviceUIID, taskList[0].Data1); } else if (targetDevice.DeviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice) { //卷帘 var taskList = targetDevice.TaskList; if (taskList.Count == 0) { return; } var detail = new CategorySceneSelectCurtainSetting(); UserView.HomePage.Instance.AddChidren(detail); UserView.HomePage.Instance.PageIndex += 1; UserView.HomePage.Instance.ScrollEnabled = false; detail.Show(targetDevice.DeviceUI, targetDevice.SceneTargetDeviceUIID, taskList[0].Data1, taskList[0].Data2); } else if (targetDevice.DeviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight) { //调光灯 var taskList = targetDevice.TaskList; if (taskList.Count == 0) { return; } var detail = new CategorySceneSelectedDimmableLightSetting(); UserView.HomePage.Instance.AddChidren(detail); UserView.HomePage.Instance.PageIndex += 1; UserView.HomePage.Instance.ScrollEnabled = false; if (taskList[0].TaskType == 1) { detail.Show(targetDevice.DeviceUI, targetDevice.SceneTargetDeviceUIID, taskList[0].Data1, taskList[0].Data2); } else if (taskList[0].TaskType == 3) { detail.Show(targetDevice.DeviceUI, targetDevice.SceneTargetDeviceUIID, taskList[0].TaskType, taskList[0].Data1); } } } //时间间隔 else if (targetDevice.Type == 1) { var delayTimeView = new CategorySceneSelectedDelayTime(); UserView.HomePage.Instance.AddChidren(delayTimeView); UserView.HomePage.Instance.PageIndex += 1; delayTimeView.Show(1, targetDevice.SceneTargetDeviceUIID); } //场景 else if (targetDevice.Type == 2) { var sceneView = new CategorySceneSelectedScene(); UserView.HomePage.Instance.AddChidren(sceneView); UserView.HomePage.Instance.PageIndex += 1; sceneView.Show(sceneTargetDevicesList, 1, targetDevice.SceneTargetDeviceUIID); } } devIMG.MouseUpEventHandler += detailMouseUpEventHandler; devName.MouseUpEventHandler += detailMouseUpEventHandler; targetRowLayout.MouseUpEventHandler += detailMouseUpEventHandler; targetFL.MouseUpEventHandler += detailMouseUpEventHandler; } } } /// /// Show this instance. /// public void Show() { AddTop(); AddBodyView(); } #region Add____________________________________ /// /// AddTop /// public void AddTop() { var top = new TopFrameLayout(); AddChidren(top); top.InitTopview(); top.SetTopTitle(R.MyInternationalizationString.AddScence); top.backButton.MouseUpEventHandler += (sender, e) => { RemoveFromParent(); }; } /// /// AddBodyView /// public void AddBodyView() { bodyFrameLayout = new FrameLayout() { Y = Application.GetRealHeight(184), Height = Application.GetRealHeight(1737), BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor, }; AddChidren(bodyFrameLayout); var imgFL = new FrameLayout { Height = Application.GetRealHeight(556), BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor }; bodyFrameLayout.AddChidren(imgFL); var backGround = new Button() { Width = Application.GetRealWidth(930), Height = Application.GetRealHeight(464), Gravity = Gravity.Center, Radius = (uint)Application.GetRealHeight(CommonFormResouce.BigFormRadius), UnSelectedImagePath = ImagePath }; imgFL.AddChidren(backGround); var infoFL = new FrameLayout { Y = imgFL.Bottom + Application.GetRealHeight(23), Height = Application.GetRealHeight(418), BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor }; bodyFrameLayout.AddChidren(infoFL); var infoEdit = new Button { X=Application.GetRealWidth(CommonFormResouce.X_Left), Height = Application.GetRealHeight(130), Width=Application.GetRealWidth(700), TextID = R.MyInternationalizationString.EditInfo, TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor, TextAlignment=TextAlignment.CenterLeft, TextSize=14 }; infoFL.AddChidren(infoEdit); var nameRow = new DeviceInfoEditRow(130); nameRow.Init(); nameRow.SetTipTitle(R.MyInternationalizationString.SceneName); nameRow.SetPlaceHoldText(R.MyInternationalizationString.PleaseInputSceneName); infoFL.AddChidren(nameRow); var zoneRow = new DeviceInfoRow(257); zoneRow.Init(); zoneRow.SetTipTitle(R.MyInternationalizationString.BelongZone); zoneRow.SetTitle(CurrentRoom.Name); infoFL.AddChidren(zoneRow); var targetFL = new FrameLayout() { Y = infoFL.Bottom + Application.GetRealHeight(23), Height = Application.GetRealHeight(334), BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor }; bodyFrameLayout.AddChidren(targetFL); var target = new Button() { X = Application.GetRealWidth(CommonFormResouce.X_Left), Y = Application.GetRealHeight(46), Height = Application.GetRealHeight(127) - 1, Width = Application.GetRealWidth(600), TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.GXCTextBlackColor, TextID = R.MyInternationalizationString.AddScentTargetAction, }; targetFL.AddChidren(target); var targetAdd = new SelectedStatuButton() { X = Application.GetRealWidth(950), Y = Application.GetRealHeight(46), Width = Application.GetMinRealAverage(72), Height = Application.GetMinRealAverage(72), UnSelectedImagePath = "Item/Add.png", SelectedImagePath = "Item/AddSelected.png", }; targetFL.AddChidren(targetAdd); var targetLine = new Button() { Y = target.Bottom, Height = 1, BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2 }; targetFL.AddChidren(targetLine); //添加目标后的展示列表 TargetListScrolView = new VerticalScrolViewLayout() { Y = targetLine.Bottom, Height = Application.GetRealHeight(173), BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor }; targetFL.AddChidren(TargetListScrolView); confirmBtn = new CommonForm.CompleteButton(1656, 907, 127); AddChidren(confirmBtn); RefreshTargetListView(); #region 背景图 名称 区域 执行目标 if (!string.IsNullOrEmpty(SceneText)) { nameRow.NameText.Text = SceneText; } if (CurrentRoom != null) { } if (Modify) { //title.TextID = R.MyInternationalizationString.ModifyScene; oldRoom = CurrentRoom; if (ModifySceneUI != null && ModifySceneUI.IsSharedScene) { nameRow.NameText.Enable = false; } } #endregion #region event //记录输入场景名 nameRow.NameText.TextChangeEventHandler += (sender, e) => { SceneText = nameRow.NameText.Text.Trim(); }; //选择背景图 EventHandler backGroundIMGHander = (sender, e) => { if (CurrentRoom.IsSharedRoom) { RoomCommon.ShowTipRoomIsShared(); return; } var localPic = new CategorySceneSelectImgByLocal(); Shared.Phone.UserView.HomePage.Instance.AddChidren(localPic); Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; localPic.Show(); localPic.action = () => { backGround.UnSelectedImagePath = ImagePath; IconType = 0; }; }; backGround.MouseUpEventHandler += backGroundIMGHander; //区域 EventHandler zoneHander = (sender, e) => { if (CurrentRoom.IsSharedRoom) { RoomCommon.ShowTipRoomIsShared(); return; } var selectRoom = new CategorySceneSelectRoomList(); UserView.HomePage.Instance.AddChidren(selectRoom); UserView.HomePage.Instance.PageIndex += 1; selectRoom.SelectedRoomAction = (room) => { CurrentRoom = room; zoneRow.NameText.Text = CurrentRoom.Name; }; selectRoom.Show(); }; zoneRow.NextBtn.MouseUpEventHandler += zoneHander; zoneRow.TipBtn.MouseUpEventHandler += zoneHander; zoneRow.MouseUpEventHandler += zoneHander; //执行目标-添加执行设备 EventHandler targetAddHander = (sender, e) => { if (CurrentRoom.IsSharedRoom) { RoomCommon.ShowTipRoomIsShared(); return; } int selectRow_Height = 130; var selectFL = new FrameLayout() { BackgroundColor = ZigbeeColor.Current.GXCDailogBackGroundColor }; AddChidren(selectFL); var itemFL = new FrameLayout() { Y = Application.GetRealHeight(CommonPage.AppRealHeight - selectRow_Height * 4 - 20), Height = Application.GetRealHeight(selectRow_Height * 4 + 20) }; selectFL.AddChidren(itemFL); var selectedFunctionBtn = new Device.CommonForm.SelectedStatuButton() { Height = Application.GetRealHeight(selectRow_Height) - 1, TextID = R.MyInternationalizationString.Function, TextColor = ZigbeeColor.Current.GXCTextBlackColor, TextAlignment = TextAlignment.Center, BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor, SelectedBackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor }; itemFL.AddChidren(selectedFunctionBtn); var selectedFunctionLine = new Button() { Y = selectedFunctionBtn.Bottom, Height = 1, BackgroundColor = ZigbeeColor.Current.GXCLineColor, }; itemFL.AddChidren(selectedFunctionLine); var selectedSceneBtn = new Device.CommonForm.SelectedStatuButton() { Y = selectedFunctionLine.Bottom, Height = Application.GetRealHeight(selectRow_Height) - 1, TextID = R.MyInternationalizationString.Scence, TextColor = ZigbeeColor.Current.GXCTextBlackColor, BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor, SelectedBackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor }; itemFL.AddChidren(selectedSceneBtn); var selectedSceneLine = new Button() { Y = selectedSceneBtn.Bottom, Height = 1, BackgroundColor = ZigbeeColor.Current.GXCLineColor, }; itemFL.AddChidren(selectedSceneLine); var selectedTimerBtn = new Device.CommonForm.SelectedStatuButton() { Y = selectedSceneLine.Bottom, Height = Application.GetRealHeight(selectRow_Height) - 1, TextID = R.MyInternationalizationString.TimeSpan, TextColor = ZigbeeColor.Current.GXCTextBlackColor, BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor, SelectedBackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor }; itemFL.AddChidren(selectedTimerBtn); var cancelBtn = new Device.CommonForm.SelectedStatuButton() { Y = selectedTimerBtn.Bottom + Application.GetRealHeight(20), Height = Application.GetRealHeight(selectRow_Height), TextID = R.MyInternationalizationString.Cancel, TextColor = ZigbeeColor.Current.GXCTextBlackColor, BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor, SelectedBackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor }; itemFL.AddChidren(cancelBtn); itemFL.Animate = Animate.DownToUp; //添加功能 selectedFunctionBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); var deviceTypeList = new CategorySceneSelectDevice(); UserView.HomePage.Instance.AddChidren(deviceTypeList); UserView.HomePage.Instance.PageIndex += 1; deviceTypeList.Show(sceneTargetDevicesList); }; //添加场景 selectedSceneBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); var sceneView = new CategorySceneSelectedScene(); UserView.HomePage.Instance.AddChidren(sceneView); UserView.HomePage.Instance.PageIndex += 1; if (Modify) { sceneView.Show(sceneTargetDevicesList, -1, "", false, ModifySceneUI.Id); } else { sceneView.Show(sceneTargetDevicesList); } }; //添加时间间隔 selectedTimerBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); var delayTimeView = new CategorySceneSelectedDelayTime(); UserView.HomePage.Instance.AddChidren(delayTimeView); UserView.HomePage.Instance.PageIndex += 1; delayTimeView.Show(); }; cancelBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); }; selectFL.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); }; }; targetAdd.MouseUpEventHandler += targetAddHander; targetFL.MouseUpEventHandler += targetAddHander; target.MouseUpEventHandler += targetAddHander; //确定添加目标 confirmBtn.MouseUpEventHandler += async (sender, e) => { if (CurrentRoom.IsSharedRoom) { RemoveFromParent(); return; } if (Modify) { try { CommonPage.Loading.Start(); //修改--先判断场景名是否改变,再移除设备,再添加设备 ModifySceneUI.IconPath = ImagePath; if (ModifySceneUI.Name != nameRow.NameText.Text.Trim()) { if (Shared.Common.Room.AllRoomSceneUIList.Find(s => s.Name == nameRow.NameText.Text.Trim()) != null) { Common.CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneHadExist); return; } //修改名字 var r = await ZigBee.Device.Scene.RenameSceneAsync(ModifySceneUI.Id, nameRow.NameText.Text.Trim()); var reName = r.sceneRenameResponseData.Result; if (reName == 0) { //失败 return; } else if (reName == 1) { //成功 ModifySceneUI.Name = nameRow.NameText.Text.Trim(); } else if (reName == 2) { //没有该场景 return; } } //修改设备 var memberDataList = new List(); int AddedDelayTime = 0; for (int i = 0; i < sceneTargetDevicesList.Count; i++) { //合并延时 var sceneTarget = sceneTargetDevicesList[i]; SceneTargetDeviceUI beforeSceneTarget = null; if (i - 1 >= 0) { beforeSceneTarget = sceneTargetDevicesList[i - 1]; } if (sceneTarget.Type == 0) { if (beforeSceneTarget != null && beforeSceneTarget.Type == 1) { if (i - 1 >= 0) { for (int k = i - 1; k >= 0; k--) { if (sceneTargetDevicesList[k] == null || sceneTargetDevicesList[k].Type != 1) { break; } AddedDelayTime += sceneTargetDevicesList[k].DelayTime; } } } if (sceneTarget.DeviceUI == null || sceneTarget.DeviceUI.CommonDevice == null) { continue; } var memberData = new ZigBee.Device.Scene.AddSceneMemberData { DeviceAddr = sceneTarget.DeviceUI.CommonDevice.DeviceAddr, Type = 0, ScenesId = 0, Epoint = sceneTarget.DeviceUI.CommonDevice.DeviceEpoint, TaskList = sceneTarget.TaskList, DelayTime = AddedDelayTime }; memberDataList.Add(memberData); } else if (sceneTarget.Type == 2) { if (beforeSceneTarget != null && beforeSceneTarget.Type == 1) { if (i - 1 >= 0) { for (int k = i - 1; k >= 0; k--) { if (sceneTargetDevicesList[k] == null || sceneTargetDevicesList[k].Type != 1) { break; } AddedDelayTime += sceneTargetDevicesList[k].DelayTime; } } } var memberData = new ZigBee.Device.Scene.AddSceneMemberData { Type = 1, ScenesId = 0, ElseScenesId = sceneTarget.ElseScenesId, DelayTime = AddedDelayTime }; memberDataList.Add(memberData); } } var sceneRemoveMemberData = new SceneRemoveMemberData { }; var removeSceneDeviceListInfoList = new List { }; for (int i = 0; i < beforeSceneTargetDevicesList.Count; i++) { //合并延时 var sceneTarget = beforeSceneTargetDevicesList[i]; if (sceneTarget.Type == 0) { if (sceneTarget.DeviceUI == null || sceneTarget.DeviceUI.CommonDevice == null) { continue; } var removeDevice = new RemoveSceneDeviceListInfo { Type = 0, DeviceAddr = sceneTarget.DeviceUI.CommonDevice.DeviceAddr, Epoint = sceneTarget.DeviceUI.CommonDevice.DeviceEpoint, }; removeSceneDeviceListInfoList.Add(removeDevice); } else if (sceneTarget.Type == 2) { var removeDevice = new ZigBee.Device.Scene.RemoveSceneDeviceListInfo { Type = 1, ElseScenesId = sceneTarget.ElseScenesId }; removeSceneDeviceListInfoList.Add(removeDevice); } } sceneRemoveMemberData.DeviceList = removeSceneDeviceListInfoList; sceneRemoveMemberData.ScenesId = ModifySceneUI.Id; var result = await CurrentRoom.ModifyScene(ModifySceneUI, sceneRemoveMemberData, memberDataList); if (result == 1) { if (oldRoom != CurrentRoom) { oldRoom.SceneUIList.Remove(ModifySceneUI); oldRoom.SceneUIFilePathList.Remove(ModifySceneUI.FileName); CurrentRoom.SceneUIList.Add(ModifySceneUI); CurrentRoom.SceneUIFilePathList.Add(ModifySceneUI.FileName); oldRoom.Save(); CurrentRoom.Save(); } RemoveFromParent(); } else if (result == 0) { //失败 Common.CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain); } else if (result == -1) { //已存在 Common.CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneHadExist); } } catch (Exception ex) { System.Console.WriteLine($"分类添加场景出错{ex.Message}"); } finally { CommonPage.Loading.Hide(); } } //新增 else { if (string.IsNullOrEmpty(nameRow.NameText.Text)) { var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.SceneNameCannotBeNull), Language.StringByID(R.MyInternationalizationString.Close)); alert.Show(); alert.ResultEventHandler += (sendAlert, eAlert) => { return; }; } else { try { if (Shared.Common.Room.AllRoomSceneUIList.Find(s => s.Name == nameRow.NameText.Text.Trim()) != null) { Common.CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneHadExist); return; } CommonPage.Loading.Start(); var memberDataList = new List(); //累加延时 int AddedDelayTime = 0; for (int i = 0; i < sceneTargetDevicesList.Count; i++) { var sceneTarget = sceneTargetDevicesList[i]; SceneTargetDeviceUI beforeSceneTarget = null; if (i - 1 >= 0) { beforeSceneTarget = sceneTargetDevicesList[i - 1]; } if (sceneTarget.Type == 0) { if (sceneTarget.DeviceUI == null || sceneTarget.DeviceUI.CommonDevice == null) { continue; } if (beforeSceneTarget != null && beforeSceneTarget.Type == 1) { if (i - 1 >= 0) { for (int k = i - 1; k >= 0; k--) { if (sceneTargetDevicesList[k] == null || sceneTargetDevicesList[k].Type != 1) { break; } AddedDelayTime += sceneTargetDevicesList[k].DelayTime; } } } var memberData = new ZigBee.Device.Scene.AddSceneMemberData { DeviceAddr = sceneTarget.DeviceUI.CommonDevice.DeviceAddr, Type = 0, ScenesId = 0, Epoint = sceneTarget.DeviceUI.CommonDevice.DeviceEpoint, TaskList = sceneTarget.TaskList, DelayTime = AddedDelayTime }; memberDataList.Add(memberData); } else if (sceneTarget.Type == 2) { if (beforeSceneTarget != null && beforeSceneTarget.Type == 1) { if (i - 1 >= 0) { for (int k = i - 1; k >= 0; k--) { if (sceneTargetDevicesList[k] == null || sceneTargetDevicesList[k].Type != 1) { break; } AddedDelayTime += sceneTargetDevicesList[k].DelayTime; } } } var memberData = new ZigBee.Device.Scene.AddSceneMemberData { Type = 1, ScenesId = 0, ElseScenesId = sceneTarget.ElseScenesId, DelayTime = AddedDelayTime }; memberDataList.Add(memberData); } } var result = await CurrentRoom.AddScene(nameRow.NameText.Text, backGround.UnSelectedImagePath, memberDataList); if (result == 1) { RemoveFromParent(); } else if (result == 0) { //失败 CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.AddSceneFail); } else if (result == -1) { //已存在 CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneHadExist); } } catch (Exception ex) { System.Console.WriteLine($"分类添加场景出错{ex.Message}"); } finally { CommonPage.Loading.Hide(); } } } }; #endregion } #endregion } }