using System;
|
using System.Collections.Generic;
|
using ZigBee.Device;
|
|
namespace Shared.Phone.UserCenter.DeviceDirection
|
{
|
/// <summary>
|
/// 网关添加可能的设备类型的一览画面,
|
/// 它从[DeviceManagementMainForm]画面打开
|
/// </summary>
|
public class AddDeviceTypeListForm : EditorCommonForm
|
{
|
#region ■ 变量声明___________________________
|
|
/// <summary>
|
/// 列表控件
|
/// </summary>
|
private VerticalListControl listView = null;
|
/// <summary>
|
/// 当前网关对象
|
/// </summary>
|
private ZbGateway zbGateway = null;
|
|
#endregion
|
|
#region ■ 初始化_____________________________
|
|
/// <summary>
|
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
|
/// </summary>
|
public void ShowForm()
|
{
|
//设定标题
|
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uDeviceType));
|
|
//初始化中部控件
|
this.InitMiddleFrame();
|
|
this.zbGateway = HdlGatewayLogic.Current.GetLocalGateway(HdlGatewayResourse.AppOldSelectGatewayId);
|
}
|
|
/// <summary>
|
/// 初始化中部控件
|
/// </summary>
|
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 ■ 检测网关___________________________
|
|
/// <summary>
|
/// 检测网关(返回错误信息,null代表没问题)
|
/// </summary>
|
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<string>();
|
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 ■ 添加菜单栏_________________________
|
|
/// <summary>
|
/// 添加菜单栏
|
/// </summary>
|
/// <param name="objectText">显示文本</param>
|
/// <param name="unSelectPic">图片:非点亮</param>
|
/// <param name="formName">目标界面名</param>
|
/// <param name="addLine">添加底线</param>
|
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
|
}
|
}
|