From f6b3446e3a4afc0f65814be87aaa0f5ea0c62d69 Mon Sep 17 00:00:00 2001 From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local> Date: 星期一, 28 十月 2019 10:50:30 +0800 Subject: [PATCH] 2019.10.28 --- ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs | 660 +++++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 409 insertions(+), 251 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs b/ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs index 48f3418..8d287f2 100644 --- a/ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs +++ b/ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs @@ -36,6 +36,10 @@ /// </summary> private string ImagePath="SceneIcon/1.png"; /// <summary> + /// 鍥剧墖鏉ユ簮 0--鏈湴鍥惧簱 1--鎷嶇収 2--绯荤粺鍥惧簱 + /// </summary> + public int IconPathType = 0; + /// <summary> /// curRoom /// </summary> private Common.Room curRoom; @@ -43,23 +47,32 @@ /// sceneTargetDevicesList /// </summary> private List<SceneTargetDeviceUI> sceneTargetDevicesList = new List<SceneTargetDeviceUI> { }; - /// <summary> /// 娣诲姞鐩爣鍚庣殑灞曠ず鍒楄〃 /// </summary> public VerticalScrolViewLayout TargetListScrolView; /// <summary> - /// 娣诲姞鐨勬墽琛岀洰鏍囩殑琛岄珮 - /// </summary> - private readonly int TargetListScrolView_RowHeight = 170; - /// <summary> /// The confirm button. /// </summary> private CommonForm.CompleteButton confirmBtn; + /// <summary> - /// 纭畾鎸夐挳鏈�寮�濮嬬殑鍧愭爣 + /// 鏄惁淇敼 /// </summary> - private readonly int ConfirmButton_Y = CommonPage.AppRealHeight - 300; + public bool isModify; + /// <summary> + /// 淇敼鐨勫満鏅� + /// </summary> + public SceneUI modifySceneUI; + /// <summary> + /// 璁板綍缂栬緫鍓嶇殑璁惧鍒楄〃 + /// </summary> + public List<SceneTargetDeviceUI> modifySceneTargetDevicesList; + /// <summary> + /// modifyRoom + /// </summary> + public Common.Room modifyRoom; + #endregion @@ -69,7 +82,6 @@ public CategoryAddScene() { BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor; - Tag = "categoryAddScene"; } /// <summary> /// RemoveFromParent @@ -90,6 +102,13 @@ { 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) @@ -97,70 +116,63 @@ 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)}"; + + 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) { - devImgPath = "Item/Scene.png"; - devNameText = targetDevice.SceneName; + if(targetDevice.DelayTime<60) + { + devNameText = $"{targetDevice.DelayTime} {Language.StringByID(R.MyInternationalizationString.Second)}"; + } + else + { + devNameText = $"{targetDevice.DelayTime / 60} {Language.StringByID(R.MyInternationalizationString.Minute)} {targetDevice.DelayTime % 60} {Language.StringByID(R.MyInternationalizationString.Second)}"; + } + devNameText += Language.StringByID(R.MyInternationalizationString.Later); + var targetRow = new SceneTargetTimeRow(23); + targetRowLayout.AddChidren(targetRow); + targetRow.Init(); + targetRow.SetTitle(devNameText); } - var targetRowLayout = new RowLayout() + else if (targetDevice.Type == 1) { - Height = Application.GetRealHeight(160), - LineColor = ZigbeeColor.Current.GXCLineColor, - BackgroundColor=ZigbeeColor.Current.GXCBackgroundColor - }; - TargetListScrolView.AddChidren(targetRowLayout); + devImgPath = "Scene/SceneIcon.png"; + devNameText = targetDevice.SceneName; - var targetFL = new FrameLayout() + 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.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() + targetRowLayout.AddRightView(editBtn); + //缂栬緫璁惧 + editBtn.MouseUpEventHandler += detailMouseUpEventHandler; + var delBtn = new Button() { BackgroundColor = ZigbeeColor.Current.GXCRedColor, TextID = R.MyInternationalizationString.Delete, TextColor = ZigbeeColor.Current.GXCTextWhiteColor }; - targetRowLayout.AddRightView(devRight); + targetRowLayout.AddRightView(delBtn); //鍒犻櫎璁惧 - devRight.MouseUpEventHandler += (sender, e) => + delBtn.MouseUpEventHandler += (sender, e) => { sceneTargetDevicesList.Remove(targetDevice); RefreshTargetListView(); @@ -176,79 +188,33 @@ { 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); + 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 == 1) + 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) => { @@ -261,18 +227,29 @@ }; } //鍦烘櫙 - else if (targetDevice.Type == 2) + else if (targetDevice.Type == 1) { - var sceneView = new CategorySceneSelectedScene(); + var sceneView = new SelectScene(); UserView.HomePage.Instance.AddChidren(sceneView); UserView.HomePage.Instance.PageIndex += 1; - sceneView.Show(sceneTargetDevicesList, 1, targetDevice.SceneTargetDeviceUIID); + 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(); + }; } } - devIMG.MouseUpEventHandler += detailMouseUpEventHandler; - devName.MouseUpEventHandler += detailMouseUpEventHandler; - targetRowLayout.MouseUpEventHandler += detailMouseUpEventHandler; - targetFL.MouseUpEventHandler += detailMouseUpEventHandler; + + } } } @@ -316,7 +293,14 @@ var top = new TopFrameLayout(); AddChidren(top); top.InitTopview(); - top.SetTopTitle(R.MyInternationalizationString.AddScence); + if(isModify) + { + top.SetTopTitle(R.MyInternationalizationString.EditorScene); + } + else + { + top.SetTopTitle(R.MyInternationalizationString.AddScence); + } top.backButton.MouseUpEventHandler += (sender, e) => { RemoveFromParent(); @@ -442,14 +426,24 @@ //娣诲姞鐩爣鍚庣殑灞曠ず鍒楄〃 TargetListScrolView = new VerticalScrolViewLayout() { - Y = targetLine.Bottom, - Height = Application.GetRealHeight(730-127), + 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(); @@ -473,14 +467,14 @@ Shared.Phone.UserView.HomePage.Instance.AddChidren(localPic); Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; localPic.Show(); - localPic.action = () => + localPic.action = (imgPath) => { - backGround.UnSelectedImagePath = ImagePath; + IconPathType = 0; + backGround.UnSelectedImagePath = imgPath; }; }; backGround.MouseUpEventHandler += backGroundIMGHander; - //鍖哄煙 EventHandler<MouseEventArgs> zoneHander = (sender, e) => @@ -588,26 +582,32 @@ selectedFunctionBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); - var deviceTypeList = new CategorySceneSelectDevice(); - UserView.HomePage.Instance.AddChidren(deviceTypeList); + var deviceView = new SelectDevice(); + UserView.HomePage.Instance.AddChidren(deviceView); UserView.HomePage.Instance.PageIndex += 1; - deviceTypeList.Show(sceneTargetDevicesList); + deviceView.beforeSceneTargetDeviceUIs = sceneTargetDevicesList; + deviceView.Show(); + deviceView.selectedAction = (selectedDevice) => + { + sceneTargetDevicesList.Add(selectedDevice); + RefreshTargetListView(); + }; }; //娣诲姞鍦烘櫙 selectedSceneBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); - var sceneView = new CategorySceneSelectedScene(); + var sceneView = new SelectScene(); UserView.HomePage.Instance.AddChidren(sceneView); UserView.HomePage.Instance.PageIndex += 1; - //if (Modify) - //{ - // sceneView.Show(sceneTargetDevicesList, -1, "", false, ModifySceneUI.Id); - //} - //else - //{ - // sceneView.Show(sceneTargetDevicesList); - //} + sceneView.beforeSceneTargetDeviceUIs = sceneTargetDevicesList; + sceneView.Show(); + sceneView.selectedAction = (selectedScene) => + { + sceneTargetDevicesList.Add(selectedScene); + RefreshTargetListView(); + }; + }; //娣诲姞鏃堕棿闂撮殧 selectedTimerBtn.MouseUpEventHandler += (send, ee) => @@ -651,123 +651,281 @@ return; } - //鏂板 - if (string.IsNullOrEmpty(nameRow.NameText.Text)) + if(isModify) { - 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) => + if (string.IsNullOrEmpty(nameRow.NameText.Text)) { - return; - }; + 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 (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) + { + + } + + CommonPage.Loading.Start(); + var memberDataList = new List<ZigBee.Device.Scene.AddSceneMemberData>(); + 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<RemoveSceneDeviceListInfo> { }; + 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 { - try + //鏂板 + if (string.IsNullOrEmpty(nameRow.NameText.Text)) { - if (Shared.Common.Room.AllRoomSceneUIList.Find(s => s.Name == nameRow.NameText.Text.Trim()) != null) + 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) => { - Common.CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneHadExist); return; - } - CommonPage.Loading.Start(); - var memberDataList = new List<ZigBee.Device.Scene.AddSceneMemberData>(); - //绱姞寤舵椂 - 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 curRoom.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) + else { - System.Console.WriteLine($"鍒嗙被娣诲姞鍦烘櫙鍑洪敊{ex.Message}"); - } - finally - { - CommonPage.Loading.Hide(); - } + try + { + 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<ZigBee.Device.Scene.AddSceneMemberData>(); + 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, 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 } -- Gitblit v1.8.0