using System;
|
using System.Collections.Generic;
|
using Shared.Common;
|
using Shared.Phone.UserView;
|
using Shared.R;
|
using ZigBee.Device;
|
|
namespace Shared.Phone.Device.Category
|
{
|
/// <summary>
|
/// Category.
|
/// </summary>
|
public class Category : FrameLayout, ZigBee.Common.IStatus
|
{
|
|
#region ◆ 变量____________________________
|
/// <summary>
|
/// The instance.
|
/// </summary>
|
public static Category instance;
|
/// <summary>
|
/// 功能
|
/// </summary>
|
public Button functionBtn;
|
/// <summary>
|
/// 场景
|
/// </summary>
|
public Button sceneBtn;
|
/// <summary>
|
/// 自动化
|
/// </summary>
|
public Button automationBtn;
|
/// <summary>
|
/// 中部背景bodyView
|
/// </summary>
|
public FrameLayout functionSceneBodyView;
|
/// <summary>
|
/// 相同的设备列表
|
/// </summary>
|
public VerticalScrolViewLayout deviceListScrolView;
|
/// <summary>
|
/// 设备是否在线标识--Online
|
/// </summary>
|
private readonly string deviceStatus_Online = "Online";
|
/// <summary>
|
/// 设备状态开关标识--Switch
|
/// </summary>
|
private readonly string deviceStatus_OnOffStatus = "Switch";
|
/// <summary>
|
/// 右上角添加按钮
|
/// </summary>
|
private Device.CommonForm.SelectedStatuButton addBtn;
|
/// <summary>
|
/// 分栏底部线条.
|
/// </summary>
|
private Button line;
|
/// <summary>
|
/// 网关
|
/// </summary>
|
private ZbGateway zbGateway = null;
|
/// <summary>
|
/// 网关列表
|
/// </summary>
|
private List<ZbGateway> zbGatewayList = new List<ZbGateway> { };
|
/// <summary>
|
/// 设备列表
|
/// </summary>
|
private List<CommonDevice> commonDeviceList = new List<CommonDevice> { };
|
/// <summary>
|
/// 是否发送控制命令成功了
|
/// </summary>
|
private bool sendedControlCommand = false;
|
/// <summary>
|
/// 当前功能类型按钮
|
/// </summary>
|
private Button tempFunctionTypeBtn;
|
/// <summary>
|
/// 功能类型按钮
|
/// </summary>
|
private Button functionTypeIMG;
|
/// <summary>
|
/// 功能类型
|
/// </summary>
|
private HorizontalScrolViewLayout functionTypeScrowView;
|
/// <summary>
|
/// 设备类型RowLayout
|
/// </summary>
|
private RowLayout typeRowLayout;
|
|
#endregion
|
|
#region ◆ 接口____________________________
|
/// <summary>
|
/// 该接口将弃用 改用DeviceInfoChange()
|
/// </summary>
|
/// <param name="common">Common.</param>
|
public void Changed(CommonDevice common)
|
{
|
|
}
|
/// <summary>
|
/// Changeds the IL ogic status.
|
/// </summary>
|
/// <param name="logic">Logic.</param>
|
public void ChangedILogicStatus(ZigBee.Device.Logic logic)
|
{
|
|
}
|
/// <summary>
|
/// Changeds the IS cene status.
|
/// </summary>
|
/// <param name="scene">Scene.</param>
|
public void ChangedISceneStatus(Scene scene)
|
{
|
|
}
|
/// <summary>
|
/// 设备状态更新接口
|
/// <para>type:如果为 DeviceInComingRespon:设备新上报</para>
|
/// <para>type:如果为 IASInfoReport:RemoveDeviceRespon</para>
|
/// <para>type:如果为 DeviceStatusReport:设备上报</para>
|
/// <para>type:如果为 IASInfoReport:IAS安防信息上报</para>
|
/// <para>type:如果为 OnlineStatusChange: 设备在线状态更新</para>
|
/// </summary>
|
/// <param name="common">Common.</param>
|
/// <param name="typeTag">Type tag.</param>
|
public void DeviceInfoChange(CommonDevice common, string typeTag)
|
{
|
//设备上报状态中 当CluterID=3,就证明该设备在线,直接标记
|
if (typeTag == "DeviceStatusReport")
|
{
|
Application.RunOnMainThread(() =>
|
{
|
try
|
{
|
for (int i = 0; deviceListScrolView != null && i < deviceListScrolView.ChildrenCount; i++)
|
{
|
var rowLayout = deviceListScrolView.GetChildren(i) as RowLayout;
|
var deviceUI = rowLayout.Tag as DeviceUI;
|
if (deviceUI == null || deviceUI.CommonDevice == null)
|
{
|
continue;
|
}
|
if (deviceUI.CommonDevice.DeviceAddr != common.DeviceAddr || deviceUI.CommonDevice.DeviceEpoint != common.DeviceEpoint)
|
{
|
continue;
|
}
|
switch (deviceUI.CommonDevice.Type)
|
{
|
case DeviceType.OnOffOutput:
|
//开关功能
|
if ((common as ToggleLight).DeviceStatusReport.CluterID == 6)
|
{
|
var light = deviceUI.CommonDevice as ToggleLight;
|
light.DeviceStatusReport = (common as ToggleLight).DeviceStatusReport;
|
for (int j = 0; j < rowLayout.ChildrenCount; j++)
|
{
|
var tempView = rowLayout.GetChildren(j);
|
if (tempView.Tag == null)
|
{
|
continue;
|
}
|
if (tempView.Tag.ToString() == deviceStatus_OnOffStatus)
|
{
|
//记录、更新状态
|
if (light.DeviceStatusReport.AttriBute == null || light.DeviceStatusReport.AttriBute.Count == 0)
|
{
|
continue;
|
}
|
light.OnOffStatus = light.DeviceStatusReport.AttriBute[0].AttriButeData;
|
(tempView as Button).IsSelected = light.OnOffStatus == 1;
|
//记录回复时间
|
light.LastDateTime = DateTime.Now;
|
}
|
}
|
}
|
if ((common as ToggleLight).DeviceStatusReport.CluterID == 3)
|
{
|
var light = deviceUI.CommonDevice as ToggleLight;
|
light.IsOnline = 1;
|
//记录回复时间
|
light.LastDateTime = DateTime.Now;
|
for (int j = 0; j < rowLayout.ChildrenCount; j++)
|
{
|
var tempView = rowLayout.GetChildren(j);
|
if (tempView.Tag == null)
|
{
|
continue;
|
}
|
if (tempView.Tag.ToString() == deviceStatus_Online)
|
{
|
(tempView as Button).IsSelected = light.IsOnline == 1;
|
}
|
}
|
}
|
break;
|
|
case DeviceType.AirSwitch:
|
//开关功能
|
if ((common as ZigBee.Device.AirSwitch).DeviceStatusReport.CluterID == 6)
|
{
|
var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
|
airSwitch.DeviceStatusReport = (common as ZigBee.Device.AirSwitch).DeviceStatusReport;
|
for (int j = 0; j < rowLayout.ChildrenCount; j++)
|
{
|
var tempView = rowLayout.GetChildren(j);
|
if (tempView.Tag == null)
|
{
|
continue;
|
}
|
if (tempView.Tag.ToString() == deviceStatus_OnOffStatus)
|
{
|
//记录、更新状态
|
if (airSwitch.DeviceStatusReport.AttriBute == null || airSwitch.DeviceStatusReport.AttriBute.Count == 0)
|
{
|
return;
|
}
|
airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData;
|
(tempView as Button).IsSelected = airSwitch.OnOffStatus == 1;
|
//记录回复时间
|
airSwitch.LastDateTime = DateTime.Now;
|
}
|
}
|
}
|
if ((common as ZigBee.Device.AirSwitch).DeviceStatusReport.CluterID == 3)
|
{
|
var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
|
airSwitch.IsOnline = 1;
|
//记录回复时间
|
airSwitch.LastDateTime = DateTime.Now;
|
for (int j = 0; j < rowLayout.ChildrenCount; j++)
|
{
|
var tempView = rowLayout.GetChildren(j);
|
if (tempView.Tag == null)
|
{
|
continue;
|
}
|
if (tempView.Tag.ToString() == deviceStatus_Online)
|
{
|
(tempView as Button).IsSelected = airSwitch.IsOnline == 1;
|
}
|
}
|
}
|
break;
|
case DeviceType.WindowCoveringDevice:
|
if ((common as Rollershade).DeviceStatusReport.CluterID == 3)
|
{
|
var rollerShape = deviceUI.CommonDevice as Rollershade;
|
//记录回复时间
|
rollerShape.LastDateTime = DateTime.Now;
|
rollerShape.IsOnline = 1;
|
for (int j = 0; j < rowLayout.ChildrenCount; j++)
|
{
|
var tempView = rowLayout.GetChildren(j);
|
if (tempView.Tag == null)
|
{
|
continue;
|
}
|
if (tempView.Tag.ToString() == deviceStatus_Online)
|
{
|
(tempView as Button).IsSelected = rollerShape.IsOnline == 1;
|
}
|
}
|
}
|
break;
|
|
case DeviceType.Thermostat:
|
//AC功能
|
if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 513)
|
{
|
var attriButeList = (common as ZigBee.Device.AC).DeviceStatusReport.AttriBute;
|
if (attriButeList == null || attriButeList.Count == 0)
|
{
|
return;
|
}
|
var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
|
ac.DeviceStatusReport = (common as ZigBee.Device.AC).DeviceStatusReport;
|
switch (attriButeList[0].AttributeId)
|
{
|
case 0:
|
//此属性表明室内当前的温度 * 100,实际温度为“LocalTemperature / 100”,单位:℃
|
ac.currentLocalTemperature = attriButeList[0].AttriButeData / 100;
|
ac.LastDateTime = DateTime.Now;
|
break;
|
|
case 17:
|
//此属性表明此设备当前的制冷温度,实际温度为“CoolingSetpoint / 100”,单位:℃。
|
ac.currentCoolingSetpoint = attriButeList[0].AttriButeData / 100;
|
ac.LastDateTime = DateTime.Now;
|
break;
|
|
case 18:
|
//此属性表明此设备当前的制热温度,实际温度为“HeatingSetpoint / 100”,单位:℃。
|
ac.currentHeatingSetpoint = attriButeList[0].AttriButeData / 100;
|
ac.LastDateTime = DateTime.Now;
|
break;
|
|
case 28:
|
//此属性描述恒温设备正处于哪种模式
|
//Off = 0 Auto = 1 Cool = 3 Heat = 4 FanOnly = 7 Dry = 8
|
ac.currentSystemMode = attriButeList[0].AttriButeData;
|
ac.LastDateTime = DateTime.Now;
|
for (int j = 0; j < rowLayout.ChildrenCount; j++)
|
{
|
var tempView = rowLayout.GetChildren(j);
|
if (tempView.Tag == null)
|
{
|
continue;
|
}
|
if (tempView.Tag.ToString() == deviceStatus_OnOffStatus)
|
{
|
if (ac.currentSystemMode == 0)
|
{
|
(tempView as Button).IsSelected = false;
|
}
|
else
|
{
|
(tempView as Button).IsSelected = true;
|
}
|
}
|
}
|
break;
|
}
|
|
}
|
if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 3)
|
{
|
var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
|
ac.IsOnline = 1;
|
//记录回复时间
|
ac.LastDateTime = DateTime.Now;
|
for (int j = 0; j < rowLayout.ChildrenCount; j++)
|
{
|
var tempView = rowLayout.GetChildren(j);
|
if (tempView.Tag == null)
|
{
|
continue;
|
}
|
if (tempView.Tag.ToString() == deviceStatus_Online)
|
{
|
(tempView as Button).IsSelected = ac.IsOnline == 1;
|
}
|
}
|
}
|
break;
|
case DeviceType.DimmableLight:
|
//调光灯功能
|
if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 6)
|
{
|
var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
|
dimmableLight.DeviceStatusReport = (common as ZigBee.Device.DimmableLight).DeviceStatusReport;
|
for (int j = 0; j < rowLayout.ChildrenCount; j++)
|
{
|
var tempView = rowLayout.GetChildren(j);
|
if (tempView.Tag == null)
|
{
|
continue;
|
}
|
if (tempView.Tag.ToString() == deviceStatus_OnOffStatus)
|
{
|
//记录、更新状态
|
if (dimmableLight.DeviceStatusReport.AttriBute == null || dimmableLight.DeviceStatusReport.AttriBute.Count == 0)
|
{
|
return;
|
}
|
dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
|
(tempView as Button).IsSelected = dimmableLight.OnOffStatus == 1;
|
//记录回复时间
|
dimmableLight.LastDateTime = DateTime.Now;
|
}
|
}
|
}
|
if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 3)
|
{
|
var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
|
dimmableLight.IsOnline = 1;
|
//记录回复时间
|
dimmableLight.LastDateTime = DateTime.Now;
|
for (int j = 0; j < rowLayout.ChildrenCount; j++)
|
{
|
var tempView = rowLayout.GetChildren(j);
|
if (tempView.Tag == null)
|
{
|
continue;
|
}
|
if (tempView.Tag.ToString() == deviceStatus_Online)
|
{
|
(tempView as Button).IsSelected = dimmableLight.IsOnline == 1;
|
}
|
}
|
}
|
break;
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
System.Console.WriteLine($"分类设备状态-Error:{ex.Message}");
|
}
|
});
|
}
|
else if (typeTag == "OnlineStatusChange")
|
{
|
Application.RunOnMainThread(() =>
|
{
|
try
|
{
|
for (int i = 0; deviceListScrolView != null && i < deviceListScrolView.ChildrenCount; i++)
|
{
|
var rowLayout = deviceListScrolView.GetChildren(i) as RowLayout;
|
var deviceUI = rowLayout.Tag as DeviceUI;
|
if (deviceUI == null || deviceUI.CommonDevice == null)
|
{
|
continue;
|
}
|
if (deviceUI.CommonDevice.DeviceAddr != common.DeviceAddr || deviceUI.CommonDevice.DeviceEpoint != common.DeviceEpoint)
|
{
|
continue;
|
}
|
switch (deviceUI.CommonDevice.Type)
|
{
|
case DeviceType.OnOffOutput:
|
var light = deviceUI.CommonDevice as ToggleLight;
|
light.IsOnline = (common as ToggleLight).IsOnline;
|
//记录回复时间
|
light.LastDateTime = DateTime.Now;
|
for (int j = 0; j < rowLayout.ChildrenCount; j++)
|
{
|
var tempView = rowLayout.GetChildren(j);
|
if (tempView.Tag == null)
|
{
|
continue;
|
}
|
if (tempView.Tag.ToString() == deviceStatus_Online)
|
{
|
(tempView as Button).IsSelected = light.IsOnline == 1;
|
}
|
}
|
break;
|
case DeviceType.AirSwitch:
|
var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
|
airSwitch.IsOnline = (common as ZigBee.Device.AirSwitch).IsOnline;
|
//记录回复时间
|
airSwitch.LastDateTime = DateTime.Now;
|
for (int j = 0; j < rowLayout.ChildrenCount; j++)
|
{
|
var tempView = rowLayout.GetChildren(j);
|
if (tempView.Tag == null)
|
{
|
continue;
|
}
|
if (tempView.Tag.ToString() == deviceStatus_Online)
|
{
|
(tempView as Button).IsSelected = airSwitch.IsOnline == 1;
|
}
|
}
|
break;
|
case DeviceType.WindowCoveringDevice:
|
var rollerShape = deviceUI.CommonDevice as Rollershade;
|
//记录回复时间
|
rollerShape.LastDateTime = DateTime.Now;
|
rollerShape.IsOnline = (common as Rollershade).IsOnline;
|
for (int j = 0; j < rowLayout.ChildrenCount; j++)
|
{
|
var tempView = rowLayout.GetChildren(j);
|
if (tempView.Tag == null)
|
{
|
continue;
|
}
|
if (tempView.Tag.ToString() == deviceStatus_Online)
|
{
|
(tempView as Button).IsSelected = rollerShape.IsOnline == 1;
|
}
|
}
|
break;
|
|
case DeviceType.Thermostat:
|
var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
|
//记录回复时间
|
ac.LastDateTime = DateTime.Now;
|
ac.IsOnline = (common as ZigBee.Device.AC).IsOnline;
|
for (int j = 0; j < rowLayout.ChildrenCount; j++)
|
{
|
var tempView = rowLayout.GetChildren(j);
|
if (tempView.Tag == null)
|
{
|
continue;
|
}
|
if (tempView.Tag.ToString() == deviceStatus_Online)
|
{
|
(tempView as Button).IsSelected = ac.IsOnline == 1;
|
}
|
}
|
break;
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
System.Console.WriteLine($"分类设备状态-Error:{ex.Message}");
|
}
|
});
|
}
|
}
|
#endregion
|
|
#region ◆ 初始化__________________________
|
/// <summary>
|
/// Removes from parent.
|
/// </summary>
|
public override void RemoveFromParent()
|
{
|
ZbGateway.StatusList.Remove(this);
|
RemoveAllUpdateControlDeviceStatuAction();
|
base.RemoveFromParent();
|
}
|
|
/// <summary>
|
/// 构造方法
|
/// </summary>
|
public Category()
|
{
|
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
|
instance = this;
|
}
|
|
/// <summary>
|
/// 显示界面--默认场景界面
|
/// </summary>
|
/// <param name="selectedBtn">选中那个界面 0--功能 1--场景 2--自动化 </param>
|
public void Show(int selectedBtn = 1)
|
{
|
ZbGateway.StatusList.Add(this);
|
RemoveAll();
|
#region topview
|
var topView = new FrameLayout()
|
{
|
Height = Application.GetRealHeight(CommonPage.Navigation_Height),
|
BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor,
|
};
|
this.AddChidren(topView);
|
|
var title = new Button()
|
{
|
Y = Application.GetRealHeight(CommonPage.NavigationTitle_Y),
|
Height = Application.GetRealHeight(CommonPage.Navigation_Height - CommonPage.NavigationTitle_Y),
|
TextAlignment = TextAlignment.Center,
|
TextID = R.MyInternationalizationString.Category,
|
TextSize = 20,
|
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
|
Width = Application.GetRealWidth(CommonPage.AppRealWidth - 500),
|
Gravity = Gravity.CenterHorizontal
|
};
|
topView.AddChidren(title);
|
|
addBtn = new Device.CommonForm.SelectedStatuButton()
|
{
|
Y = Application.GetRealHeight(CommonPage.NavigationTitle_Y),
|
Width = Application.GetMinRealAverage(100),
|
Height = Application.GetMinRealAverage(100),
|
UnSelectedImagePath = "Item/Add.png",
|
SelectedImagePath = "Item/AddSelected.png",
|
X = Application.GetRealWidth(CommonPage.AppRealWidth - 150),
|
};
|
topView.AddChidren(addBtn);
|
#endregion
|
|
#region midFL
|
int functionSceneAuto_width;
|
//成员没有权限展示自动化界面
|
if (UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 3)
|
{
|
functionSceneAuto_width = 1080 / 2;
|
}
|
else
|
{
|
functionSceneAuto_width = 1080 / 3;
|
}
|
var functionSceneAuto_height = 120;
|
var midFL = new FrameLayout
|
{
|
Y = topView.Bottom,
|
Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.TabbarHeight) - topView.Bottom
|
};
|
AddChidren(midFL);
|
var functionSceneAutoBG = new FrameLayout()
|
{
|
Height = Application.GetRealHeight(functionSceneAuto_height),
|
BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor
|
};
|
midFL.AddChidren(functionSceneAutoBG);
|
//功能
|
functionBtn = new Button()
|
{
|
Width = Application.GetRealWidth(functionSceneAuto_width),
|
Height = Application.GetRealHeight(functionSceneAuto_height),
|
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
|
SelectedTextColor = ZigbeeColor.Current.GXCTextBlueColor,
|
TextAlignment = TextAlignment.Center,
|
TextSize = 16,
|
TextID = R.MyInternationalizationString.Function,
|
IsSelected = false
|
};
|
midFL.AddChidren(functionBtn);
|
//场景
|
sceneBtn = new Button()
|
{
|
X = functionBtn.Right,
|
Width = Application.GetRealWidth(functionSceneAuto_width),
|
Height = Application.GetRealHeight(functionSceneAuto_height),
|
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
|
SelectedTextColor = ZigbeeColor.Current.GXCTextBlueColor,
|
TextAlignment = TextAlignment.Center,
|
TextSize = 16,
|
TextID = R.MyInternationalizationString.Scence,
|
IsSelected = false
|
};
|
midFL.AddChidren(sceneBtn);
|
//自动化
|
automationBtn = new Button()
|
{
|
X = sceneBtn.Right,
|
Width = Application.GetRealWidth(functionSceneAuto_width),
|
Height = Application.GetRealHeight(functionSceneAuto_height),
|
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
|
SelectedTextColor = ZigbeeColor.Current.GXCTextBlueColor,
|
TextAlignment = TextAlignment.Center,
|
TextSize = 16,
|
TextID = R.MyInternationalizationString.Automation,
|
IsSelected = false
|
};
|
//隐藏自动化
|
if (UserCenter.UserCenterResourse.UserInfo.AuthorityNo != 3)
|
{
|
midFL.AddChidren(automationBtn);
|
}
|
|
var functionSceneBottomLine = new Button()
|
{
|
Y = functionBtn.Bottom,
|
Height = CommonPage.LineHeight,
|
X = functionBtn.X,
|
BackgroundColor = ZigbeeColor.Current.GXCLineColor
|
};
|
midFL.AddChidren(functionSceneBottomLine);
|
line = new Button()
|
{
|
Y = functionBtn.Bottom,
|
Height = CommonPage.LineHeight,
|
X = sceneBtn.X,
|
Width = Application.GetRealWidth(functionSceneAuto_width),
|
BackgroundColor = ZigbeeColor.Current.GXCButtonBlueColor
|
};
|
midFL.AddChidren(line);
|
//功能和场景bodyView
|
functionSceneBodyView = new FrameLayout()
|
{
|
Y = line.Bottom,
|
Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.TabbarHeight) - functionBtn.Height - topView.Height - CommonPage.LineHeight,
|
};
|
midFL.AddChidren(functionSceneBodyView);
|
|
if (selectedBtn == 0)
|
{
|
addBtn.Visible = false;
|
functionBtn.IsSelected = true;
|
line.X = functionBtn.X;
|
}
|
else if (selectedBtn == 1)
|
{
|
addBtn.Visible = true;
|
sceneBtn.IsSelected = true;
|
line.X = sceneBtn.X;
|
}
|
else if (selectedBtn == 2)
|
{
|
addBtn.Visible = true;
|
automationBtn.IsSelected = true;
|
line.X = automationBtn.X;
|
}
|
RefreshBodyView();
|
|
|
#endregion
|
//绑定按钮事件
|
BindEvent();
|
}
|
#endregion
|
|
#region ◆ 切换/添加 功能、场景、自动化________
|
|
/// <summary>
|
/// 绑定按钮的事件
|
/// </summary>
|
private void BindEvent()
|
{
|
//选择功能分栏
|
functionBtn.MouseUpEventHandler += FunctionBtn_MouseUpEventHandler;
|
//选择场景分栏
|
sceneBtn.MouseUpEventHandler += SceneBtn_MouseUpEventHandler;
|
//选中自动化
|
automationBtn.MouseUpEventHandler += AutomationBtn_MouseUpEventHandler;
|
//右上角添加按钮
|
addBtn.MouseUpEventHandler += AddBtn_MouseUpEventHandler;
|
}
|
|
/// <summary>
|
/// 选择功能分栏
|
/// </summary>
|
/// <param name="sender">Sender.</param>
|
/// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
|
private void FunctionBtn_MouseUpEventHandler(object sender, MouseEventArgs mouseEventArgs)
|
{
|
functionBtn.IsSelected = true;
|
sceneBtn.IsSelected = false;
|
automationBtn.IsSelected = false;
|
line.X = functionBtn.X;
|
addBtn.Visible = false;
|
RefreshBodyView();
|
}
|
|
/// <summary>
|
/// 选择场景分栏
|
/// </summary>
|
/// <param name="sender">Sender.</param>
|
/// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
|
private void SceneBtn_MouseUpEventHandler(object sender, MouseEventArgs mouseEventArgs)
|
{
|
functionBtn.IsSelected = false;
|
sceneBtn.IsSelected = true;
|
automationBtn.IsSelected = false;
|
line.X = sceneBtn.X;
|
addBtn.Visible = true;
|
RefreshBodyView();
|
}
|
|
/// <summary>
|
/// 选中自动化
|
/// </summary>
|
/// <param name="sender">Sender.</param>
|
/// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
|
private void AutomationBtn_MouseUpEventHandler(object sender, MouseEventArgs mouseEventArgs)
|
{
|
functionBtn.IsSelected = false;
|
sceneBtn.IsSelected = false;
|
automationBtn.IsSelected = true;
|
line.X = automationBtn.X;
|
addBtn.Visible = true;
|
RefreshBodyView();
|
}
|
|
/// <summary>
|
/// 右上角添加按钮事件
|
/// </summary>
|
/// <param name="sender">Sender.</param>
|
/// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
|
private void AddBtn_MouseUpEventHandler(object sender, MouseEventArgs mouseEventArgs)
|
{
|
if (functionBtn.IsSelected)
|
{
|
//功能
|
}
|
else if (sceneBtn.IsSelected)
|
{
|
//添加场景
|
Add_Scene();
|
}
|
else if (automationBtn.IsSelected)
|
{
|
//添加自动化
|
Add_Automation();
|
}
|
}
|
|
/// <summary>
|
/// 添加场景
|
/// </summary>
|
private void Add_Scene()
|
{
|
var scene = new CategoryAddScene();
|
UserView.HomePage.Instance.AddChidren(scene);
|
UserView.HomePage.Instance.PageIndex += 1;
|
CategoryAddScene.sceneTargetDevicesList?.Clear();
|
CategoryAddScene.SceneText = "";
|
CategoryAddScene.CurrentRoom = Shared.Common.Room.CurrentRoom;
|
CategoryAddScene.ModifySceneUI = null;
|
CategoryAddScene.Modify = false;
|
CategoryAddScene.ImagePath = "Scene/Scene0.png";
|
scene.Show();
|
}
|
|
/// <summary>
|
/// 添加自动化
|
/// </summary>
|
private void Add_Automation()
|
{
|
//new一个新逻辑对象;
|
Common.Logic.CurrentLogic = new Common.Logic();
|
Common.Logic.CurrentLogic.IsEnable = 1;//默认为开
|
Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.automation1);
|
var addLogicPage = new Shared.Phone.Device.Logic.AddLogicPage();
|
UserView.HomePage.Instance.AddChidren(addLogicPage);
|
UserView.HomePage.Instance.PageIndex += 1;
|
addLogicPage.Show();
|
}
|
|
#endregion
|
|
#region ◆ 刷新____________________________
|
/// <summary>
|
/// 刷新bodyView
|
/// </summary>
|
public void RefreshBodyView()
|
{
|
functionSceneBodyView.RemoveAll();
|
if (functionBtn.IsSelected)
|
{
|
ShowFunction();
|
}
|
else if (sceneBtn.IsSelected)
|
{
|
ShowScene();
|
}
|
else if (automationBtn.IsSelected)
|
{
|
ShowAutotion();
|
}
|
}
|
|
#endregion
|
|
#region ◆ 功能____________________________
|
/// <summary>
|
/// 功能
|
/// </summary>
|
public void ShowFunction()
|
{
|
//移除监听
|
RemoveAllUpdateControlDeviceStatuAction();
|
//选择功能--直接从房间的devicelist中获取
|
Shared.Common.Room.GetAllRoomDeviceUIList();
|
Shared.Common.Room.GetAllRoomDeviceTypeList();
|
if (Common.Room.AllRoomDeviceUIList == null)
|
{
|
return;
|
}
|
if (Common.Room.AllRoomDeviceUIList.Count == 0)
|
{
|
ShowNoFunctionTip();
|
}
|
else
|
{
|
functionTypeScrowView = new HorizontalScrolViewLayout
|
{
|
Height = Application.GetRealHeight(CommonPage.RowHeight) - 1,
|
Width = Application.GetRealWidth(CommonPage.AppRealWidth)
|
};
|
functionSceneBodyView.AddChidren(functionTypeScrowView);
|
var typeLine = new Button()
|
{
|
Y = functionTypeScrowView.Bottom,
|
Width = Application.GetRealWidth(CommonPage.AppRealWidth),
|
Height = 1,
|
BackgroundColor = ZigbeeColor.Current.GXCLineColor
|
};
|
functionSceneBodyView.AddChidren(typeLine);
|
deviceListScrolView = new VerticalScrolViewLayout
|
{
|
Y = typeLine.Bottom,
|
Height = functionSceneBodyView.Height - Application.GetRealHeight(CommonPage.RowHeight) - 1
|
};
|
functionSceneBodyView.AddChidren(deviceListScrolView);
|
tempFunctionTypeBtn = new Button();
|
foreach (var deviceType in Common.Room.AllRoomDeviceTypeList)
|
{
|
typeRowLayout = new RowLayout()
|
{
|
Width = Application.GetRealWidth(CommonPage.AppRealWidth / 5),
|
LineColor = ZigbeeColor.Current.GXCBackgroundColor,
|
Tag = deviceType
|
};
|
functionTypeScrowView.AddChidren(typeRowLayout);
|
functionTypeIMG = new Button()
|
{
|
Width = Application.GetMinRealAverage(110),
|
Height = Application.GetMinRealAverage(110),
|
Gravity = Gravity.Center,
|
UnSelectedImagePath = DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType),
|
SelectedImagePath = DeviceUI.GetDeviceTypeSelectedImagePath(deviceType),
|
Tag = deviceType
|
};
|
typeRowLayout.AddChidren(functionTypeIMG);
|
|
functionTypeIMG.MouseUpEventHandler += ShowSameTypeFunction;
|
|
if (deviceType == Shared.Common.Room.AllRoomDeviceUIList[0].CommonDevice.Type)
|
{
|
ShowSameTypeFunction(functionTypeIMG, null);
|
}
|
}
|
}
|
}
|
|
/// <summary>
|
/// 显示相同类型的功能
|
/// </summary>
|
/// <param name="typeSender">typeSender.</param>
|
/// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
|
private void ShowSameTypeFunction(object typeSender, MouseEventArgs mouseEventArgs)
|
{
|
//选择功能--直接从房间的devicelist中获取
|
Shared.Common.Room.GetAllRoomDeviceUIList();
|
tempFunctionTypeBtn.IsSelected = false;
|
(typeSender as Button).IsSelected = true;
|
tempFunctionTypeBtn = (typeSender as Button);
|
deviceListScrolView.RemoveAll();
|
|
var sameTypeList = new List<DeviceUI> { };
|
foreach (var devieceUI in Common.Room.AllRoomDeviceUIList)
|
{
|
if (devieceUI == null || devieceUI.CommonDevice == null)
|
{
|
continue;
|
}
|
if (devieceUI.CommonDevice.Type.ToString() == (typeSender as Button).Tag.ToString())
|
{
|
if (!sameTypeList.Contains(devieceUI))
|
{
|
sameTypeList.Add(devieceUI);
|
}
|
}
|
}
|
foreach (var deviceUI in sameTypeList)
|
{
|
//删除设备
|
EventHandler<MouseEventArgs> delEvent = (delSender, delE) =>
|
{
|
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, e2) =>
|
{
|
if (e2)
|
{
|
Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.CommonDevice, false);
|
deviceListScrolView.RemoveViewByTag((delSender as Button).Tag);
|
sameTypeList.Remove(deviceUI);
|
if (sameTypeList.Count == 0)
|
{
|
RefreshBodyView();
|
}
|
}
|
};
|
};
|
EventHandler<MouseEventArgs> deviceDetailHandler = (send2, e2) =>
|
{
|
var detailInfo = new Device.CommonForm.DeviceDetailInfo { };
|
UserView.HomePage.Instance.AddChidren(detailInfo);
|
UserView.HomePage.Instance.PageIndex += 1;
|
detailInfo.Show(deviceUI, Shared.Common.Room.CurrentRoom);
|
detailInfo.action = RefreshBodyView;
|
};
|
|
if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput)
|
{
|
//灯
|
var light = deviceUI.CommonDevice as ZigBee.Device.ToggleLight;
|
//补上非远程
|
if (light.Gateway == null)
|
{
|
continue;
|
}
|
if (light.Gateway.IsVirtual)
|
{
|
UserHomeView.ReadStatus(light, () =>
|
{
|
light.ReadOnOffStatus();
|
light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
|
});
|
}
|
else
|
{
|
//防止短时间内多次读取状态
|
if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
|
{
|
light.ReadOnOffStatus();
|
light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
|
}
|
}
|
|
var deviceTypeRowLayout = new RowLayout()
|
{
|
Height = Application.GetRealHeight(CommonPage.RowHeight),
|
LineColor = ZigbeeColor.Current.GXCLineColor,
|
Tag = deviceUI
|
};
|
deviceListScrolView.AddChidren(deviceTypeRowLayout);
|
var deviceIMG = new Button()
|
{
|
X = Application.GetRealWidth(CommonPage.XLeft),
|
Width = Application.GetMinRealAverage(110),
|
Height = Application.GetMinRealAverage(110),
|
UnSelectedImagePath = deviceUI.IconPath,
|
SelectedImagePath = deviceUI.OnlineIconPath,
|
Gravity = Gravity.CenterVertical,
|
IsSelected = light.IsOnline == 1,
|
Tag = deviceStatus_Online
|
};
|
deviceTypeRowLayout.AddChidren(deviceIMG);
|
var deviceNameBtn = new Button()
|
{
|
X = Application.GetRealWidth(50) + deviceIMG.Right,
|
Width = Application.GetRealWidth(500),
|
Text = deviceUI.CommonDevice.DeviceEpointName,
|
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
|
TextAlignment = TextAlignment.CenterLeft
|
};
|
deviceTypeRowLayout.AddChidren(deviceNameBtn);
|
var switchBtn = new Button
|
{
|
X = deviceTypeRowLayout.Right - Application.GetRealWidth(200),
|
Width = Application.GetMinRealAverage(183),
|
Height = Application.GetMinRealAverage(123),
|
UnSelectedImagePath = "Item/Switch.png",
|
SelectedImagePath = "Item/SwitchSelected.png",
|
IsSelected = light.OnOffStatus == 1,
|
Tag = deviceStatus_OnOffStatus,
|
Gravity = Gravity.CenterVertical
|
};
|
deviceTypeRowLayout.AddChidren(switchBtn);
|
|
switchBtn.MouseUpEventHandler += (send2, e2) =>
|
{
|
zbGateway = deviceUI.CommonDevice.Gateway;
|
sendedControlCommand = false;
|
zbGateway.ReportAction += UpdateDeviceControllStatu;
|
AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
|
switchBtn.IsSelected = !switchBtn.IsSelected;
|
if (switchBtn.IsSelected == true)
|
{
|
light.SwitchControl(1);
|
}
|
else
|
{
|
light.SwitchControl(0);
|
}
|
//控制延时回调
|
DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
|
{
|
if (Parent == null)
|
{
|
return;
|
}
|
RemoveUpdateControlDeviceStatuAction(zbGateway);
|
if (sendedControlCommand == false)
|
{
|
DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
|
}
|
});
|
};
|
|
var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
|
{
|
Tag = deviceUI,
|
Radius = 0
|
};
|
deviceTypeRowLayout.AddRightView(delBtn);
|
delBtn.MouseUpEventHandler += delEvent;
|
|
deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler;
|
deviceIMG.MouseUpEventHandler += deviceDetailHandler;
|
deviceNameBtn.MouseUpEventHandler += deviceDetailHandler;
|
}
|
else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch)
|
{
|
//空气开关
|
var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
|
//补上非远程
|
if (airSwitch.Gateway == null)
|
{
|
continue;
|
}
|
if (airSwitch.Gateway.IsVirtual)
|
{
|
UserHomeView.ReadStatus(airSwitch, () =>
|
{
|
airSwitch.ReadOnOffStatus();
|
airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
|
});
|
}
|
else
|
{
|
if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
|
{
|
airSwitch.ReadOnOffStatus();
|
airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
|
}
|
}
|
|
var deviceTypeRowLayout = new RowLayout()
|
{
|
Height = Application.GetRealHeight(CommonPage.RowHeight),
|
LineColor = ZigbeeColor.Current.GXCLineColor,
|
Tag = deviceUI
|
};
|
deviceListScrolView.AddChidren(deviceTypeRowLayout);
|
var deviceIMG = new Button()
|
{
|
X = Application.GetRealWidth(CommonPage.XLeft),
|
Width = Application.GetMinRealAverage(110),
|
Height = Application.GetMinRealAverage(110),
|
UnSelectedImagePath = deviceUI.IconPath,
|
SelectedImagePath = deviceUI.OnlineIconPath,
|
Gravity = Gravity.CenterVertical,
|
IsSelected = airSwitch.IsOnline == 1,
|
Tag = deviceStatus_Online
|
};
|
deviceTypeRowLayout.AddChidren(deviceIMG);
|
var deviceNameBtn = new Button()
|
{
|
X = Application.GetRealWidth(50) + deviceIMG.Right,
|
Width = Application.GetRealWidth(500),
|
Text = deviceUI.CommonDevice.DeviceEpointName,
|
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
|
TextAlignment = TextAlignment.CenterLeft
|
};
|
deviceTypeRowLayout.AddChidren(deviceNameBtn);
|
var switchBtn = new Button
|
{
|
X = deviceTypeRowLayout.Right - Application.GetRealWidth(200),
|
Width = Application.GetMinRealAverage(183),
|
Height = Application.GetMinRealAverage(123),
|
UnSelectedImagePath = "Item/Switch.png",
|
SelectedImagePath = "Item/SwitchSelected.png",
|
IsSelected = airSwitch.OnOffStatus == 1,
|
Tag = deviceStatus_OnOffStatus,
|
Gravity = Gravity.CenterVertical
|
};
|
deviceTypeRowLayout.AddChidren(switchBtn);
|
switchBtn.MouseUpEventHandler += (send2, e2) =>
|
{
|
zbGateway = deviceUI.CommonDevice.Gateway;
|
sendedControlCommand = false;
|
zbGateway.ReportAction += UpdateDeviceControllStatu;
|
AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
|
|
switchBtn.IsSelected = !switchBtn.IsSelected;
|
if (switchBtn.IsSelected == true)
|
{
|
airSwitch.SwitchControl(1);
|
}
|
else
|
{
|
airSwitch.SwitchControl(0);
|
}
|
//控制延时回调
|
DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
|
{
|
if (Parent == null)
|
{
|
return;
|
}
|
RemoveUpdateControlDeviceStatuAction(zbGateway);
|
if (sendedControlCommand == false)
|
{
|
DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
|
}
|
});
|
};
|
var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
|
{
|
Tag = deviceUI,
|
Radius = 0
|
};
|
deviceTypeRowLayout.AddRightView(delBtn);
|
delBtn.MouseUpEventHandler += delEvent;
|
|
deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler;
|
deviceIMG.MouseUpEventHandler += deviceDetailHandler;
|
deviceNameBtn.MouseUpEventHandler += deviceDetailHandler;
|
}
|
else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight)
|
{
|
//调光灯
|
var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
|
//补上非远程
|
if (dimmableLight.Gateway == null)
|
{
|
continue;
|
}
|
if (dimmableLight.Gateway.IsVirtual)
|
{
|
UserHomeView.ReadStatus(dimmableLight, () =>
|
{
|
dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
|
dimmableLight.ReadOnOffStatus();
|
dimmableLight.ReadLevel();
|
});
|
}
|
else
|
{
|
if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
|
{
|
dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
|
dimmableLight.ReadOnOffStatus();
|
dimmableLight.ReadLevel();
|
}
|
}
|
|
var deviceTypeRowLayout = new RowLayout()
|
{
|
Height = Application.GetRealHeight(CommonPage.RowHeight),
|
LineColor = ZigbeeColor.Current.GXCLineColor,
|
Tag = deviceUI
|
};
|
deviceListScrolView.AddChidren(deviceTypeRowLayout);
|
var deviceIMG = new Button()
|
{
|
X = Application.GetRealWidth(CommonPage.XLeft),
|
Width = Application.GetMinRealAverage(110),
|
Height = Application.GetMinRealAverage(110),
|
UnSelectedImagePath = deviceUI.IconPath,
|
SelectedImagePath = deviceUI.OnlineIconPath,
|
Gravity = Gravity.CenterVertical,
|
IsSelected = dimmableLight.IsOnline == 1,
|
Tag = deviceStatus_Online
|
};
|
deviceTypeRowLayout.AddChidren(deviceIMG);
|
var deviceNameBtn = new Button()
|
{
|
X = Application.GetRealWidth(50) + deviceIMG.Right,
|
Width = Application.GetRealWidth(500),
|
Text = deviceUI.CommonDevice.DeviceEpointName,
|
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
|
TextAlignment = TextAlignment.CenterLeft
|
};
|
deviceTypeRowLayout.AddChidren(deviceNameBtn);
|
var switchBtn = new Button
|
{
|
X = deviceTypeRowLayout.Right - Application.GetRealWidth(200),
|
Width = Application.GetMinRealAverage(183),
|
Height = Application.GetMinRealAverage(123),
|
UnSelectedImagePath = "Item/Switch.png",
|
SelectedImagePath = "Item/SwitchSelected.png",
|
IsSelected = dimmableLight.OnOffStatus == 1,
|
Tag = deviceStatus_OnOffStatus,
|
Gravity = Gravity.CenterVertical
|
};
|
deviceTypeRowLayout.AddChidren(switchBtn);
|
switchBtn.MouseUpEventHandler += (send2, e2) =>
|
{
|
zbGateway = deviceUI.CommonDevice.Gateway;
|
sendedControlCommand = false;
|
zbGateway.ReportAction += UpdateDeviceControllStatu;
|
AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
|
|
switchBtn.IsSelected = !switchBtn.IsSelected;
|
if (switchBtn.IsSelected == true)
|
{
|
dimmableLight.SwitchControl(1);
|
}
|
else
|
{
|
dimmableLight.SwitchControl(0);
|
}
|
//控制延时回调
|
DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
|
{
|
if (Parent == null)
|
{
|
return;
|
}
|
RemoveUpdateControlDeviceStatuAction(zbGateway);
|
if (sendedControlCommand == false)
|
{
|
DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
|
}
|
});
|
};
|
var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
|
{
|
Tag = deviceUI,
|
Radius = 0
|
};
|
deviceTypeRowLayout.AddRightView(delBtn);
|
delBtn.MouseUpEventHandler += delEvent;
|
|
deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler;
|
deviceIMG.MouseUpEventHandler += deviceDetailHandler;
|
deviceNameBtn.MouseUpEventHandler += deviceDetailHandler;
|
}
|
else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat)
|
{
|
//空调
|
var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
|
//补上非远程
|
if (ac.Gateway == null)
|
{
|
continue;
|
}
|
if (ac.Gateway.IsVirtual)
|
{
|
//发送读取状态命令
|
UserView.UserHomeView.ReadStatus(ac, () =>
|
{
|
ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
|
ac.ReadFanMode();
|
ac.ReadSystemMode();
|
ac.ReadLocalTemperature();
|
ac.ReadCoolingSetpoint();
|
ac.ReadHeatingSetpoint();
|
});
|
}
|
else
|
{
|
//防止短时间内多次读取设备状态
|
if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
|
{
|
ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
|
ac.ReadFanMode();
|
ac.ReadSystemMode();
|
ac.ReadLocalTemperature();
|
ac.ReadCoolingSetpoint();
|
ac.ReadHeatingSetpoint();
|
}
|
}
|
|
var deviceTypeRowLayout = new RowLayout()
|
{
|
Height = Application.GetRealHeight(CommonPage.RowHeight),
|
LineColor = ZigbeeColor.Current.GXCLineColor,
|
Tag = deviceUI
|
};
|
deviceListScrolView.AddChidren(deviceTypeRowLayout);
|
var deviceIMG = new Button()
|
{
|
X = Application.GetRealWidth(CommonPage.XLeft),
|
Width = Application.GetMinRealAverage(110),
|
Height = Application.GetMinRealAverage(110),
|
UnSelectedImagePath = deviceUI.IconPath,
|
SelectedImagePath = deviceUI.OnlineIconPath,
|
Gravity = Gravity.CenterVertical,
|
IsSelected = ac.IsOnline == 1,
|
Tag = deviceStatus_Online
|
};
|
deviceTypeRowLayout.AddChidren(deviceIMG);
|
var deviceNameBtn = new Button()
|
{
|
X = Application.GetRealWidth(50) + deviceIMG.Right,
|
Width = Application.GetRealWidth(500),
|
Text = deviceUI.CommonDevice.DeviceEpointName,
|
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
|
TextAlignment = TextAlignment.CenterLeft
|
};
|
deviceTypeRowLayout.AddChidren(deviceNameBtn);
|
var switchBtn = new Button
|
{
|
X = deviceTypeRowLayout.Right - Application.GetRealWidth(200),
|
Width = Application.GetMinRealAverage(183),
|
Height = Application.GetMinRealAverage(123),
|
UnSelectedImagePath = "Item/Switch.png",
|
SelectedImagePath = "Item/SwitchSelected.png",
|
IsSelected = Device.AC.ACControlBase.IsOpen(ac),
|
Tag = deviceStatus_OnOffStatus,
|
Gravity = Gravity.CenterVertical
|
};
|
deviceTypeRowLayout.AddChidren(switchBtn);
|
switchBtn.MouseUpEventHandler += (send2, e2) =>
|
{
|
zbGateway = deviceUI.CommonDevice.Gateway;
|
sendedControlCommand = false;
|
zbGateway.ReportAction += UpdateDeviceControllStatu;
|
AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
|
|
switchBtn.IsSelected = !switchBtn.IsSelected;
|
if (switchBtn.IsSelected == true)
|
{
|
ac.Open();
|
}
|
else
|
{
|
ac.Close();
|
}
|
//控制延时回调
|
DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
|
{
|
if (Parent == null)
|
{
|
return;
|
}
|
RemoveUpdateControlDeviceStatuAction(zbGateway);
|
if (sendedControlCommand == false)
|
{
|
DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
|
}
|
});
|
};
|
var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
|
{
|
Tag = deviceUI,
|
Radius = 0
|
};
|
deviceTypeRowLayout.AddRightView(delBtn);
|
delBtn.MouseUpEventHandler += delEvent;
|
|
deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler;
|
deviceIMG.MouseUpEventHandler += deviceDetailHandler;
|
deviceNameBtn.MouseUpEventHandler += deviceDetailHandler;
|
}
|
else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice)
|
{
|
//卷帘
|
var rollerShade = deviceUI.CommonDevice as ZigBee.Device.Rollershade;
|
//不上非远程
|
if (rollerShade.Gateway == null)
|
{
|
continue;
|
}
|
if (rollerShade.Gateway.IsVirtual)
|
{
|
UserHomeView.ReadStatus(rollerShade, () =>
|
{
|
rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
|
});
|
}
|
else
|
{
|
//防止短时间内多次读取
|
if ((DateTime.Now - rollerShade.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
|
{
|
rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
|
}
|
}
|
|
|
var deviceTypeRowLayout = new RowLayout()
|
{
|
Height = Application.GetRealHeight(CommonPage.RowHeight),
|
LineColor = ZigbeeColor.Current.GXCLineColor,
|
Tag = deviceUI
|
};
|
deviceListScrolView.AddChidren(deviceTypeRowLayout);
|
var deviceIMG = new Button()
|
{
|
X = Application.GetRealWidth(CommonPage.XLeft),
|
Width = Application.GetMinRealAverage(110),
|
Height = Application.GetMinRealAverage(110),
|
UnSelectedImagePath = deviceUI.IconPath,
|
SelectedImagePath = deviceUI.OnlineIconPath,
|
Gravity = Gravity.CenterVertical,
|
IsSelected = rollerShade.IsOnline == 1,
|
Tag = deviceStatus_Online
|
};
|
deviceTypeRowLayout.AddChidren(deviceIMG);
|
var deviceNameBtn = new Button()
|
{
|
X = Application.GetRealWidth(50) + deviceIMG.Right,
|
Width = Application.GetRealWidth(350),
|
Text = deviceUI.CommonDevice.DeviceEpointName,
|
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
|
TextAlignment = TextAlignment.CenterLeft
|
};
|
deviceTypeRowLayout.AddChidren(deviceNameBtn);
|
|
var closeBtn = new Device.CommonForm.SelectedStatuButton()
|
{
|
X = Application.GetRealWidth(50) + deviceNameBtn.Right,
|
Width = Application.GetMinRealAverage(110),
|
Height = Application.GetMinRealAverage(110),
|
Gravity = Gravity.CenterVertical,
|
UnSelectedImagePath = "WindowCovering/RollerShadeClose.png",
|
SelectedImagePath = "WindowCovering/RollerShadeCloseSelected.png",
|
};
|
deviceTypeRowLayout.AddChidren(closeBtn);
|
var stopBtn = new Device.CommonForm.SelectedStatuButton()
|
{
|
X = Application.GetRealWidth(50) + closeBtn.Right,
|
Width = Application.GetMinRealAverage(110),
|
Height = Application.GetMinRealAverage(110),
|
Gravity = Gravity.CenterVertical,
|
UnSelectedImagePath = "WindowCovering/RollerShadeStop.png",
|
SelectedImagePath = "WindowCovering/RollerShadeStopSelected.png",
|
};
|
deviceTypeRowLayout.AddChidren(stopBtn);
|
var openBtn = new Device.CommonForm.SelectedStatuButton()
|
{
|
X = Application.GetRealWidth(50) + stopBtn.Right,
|
Width = Application.GetMinRealAverage(110),
|
Height = Application.GetMinRealAverage(110),
|
Gravity = Gravity.CenterVertical,
|
UnSelectedImagePath = "WindowCovering/RollerShadeOpen.png",
|
SelectedImagePath = "WindowCovering/RollerShadeOpenSelected.png",
|
};
|
deviceTypeRowLayout.AddChidren(openBtn);
|
|
var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
|
{
|
Tag = deviceUI,
|
Radius = 0
|
};
|
deviceTypeRowLayout.AddRightView(delBtn);
|
delBtn.MouseUpEventHandler += delEvent;
|
|
//窗帘关
|
closeBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
zbGateway = deviceUI.CommonDevice.Gateway;
|
sendedControlCommand = false;
|
zbGateway.ReportAction += UpdateDeviceControllStatu;
|
AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
|
|
rollerShade.CurtainUpDownStopControl(1);
|
|
//控制延时回调
|
DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
|
{
|
if (Parent == null)
|
{
|
return;
|
}
|
RemoveUpdateControlDeviceStatuAction(zbGateway);
|
if (sendedControlCommand == false)
|
{
|
DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
|
}
|
});
|
};
|
//窗帘停
|
stopBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
zbGateway = deviceUI.CommonDevice.Gateway;
|
sendedControlCommand = false;
|
zbGateway.ReportAction += UpdateDeviceControllStatu;
|
AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
|
|
rollerShade.CurtainUpDownStopControl(2);
|
|
//控制延时回调
|
DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
|
{
|
if (Parent == null)
|
{
|
return;
|
}
|
RemoveUpdateControlDeviceStatuAction(zbGateway);
|
if (sendedControlCommand == false)
|
{
|
DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
|
}
|
});
|
};
|
//窗帘开
|
openBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
zbGateway = deviceUI.CommonDevice.Gateway;
|
sendedControlCommand = false;
|
zbGateway.ReportAction += UpdateDeviceControllStatu;
|
AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
|
|
rollerShade.CurtainUpDownStopControl(0);
|
|
//控制延时回调
|
DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
|
{
|
if (Parent == null)
|
{
|
return;
|
}
|
RemoveUpdateControlDeviceStatuAction(zbGateway);
|
if (sendedControlCommand == false)
|
{
|
DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
|
}
|
});
|
};
|
deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler;
|
deviceIMG.MouseUpEventHandler += deviceDetailHandler;
|
deviceNameBtn.MouseUpEventHandler += deviceDetailHandler;
|
}
|
else
|
{
|
var deviceTypeRowLayout = new RowLayout()
|
{
|
Height = Application.GetRealHeight(CommonPage.RowHeight),
|
LineColor = ZigbeeColor.Current.GXCLineColor,
|
Tag = deviceUI
|
};
|
deviceListScrolView.AddChidren(deviceTypeRowLayout);
|
var deviceIMG = new Button()
|
{
|
X = Application.GetRealWidth(CommonPage.XLeft),
|
Width = Application.GetMinRealAverage(110),
|
Height = Application.GetMinRealAverage(110),
|
UnSelectedImagePath = deviceUI.IconPath,
|
SelectedImagePath = deviceUI.OnlineIconPath,
|
Gravity = Gravity.CenterVertical,
|
Tag = deviceStatus_Online
|
};
|
deviceTypeRowLayout.AddChidren(deviceIMG);
|
var deviceNameBtn = new Button()
|
{
|
X = Application.GetRealWidth(50) + deviceIMG.Right,
|
Width = Application.GetRealWidth(500),
|
Text = deviceUI.CommonDevice.DeviceEpointName,
|
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
|
TextAlignment = TextAlignment.CenterLeft
|
};
|
deviceTypeRowLayout.AddChidren(deviceNameBtn);
|
var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
|
{
|
Tag = deviceUI,
|
Radius = 0
|
};
|
deviceTypeRowLayout.AddRightView(delBtn);
|
delBtn.MouseUpEventHandler += delEvent;
|
|
deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler;
|
deviceIMG.MouseUpEventHandler += deviceDetailHandler;
|
deviceNameBtn.MouseUpEventHandler += deviceDetailHandler;
|
}
|
}
|
}
|
|
/// <summary>
|
/// 提示没有功能
|
/// </summary>
|
private void ShowNoFunctionTip()
|
{
|
var noFunctionTip = new Button()
|
{
|
Height = Application.GetMinRealAverage(200),
|
TextID = R.MyInternationalizationString.NoFunction,
|
TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
|
TextAlignment = TextAlignment.Center,
|
Gravity = Gravity.CenterVertical
|
};
|
functionSceneBodyView.AddChidren(noFunctionTip);
|
}
|
|
#endregion
|
|
#region ◆ 场景____________________________
|
/// <summary>
|
/// 选择场景--所有房间的所有场景
|
/// </summary>
|
public void ShowScene()
|
{
|
//刷新场景
|
//var reFreshResult=await Shared.Common.Room.RefreshSceneUIList();
|
Shared.Common.SceneRoomUI.GetAllSceneRoomUIList();
|
if (SceneRoomUI.AllSceneRoomUIList == null)
|
{
|
return;
|
}
|
var sceneList = SceneRoomUI.AllSceneRoomUIList;
|
Shared.Common.Room.GetAllRoomDeviceUIList();
|
if (sceneList.Count == 0)
|
{
|
ShowNoSceneTip();
|
}
|
else
|
{
|
var sceneScrolView = new VerticalScrolViewLayout { };
|
functionSceneBodyView.AddChidren(sceneScrolView);
|
foreach (var sceneRoomUI in sceneList)
|
{
|
var sceneFL = new FrameLayout()
|
{
|
Width = Application.GetRealWidth(CommonPage.AppRealWidth - 100),
|
Height = Application.GetRealHeight(400),
|
Gravity = Gravity.CenterHorizontal,
|
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
|
Tag = sceneRoomUI
|
};
|
sceneScrolView.AddChidren(sceneFL);
|
var sceneRowLayout = new RowLayout()
|
{
|
Y = Application.GetRealHeight(30),
|
Height = Application.GetRealHeight(400 - 30 - 10),
|
Gravity = Gravity.CenterHorizontal,
|
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 = sceneRoomUI.sceneUI.IconPath,
|
Radius = CommonPage.BigFormRadius
|
};
|
sceneRowLayout.AddChidren(sceneImg);
|
|
var sceneBGBtn = new Button()
|
{
|
BackgroundColor = ZigbeeColor.Current.GXCBlack70Color,
|
SelectedBackgroundColor = ZigbeeColor.Current.GXCBlack80Color,
|
Radius = CommonPage.BigFormRadius
|
};
|
sceneRowLayout.AddChidren(sceneBGBtn);
|
var roomNameBtn = new Button()
|
{
|
X = Application.GetRealWidth(30),
|
Y = Application.GetRealHeight(1),
|
Width = Application.GetRealWidth(600),
|
Height = Application.GetRealHeight(110),
|
Text = $"{sceneRoomUI.room.Name}",
|
TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
|
TextSize = 12,
|
TextAlignment = TextAlignment.CenterLeft
|
};
|
sceneRowLayout.AddChidren(roomNameBtn);
|
|
var sceneNameBtn = new Button()
|
{
|
Width = Application.GetRealWidth(700),
|
Height = Application.GetRealHeight(200),
|
TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
|
TextSize = 20,
|
Text = sceneRoomUI.sceneUI.Name,
|
Gravity = Gravity.Center
|
};
|
sceneRowLayout.AddChidren(sceneNameBtn);
|
var moreBtn = new Device.CommonForm.SelectedStatuButton()
|
{
|
Y = Application.GetRealHeight(1),
|
X = sceneRowLayout.Width - Application.GetRealWidth(150),
|
Width = Application.GetMinRealAverage(110),
|
Height = Application.GetMinRealAverage(110),
|
UnSelectedImagePath = "Item/MoreWhite.png",
|
SelectedImagePath = "Item/MoreSelected.png"
|
};
|
sceneRowLayout.AddChidren(moreBtn);
|
|
//编辑延时
|
var leftDelayTimeBtn = new Device.CommonForm.RowLayoutEditButton()
|
{
|
Tag = sceneRoomUI.sceneUI.SceneDelayTime
|
};
|
|
//删除
|
var deleteBtn = new Device.CommonForm.RowLayoutDeleteButton
|
{
|
Tag = sceneRoomUI
|
};
|
|
if(!sceneRoomUI.room.IsSharedRoom)
|
{
|
sceneRowLayout.AddRightView(leftDelayTimeBtn);
|
sceneRowLayout.AddRightView(deleteBtn);
|
}
|
|
//调用场景
|
EventHandler<MouseEventArgs> sceneDownHandler = (sender, e) =>
|
{
|
sceneBGBtn.IsSelected = true;
|
};
|
sceneBGBtn.MouseDownEventHandler += sceneDownHandler;
|
sceneImg.MouseDownEventHandler += sceneDownHandler;
|
sceneRowLayout.MouseDownEventHandler += sceneDownHandler;
|
sceneNameBtn.MouseDownEventHandler += sceneDownHandler;
|
sceneFL.MouseDownEventHandler += sceneDownHandler;
|
|
EventHandler<MouseEventArgs> sceneUpHandler = async (sender, e) =>
|
{
|
sceneBGBtn.IsSelected = false;
|
//1成功 0失败
|
//后面补上相关提示
|
//要先从网关读取延时是否正在执行,如果是进行倒计时,不允许在点击
|
var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(sceneRoomUI.sceneUI.Id, sceneRoomUI.sceneUI.SceneDelayTime);
|
//主网关不在线
|
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;
|
}
|
};
|
sceneBGBtn.MouseUpEventHandler += sceneUpHandler;
|
sceneImg.MouseUpEventHandler += sceneUpHandler;
|
sceneRowLayout.MouseUpEventHandler += sceneUpHandler;
|
sceneFL.MouseUpEventHandler += sceneUpHandler;
|
sceneNameBtn.MouseUpEventHandler += sceneUpHandler;
|
//删除场景
|
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(sceneRoomUI.sceneUI.Id);
|
if (removeSceneAllData == null || removeSceneAllData.removeSceneData == null)
|
{
|
//CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheMainGatewayIsNotOnLine);
|
CommonPage.Instance.FailureToServer();
|
return;
|
}
|
//1成功
|
if (removeSceneAllData.removeSceneData.Result == 1)
|
{
|
sceneRoomUI.room.RemoveScene(sceneRoomUI.sceneUI);
|
//RefreshBodyView();
|
sceneScrolView.RemoveViewByTag((sender as Button).Tag);
|
}
|
//0 移除失败
|
else if (removeSceneAllData.removeSceneData.Result == 0)
|
{
|
CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
|
return;
|
}
|
//2 没有该场景
|
else if (removeSceneAllData.removeSceneData.Result == 2)
|
{
|
sceneRoomUI.room.RemoveScene(sceneRoomUI.sceneUI);
|
//RefreshBodyView();
|
sceneScrolView.RemoveViewByTag((sender as Button).Tag);
|
CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneIsNull);
|
return;
|
}
|
}
|
};
|
};
|
deleteBtn.MouseUpEventHandler += delEvent;
|
//编辑场景
|
moreBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
SceneRoomUI.EditScene(sceneRoomUI.sceneUI, sceneRoomUI.room);
|
};
|
//编辑延时
|
leftDelayTimeBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
var tList = new List<string>() { };
|
|
for (int i = 0; i < 60; i++)
|
{
|
tList.Add($"{i} {Language.StringByID(R.MyInternationalizationString.Second)}");
|
}
|
//int beforeIndex = (int)(sender as CommonForm.RowLayoutEditButton).Tag;
|
PickerView.Show(tList, (obj) =>
|
{
|
var tempRoom = Shared.Common.Room.GetRoomByFilePath(sceneRoomUI.room.FileName);
|
if (tempRoom == null)
|
{
|
return;
|
}
|
foreach (var ss in tempRoom.SceneUIList)
|
{
|
if (ss.Id == sceneRoomUI.sceneUI.Id)
|
{
|
ss.SceneDelayTime = int.Parse(obj.Split(' ')[0]);
|
sceneRoomUI.room.Save();
|
RefreshBodyView();
|
return;
|
}
|
}
|
}, Language.StringByID(R.MyInternationalizationString.Confrim), tList[(int)(sender as CommonForm.RowLayoutEditButton).Tag]);
|
};
|
}
|
}
|
}
|
|
/// <summary>
|
/// 显示没有场景
|
/// </summary>
|
private void ShowNoSceneTip()
|
{
|
var noScenceTip = new Button()
|
{
|
Height = Application.GetMinRealAverage(200),
|
TextID = R.MyInternationalizationString.NoScene,
|
TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
|
TextAlignment = TextAlignment.Center,
|
Gravity = Gravity.CenterVertical
|
};
|
functionSceneBodyView.AddChidren(noScenceTip);
|
}
|
|
|
#endregion
|
|
#region ◆ 自动化__________________________
|
|
/// <summary>
|
/// 自动化
|
/// </summary>
|
public async void ShowAutotion()
|
{
|
var logicScrolView = new VerticalScrolViewLayout { };
|
functionSceneBodyView.AddChidren(logicScrolView);
|
|
//Shared.Common.ResponseEntity.Logic.LogicDviceList = await gateway.GetGwDeviceList();
|
// gateway.DeviceList.Clear();
|
////// Shared.Common.ResponseEntity.Logic.LogicDviceList = LocalDevice.Current.GetDeviceByGatewayID(gateway.getGatewayBaseInfo.gwID);
|
//if (gateway.DeviceList.Count != 0)
|
//{
|
// Shared.IO.FileUtils.WriteFileByBytes("ZigbeeDeviceListFilePath", System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(gateway.DeviceList)));
|
//}
|
//else
|
//{//临时保存设备列表数据给逻辑开发
|
// var devicestring = System.Text.Encoding.UTF8.GetString(Shared.IO.FileUtils.ReadFile("ZigbeeDeviceListFilePath"));
|
// gateway.DeviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<CommonDevice>>(devicestring);
|
//}
|
|
CommonPage.Loading.Start();
|
//if (Common.Logic.LogicDviceList.Count != 0)
|
//{
|
// foreach (var gateway in ZbGateway.GateWayList)
|
// {
|
// if (gateway.IsMainGateWay)
|
// {
|
// Common.Logic.LogicDviceList = LocalDevice.Current.GetDeviceByGatewayID(gateway.getGatewayBaseInfo.gwID);
|
// }
|
// }
|
//}
|
|
|
//CommonPage.Loading.Start();
|
if (Common.Logic.LogicList.Count == 0)
|
{
|
var Idlist = await Logic.Send.GetLogicId();
|
if (Idlist.Count != 0)
|
{
|
foreach (var LogicId in Idlist)
|
{
|
var logic = await Logic.Send.GetLogic(LogicId);
|
if (logic != null)
|
{
|
Common.Logic.LogicList.Add(logic);
|
}
|
}
|
}
|
}
|
//自动化
|
Automationview(logicScrolView);
|
CommonPage.Loading.Hide();
|
}
|
|
/// <summary>
|
/// 自动化列表界面
|
/// </summary>
|
/// <param name="refresview">Refresview.</param>
|
public async void Automationview(VerticalScrolViewLayout refresview)
|
{
|
refresview.RemoveAll();
|
foreach (var logic in Common.Logic.LogicList)
|
{
|
var logicrowlayout = new RowLayout
|
{
|
Height = Application.GetRealHeight(180),
|
LineColor = ZigbeeColor.Current.LogicLineColor,
|
};
|
refresview.AddChidren(logicrowlayout);
|
|
var btnname = new Button
|
{
|
//Text = "逻辑一",
|
Text = logic.LogicName,
|
X = Application.GetRealWidth(50),
|
TextAlignment = TextAlignment.CenterLeft,
|
Gravity = Gravity.CenterVertical,
|
TextColor = ZigbeeColor.Current.LogicTextBlackColor,
|
};
|
logicrowlayout.AddChidren(btnname);
|
|
var btnswitch = new Button
|
{
|
Width = Application.GetMinRealAverage(183),
|
Height = Application.GetMinRealAverage(123),
|
UnSelectedImagePath = "ZigeeLogic/Switch.png",
|
SelectedImagePath = "ZigeeLogic/SwitchSelected.png",
|
X = Application.GetRealWidth(1080 - 200),
|
Gravity = Gravity.CenterVertical,
|
};
|
logicrowlayout.AddChidren(btnswitch);
|
|
btnswitch.MouseUpEventHandler += (sender1, e1) =>
|
{
|
btnswitch.IsSelected = !btnswitch.IsSelected;
|
if (btnswitch.IsSelected)
|
{
|
//逻辑开
|
logic.IsEnable = 1;
|
}
|
else
|
{
|
//逻辑关
|
logic.IsEnable = 0;
|
}
|
Logic.Send.AddModifyLogic(logic);
|
};
|
if (logic.IsEnable == 1)
|
{
|
btnswitch.IsSelected = true;
|
}
|
else if (logic.IsEnable == 0)
|
{
|
btnswitch.IsSelected = false;
|
}
|
///编辑
|
var edit = new Button
|
{
|
//TextID = MyInternationalizationString.Musicdel
|
BackgroundColor = 0xFF00aaf0,
|
Text = Language.StringByID(MyInternationalizationString.edit),
|
TextColor = ZigbeeColor.Current.LogicTextBlackColor,
|
};
|
logicrowlayout.AddRightView(edit);
|
edit.MouseUpEventHandler += (sender, e) =>
|
{
|
Common.Logic.LogicDviceList.Clear();
|
if (Common.Logic.LogicDviceList.Count == 0)
|
{
|
Common.Logic.LogicDviceList.AddRange(LocalDevice.Current.listAllDevice.ToArray());
|
}
|
Common.Logic.CurrentLogic = logic;
|
var logicCommunalPage = new Logic.LogicCommunalPage();
|
UserView.HomePage.Instance.AddChidren(logicCommunalPage);
|
UserView.HomePage.Instance.PageIndex += 1;
|
logicCommunalPage.Show(() => { btnname.Text = logic.LogicName; Automationview(refresview); });
|
|
};
|
|
|
var btndelay = new Button
|
{
|
Width = Application.GetRealWidth(150),
|
Height = Application.GetRealHeight(50),
|
X = Application.GetRealWidth(300),
|
Y = Application.GetRealHeight(25),
|
TextAlignment = TextAlignment.Center,
|
TextColor = 0xffcccccc,
|
};
|
logicrowlayout.AddChidren(btndelay);
|
|
///延时控件
|
var btndelaytext = new Button
|
{
|
BackgroundColor = 0xff676767,
|
Text = Language.StringByID(R.MyInternationalizationString.delayed),
|
};
|
//logicrowlayout.AddRightView(btndelaytext);
|
|
//if (logic.param.ContainsKey ("delay")) {
|
// var delayvalue = logic.param ["delay"]?.ToString ();
|
// if (delayvalue != "" && delayvalue != "0") {
|
// var l = int.Parse (delayvalue) / 10;
|
// btndelay.Text = l.ToString () + "s";
|
// }
|
//}
|
|
btndelaytext.MouseUpEventHandler += (sender, e) =>
|
{
|
|
Dialog window = new Dialog();
|
window.Show();
|
|
var frameLayout = new FrameLayout
|
{
|
Width = Application.GetRealWidth(580),
|
Height = Application.GetRealHeight(300),
|
X = Application.GetRealWidth(30),
|
Y = Application.GetRealHeight(330),
|
BackgroundColor = 0xffffffff,
|
};
|
window.AddChidren(frameLayout);
|
|
var Modifyname = new Button
|
{
|
Width = Application.GetRealWidth(580),
|
Height = Application.GetRealHeight(80),
|
TextID = R.MyInternationalizationString.devicedelaytime,
|
//Text = "请输入设备延时的时间(单位/s)",
|
Y = Application.GetRealHeight(10),
|
TextSize = 16,
|
TextColor = ZigbeeColor.Current.MusicTipTextColor,
|
};
|
frameLayout.AddChidren(Modifyname);
|
|
var delaytext = new EditText
|
{
|
Width = Application.GetRealWidth(540),
|
Height = Application.GetRealHeight(80),
|
Y = Application.GetRealHeight(80),
|
X = Application.GetRealWidth(20),
|
Gravity = Gravity.CenterVertical,
|
// BackgroundColor = SkinStyle.Current.MusicTipBackgroundColor,
|
//TextColor = 0xff000000,
|
Radius = 1,
|
BorderWidth = 1,
|
//BorderColor = SkinStyle.Current.MusicEditBorderColor,
|
//TextColor = SkinStyle.Current.MusicTextColor,
|
};
|
frameLayout.AddChidren(delaytext);
|
|
var line = new Button
|
{
|
Height = Application.GetRealHeight(2),
|
Y = Application.GetRealHeight(218),
|
BackgroundColor = 0xff666666,
|
};
|
frameLayout.AddChidren(line);
|
|
var cancelrow = new RowLayout
|
{
|
Y = Application.GetRealHeight(220),
|
Height = Application.GetRealHeight(80),
|
Width = Application.GetRealWidth(289),
|
BackgroundColor = 0xffcccccc,
|
};
|
frameLayout.AddChidren(cancelrow);
|
|
var cancel = new Button
|
{
|
TextID = R.MyInternationalizationString.cancel,
|
//TextColor = 0xff000000,
|
TextSize = 18,
|
//TextColor = SkinStyle.Current.MusicTextColor,
|
};
|
cancelrow.AddChidren(cancel);
|
cancel.MouseUpEventHandler += (sender1, e1) =>
|
{
|
window.Close();
|
};
|
|
var ther = new Button
|
{
|
Y = Application.GetRealHeight(220),
|
Height = Application.GetRealHeight(80),
|
Width = Application.GetRealWidth(2),
|
X = Application.GetRealHeight(289),
|
BackgroundColor = 0xff666666,
|
};
|
frameLayout.AddChidren(ther);
|
|
var confirmrow = new RowLayout
|
{
|
Y = Application.GetRealHeight(220),
|
X = Application.GetRealWidth(291),
|
Height = Application.GetRealHeight(80),
|
Width = Application.GetRealWidth(289),
|
BackgroundColor = 0xffcccccc,
|
};
|
frameLayout.AddChidren(confirmrow);
|
|
var confirm = new Button
|
{
|
TextID = R.MyInternationalizationString.confrim,
|
//TextColor = 0xff000000,
|
TextSize = 18,
|
// TextColor = SkinStyle.Current.MusicTextColor,
|
};
|
confirmrow.AddChidren(confirm);
|
//if (logic.param.ContainsKey ("delay")) {
|
// var delayvalue = logic.param ["delay"]?.ToString ();
|
// if (delayvalue != "" && delayvalue != "0") {
|
// var l = int.Parse (delayvalue) / 10;
|
// delaytext.Text = l.ToString () + "s";
|
// }
|
//}
|
|
confirm.MouseUpEventHandler += (sender1, e1) =>
|
{
|
var isNumber = delaytext.Text.Trim();
|
if (!int.TryParse(isNumber, out int number) || isNumber == "")
|
{
|
new Alert(Language.StringByID(R.MyInternationalizationString.Tip),
|
Language.StringByID(R.MyInternationalizationString.inputnumber),
|
Language.StringByID(R.MyInternationalizationString.Close)).Show();
|
return;
|
}
|
|
var vel = int.Parse(isNumber);
|
//if (logic.param.ContainsKey ("delay")) {
|
// logic.param.Remove ("delay");
|
// logic.param.Add ("delay", vel * 10);
|
//} else {
|
// logic.param.Add ("delay", vel * 10);
|
//}
|
//btndelay.Text = isNumber + "s";
|
window.Close();
|
Automationview(refresview);
|
|
|
};
|
|
};
|
|
|
///删除
|
var del = new Button
|
{
|
//TextID = MyInternationalizationString.Musicdel,
|
BackgroundColor = 0xFFFF0000,
|
Text = Language.StringByID(MyInternationalizationString.del),
|
};
|
logicrowlayout.AddRightView(del);
|
del.MouseUpEventHandler += (sender, e) =>
|
{
|
Common.Logic.LogicList.Remove(logic);
|
Automationview(refresview);
|
Logic.Send.DelLogic(logic.LogicId);
|
};
|
|
}
|
|
|
}
|
|
#endregion
|
|
#region ◆ 控制状态_________________________
|
|
/// <summary>
|
/// 显示设备控制状态
|
/// </summary>
|
/// <param name="command">Command.</param>
|
/// <param name="objValue">Object value.</param>
|
private void UpdateDeviceControllStatu(string command, object objValue)
|
{
|
if (command != "DeviceDefaultAck" || objValue == null)
|
{
|
return;
|
}
|
var tempDevice = (CommonDevice)objValue;
|
if (null == commonDeviceList.Find((obj) => obj.DeviceEpoint == tempDevice.DeviceEpoint && obj.DeviceAddr == tempDevice.DeviceAddr))
|
{
|
return;
|
}
|
//标记已经发送控制命令到网关
|
sendedControlCommand = true;
|
//DeviceUI.ShowStatuTip(R.MyInternationalizationString.Success);
|
}
|
|
/// <summary>
|
/// 移除全部更新控制设备的action
|
/// </summary>
|
private void RemoveAllUpdateControlDeviceStatuAction()
|
{
|
foreach (var gateway in zbGatewayList)
|
{
|
//移除action
|
if (gateway != null)
|
{
|
gateway.ReportAction -= UpdateDeviceControllStatu;
|
}
|
}
|
}
|
|
/// <summary>
|
/// 移除单个控制设备的更新状态action
|
/// </summary>
|
/// <param name="gateway">Gateway.</param>
|
private void RemoveUpdateControlDeviceStatuAction(ZbGateway gateway)
|
{
|
//移除action
|
if (gateway != null)
|
{
|
gateway.ReportAction -= UpdateDeviceControllStatu;
|
}
|
}
|
|
/// <summary>
|
/// 添加需要监控回调状态的网关和设备
|
/// </summary>
|
/// <param name="gatewayList">Gateway list.</param>
|
/// <param name="gateway">Gateway.</param>
|
/// <param name="deviceList">Device list.</param>
|
/// <param name="common">Common.</param>
|
private void AddZbGateway(List<ZbGateway> gatewayList, ZbGateway gateway, List<CommonDevice> deviceList, CommonDevice common)
|
{
|
if (null == gatewayList.Find((obj) => obj.getGatewayBaseInfo.gwID == gateway.getGatewayBaseInfo.gwID))
|
{
|
gatewayList.Add(gateway);
|
}
|
if (null == commonDeviceList.Find((obj) => obj.DeviceEpoint == common.DeviceEpoint && obj.DeviceAddr == common.DeviceAddr))
|
{
|
commonDeviceList.Add(common);
|
}
|
}
|
|
#endregion
|
}
|
}
|