using Shared.Phone.UserCenter;
using System;
using System.Collections.Generic;
using System.Text;
using ZigBee.Device;
namespace Shared.Phone.MainPage.ControlForm
{
///
/// 继电器类型的深度卡片界面(含空气开关)
///
public class DeviceRelayDetailCardForm : DeviceDetailCardCommonForm
{
#region ■ 变量声明___________________________
///
/// 界面上可以操作的控件
///
private List listControl = new List();
#endregion
#region ■ 初始化_____________________________
///
/// 底层初始化中部控件完成之后
///
///
public override void InitMiddleFrameAfter(FrameLayout frameWhiteBack)
{
//先清空
this.listControl = new List();
if (this.device.DfunctionType == DeviceFunctionType.A开关)
{
//初始化开关类型控件
this.InitSwitchControl(frameWhiteBack);
}
else if (this.device.DfunctionType == DeviceFunctionType.A插座)
{
//初始化插座类型控件
this.InitPlugControl(frameWhiteBack);
}
else
{
//初始化灯光类型控件
this.InitLightControl(frameWhiteBack);
}
//设置状态文字
this.SetStatuText(HdlDeviceCommonLogic.Current.GetMainPageDeviceStatuText(this.device));
}
#endregion
#region ■ 初始化灯光类型_____________________
///
/// 初始化灯光类型控件
///
///
private void InitLightControl(FrameLayout frameWhiteBack)
{
//灯光图片
var picLight = new PicViewControl(377, 435);
picLight.Y = Application.GetRealHeight(389);
picLight.UnSelectedImagePath = "Light/DeskLamp.png";
picLight.SelectedImagePath = "Light/DeskLampSelected.png";
picLight.Gravity = Gravity.CenterHorizontal;
frameWhiteBack.AddChidren(picLight);
listControl.Add(picLight);
//开关
var btnSwitch = new IconViewControl(81);
btnSwitch.UnSelectedImagePath = "Item/Switch.png";
btnSwitch.SelectedImagePath = "Item/SwitchSelected.png";
btnSwitch.Y = picLight.Bottom + Application.GetRealHeight(173);
btnSwitch.Gravity = Gravity.CenterHorizontal;
frameWhiteBack.AddChidren(btnSwitch);
listControl.Add(btnSwitch);
//设置初始状态
if (((LightBase)this.device).OnOffStatus == 1)
{
picLight.IsSelected = true;
btnSwitch.IsSelected = true;
}
picLight.ButtonClickEvent += (sender, e) =>
{
//发送开关命令
this.SetSwitchCommand(!picLight.IsSelected);
};
btnSwitch.ButtonClickEvent += (sender, e) =>
{
//发送开关命令
this.SetSwitchCommand(!btnSwitch.IsSelected);
};
}
#endregion
#region ■ 初始化开关类型_____________________
///
/// 初始化开关类型控件
///
///
private void InitSwitchControl(FrameLayout frameWhiteBack)
{
//开关的背景图片
var picSwitchBack = new FrameLayout();
picSwitchBack.Height = this.GetPictrueRealSize(579);
picSwitchBack.Width = this.GetPictrueRealSize(579);
picSwitchBack.Y = Application.GetRealHeight(340);
picSwitchBack.BackgroundImagePath = "Light/OnOff.png";
picSwitchBack.Gravity = Gravity.CenterHorizontal;
frameWhiteBack.AddChidren(picSwitchBack);
//关闭
var btnClose = new IconViewControl(81);
btnClose.UnSelectedImagePath = "Light/OFF.png";
btnClose.SelectedImagePath = "Light/OFFSelected.png";
btnClose.X = this.GetPictrueRealSize(101);
btnClose.Y = this.GetPictrueRealSize(248);
picSwitchBack.AddChidren(btnClose);
listControl.Add(btnClose);
//打开
var btnOpen = new IconViewControl(81);
btnOpen.UnSelectedImagePath = "Light/ON.png";
btnOpen.SelectedImagePath = "Light/ONSelected.png";
btnOpen.X = this.GetPictrueRealSize(397);
btnOpen.Y = btnClose.Y;
picSwitchBack.AddChidren(btnOpen);
listControl.Add(btnOpen);
//设置初始状态
if (((LightBase)this.device).OnOffStatus == 1)
{
btnOpen.IsSelected = true;
}
else
{
btnClose.IsSelected = true;
}
btnClose.ButtonClickEvent += (sender, e) =>
{
if (btnClose.IsSelected == true) { return; }
//发送开关命令
this.SetSwitchCommand(false);
};
btnOpen.ButtonClickEvent += (sender, e) =>
{
if (btnOpen.IsSelected == true) { return; }
//发送开关命令
this.SetSwitchCommand(true);
};
}
#endregion
#region ■ 初始化插座类型_____________________
///
/// 初始化插座类型控件
///
///
private void InitPlugControl(FrameLayout frameWhiteBack)
{
//插座图片
var picPlug = new PicViewControl(567, 567);
picPlug.Y = Application.GetRealHeight(334);
picPlug.UnSelectedImagePath = "Light/Plug.png";
picPlug.SelectedImagePath = "Light/PlugSelected.png";
picPlug.Gravity = Gravity.CenterHorizontal;
frameWhiteBack.AddChidren(picPlug);
listControl.Add(picPlug);
//开关
var btnSwitch = new IconViewControl(81);
btnSwitch.UnSelectedImagePath = "Item/Switch.png";
btnSwitch.SelectedImagePath = "Item/SwitchSelected.png";
btnSwitch.Y = picPlug.Bottom + Application.GetRealHeight(89);
btnSwitch.Gravity = Gravity.CenterHorizontal;
frameWhiteBack.AddChidren(btnSwitch);
listControl.Add(btnSwitch);
//设置初始状态
if (((LightBase)this.device).OnOffStatus == 1)
{
picPlug.IsSelected = true;
btnSwitch.IsSelected = true;
}
picPlug.ButtonClickEvent += (sender, e) =>
{
//发送开关命令
this.SetSwitchCommand(!picPlug.IsSelected);
};
btnSwitch.ButtonClickEvent += (sender, e) =>
{
//发送开关命令
this.SetSwitchCommand(!btnSwitch.IsSelected);
};
}
#endregion
#region ■ 刷新开关状态_______________________
///
/// 刷新开关状态
///
/// 打开状态
private void RefreshSwitchStatu(bool isOpen)
{
//变更状态
if (this.device.DfunctionType == DeviceFunctionType.A开关)
{
//开状态
listControl[1].IsSelected = isOpen;
//关状态 取反开状态
listControl[0].IsSelected = !isOpen;
}
else
{
//开关以外
listControl[0].IsSelected = isOpen;
listControl[1].IsSelected = isOpen;
}
//设置状态文字
this.SetStatuText(HdlDeviceCommonLogic.Current.GetMainPageDeviceStatuText(this.device));
}
#endregion
#region ■ 是否获取网关反馈的结果_____________
///
/// 检测网关的反馈结果(属性上报的对象:device.DeviceStatusReport)
///
/// 命令区分
/// 上报数据
///
public override bool CheckResponeResultStatu(ReceiveComandDiv comandDiv, CommonDevice report)
{
if (comandDiv == ReceiveComandDiv.A设备属性上报)
{
HdlThreadLogic.Current.RunMain(() =>
{
//变更卡片状态
this.RefreshSwitchStatu(((LightBase)this.device).OnOffStatus == 1);
});
return true;
}
return false;
}
#endregion
#region ■ 发送开关命令_______________________
///
/// 发送开关命令
///
///
private void SetSwitchCommand(bool isOpen)
{
//如果住宅为虚拟住宅
if (Common.Config.Instance.Home.IsVirtually == true)
{
((LightBase)this.device).OnOffStatus = isOpen == true ? 1 : 0;
//变更卡片状态
this.RefreshSwitchStatu(((LightBase)this.device).OnOffStatus == 1);
return;
}
//检测是否获取网关反馈的结果,如果网关没有回复,则会弹出消息
this.StartCheckResponeResult(this.listControl, (result) =>
{
//接收到网关回复
if (result == true)
{
HdlThreadLogic.Current.RunMain(() =>
{
//变更卡片状态
bool statu = ((LightBase)this.device).OnOffStatus == 1;
this.RefreshSwitchStatu(statu);
});
}
});
if (isOpen == true)
{
//打开
this.device.SwitchControl(1);
}
else
{
//关闭
this.device.SwitchControl(0);
}
}
#endregion
}
}