using System;
using System.Collections.Generic;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DeviceDirection
{
///
/// 网关添加可能的设备类型的一览画面,
/// 它从[DeviceManagementMainForm]画面打开
///
public class AddDeviceTypeListForm : EditorCommonForm
{
#region ■ 变量声明___________________________
///
/// 列表控件
///
private VerticalListControl listView = null;
///
/// 当前网关对象
///
private ZbGateway zbGateway = null;
#endregion
#region ■ 初始化_____________________________
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
public void ShowForm()
{
//设定标题
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uDeviceType));
//初始化中部控件
this.InitMiddleFrame();
this.zbGateway = HdlGatewayLogic.Current.GetLocalGateway(HdlGatewayResourse.AppOldSelectGatewayId);
}
///
/// 初始化中部控件
///
private void InitMiddleFrame()
{
//清空bodyFrame
this.ClearBodyFrame();
var frameBack = new FrameLayout();
frameBack.Height = Application.GetRealHeight(3);
frameBack.BackgroundColor = UserCenterColor.Current.White;
bodyFrameLayout.AddChidren(frameBack);
listView = new VerticalListControl(29);
listView.Y = frameBack.Bottom;
listView.BackgroundColor = UserCenterColor.Current.White;
listView.Height = bodyFrameLayout.Height - Application.GetRealHeight(3);
bodyFrameLayout.AddChidren(listView);
//2按键触摸面板
var objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName1);
var unSelectPic = "Device/ButtonPanelTwo.png";
this.AddMenuRow(objectText, unSelectPic, "PanelTwoButtonDirectionForm");
//3按键触摸面板
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName2);
unSelectPic = "Device/ButtonPanelThree.png";
this.AddMenuRow(objectText, unSelectPic, "PanelThreeButtonDirectionForm");
//4按键触摸面板
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName3);
unSelectPic = "Device/ButtonPanelFour.png";
this.AddMenuRow(objectText, unSelectPic, "PanelFourButtonDirectionForm");
//方悦单开双控面板
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName4);
unSelectPic = "Device/ButtonPanelFangyueTwo.png";
this.AddMenuRow(objectText, unSelectPic, "PanelFangyueTwoButtonDirectionForm");
//方悦双开四控面板
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName5);
unSelectPic = "Device/ButtonPanelFangyueFour.png";
this.AddMenuRow(objectText, unSelectPic, "PanelFangyueFourButtonDirectionForm");
//方悦四开八控面板
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName6);
unSelectPic = "Device/ButtonPanelFangyueEight.png";
this.AddMenuRow(objectText, unSelectPic, "PanelFangyueEightButtonDirectionForm");
//方悦新风小模块,图片和3路继电器小模块相同
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName7);
unSelectPic = "Device/RelayThreeLoad.png";
this.AddMenuRow(objectText, unSelectPic, "PanelFangyueFreshAirModulDirectionForm");
//方悦新风面板
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName8);
unSelectPic = "Device/ButtonPanelFangyueFreshAir.png";
this.AddMenuRow(objectText, unSelectPic, "PanelFangyueFreshAirDirectionForm");
//简约多功能面板
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName28);
unSelectPic = "Device/ButtonPanelSimpleMultifunction.png";
this.AddMenuRow(objectText, unSelectPic, "PanelSimpleMultifunctionDirectionForm");
//简约环境面板
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName29);
unSelectPic = "Device/ButtonPanelSimpleEnvironment.png";
this.AddMenuRow(objectText, unSelectPic, "PanelSimpleEnvironmentDirectionForm");
//方悦环境面板
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName9);
unSelectPic = "Device/ButtonPanelFangyueEnvironment.png";
this.AddMenuRow(objectText, unSelectPic, "PanelFangyueEnvironmentDirectionForm");
//窗帘面板
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName10);
unSelectPic = "Device/ButtonPanelCurtain.png";
this.AddMenuRow(objectText, unSelectPic, "PanelCurtainDirectionForm");
//3路继电器小模块
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName11);
unSelectPic = "Device/RelayThreeLoad.png";
this.AddMenuRow(objectText, unSelectPic, "RelayThreeLoadDirectionForm");
//1路调光器小模块
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName12);
unSelectPic = "Device/DimmableLightOneLoad.png";
this.AddMenuRow(objectText, unSelectPic, "DimmableLightOneLoadDirectionForm");
//Zigbee智能开合帘电机
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName13);
unSelectPic = "Device/CurtainAutoOpen.png";
this.AddMenuRow(objectText, unSelectPic, "CurtainAutoOpenDirectionForm");
//Zigbee智能管状电机
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName14);
unSelectPic = "Device/CurtainSiphonate.png";
this.AddMenuRow(objectText, unSelectPic, "CurtainSiphonateDirectionForm");
//空调
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName15);
unSelectPic = "Device/AirConditionerZbGateway.png";
this.AddMenuRow(objectText, unSelectPic, "AirConditionerZbGatewayDirectionForm");
//智能门锁
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName16);
unSelectPic = "Device/IntelligentLocksH06C.png";
this.AddMenuRow(objectText, unSelectPic, "IntelligentLocksH06cDirectionForm");
//PIR传感器
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName17);
unSelectPic = "Device/SensorPir.png";
this.AddMenuRow(objectText, unSelectPic, "SensorPirDirectionForm");
//红外传感器
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName18);
unSelectPic = "Device/SensorInfrared.png";
this.AddMenuRow(objectText, unSelectPic, "SensorInfraredDirectionForm");
//燃气传感器
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName19);
unSelectPic = "Device/SensorCarbonMonoxide.png";
this.AddMenuRow(objectText, unSelectPic, "SensorCarbonMonoxideDirectionForm");
//吸顶燃气传感器
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName26);
unSelectPic = "Device/SensorCarbonMonoxide.png";
this.AddMenuRow(objectText, unSelectPic, "SensorCeilingGasDirectionForm");
//烟雾传感器
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName20);
unSelectPic = "Device/SensorFire.png";
this.AddMenuRow(objectText, unSelectPic, "SensorFireDirectionForm");
//水浸传感器
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName21);
unSelectPic = "Device/SensorWater.png";
this.AddMenuRow(objectText, unSelectPic, "SensorWaterDirectionForm");
//门窗传感器
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName22);
unSelectPic = "Device/SensorDoorWindow.png";
this.AddMenuRow(objectText, unSelectPic, "SensorDoorWindowDirectionForm");
//温湿度传感器
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName23);
unSelectPic = "Device/SensorTemperatureHumidity.png";
this.AddMenuRow(objectText, unSelectPic, "SensorTemperatureHumidityForm");
//球型移动传感器
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName30);
unSelectPic = "Device/SensorSphericalMotion.png";
this.AddMenuRow(objectText, unSelectPic, "SensorSphericalMotionDirectionForm");
//PM2.5空气质量传感器
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName27);
unSelectPic = "Device/SensorPMTwoPointFive.png";
this.AddMenuRow(objectText, unSelectPic, "SensorPMTwoPointFiveForm");
//中继器
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName24);
unSelectPic = "Device/RepeaterZigbee.png";
this.AddMenuRow(objectText, unSelectPic, "RepeaterZigbeeDirectionForm");
//空气开关
objectText = Language.StringByID(R.MyInternationalizationString.uDeviceDirectionName25);
unSelectPic = "Device/AirSwitchCloudContr.png";
this.AddMenuRow(objectText, unSelectPic, "AirSwitchCloudContrDirectionForm");
//第三方设备
objectText = Language.StringByID(R.MyInternationalizationString.uThirdPartyDevice);
unSelectPic = "Device/ThirdPartyDevice.png";
var rowThrid = this.AddMenuRow(objectText, unSelectPic, string.Empty, false);
rowThrid.ButtonClickEvent += (sender, e) =>
{
rowThrid.CanClick = false;
HdlThreadLogic.Current.RunThread(() =>
{
//检测网关
var errorMsg = this.CheckGateway();
HdlThreadLogic.Current.RunMain(() =>
{
rowThrid.CanClick = true;
if (errorMsg != null)
{
this.ShowMassage(ShowMsgType.Tip, errorMsg);
}
else
{
var form = new Device.DeviceSearchForm();
form.AddForm(string.Empty);
}
});
});
};
//调整列表控件的高度
listView.AdjustRealHeight(Application.GetRealHeight(23));
}
#endregion
#region ■ 检测网关___________________________
///
/// 检测网关(返回错误信息,null代表没问题)
///
private string CheckGateway()
{
if (HdlGatewayLogic.Current.IsMiniGateway(zbGateway) == true)
{
//mini夜灯只能限制加入16和设备
this.ShowProgressBar();
int statu = 0;
//重新获取设备列表
var listDevice = HdlDeviceCommonLogic.Current.GetDeviceListFromGateway(zbGateway.GwId, ref statu, true, ShowErrorMode.NO);
if (statu != 1)
{
//如果
listDevice = HdlDeviceCommonLogic.Current.GetDeviceByGatewayID(zbGateway.GwId);
}
//检测mini网关的设备数
var listMac = new HashSet();
foreach (var device in listDevice)
{
if (listMac.Contains(device.DeviceAddr) == false)
{
listMac.Add(device.DeviceAddr);
}
}
this.CloseProgressBar();
bool canAdd = listMac.Count < 16;
if (canAdd == false)
{
//Mini网关最大只能添加16个设备
return Language.StringByID(R.MyInternationalizationString.uMiniGatewayMaxDeviceCountMsg);
}
}
return null;
}
#endregion
#region ■ 添加菜单栏_________________________
///
/// 添加菜单栏
///
/// 显示文本
/// 图片:非点亮
/// 目标界面名
/// 添加底线
private FrameRowControl AddMenuRow(string objectText, string unSelectPic, string formName, bool addLine = true)
{
var rowLayout = new FrameRowControl(listView.rowSpace / 2);
listView.AddChidren(rowLayout);
//图标
var btnIcon = rowLayout.AddLeftIcon(81);
btnIcon.UnSelectedImagePath = unSelectPic;
//设备
var btnObject = rowLayout.AddLeftCaption(objectText, 700);
btnObject.TextSize = 15;
//添加向右的图标
rowLayout.AddRightArrow();
if (addLine == true)
{
rowLayout.AddBottomLine();
}
if (formName != string.Empty)
{
rowLayout.ButtonClickEvent += (sender, e) =>
{
rowLayout.CanClick = false;
HdlThreadLogic.Current.RunThread(() =>
{
//检测网关
var errorMsg = this.CheckGateway();
HdlThreadLogic.Current.RunMain(() =>
{
rowLayout.CanClick = true;
if (errorMsg != null)
{
this.ShowMassage(ShowMsgType.Tip, errorMsg);
}
else
{
//反射目标界面
this.LoadFormByFullName("Shared.Phone.UserCenter.DeviceDirection." + formName);
}
});
});
};
}
return rowLayout;
}
#endregion
}
}