黄学彪
2020-01-06 72be4f06a683de33ddd563c8447c39f7f17e5b7d
ZigbeeApp/Shared/Phone/Device/CommonForm/SceneCategoryView.cs
@@ -1,5 +1,9 @@
using System;
using System.Collections.Generic;
using Shared.Common;
using Shared.Phone.Device.Category;
using Shared.Phone.UserCenter;
namespace Shared.Phone.Device.CommonForm
{
    public class SceneCategoryView : FrameLayout
@@ -56,6 +60,7 @@
        /// </summary>
        private void InitFrame()
        {
            RemoveAll();
            var sceneRowLayout = new RowLayout
            {
                Y = Application.GetRealHeight(46),
@@ -64,6 +69,7 @@
                Tag= scene
            };
            AddChidren(sceneRowLayout);
            sceneRowLayout.SubViewWidth = Application.GetRealWidth(199);
            sceneImg = new ImageView()
            {
@@ -164,8 +170,10 @@
            var delayBtn = new RowLayoutDeleteButton
            {
                TextID = R.MyInternationalizationString.Delay,
                Tag = scene.SceneDelayTime
                Tag = scene.SceneDelayTime,
                BackgroundColor=ZigbeeColor.Current.GXCTextSelectedColor,
            };
            delayBtn.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight | HDLUtils.RectCornerBottomRight);
            sceneRowLayout.AddLeftView(delayBtn);
            //编辑
            var settingBtn = new Device.CommonForm.RowLayoutEditButton()
@@ -173,12 +181,13 @@
                TextID = R.MyInternationalizationString.Editor,
                Tag = scene.SceneDelayTime
            };
            settingBtn.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerTopLeft);
            //删除
            var deleteBtn = new Device.CommonForm.RowLayoutDeleteButton
            {
                Tag = scene
            };
            deleteBtn.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerTopRight | HDLUtils.RectCornerBottomRight);
            if (room.IsSharedRoom)
            {
@@ -193,6 +202,7 @@
                {
                    sceneRowLayout.AddRightView(settingBtn);
                    sceneRowLayout.AddRightView(deleteBtn);
                }
            }
@@ -206,52 +216,146 @@
                }
                else
                {
                    var tip = new CustomAlert { };
                    Common.CommonPage.Instance.AddChidren(tip);
                    tip.Show(Language.StringByID(R.MyInternationalizationString.ConfirmDelete));
                    tip.ResultEventHandler += async (e1) =>
                    var alert = new UserCenter.ShowMsgControl(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.ConfirmDelete));
                    alert.Show();
                    alert.ConfirmClickEvent += async () =>
                    {
                        if (e1)
                        //0 移除失败 1 移除成功 2 没有该场景
                        var removeSceneAllData = await ZigBee.Device.Scene.DeleteSceneAsync(scene.Id);
                        if (removeSceneAllData == null || removeSceneAllData.removeSceneData == null)
                        {
                            //0 移除失败 1 移除成功 2 没有该场景
                            var removeSceneAllData = await ZigBee.Device.Scene.DeleteSceneAsync(scene.Id);
                            if (removeSceneAllData == null || removeSceneAllData.removeSceneData == null)
                            {
                                CommonPage.Instance.FailureToServer();
                                return;
                            }
                            //1成功
                            if (removeSceneAllData.removeSceneData.Result == 1)
                            {
                                room.RemoveScene(scene);
                                //RefreshBodyView();
                                RemoveFromParent();
                            }
                            //0 移除失败
                            else if (removeSceneAllData.removeSceneData.Result == 0)
                            {
                                CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
                                return;
                            }
                            //2 没有该场景
                            else if (removeSceneAllData.removeSceneData.Result == 2)
                            {
                                room.RemoveScene(scene);
                                //RefreshBodyView();
                                RemoveFromParent();
                                CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneIsNull);
                                return;
                            }
                            CommonPage.Instance.FailureToServer();
                            return;
                        }
                        //1成功
                        if (removeSceneAllData.removeSceneData.Result == 1)
                        {
                            room.RemoveScene(scene);
                            //RefreshBodyView();
                            RemoveFromParent();
                        }
                        //0 移除失败
                        else if (removeSceneAllData.removeSceneData.Result == 0)
                        {
                            CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
                            return;
                        }
                        //2 没有该场景
                        else if (removeSceneAllData.removeSceneData.Result == 2)
                        {
                            room.RemoveScene(scene);
                            //RefreshBodyView();
                            RemoveFromParent();
                            CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneIsNull);
                            return;
                        }
                    };
                }
            };
            deleteBtn.MouseUpEventHandler += delEvent;
            //编辑场景
            settingBtn.MouseUpEventHandler += (sender, e) =>
            settingBtn.MouseUpEventHandler += async (sender, e) =>
            {
                SceneUI.EditScene(scene, room);
                try
                {
                    var targetList = new List<SceneTargetDeviceUI> { };
                    CommonPage.Loading.Start();
                    //从网关中反序列化出对应的房间设备
                    var sceneDeviceList = await ZigBee.Device.Scene.GetSceneDeviceListAsync(scene.Id);
                    if (sceneDeviceList == null)
                    {
                        CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.TheMainGatewayIsNotOnLine));
                        return;
                    }
                    if (sceneDeviceList.getSceneDeviceListInfo != null)
                    {
                        var deviceList = sceneDeviceList.getSceneDeviceListInfo.DeviceList;
                        var allDevice = Common.Room.AllRoomDeviceUIList;
                        var allScene = Common.Room.AllRoomSceneUIList;
                        if (deviceList != null && allDevice.Count != 0)
                        {
                            foreach (var sceneDev in deviceList)
                            {
                                if (sceneDev.Type == 0)
                                {
                                    var dev = allDevice.Find((obj) => obj.DeviceEpoint == sceneDev.Epoint && obj.DeviceAddr == sceneDev.DeviceAddr);
                                    if (dev != null)
                                    {
                                        var sceneTargetDevice = new SceneTargetDeviceUI
                                        {
                                            Type = 0,
                                            DeviceUI = dev,
                                            TaskList = sceneDev.TaskList,
                                            DelayTimeSerialNumber = deviceList.IndexOf(sceneDev) + 1
                                        };
                                        targetList.Add(sceneTargetDevice);
                                    }
                                }
                                else if (sceneDev.Type == 1)
                                {
                                    var localScene = allScene.Find((obj) => obj.Id == sceneDev.ElseScenesId);
                                    if (localScene != null)
                                    {
                                        var sceneTargetDeviceScene = new SceneTargetDeviceUI
                                        {
                                            Type = 1,
                                            ElseScenesId = sceneDev.ElseScenesId,
                                            SceneName = localScene.Name,
                                            SceneUI = localScene,
                                            DelayTimeSerialNumber = deviceList.IndexOf(sceneDev) + 1
                                        };
                                        targetList.Add(sceneTargetDeviceScene);
                                    }
                                }
                                else
                                {
                                    var sceneTargetDeviceScene = new SceneTargetDeviceUI
                                    {
                                        Type = 2,
                                        DelayTime = sceneDev.DelayTime,
                                        DelayTimeSerialNumber = deviceList.IndexOf(sceneDev) + 1
                                    };
                                    targetList.Add(sceneTargetDeviceScene);
                                }
                            }
                        }
                    }
                    else
                    {
                        CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.FailedPleaseTryAgain));
                    }
                    var sceneView = new CategoryAddScene();
                    Phone.UserView.HomePage.Instance.AddChidren(sceneView);
                    Phone.UserView.HomePage.Instance.PageIndex += 1;
                    sceneView.isModify = true;
                    sceneView.modifyRoom = room;
                    sceneView.modifySceneUI = scene;
                    sceneView.modifySceneTargetDevicesList = targetList;
                    sceneView.Show();
                    sceneView.EditorAction = (s, r) =>
                    {
                        if(r.Id!=room.Id)
                        {
                            RemoveFromParent();
                        }
                        else
                        {
                            Init(s, r);
                        }
                    };
                }
                catch (Exception ex)
                {
                    System.Console.WriteLine($"编辑场景出错---{ex.Message}");
                }
                finally
                {
                    CommonPage.Loading.Hide();
                }
            };
            //编辑延时
            delayBtn.MouseUpEventHandler += (sender, e) =>