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