using System;
using System.Collections.Generic;
using Shared.Phone.Device.Category;
namespace Shared.Common
{
///
/// 在分类场景中使用,展示要加上房间的名称
///
[System.Serializable]
public class SceneRoomUI
{
///
/// 场景信息
///
public SceneUI sceneUI;
///
/// 房间
///
public Room room;
///
/// 所有的场景和房间信息
///
public static void GetAllSceneRoomUIList()
{
//选择场景--所有房间的所有场景
AllSceneRoomUIList.Clear();
List sceneIdList = new List { };
foreach (var r in Shared.Common.Room.Lists)
{
if (r.SceneUIList.Count == 0)
{
continue;
}
foreach (var scene in r.SceneUIList)
{
if (scene == null)
{
continue;
}
if(!sceneIdList.Contains(scene.Id))
{
var sceneRoomUI = new SceneRoomUI { sceneUI = scene, room = r };
sceneIdList.Add(scene.Id);
AllSceneRoomUIList.Add(sceneRoomUI);
}
}
}
}
///
/// 所有的场景和房间信息 -请先调用 GetAllSceneRoomUIList
///
[Newtonsoft.Json.JsonIgnore]
public static List AllSceneRoomUIList = new List { };
///
/// 编辑场景
///
/// sceneUI
/// Room.
public static void EditScene(SceneUI sceneUI,Room room)
{
Application.RunOnMainThread(async () =>
{
try
{
CommonPage.Loading.Start();
//从网关中反序列化出对应的房间设备
var sceneDeviceList = await ZigBee.Device.Scene.GetSceneDeviceListAsync(sceneUI.Id);
if (sceneDeviceList == null)
{
CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheMainGatewayIsNotOnLine);
//CommonPage.Instance.FailureToServer();
return;
}
if (Shared.Common.Room.AllRoomDeviceUIList.Count == 0)
{
Shared.Common.Room.GetAllRoomDeviceUIList();
if (Shared.Common.Room.AllRoomDeviceUIList.Count == 0)
{
CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.ThisSceneHaveNoDevice);
}
//return;
}
if (sceneDeviceList.getSceneDeviceListInfo != null)
{
var deviceList = sceneDeviceList.getSceneDeviceListInfo.DeviceList;
//CategoryAddScene.sceneTargetDevicesList?.Clear();
//累加延时
int AddedDelayTime = 0;
if (deviceList != null && Shared.Common.Room.AllRoomDeviceUIList.Count != 0)
{
foreach (var sceneDev in deviceList)
{
if (sceneDev.Type == 0)
{
foreach (var dev in Shared.Common.Room.AllRoomDeviceUIList)
{
if (dev == null || dev.CommonDevice == null)
{
continue;
}
if (dev.CommonDevice.DeviceAddr == sceneDev.DeviceAddr && dev.CommonDevice.DeviceEpoint == sceneDev.Epoint)
{
if (sceneDev.DelayTime - AddedDelayTime > 0)
{
var sceneTargetDeviceTime = new SceneTargetDeviceUI { Type = 1, DelayTime = sceneDev.DelayTime - AddedDelayTime };
//CategoryAddScene.sceneTargetDevicesList.Add(sceneTargetDeviceTime);
//CategoryAddScene.beforeSceneTargetDevicesList.Add(sceneTargetDeviceTime);
var sceneTargetDevice = new SceneTargetDeviceUI { Type = 0, DeviceUI = dev, TaskList = sceneDev.TaskList };
//CategoryAddScene.sceneTargetDevicesList.Add(sceneTargetDevice);
//CategoryAddScene.beforeSceneTargetDevicesList.Add(sceneTargetDevice);
AddedDelayTime = sceneDev.DelayTime;
}
else
{
var sceneTargetDevice = new SceneTargetDeviceUI { Type = 0, DeviceUI = dev, TaskList = sceneDev.TaskList };
//CategoryAddScene.sceneTargetDevicesList.Add(sceneTargetDevice);
//CategoryAddScene.beforeSceneTargetDevicesList.Add(sceneTargetDevice);
}
}
}
}
else if (sceneDev.Type == 1)
{
string localSceneName = string.Empty;
var localScene = SceneRoomUI.AllSceneRoomUIList.Find((obj) => obj.sceneUI.Id == sceneDev.ElseScenesId);
if (localScene != null)
{
localSceneName = localScene.sceneUI.Name;
}
if (sceneDev.DelayTime - AddedDelayTime > 0)
{
var sceneTargetDeviceTime = new SceneTargetDeviceUI { Type = 1, DelayTime = sceneDev.DelayTime - AddedDelayTime };
//CategoryAddScene.sceneTargetDevicesList.Add(sceneTargetDeviceTime);
//CategoryAddScene.beforeSceneTargetDevicesList.Add(sceneTargetDeviceTime);
var sceneTargetDeviceScene = new SceneTargetDeviceUI { Type = 2, ElseScenesId = sceneDev.ElseScenesId, SceneName = localSceneName };
//CategoryAddScene.sceneTargetDevicesList.Add(sceneTargetDeviceScene);
//CategoryAddScene.beforeSceneTargetDevicesList.Add(sceneTargetDeviceScene);
AddedDelayTime = sceneDev.DelayTime;
}
else
{
var sceneTargetDeviceScene = new SceneTargetDeviceUI { Type = 2, ElseScenesId = sceneDev.ElseScenesId, SceneName = localSceneName };
//CategoryAddScene.sceneTargetDevicesList.Add(sceneTargetDeviceScene);
//CategoryAddScene.beforeSceneTargetDevicesList.Add(sceneTargetDeviceScene);
}
}
}
}
}
else
{
CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
}
var scene = new CategoryAddScene();
Phone.UserView.HomePage.Instance.AddChidren(scene);
Phone.UserView.HomePage.Instance.PageIndex += 1;
//CategoryAddScene.SceneText = sceneUI.Name;
//scene.curRoom = room;
//CategoryAddScene.ModifySceneUI = sceneUI;
//CategoryAddScene.Modify = true;
//CategoryAddScene.ImagePath = sceneUI.IconPath;
scene.Show();
}
catch (Exception ex)
{
System.Console.WriteLine($"编辑场景出错---{ex.Message}");
}
finally
{
CommonPage.Loading.Hide();
}
});
}
}
}