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; ///// ///// floorIds ///// //List floorIds = new List { }; ///// ///// floorNames ///// //List floorNames = new List { }; ///// ///// roomNames ///// //List> roomNames = new List> { }; ///// ///// roomNames ///// //List> rooms = new List> { }; /// /// ImagePath /// private string ImagePath="SceneIcon/1.png"; /// /// 图片来源 0--本地图库 1--拍照 2--系统图库 /// public int IconPathType = 0; /// /// curRoom /// private Common.Room curRoom; /// /// sceneTargetDevicesList /// private List sceneTargetDevicesList = new List { }; /// /// 添加目标后的展示列表 /// public VerticalScrolViewLayout TargetListScrolView; /// /// The confirm button. /// private CommonForm.CompleteButton confirmBtn; /// /// backGround /// private Button backGround; /// /// 是否修改 /// public bool isModify; /// /// 修改的场景 /// public SceneUI modifySceneUI; /// /// 记录编辑前的设备列表 /// public List modifySceneTargetDevicesList; /// /// modifyRoom /// public Common.Room modifyRoom; #endregion /// /// CategoryAddScene /// public CategoryAddScene() { BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor; } /// /// RemoveFromParent /// public override void RemoveFromParent() { Category.instance?.RefreshBodyView(); base.RemoveFromParent(); } /// ///刷新添加目标后的展示列表 /// public void RefreshTargetListView() { TargetListScrolView.RemoveAll(); if (sceneTargetDevicesList.Count > 0) { foreach (var targetDevice in sceneTargetDevicesList) { var targetRowLayout = new RowLayout() { Height = Application.GetRealHeight(160), LineColor = ZigbeeColor.Current.GXCBackgroundColor, BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor }; TargetListScrolView.AddChidren(targetRowLayout); 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; var targetRow = new SceneTargetFunctionRow(23); targetRowLayout.AddChidren(targetRow); targetRow.Init(); targetRow.SetIcon(devImgPath); targetRow.SetNameText(devNameText); targetRow.SetZoneText(targetDevice.DeviceUI.GetZone()); targetRow.SetStatuText(targetDevice.GetDeviceStatu()); } else if (targetDevice.Type == 2) { devNameText = CommonFormResouce.GetTimeString(targetDevice.DelayTime); devNameText += Language.StringByID(R.MyInternationalizationString.Later); var targetRow = new SceneTargetTimeRow(23); targetRowLayout.AddChidren(targetRow); targetRow.Init(); targetRow.SetTitle(devNameText); } else if (targetDevice.Type == 1) { devImgPath = "Scene/SceneIcon.png"; devNameText = targetDevice.SceneName; var targetRow = new SceneTargetFunctionRow(23); targetRowLayout.AddChidren(targetRow); targetRow.Init(); targetRow.SetIcon(devImgPath); targetRow.SetNameText(devNameText); targetRow.SetZoneText(targetDevice.SceneUI.GetZone()); } var editBtn = new Button() { BackgroundColor = ZigbeeColor.Current.GXCEditBackGroundColor, TextID = R.MyInternationalizationString.Edit, TextColor = ZigbeeColor.Current.GXCTextWhiteColor }; targetRowLayout.AddRightView(editBtn); //编辑设备 editBtn.MouseUpEventHandler += detailMouseUpEventHandler; var delBtn = new Button() { BackgroundColor = ZigbeeColor.Current.GXCRedColor, TextID = R.MyInternationalizationString.Delete, TextColor = ZigbeeColor.Current.GXCTextWhiteColor }; targetRowLayout.AddRightView(delBtn); //删除设备 delBtn.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; } var deviceView = new SelectDevice(); UserView.HomePage.Instance.AddChidren(deviceView); UserView.HomePage.Instance.PageIndex += 1; deviceView.sceneTargetDevice = targetDevice; deviceView.deviceUI = targetDevice.DeviceUI; deviceView.Show(); deviceView.selectedAction = (selectedDevice) => { var targetDeviceUI = sceneTargetDevicesList.Find((obj) => obj.SceneTargetDeviceUIID == selectedDevice.SceneTargetDeviceUIID); if (targetDeviceUI != null) { targetDeviceUI.DeviceUI = selectedDevice.DeviceUI; targetDeviceUI.TaskList = selectedDevice.TaskList; } RefreshTargetListView(); }; } //时间间隔 else if (targetDevice.Type == 2) { var delayTimeView = new SelectDelayTime(); UserView.HomePage.Instance.AddChidren(delayTimeView); UserView.HomePage.Instance.PageIndex += 1; delayTimeView.sceneTargetDevice = targetDevice; delayTimeView.totalSecond = targetDevice.DelayTime; delayTimeView.Show(); delayTimeView.selectedTimeAction = (second) => { var targetDeviceUI = sceneTargetDevicesList.Find((obj) => obj.SceneTargetDeviceUIID == second.SceneTargetDeviceUIID); if (targetDeviceUI != null) { targetDeviceUI.DelayTime = second.DelayTime; } RefreshTargetListView(); }; } //场景 else if (targetDevice.Type == 1) { var sceneView = new SelectScene(); UserView.HomePage.Instance.AddChidren(sceneView); UserView.HomePage.Instance.PageIndex += 1; sceneView.sceneTargetDevice = targetDevice; sceneView.sceneUI = targetDevice.SceneUI; sceneView.Show(); sceneView.selectedAction = (selectedScene) => { var targetDeviceUI = sceneTargetDevicesList.Find((obj) => obj.SceneTargetDeviceUIID == selectedScene.SceneTargetDeviceUIID); if (targetDeviceUI != null) { targetDeviceUI.SceneName = selectedScene.SceneName; targetDevice.SceneUI = selectedScene.SceneUI; targetDevice.ElseScenesId = selectedScene.ElseScenesId; } RefreshTargetListView(); }; } } } } } /// /// Show this instance. /// public void Show() { Init(); AddTop(); AddBodyView(); } #region Add____________________________________ /// /// Init /// private void Init() { //foreach (var floor in Config.Instance.Home.FloorDics) //{ // floorIds.Add(floor.Key); // floorNames.Add(floor.Value); // if(Common.Room.CurrentRoom.GetRoomsByFloorId(floor.Key).Count>0) // { // roomNames.Add(Common.Room.CurrentRoom.GetRoomNamesByFloorId(floor.Key)); // rooms.Add(Common.Room.CurrentRoom.GetRoomsByFloorId(floor.Key)); // } //} } /// /// AddTop /// private void AddTop() { var top = new TopFrameLayout(); AddChidren(top); top.InitTopview(); if(isModify) { top.SetTopTitle(R.MyInternationalizationString.EditorScene); } else { top.SetTopTitle(R.MyInternationalizationString.AddScence); } top.backButton.MouseUpEventHandler += (sender, e) => { RemoveFromParent(); }; } /// /// AddBodyView /// private 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); backGround = new Button() { Width = Application.GetMinRealAverage(930), Height = Application.GetMinRealAverage(464), Gravity = Gravity.Center, Radius = (uint)Application.GetMinRealAverage(CommonFormResouce.BigFormRadius), //UnSelectedImagePath = ImagePath UnSelectedImagePath = "SceneIcon/3.jpg" }; imgFL.AddChidren(backGround); backGround.SetViewShadow(true); 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($"{Language.StringByID(R.MyInternationalizationString.SceneName)}:"); nameRow.SetPlaceHoldText(R.MyInternationalizationString.PleaseInputSceneName); infoFL.AddChidren(nameRow); var zoneRow = new DeviceInfoRow(257); zoneRow.Init(); zoneRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.BelongZone)}:"); //zoneRow.SetTitle(curRoom.Name); infoFL.AddChidren(zoneRow); zoneRow.HideLine(true); var targetFL = new FrameLayout() { Y = infoFL.Bottom + Application.GetRealHeight(23), Height = Application.GetRealHeight(730) }; bodyFrameLayout.AddChidren(targetFL); var targetBG = new FrameLayout { Height = Application.GetRealHeight(334), BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor }; targetFL.AddChidren(targetBG); var addTargetFL = new FrameLayout { Y=Application.GetRealHeight(46), Height = Application.GetRealHeight(127), }; targetFL.AddChidren(addTargetFL); var target = new Button() { X = Application.GetRealWidth(CommonFormResouce.X_Left), Height = Application.GetRealHeight(127) - 1, Width = Application.GetRealWidth(600), TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.GXCTextBlackColor, TextID = R.MyInternationalizationString.AddScentTargetAction, Gravity = Gravity.CenterVertical }; addTargetFL.AddChidren(target); var targetAdd = new Button { X = Application.GetRealWidth(950), Y = Application.GetRealHeight(46), Width = Application.GetMinRealAverage(72), Height = Application.GetMinRealAverage(72), Gravity=Gravity.CenterVertical, UnSelectedImagePath = "Item/Add.png", }; addTargetFL.AddChidren(targetAdd); var targetLine = new Button() { Y = target.Bottom, Height = 1, BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2 }; addTargetFL.AddChidren(targetLine); //添加目标后的展示列表 TargetListScrolView = new VerticalScrolViewLayout() { Y = Application.GetRealHeight(49+127), Height = Application.GetRealHeight(730-127-49), //BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor }; targetFL.AddChidren(TargetListScrolView); confirmBtn = new CommonForm.CompleteButton(1656, 907, 127); AddChidren(confirmBtn); if(isModify) { backGround.UnSelectedImagePath = modifySceneUI.IconPath; nameRow.SetTitle(modifySceneUI.Name); zoneRow.SetTitle($"{Config.Instance.Home.GetFloorNameById(modifyRoom.FloorId)},{modifyRoom.Name}"); IconPathType = modifySceneUI.IconPathType; curRoom = modifyRoom; sceneTargetDevicesList.AddRange(modifySceneTargetDevicesList); } RefreshTargetListView(); #region event //选择背景图 EventHandler backGroundIMGHander = (sender, e) => { if (curRoom != null && curRoom.IsSharedRoom) { RoomCommon.ShowTipRoomIsShared(); return; } int selectRow_Height = 150; int selectRow_Width = 1034; var selectFL = new FrameLayout() { BackgroundColor = ZigbeeColor.Current.GXCDailogBackGroundColor }; AddChidren(selectFL); var itemFL = new FrameLayout() { Y = Application.GetRealHeight(1276), Height = Application.GetRealHeight(450), Width = Application.GetRealWidth(selectRow_Width), Gravity = Gravity.CenterHorizontal, Radius = (uint)Application.GetRealHeight(17), BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor }; selectFL.AddChidren(itemFL); itemFL.Animate = Animate.DownToUp; var selectLocalPicture = new Button() { Height = Application.GetRealHeight(selectRow_Height) - 1, TextID = R.MyInternationalizationString.LocalPicture, TextColor = ZigbeeColor.Current.GXCTextSelectedColor4 }; itemFL.AddChidren(selectLocalPicture); var selectLocalLine = new Button() { Y = selectLocalPicture.Bottom, Height = 1, BackgroundColor = ZigbeeColor.Current.GXCLineColor }; itemFL.AddChidren(selectLocalLine); var selectPhotographBtn = new Button() { Y = selectLocalLine.Bottom, Height = Application.GetRealHeight(selectRow_Height) - 1, TextID = R.MyInternationalizationString.Photograph, TextColor = ZigbeeColor.Current.GXCTextSelectedColor4 }; itemFL.AddChidren(selectPhotographBtn); var selectPhotographLine = new Button() { Y = selectPhotographBtn.Bottom, Height = 1, BackgroundColor = ZigbeeColor.Current.GXCLineColor, }; itemFL.AddChidren(selectPhotographLine); var selectAblumsBtn = new Button() { Y = selectPhotographLine.Bottom, Height = Application.GetRealHeight(selectRow_Height) - 1, TextID = R.MyInternationalizationString.MyAblums, TextColor = ZigbeeColor.Current.GXCTextSelectedColor4 }; itemFL.AddChidren(selectAblumsBtn); var cancelBtn = new Button() { Y = Application.GetRealHeight(1742), Height = Application.GetRealHeight(selectRow_Height), Width = Application.GetRealWidth(selectRow_Width), Gravity = Gravity.CenterHorizontal, TextID = R.MyInternationalizationString.Cancel, TextColor = ZigbeeColor.Current.GXCTextSelectedColor4, BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor, Radius = (uint)Application.GetRealHeight(17) }; selectFL.AddChidren(cancelBtn); selectLocalPicture.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); var localPic = new CategorySceneSelectImgByLocal(); Shared.Phone.UserView.HomePage.Instance.AddChidren(localPic); Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; localPic.Show(); localPic.action = (imgPath) => { IconPathType = 0; backGround.ImageBytes = null; backGround.UnSelectedImagePath = imgPath; }; }; selectPhotographBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo); var fileName = $"Scene_{tradeTime}"; //通过相机拍照裁剪 CropImage.TakePicture((imagePath) => { if (isModify) { if (IconPathType != 0) { Global.DeleteFilebyHomeId(backGround.UnSelectedImagePath); } } IconPathType = 1; backGround.ImageBytes = Shared.IO.FileUtils.ReadFile(imagePath); backGround.UnSelectedImagePath = imagePath; System.IO.File.Delete(imagePath); }, fileName, 2, 1); }; selectAblumsBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo); var fileName = $"Scene_{tradeTime}"; //从相册选择图片裁剪 CropImage.SelectPicture((imagePath) => { if (isModify) { if (IconPathType != 0) { Global.DeleteFilebyHomeId(backGround.UnSelectedImagePath); } } IconPathType = 2; backGround.ImageBytes = Shared.IO.FileUtils.ReadFile(imagePath); backGround.UnSelectedImagePath = imagePath; System.IO.File.Delete(imagePath); }, fileName, 2,1); }; cancelBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); }; selectFL.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); }; }; backGround.MouseUpEventHandler += backGroundIMGHander; //区域 EventHandler zoneHander = (sender, e) => { List floorIds = new List { }; List floorNames = new List { }; List> roomNames = new List> { }; List> rooms = new List> { }; List rs = new List { }; List rNames = new List { }; if (Config.Instance.Home.FloorDics.Count > 0) { foreach (var floor in Config.Instance.Home.FloorDics) { floorIds.Add(floor.Key); floorNames.Add(floor.Value); if (Common.Room.CurrentRoom.GetRoomsByFloorId(floor.Key).Count > 0) { roomNames.Add(Common.Room.CurrentRoom.GetRoomNamesByFloorId(floor.Key)); rooms.Add(Common.Room.CurrentRoom.GetRoomsByFloorId(floor.Key)); } } PickerView.ShowSecondary(floorNames, roomNames, (index1, index2) => { curRoom = rooms[index1][index2]; zoneRow.SetTitle($"{Config.Instance.Home.GetFloorNameById(floorIds[index1])} , {rooms[index1][index2].Name}"); }, 0, 0, Language.StringByID(R.MyInternationalizationString.BelongFloor), Language.StringByID(R.MyInternationalizationString.Confrim), Language.StringByID(R.MyInternationalizationString.Cancel)); } else { for (int i = 0; i < Common.Room.Lists.Count; i++) { var r = Common.Room.Lists[i]; if (r.IsLove) { continue; } rs.Add(r); rNames.Add(r.Name); } PickerView.Show(rNames, (index1) => { curRoom = rs[index1]; zoneRow.SetTitle(rs[index1].Name); }, 0, Language.StringByID(R.MyInternationalizationString.BelongFloor), Language.StringByID(R.MyInternationalizationString.Confrim), Language.StringByID(R.MyInternationalizationString.Cancel)); } }; zoneRow.ClickBtn.MouseUpEventHandler += zoneHander; //执行目标-添加执行设备 EventHandler targetAddHander = (sender, e) => { if (curRoom == null) { RoomCommon.ShowTipNoRoom(); return; } if (curRoom.IsSharedRoom) { RoomCommon.ShowTipRoomIsShared(); return; } int selectRow_Height = 150; int selectRow_Width = 1034; var selectFL = new FrameLayout() { BackgroundColor = ZigbeeColor.Current.GXCDailogBackGroundColor }; AddChidren(selectFL); var itemFL = new FrameLayout() { Y = Application.GetRealHeight(1276), Height = Application.GetRealHeight(450), Width = Application.GetRealWidth(selectRow_Width), Gravity=Gravity.CenterHorizontal, Radius = (uint)Application.GetRealHeight(17), BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor }; selectFL.AddChidren(itemFL); itemFL.Animate = Animate.DownToUp; var selectedFunctionBtn = new Button() { Height = Application.GetRealHeight(selectRow_Height) - 1, TextID = R.MyInternationalizationString.Function, TextColor = ZigbeeColor.Current.GXCTextSelectedColor4 }; itemFL.AddChidren(selectedFunctionBtn); var selectedFunctionLine = new Button() { Y = selectedFunctionBtn.Bottom, Height = 1, BackgroundColor = ZigbeeColor.Current.GXCLineColor }; itemFL.AddChidren(selectedFunctionLine); var selectedSceneBtn = new Button() { Y = selectedFunctionLine.Bottom, Height = Application.GetRealHeight(selectRow_Height) - 1, TextID = R.MyInternationalizationString.Scence, TextColor = ZigbeeColor.Current.GXCTextSelectedColor4 }; itemFL.AddChidren(selectedSceneBtn); var selectedSceneLine = new Button() { Y = selectedSceneBtn.Bottom, Height = 1, BackgroundColor = ZigbeeColor.Current.GXCLineColor, }; itemFL.AddChidren(selectedSceneLine); var selectedTimerBtn = new Button() { Y = selectedSceneLine.Bottom, Height = Application.GetRealHeight(selectRow_Height) - 1, TextID = R.MyInternationalizationString.Delay, TextColor = ZigbeeColor.Current.GXCTextSelectedColor4 }; itemFL.AddChidren(selectedTimerBtn); var cancelBtn = new Button() { Y = Application.GetRealHeight(1742), Height = Application.GetRealHeight(selectRow_Height), Width = Application.GetRealWidth(selectRow_Width), Gravity=Gravity.CenterHorizontal, TextID = R.MyInternationalizationString.Cancel, TextColor = ZigbeeColor.Current.GXCTextSelectedColor4, BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor, Radius = (uint)Application.GetRealHeight(17) }; selectFL.AddChidren(cancelBtn); //添加功能 selectedFunctionBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); var deviceView = new SelectDevice(); UserView.HomePage.Instance.AddChidren(deviceView); UserView.HomePage.Instance.PageIndex += 1; deviceView.beforeSceneTargetDeviceUIs = sceneTargetDevicesList; deviceView.Show(); deviceView.selectedAction = (selectedDevice) => { sceneTargetDevicesList.Add(selectedDevice); RefreshTargetListView(); }; }; //添加场景 selectedSceneBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); var sceneView = new SelectScene(); UserView.HomePage.Instance.AddChidren(sceneView); UserView.HomePage.Instance.PageIndex += 1; sceneView.beforeSceneTargetDeviceUIs = sceneTargetDevicesList; sceneView.Show(); sceneView.selectedAction = (selectedScene) => { sceneTargetDevicesList.Add(selectedScene); RefreshTargetListView(); }; }; //添加时间间隔 selectedTimerBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); var delayTimeView = new SelectDelayTime(); UserView.HomePage.Instance.AddChidren(delayTimeView); UserView.HomePage.Instance.PageIndex += 1; delayTimeView.Show(); delayTimeView.selectedTimeAction = (second) => { sceneTargetDevicesList.Add(second); RefreshTargetListView(); }; }; cancelBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); }; selectFL.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); }; }; targetAdd.MouseUpEventHandler += targetAddHander; targetFL.MouseUpEventHandler += targetAddHander; target.MouseUpEventHandler += targetAddHander; addTargetFL.MouseUpEventHandler += targetAddHander; //确定添加目标 confirmBtn.MouseUpEventHandler += async (sender, e) => { if (curRoom == null) { RoomCommon.ShowTipNoRoom(); return; } if (curRoom.IsSharedRoom) { RemoveFromParent(); return; } if(isModify) { 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 { var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo); var fileName = $"Scene_{tradeTime}"; //改名 if (modifySceneUI.Name != nameRow.NameText.Text.Trim()) { if (Common.Room.CurrentRoom.GetSameFloorScenes(curRoom.FloorId).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; } } //图片 if(IconPathType==1 || IconPathType ==2) { Shared.IO.FileUtils.WriteFileByBytes(System.IO.Path.Combine(Config.Instance.FullPath, fileName), backGround.ImageBytes); modifySceneUI.IconPath = System.IO.Path.Combine(Config.Instance.FullPath, fileName); } else { modifySceneUI.IconPath = backGround.UnSelectedImagePath; } modifySceneUI.IconPathType = IconPathType; CommonPage.Loading.Start(); var memberDataList = new List(); for (int i = 0; i < sceneTargetDevicesList.Count; i++) { var sceneTarget = sceneTargetDevicesList[i]; if (sceneTarget.Type == 0) { if (sceneTarget.DeviceUI == null || sceneTarget.DeviceUI.CommonDevice == null) { continue; } var memberData = new AddSceneMemberData { Type = 0, ScenesId = 0, DeviceAddr = sceneTarget.DeviceUI.CommonDevice.DeviceAddr, Epoint = sceneTarget.DeviceUI.CommonDevice.DeviceEpoint, TaskList = sceneTarget.TaskList, DelayTime = 0, MemberNumber = i+1 }; memberDataList.Add(memberData); } else if (sceneTarget.Type == 1) { var memberData = new AddSceneMemberData { Type = 1, ScenesId = 0, ElseScenesId = sceneTarget.ElseScenesId, DelayTime = 0, MemberNumber = i+1 }; memberDataList.Add(memberData); } else if (sceneTarget.Type == 2) { var memberData = new AddSceneMemberData { Type = 2, ScenesId = 0, DelayTime = sceneTarget.DelayTime, MemberNumber = i+1 }; memberDataList.Add(memberData); } } var sceneRemoveMemberData = new SceneRemoveMemberData { }; var removeSceneDeviceListInfoList = new List { }; for (int i = 0; i < modifySceneTargetDevicesList.Count; i++) { var sceneTarget = modifySceneTargetDevicesList[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, MemberNumber = sceneTarget.DelayTimeSerialNumber }; removeSceneDeviceListInfoList.Add(removeDevice); } else if (sceneTarget.Type == 1) { var removeDevice = new ZigBee.Device.Scene.RemoveSceneDeviceListInfo { Type = 1, ElseScenesId = sceneTarget.ElseScenesId, MemberNumber = sceneTarget.DelayTimeSerialNumber }; removeSceneDeviceListInfoList.Add(removeDevice); } else { var removeDevice = new ZigBee.Device.Scene.RemoveSceneDeviceListInfo { Type = 2, DelayTime=sceneTarget.DelayTime, MemberNumber=sceneTarget.DelayTimeSerialNumber }; removeSceneDeviceListInfoList.Add(removeDevice); } } sceneRemoveMemberData.DeviceList = removeSceneDeviceListInfoList; sceneRemoveMemberData.ScenesId = modifySceneUI.Id; var result = await curRoom.ModifyScene(modifySceneUI, sceneRemoveMemberData, memberDataList); if (result == 1) { if (modifyRoom != curRoom) { modifyRoom.SceneUIList.Remove(modifySceneUI); modifyRoom.SceneUIFilePathList.Remove(modifySceneUI.FileName); curRoom.SceneUIList.Add(modifySceneUI); curRoom.SceneUIFilePathList.Add(modifySceneUI.FileName); modifyRoom.Save(); curRoom.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 { var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo); var fileName = $"SceneIcon_{tradeTime}.png"; string imgPath; //图片 if (IconPathType == 1 || IconPathType == 2) { Shared.IO.FileUtils.WriteFileByBytes(System.IO.Path.Combine(Config.Instance.FullPath, fileName), backGround.ImageBytes); imgPath = System.IO.Path.Combine(Config.Instance.FullPath, fileName); } else { imgPath = backGround.UnSelectedImagePath; } if (Common.Room.CurrentRoom.GetSameFloorScenes(curRoom.FloorId).Find(s => s.Name == nameRow.NameText.Text.Trim()) != null) { Common.CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneHadExist); return; } CommonPage.Loading.Start(); var memberDataList = new List(); for (int i = 0; i < sceneTargetDevicesList.Count; i++) { var sceneTarget = sceneTargetDevicesList[i]; if (sceneTarget.Type == 0) { if (sceneTarget.DeviceUI == null || sceneTarget.DeviceUI.CommonDevice == null) { continue; } var memberData = new AddSceneMemberData { Type = 0, ScenesId = 0, DeviceAddr = sceneTarget.DeviceUI.CommonDevice.DeviceAddr, Epoint = sceneTarget.DeviceUI.CommonDevice.DeviceEpoint, TaskList = sceneTarget.TaskList, DelayTime = 0, MemberNumber = i+1 }; memberDataList.Add(memberData); } else if (sceneTarget.Type == 1) { var memberData = new AddSceneMemberData { Type = 1, ScenesId = 0, ElseScenesId = sceneTarget.ElseScenesId, DelayTime = 0, MemberNumber = i+1 }; memberDataList.Add(memberData); } else if (sceneTarget.Type == 2) { var memberData = new AddSceneMemberData { Type = 2, ScenesId = 0, DelayTime = sceneTarget.DelayTime, MemberNumber = i+1 }; memberDataList.Add(memberData); } } var result = await curRoom.AddScene(nameRow.NameText.Text, imgPath, 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 } }