using System;
|
using System.Collections.Generic;
|
using Shared.Common;
|
using Shared.Phone.Device.Category;
|
using ZigBee.Device;
|
namespace Shared.Phone.Device.Room
|
{
|
public class AddRoomContent:FrameLayout
|
{
|
#region ◆ 变量____________________________
|
/// <summary>
|
/// The current room.
|
/// </summary>
|
public static Shared.Common.Room CurrentRoom;
|
/// <summary>
|
/// The instance.
|
/// </summary>
|
public static AddRoomContent instance;
|
/// <summary>
|
/// The function scene body view.
|
/// </summary>
|
public FrameLayout FunctionSceneBodyView;
|
/// <summary>
|
/// 功能
|
/// </summary>
|
public Button FunctionBtn;
|
/// <summary>
|
/// 场景
|
/// </summary>
|
public Button SceneBtn;
|
/// <summary>
|
/// The add function or scence button.
|
/// </summary>
|
public Button AddFunctionOrScenceBtn;
|
/// <summary>
|
/// 为空时添加
|
/// </summary>
|
public Button NoFunction;
|
/// <summary>
|
/// The no function tip.
|
/// </summary>
|
public Button NoFunctionTip;
|
/// <summary>
|
/// The no scence.
|
/// </summary>
|
public Button NoScence;
|
/// <summary>
|
/// The no scence tip.
|
/// </summary>
|
public Button NoScenceTip;
|
|
#endregion
|
|
#region ◆ 构造方法_________________________
|
//添加或者修改房间设备、场景
|
public AddRoomContent()
|
{
|
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
|
instance = this;
|
}
|
|
public override void RemoveFromParent()
|
{
|
base.RemoveFromParent();
|
}
|
#endregion
|
|
#region ◆ 显示视图_________________________
|
/// <summary>
|
/// 显示界面
|
/// </summary>
|
/// <param name="room">Room.</param>
|
public void Show(Shared.Common.Room room)
|
{
|
CurrentRoom = room;
|
#region topview
|
var topBGView = new FrameLayout()
|
{
|
Height = Application.GetRealHeight(CommonPage.Navigation_Height),
|
BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor
|
};
|
AddChidren(topBGView);
|
var topView = new FrameLayout()
|
{
|
Y = Application.GetRealHeight(CommonPage.NavigationTitle_Y),
|
Height = Application.GetRealHeight(CommonPage.Navigation_Height - CommonPage.NavigationTitle_Y),
|
BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor,
|
};
|
AddChidren(topView);
|
|
var title = new Button()
|
{
|
TextAlignment = TextAlignment.Center,
|
Text = room.Name,
|
TextSize = 20,
|
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
|
Width = Application.GetRealWidth(CommonPage.AppRealWidth - 500),
|
Gravity = Gravity.CenterHorizontal
|
};
|
topView.AddChidren(title);
|
|
var back = new Device.CommonForm.BackButton() { };
|
topView.AddChidren(back);
|
back.MouseUpEventHandler += (sender, e) =>
|
{
|
this.RemoveFromParent();
|
};
|
|
AddFunctionOrScenceBtn = new Device.CommonForm.SelectedStatuButton()
|
{
|
Width = Application.GetMinRealAverage(100),
|
Height = Application.GetMinRealAverage(100),
|
UnSelectedImagePath = "Item/Add.png",
|
SelectedImagePath = "Item/AddSelected.png",
|
X = Application.GetRealWidth(CommonPage.AppRealWidth - 150),
|
Gravity = Gravity.CenterVertical
|
};
|
topView.AddChidren(AddFunctionOrScenceBtn);
|
#endregion
|
|
#region midFL
|
var midFL = new FrameLayout()
|
{
|
Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.Navigation_Height),
|
Y = topView.Bottom,
|
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
|
};
|
this.AddChidren(midFL);
|
|
int functionScene_Width = CommonPage.AppRealWidth / 2;
|
int functionScene_Height = 150;
|
//功能
|
FunctionBtn = new Button()
|
{
|
Width = Application.GetRealWidth(functionScene_Width),
|
Height = Application.GetRealHeight(functionScene_Height),
|
BackgroundColor = ZigbeeColor.Current.GXCButtonhardWhiteColor,
|
SelectedBackgroundColor = ZigbeeColor.Current.GXCButtonhardWhiteColor,
|
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
|
SelectedTextColor= ZigbeeColor.Current.GXCTextBlueColor,
|
TextAlignment = TextAlignment.Center,
|
TextSize = 16,
|
TextID = R.MyInternationalizationString.Function,
|
IsSelected=true
|
};
|
midFL.AddChidren(FunctionBtn);
|
//场景
|
SceneBtn = new Button()
|
{
|
X=FunctionBtn.Right,
|
Width = Application.GetRealWidth(functionScene_Width),
|
Height = Application.GetRealHeight(functionScene_Height),
|
BackgroundColor = ZigbeeColor.Current.GXCButtonhardWhiteColor,
|
SelectedBackgroundColor= ZigbeeColor.Current.GXCButtonhardWhiteColor,
|
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
|
SelectedTextColor = ZigbeeColor.Current.GXCTextBlueColor,
|
TextAlignment = TextAlignment.Center,
|
TextSize = 16,
|
TextID = R.MyInternationalizationString.Scence,
|
IsSelected=false
|
};
|
midFL.AddChidren(SceneBtn);
|
var line = new Button()
|
{
|
Y=FunctionBtn.Bottom,
|
Height= CommonPage.LineHeight,
|
Width= Application.GetRealWidth(functionScene_Width),
|
BackgroundColor=ZigbeeColor.Current.GXCButtonBlueColor
|
};
|
midFL.AddChidren(line);
|
//功能和场景bodyView
|
FunctionSceneBodyView = new FrameLayout()
|
{
|
Y=line.Bottom,
|
Height=midFL.Height-line.Bottom,
|
BackgroundColor=ZigbeeColor.Current.GXCBackgroundColor
|
};
|
midFL.AddChidren(FunctionSceneBodyView);
|
#endregion
|
|
#region event
|
|
AddFunctionOrScenceBtn.MouseUpEventHandler += AddFunctionOrScenceHandler;
|
//选择功能分栏
|
FunctionBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
SceneBtn.IsSelected = false;
|
FunctionBtn.IsSelected = true;
|
line.X = FunctionBtn.X;
|
RefreshBodyView();
|
};
|
//选择场景分栏
|
SceneBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
FunctionBtn.IsSelected = false;
|
SceneBtn.IsSelected = true;
|
line.X = SceneBtn.X;
|
RefreshBodyView();
|
};
|
RefreshBodyView();
|
#endregion
|
}
|
|
#endregion
|
|
#region ◆ 添加____________________________
|
/// <summary>
|
/// 添加功能或者场景
|
/// </summary>
|
/// <param name="sender">Sender.</param>
|
/// <param name="e">E.</param>
|
private void AddFunctionOrScenceHandler(object sender, MouseEventArgs e)
|
{
|
if (CurrentRoom.IsSharedRoom)
|
{
|
RoomCommon.ShowTipRoomIsShared();
|
return;
|
}
|
|
if (FunctionBtn.IsSelected)
|
{
|
//添加功能
|
var addDeviceList = new AddDeviceList();
|
UserView.HomePage.Instance.AddChidren(addDeviceList);
|
UserView.HomePage.Instance.PageIndex += 1;
|
addDeviceList.Show(CurrentRoom);
|
}
|
else
|
{
|
//添加场景
|
var addScene = new AddRoomScene();
|
AddRoomScene.SceneText = "";
|
AddRoomScene.ImagePath = "Scene/Scene0.png";
|
UserView.HomePage.Instance.AddChidren(addScene);
|
UserView.HomePage.Instance.PageIndex += 1;
|
AddRoomScene.sceneTargetDevicesList?.Clear();
|
addScene.Show(CurrentRoom);
|
}
|
}
|
|
#endregion
|
|
#region ◆ 刷新____________________________
|
|
/// <summary>
|
/// 刷新
|
/// </summary>
|
public void RefreshBodyView()
|
{
|
FunctionSceneBodyView.RemoveAll();
|
if (FunctionBtn.IsSelected)
|
{
|
//选择功能
|
var filePathList = CurrentRoom.DeviceUIFilePathList;
|
if (filePathList.Count == 0)
|
{
|
NoFunction = new Button()
|
{
|
Width = Application.GetMinRealAverage(220),
|
Height = Application.GetMinRealAverage(220),
|
UnSelectedImagePath = "Room/AddScenceFunction.png",
|
Gravity = Gravity.Center
|
};
|
FunctionSceneBodyView.AddChidren(NoFunction);
|
NoFunctionTip = new Button()
|
{
|
Y = NoFunction.Bottom,
|
Height = Application.GetMinRealAverage(200),
|
TextID = R.MyInternationalizationString.AddFunction,
|
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
|
TextSize = 15,
|
TextAlignment = TextAlignment.Center
|
};
|
FunctionSceneBodyView.AddChidren(NoFunctionTip);
|
//添加功能或者场景
|
NoFunction.MouseUpEventHandler += AddFunctionOrScenceHandler;
|
NoFunctionTip.MouseUpEventHandler += AddFunctionOrScenceHandler;
|
}
|
else
|
{
|
var dlistScrowView = new VerticalScrolViewLayout()
|
{
|
};
|
FunctionSceneBodyView.AddChidren(dlistScrowView);
|
|
foreach (var filePath in filePathList)
|
{
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceUI>(System.Text.Encoding.UTF8.GetString(Global.ReadFileByHomeId(filePath)));
|
if (device == null || device.CommonDevice == null)
|
{
|
continue;
|
}
|
var deviceItemFL = new RowLayout()
|
{
|
Height = Application.GetRealHeight(170)
|
};
|
dlistScrowView.AddChidren(deviceItemFL);
|
var deviceIMG = new Button()
|
{
|
X = Application.GetRealWidth(50),
|
Width = Application.GetMinRealAverage(110),
|
Height = Application.GetMinRealAverage(110),
|
UnSelectedImagePath = device.IconPath,
|
SelectedImagePath = device.OnlineIconPath,
|
IsSelected = device.CommonDevice.IsOnline == 1,
|
Gravity = Gravity.CenterVertical
|
};
|
deviceItemFL.AddChidren(deviceIMG);
|
var deviceName = new Button()
|
{
|
X = deviceIMG.Right + Application.GetRealWidth(50),
|
Width = Application.GetRealWidth(700),
|
Height = Application.GetRealHeight(110),
|
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
|
SelectedTextColor = ZigbeeColor.Current.GXCButtonBlueColor,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextSize = 16,
|
Text = device.CommonDevice.DeviceEpointName,
|
Gravity = Gravity.CenterVertical
|
};
|
deviceItemFL.AddChidren(deviceName);
|
var deviceRight = new Button()
|
{
|
X = Application.GetRealWidth(1080 - 150),
|
Width = Application.GetMinRealAverage(110),
|
Height = Application.GetMinRealAverage(110),
|
UnSelectedImagePath = "Item/Next.png",
|
Gravity = Gravity.CenterVertical
|
};
|
//deviceItemFL.AddChidren(deviceRight);
|
var deviceLine = new Button()
|
{
|
Y = Application.GetRealHeight(170) - 1,
|
Height = 1,
|
BackgroundColor = ZigbeeColor.Current.GXCLineColor,
|
Tag = device
|
};
|
deviceItemFL.AddChidren(deviceLine);
|
|
var delBtn = new Button()
|
{
|
BackgroundColor = ZigbeeColor.Current.GXCRedColor,
|
TextID = R.MyInternationalizationString.Delete,
|
TextColor = ZigbeeColor.Current.GXCTextWhiteColor
|
};
|
if (!CurrentRoom.IsSharedRoom)
|
{
|
deviceItemFL.AddRightView(delBtn);
|
}
|
|
delBtn.MouseUpEventHandler += (send, ee) =>
|
{
|
var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.ConfirmDelete), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
|
alert.Show();
|
alert.ResultEventHandler += (send1, e1) =>
|
{
|
if (e1)
|
{
|
CurrentRoom.DeleteDevice(device.FileName);
|
Show(CurrentRoom);
|
}
|
};
|
};
|
}
|
}
|
}
|
else
|
{
|
//选择场景
|
var sceneList = CurrentRoom.SceneUIList;
|
if (sceneList.Count == 0)
|
{
|
NoScence = new Button()
|
{
|
Width = Application.GetMinRealAverage(220),
|
Height = Application.GetMinRealAverage(220),
|
UnSelectedImagePath = "Room/AddScenceFunction.png",
|
Gravity = Gravity.Center
|
};
|
FunctionSceneBodyView.AddChidren(NoScence);
|
NoScenceTip = new Button()
|
{
|
Y = NoScence.Bottom,
|
Height = Application.GetMinRealAverage(200),
|
TextID = R.MyInternationalizationString.AddScence,
|
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
|
TextSize = 15,
|
TextAlignment = TextAlignment.Center
|
};
|
FunctionSceneBodyView.AddChidren(NoScenceTip);
|
//添加功能或者场景
|
NoScence.MouseUpEventHandler += AddFunctionOrScenceHandler;
|
NoScenceTip.MouseUpEventHandler += AddFunctionOrScenceHandler;
|
}
|
else
|
{
|
var sceneScrolView = new VerticalScrolViewLayout { };
|
FunctionSceneBodyView.AddChidren(sceneScrolView);
|
foreach (var scene in sceneList)
|
{
|
if (scene == null)
|
{
|
continue;
|
}
|
var sceneFL = new FrameLayout()
|
{
|
Width = Application.GetRealWidth(1080 - 100),
|
Height = Application.GetRealHeight(400),
|
Tag = scene,
|
Gravity = Gravity.CenterHorizontal
|
};
|
sceneScrolView.AddChidren(sceneFL);
|
var sceneRowLayout = new RowLayout()
|
{
|
Y = Application.GetRealHeight(30),
|
Height = Application.GetRealHeight(400 - 10 - 30),
|
LineColor = ZigbeeColor.Current.GXCBackgroundColor,
|
Radius = CommonPage.BigFormRadius
|
};
|
sceneFL.AddChidren(sceneRowLayout);
|
var sceneItemFL = new FrameLayout()
|
{
|
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
|
Radius = CommonPage.BigFormRadius
|
};
|
sceneRowLayout.AddChidren(sceneItemFL);
|
var sceneImg = new Button()
|
{
|
UnSelectedImagePath = scene.IconPath
|
};
|
sceneItemFL.AddChidren(sceneImg);
|
var hardBlackBG = new Button()
|
{
|
BackgroundColor = ZigbeeColor.Current.GXCBlack70Color,
|
SelectedBackgroundColor = ZigbeeColor.Current.GXCBlack80Color
|
};
|
sceneItemFL.AddChidren(hardBlackBG);
|
var sceneNameBtn = new Button()
|
{
|
Text = scene.Name,
|
TextColor = ZigbeeColor.Current.GXCTextWhiteColor
|
};
|
sceneItemFL.AddChidren(sceneNameBtn);
|
//删除
|
var deleteBtn = new CommonForm.RowLayoutDeleteButton
|
{
|
Tag = scene
|
};
|
if (!CurrentRoom.IsSharedRoom)
|
{
|
sceneRowLayout.AddRightView(deleteBtn);
|
}
|
|
EventHandler<MouseEventArgs> sceneDownHandler = (sender, e) =>
|
{
|
hardBlackBG.IsSelected = true;
|
};
|
sceneNameBtn.MouseDownEventHandler += sceneDownHandler;
|
hardBlackBG.MouseDownEventHandler += sceneDownHandler;
|
//调用场景
|
EventHandler<MouseEventArgs> sceneHandler = async (sender, e) =>
|
{
|
hardBlackBG.IsSelected = false;
|
//1成功 0失败
|
//后面补上相关提示
|
var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(scene.Id, 0);
|
//主网关不在线
|
if (sceneOpenAllData == null)
|
{
|
//CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheMainGatewayIsNotOnLine);
|
CommonPage.Instance.FailureToServer();
|
return;
|
}
|
if (sceneOpenAllData.sceneOpenData == null)
|
{
|
CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
|
return;
|
}
|
//成功
|
if (sceneOpenAllData.sceneOpenData.Result == 1)
|
{
|
|
}
|
//失败
|
else
|
{
|
CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
|
return;
|
}
|
};
|
sceneNameBtn.MouseUpEventHandler += sceneHandler;
|
hardBlackBG.MouseUpEventHandler += sceneHandler;
|
|
//删除场景
|
EventHandler<MouseEventArgs> delEvent = (sender, e) =>
|
{
|
var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.ConfirmDelete), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
|
alert.Show();
|
alert.ResultEventHandler += async (send1, e1) =>
|
{
|
if (e1)
|
{
|
//0 移除失败 1 移除成功 2 没有该场景
|
var removeSceneAllData = await ZigBee.Device.Scene.DeleteSceneAsync(scene.Id);
|
if (removeSceneAllData == null || removeSceneAllData.removeSceneData == null)
|
{
|
return;
|
}
|
if (removeSceneAllData.removeSceneData.Result == 1)
|
{
|
//1成功
|
CurrentRoom.RemoveScene(scene);
|
//RefreshBodyView();
|
sceneScrolView.RemoveViewByTag((sender as Button).Tag);
|
}
|
else if (removeSceneAllData.removeSceneData.Result == 0)
|
{
|
//0 移除失败
|
CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
|
return;
|
}
|
else if (removeSceneAllData.removeSceneData.Result == 2)
|
{
|
//2 没有该场景
|
CurrentRoom.RemoveScene(scene);
|
//RefreshBodyView();
|
sceneScrolView.RemoveViewByTag((sender as Button).Tag);
|
CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneIsNull);
|
}
|
}
|
};
|
};
|
deleteBtn.MouseUpEventHandler += delEvent;
|
}
|
}
|
}
|
}
|
|
#endregion
|
}
|
}
|