using System;
|
using System.Collections.Generic;
|
using System.Threading.Tasks;
|
using ZigBee.Device;
|
|
namespace Shared.Phone.UserCenter.Device
|
{
|
/// <summary>
|
/// 编辑要添加到网关的设备的信息(这里修改的是MAC名,这个画面会更改MAC的物理名字)
|
/// </summary>
|
public class DeviceMacInfoAddForm : UserCenterCommonForm
|
{
|
#region ■ 变量声明___________________________
|
|
/// <summary>
|
/// 设备对象
|
/// </summary>
|
private List<CommonDevice> listNewDevice = null;
|
/// <summary>
|
/// 保存默认名字(主要针对没有修改名字的时候,必须要给一个默认名字给网关)
|
/// </summary>
|
private string saveDefultName = string.Empty;
|
|
#endregion
|
|
#region ■ 初始化_____________________________
|
|
/// <summary>
|
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
|
/// </summary>
|
/// <param name="listdevices">设备列表</param>
|
public void ShowForm(List<CommonDevice> listdevices)
|
{
|
this.listNewDevice = listdevices;
|
|
//设置标题信息
|
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uDeviceInfo));
|
|
//初始化中部控件
|
this.InitMiddleFrame();
|
|
//设置全部回路的默认名字
|
this.SetAllEpointName();
|
}
|
|
/// <summary>
|
/// 初始化中部控件
|
/// </summary>
|
private void InitMiddleFrame()
|
{
|
this.bodyFrameLayout.RemoveAll();
|
|
//进度条一样的东西,没什么逻辑
|
var line = new ProgressLine();
|
bodyFrameLayout.AddChidren(line);
|
line.SetValue(80);
|
|
//设备图片
|
var btnpictrue = new PicViewControl(510, 320);
|
btnpictrue.Gravity = Gravity.CenterHorizontal;
|
btnpictrue.Y = Application.GetRealHeight(100);
|
Common.LocalDevice.Current.SetRealDeviceIconToControl(btnpictrue, listNewDevice);
|
bodyFrameLayout.AddChidren(btnpictrue);
|
|
//下一步
|
var btnNext = new BottomClickButton();
|
btnNext.TextID = R.MyInternationalizationString.uNextway;
|
bodyFrameLayout.AddChidren(btnNext);
|
|
var listview = new VerticalScrolViewLayout();
|
listview.Y = btnpictrue.Bottom + Application.GetRealHeight(100);
|
listview.Height = btnNext.Y - btnpictrue.Bottom - Application.GetRealHeight(200);
|
bodyFrameLayout.AddChidren(listview);
|
|
//生产商名称
|
var row = new RowLayout();
|
row.Height = ControlCommonResourse.ListViewRowHeight;
|
listview.AddChidren(row);
|
var btnManuView = new RowTopGrayView(false);
|
btnManuView.TextID = R.MyInternationalizationString.uManufacturerName;
|
row.AddChidren(btnManuView);
|
var btnManu = new RowBottomBlackView(false);
|
btnManu.Text = listNewDevice[0].ManufacturerName;
|
row.AddChidren(btnManu);
|
|
//设备型号
|
row = new RowLayout();
|
row.Height = ControlCommonResourse.ListViewRowHeight;
|
listview.AddChidren(row);
|
var btnModelIdView = new RowTopGrayView(false);
|
btnModelIdView.TextID = R.MyInternationalizationString.uModelIdentifier;
|
row.AddChidren(btnModelIdView);
|
var btnModelId = new RowBottomBlackView(false);
|
btnModelId.Text = listNewDevice[0].ModelIdentifier;
|
row.AddChidren(btnModelId);
|
|
//序列号
|
row = new RowLayout();
|
row.Height = ControlCommonResourse.ListViewRowHeight;
|
listview.AddChidren(row);
|
var btnSerialView = new RowTopGrayView(false);
|
btnSerialView.TextID = R.MyInternationalizationString.uSerialNumber;
|
row.AddChidren(btnSerialView);
|
var btnSerial = new RowBottomBlackView(false);
|
btnSerial.Text = listNewDevice[0].SerialNumber;
|
if (string.IsNullOrEmpty(btnSerial.Text) == true)
|
{
|
btnSerial.Text = listNewDevice[0].DeviceAddr;
|
}
|
row.AddChidren(btnSerial);
|
|
//产品名称
|
string caption = Language.StringByID(R.MyInternationalizationString.uProductName);
|
string nameValue = Common.LocalDevice.Current.GetDeviceMacName(listNewDevice[0]);
|
this.saveDefultName = nameValue;
|
|
var btnDeviceView = new EditorNameValueRow(caption, nameValue);
|
listview.AddChidren(btnDeviceView);
|
btnDeviceView.InitControl();
|
//请输入产品名称
|
btnDeviceView.SetEmptyNameTip(Language.StringByID(R.MyInternationalizationString.uProductNameMastInput));
|
//编辑产品名称
|
btnDeviceView.SetDialogTitle(Language.StringByID(R.MyInternationalizationString.uEditorProductName));
|
btnDeviceView.ActionNameChangedEvent += (deviceName) =>
|
{
|
//设备重命名
|
this.DeviceReName(deviceName);
|
};
|
|
//只有是河东的设备的时候
|
if (Common.LocalDevice.Current.IsHdlDevice(listNewDevice[0]) == true)
|
{
|
//添加【背光设置】行
|
this.AddBackLightRow(listview);
|
}
|
|
//下一步
|
btnNext.MouseUpEventHandler += (sender, e) =>
|
{
|
//网关成功添加设备的显示画面
|
var form = new AddDeviceSuccessForm();
|
base.AddFromAndRemoveNowForm(form, listNewDevice);
|
};
|
}
|
|
#endregion
|
|
#region ■ 背光设置___________________________
|
|
/// <summary>
|
/// 添加【背光设置】行
|
/// </summary>
|
/// <param name="listview"></param>
|
private void AddBackLightRow(VerticalScrolViewLayout listview)
|
{
|
bool canAddRow = false;
|
foreach (var device in listNewDevice)
|
{
|
if (device.Type == DeviceType.OnOffSwitch)
|
{
|
canAddRow = true;
|
break;
|
}
|
}
|
if (canAddRow == false)
|
{
|
//必须有一路回路是OnOffSwitch才行
|
return;
|
}
|
|
//获取这一堆设备时属于什么类型的
|
var myDeviceType = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listNewDevice);
|
//如果是控制面板
|
if (myDeviceType.BeloneType == DeviceBeloneType.A按键面板)
|
{
|
//背光设置
|
var statuRowLight = new StatuRowLayout(listview);
|
|
var btnBackLight = new RowCenterView(false);
|
btnBackLight.TextID = R.MyInternationalizationString.uBackLightSettion;
|
statuRowLight.AddChidren(btnBackLight);
|
//背光设置向右的图标
|
statuRowLight.AddRightIconControl();
|
statuRowLight.MouseUpEvent += (sender, e) =>
|
{
|
var form = new DevicePanel.PanelBackLightSettionForm();
|
this.AddForm(form, listNewDevice);
|
};
|
}
|
}
|
|
#endregion
|
|
#region ■ 修改名字___________________________
|
|
/// <summary>
|
/// 设备重命名然后打开新的画面
|
/// </summary>
|
/// <param name="i_deviceName">deviceName.</param>
|
/// <param name="mode">是否显示错误</param>
|
private async void DeviceReName(string i_deviceName, ShowErrorMode mode = ShowErrorMode.YES)
|
{
|
//修改MAC名
|
string deviceName = i_deviceName.Trim();
|
var result = await Common.LocalDevice.Current.ReMacName(this.listNewDevice, deviceName, mode);
|
if (result == false)
|
{
|
return;
|
}
|
//更改过一次之后,则界面关闭后不再更改
|
this.saveDefultName = string.Empty;
|
|
//如果它的回路只有一个的话,则在设备上报的时候,修改MAC名字之后,连同端点名字也一起修改
|
if (this.listNewDevice.Count == 1)
|
{
|
//修改端点名字
|
result = await Common.LocalDevice.Current.ReName(this.listNewDevice[0], deviceName, mode);
|
if (result == false)
|
{
|
return;
|
}
|
}
|
}
|
|
/// <summary>
|
/// 设置全部回路的默认名字
|
/// </summary>
|
private async void SetAllEpointName()
|
{
|
if (this.listNewDevice.Count <= 1)
|
{
|
return;
|
}
|
var tempValue = Common.LocalDevice.Current.GetDeviceObjectText(this.listNewDevice);
|
var arry = tempValue.Split(new string[] { "(" }, StringSplitOptions.RemoveEmptyEntries);
|
var objName = arry[0].Trim();
|
|
foreach (var device in this.listNewDevice)
|
{
|
if (Common.LocalDevice.Current.GetSimpleEpointName(device) != string.Empty)
|
{
|
continue;
|
}
|
//XXXXX(N回路)
|
var epointName = objName + "(" + device.DeviceEpoint + Language.StringByID(R.MyInternationalizationString.uDeviceCircuit) + ")";
|
await Common.LocalDevice.Current.ReName(device, epointName, ShowErrorMode.NO);
|
}
|
}
|
|
#endregion
|
|
#region ■ 画面关闭___________________________
|
|
/// <summary>
|
/// 画面关闭
|
/// </summary>
|
/// <param name="isCloseForm">是否关闭界面,false的时候,只会调用关闭函数里面的附加功能</param>
|
public override void CloseForm(bool isCloseForm = true)
|
{
|
if (this.saveDefultName != string.Empty)
|
{
|
//必须给它一个默认名字才行
|
this.DeviceReName(this.saveDefultName, ShowErrorMode.NO);
|
}
|
//搜到设备之后,不管之后怎么处理,先添加到主界面的列表及缓存中
|
this.LoadFormMethodByName("DeviceManagementMainForm", "AddDeviceToFormTable", listNewDevice);
|
base.CloseForm(isCloseForm);
|
}
|
#endregion
|
}
|
}
|