using System;
using System.Collections.Generic;
using Shared.Common;
using ZigBee.Common;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DevicePanel
{
///
/// 方悦新风面板的按键配置界面
///
public class PanelFangyueFreshAirButtonSettionForm : EditorCommonForm
{
#region ■ 变量声明___________________________
///
/// 列表控件
///
private FrameListControl listview = null;
///
/// 设备的某一回路
///
private CommonDevice deviceObj = null;
///
/// 新风目标名字
///
private string bindFreshAirName = string.Empty;
///
/// 温度目标名字
///
private string bindTemperatureName = string.Empty;
///
/// 湿度目标名字
///
private string bindHumidityName = string.Empty;
///
/// PM目标名字
///
private string bindPmName = string.Empty;
///
/// 被绑目标是新风
///
private CommonDevice bindFreshAirDev;
///
/// 被绑目标是温度
///
private CommonDevice bindTemperatureDev;
///
/// 被绑目标是湿度
///
private CommonDevice bindHumidityDev;
///
/// 被绑目标是PM2.5
///
private CommonDevice bindPMDev;
//
/// 按键中被绑定的目标列表
///
public List bindList = new List();
#endregion
#region ■ 初始化_____________________________
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
/// 设备的某一回路
public void ShowForm(CommonDevice i_device)
{
this.deviceObj = i_device;
//获取数据
ReadDoorLockUserInfo(deviceObj);
//设置头部信息
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uPanelSettion));
//初始化中部信息
this.InitMiddleFrame();
//初始化右上角菜单
this.InitTopRightMenu();
}
///
/// 初始化中部信息
///
private void InitMiddleFrame()
{
//清空bodyFrame
this.ClearBodyFrame();
var listBackControl = new VerticalFrameControl();
listBackControl.Height = bodyFrameLayout.Height;
bodyFrameLayout.AddChidren(listBackControl);
//图片
var btnPic = new PicViewControl(426, 426);
btnPic.Y = Application.GetRealHeight(150);
btnPic.UnSelectedImagePath = "RealDevice/ButtonPanelFangyueFreshAir.png";
btnPic.Gravity = Gravity.CenterHorizontal;
listBackControl.frameTable.AddChidren(btnPic);
//初始化桌布
var tableContr = new InformationEditorControl();
this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1028);
//初始化菜单行
this.InitMenuRow();
//初始化桌布完成
tableContr.FinishInitControl();
tableContr = null;
//保存
var btnFinish = new BottomClickButton();
btnFinish.TextID = R.MyInternationalizationString.uSave;
bodyFrameLayout.AddChidren(btnFinish);
btnFinish.ButtonClickEvent += (sender, e) =>
{
//关闭自身
this.CloseForm();
};
}
///
/// 初始化菜单行
///
private void InitMenuRow()
{
this.listview.RemoveAll();
//添加新风目标
this.AddFreshAirRow();
//PM2.5来源
this.AddPMRow();
//添加温度来源
this.AddTemperatureSensorRow();
//添加湿度来源
this.AddHumiditySourceRow();
//亮度调节
this.AddLevelRow();
}
#endregion
#region ■ 初始化数据_________________________
///
/// 初始化数据
///
void ReadDoorLockUserInfo(CommonDevice curControlDev)
{
System.Threading.Tasks.Task.Run(async () =>
{
try
{
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Start("");
});
var result = await GetBindName(curControlDev);
if (!result)
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
}
}
catch (Exception ex)
{
var mess = ex.Message;
}
finally
{
Application.RunOnMainThread(() =>
{
this.InitMenuRow();
CommonPage.Loading.Hide();
});
}
});
}
#endregion
#region ■ 新风目标_________________________
///
/// 新风目标行
///
private void AddFreshAirRow()
{
//新风目标
var rowNewWind = new FrameRowControl(listview.rowSpace / 2);
listview.AddChidren(rowNewWind);
rowNewWind.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNewWindTarget), 600);
//底线
rowNewWind.AddBottomLine();
//右箭头
rowNewWind.AddRightArrow();
var msg = Language.StringByID(R.MyInternationalizationString.nothing);
if (!string.IsNullOrEmpty(bindFreshAirName))
{
msg = bindFreshAirName;
}
var btnNewWindStatu = rowNewWind.AddMostRightView(msg, 700);
rowNewWind.ButtonClickEvent += (sender, e) =>
{
var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindFreshAirDev, 1);
Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
addDevicePage.Show();
addDevicePage.actionFreshAirTarget += (bindName) =>
{
Application.RunOnMainThread(() =>
{
if (string.IsNullOrEmpty(bindName))
{
btnNewWindStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
}
else
{
btnNewWindStatu.Text = bindName;
}
});
};
};
}
#endregion
///
/// 获取绑定目标
///
///
///
private async System.Threading.Tasks.Task GetBindName(CommonDevice curDev)
{
bool result = false;
//获取面板中存在的绑定目标
FreshAir curControlDev = curDev as FreshAir;
var panelBindListRes = HdlDeviceBindLogic.Current.GetDeviceBindAsync(curControlDev);
if (panelBindListRes != null && panelBindListRes.getAllBindResponseData != null)
{
bindList = panelBindListRes.getAllBindResponseData.BindList;
foreach (var bDev in bindList)
{
var device = Common.LocalDevice.Current.GetDevice(bDev.BindMacAddr, bDev.BindEpoint);
if (device.Type == DeviceType.FreshAir)
{
//获取设备类型的
var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List() { device });
//新风面板的新风设备,则不显示
if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
{
continue;
}
if (string.IsNullOrEmpty(bDev.ESName))
{
bindFreshAirName = Common.LocalDevice.Current.GetDeviceEpointName(device);
}
else
{
bindFreshAirName = bDev.ESName;
}
bindFreshAirDev = device;
}
if (device.Type == DeviceType.TemperatureSensor)
{
var bD = device as TemperatureSensor;
if (bD.SensorDiv == 1)
{
if (string.IsNullOrEmpty(bDev.ESName))
{
bindTemperatureName = Common.LocalDevice.Current.GetDeviceEpointName(device);
}
else
{
bindTemperatureName = bDev.ESName;
}
bindTemperatureDev = device;
}
if (bD.SensorDiv == 2)
{
if (string.IsNullOrEmpty(bDev.ESName))
{
bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device);
}
else
{
bindHumidityName = bDev.ESName;
}
bindHumidityDev = device;
}
}
if (device.Type == DeviceType.FreshAirHumiditySensor)
{
if (string.IsNullOrEmpty(bDev.ESName))
{
bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device);
}
else
{
bindHumidityName = bDev.ESName;
}
bindHumidityDev = device;
}
if (device.Type == DeviceType.PMSensor)
{
if (bDev.BindCluster == 1026)
{
bindTemperatureName = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.TemperatureSensor);
bindTemperatureDev = device;
}
if (bDev.BindCluster == 1029)
{
bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.HumiditySensor);
bindHumidityDev = device;
}
if (bDev.BindCluster == 1066)
{
if (string.IsNullOrEmpty(bDev.ESName))
{
bindPmName = Common.LocalDevice.Current.GetDeviceEpointName(device);
}
else
{
bindPmName = bDev.ESName;
}
bindPMDev = device;
}
}
}
result = true;
}
return result;
}
#region ■ PM2.5来源_________________________
///
/// PM2.5来源行
///
private void AddPMRow()
{
//PM2.5
var rowPM = new FrameRowControl(listview.rowSpace / 2);
listview.AddChidren(rowPM);
rowPM.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.PM25Source), 600);
//底线
rowPM.AddBottomLine();
//右箭头
rowPM.AddRightArrow();
var msg = Language.StringByID(R.MyInternationalizationString.nothing);
if (!string.IsNullOrEmpty(bindPmName))
{
msg = bindPmName;
}
var btnPMStatu = rowPM.AddMostRightView(msg, 700);
rowPM.ButtonClickEvent += (sender, e) =>
{
var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindPMDev, 4);
Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
addDevicePage.Show();
addDevicePage.actionPMTarget += (bindName) =>
{
Application.RunOnMainThread(() =>
{
if (string.IsNullOrEmpty(bindName))
{
btnPMStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
}
else
{
btnPMStatu.Text = bindName;
}
});
};
};
}
#endregion
#region ■ 温度来源_________________________
///
/// 温度来源行
///
private void AddTemperatureSensorRow()
{
//温度来源
var rowTemPerature = new FrameRowControl(listview.rowSpace / 2);
listview.AddChidren(rowTemPerature);
rowTemPerature.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.TemperatureSource), 600);
//底线
rowTemPerature.AddBottomLine();
//右箭头
rowTemPerature.AddRightArrow();
var msg = Language.StringByID(R.MyInternationalizationString.nothing);
if (!string.IsNullOrEmpty(bindTemperatureName))
{
msg = bindTemperatureName;
}
var btnTemperatureStatu = rowTemPerature.AddMostRightView(msg, 700);
rowTemPerature.ButtonClickEvent += (sender, e) =>
{
var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindTemperatureDev, 2);
Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
addDevicePage.Show();
addDevicePage.actionTemperatureTarget += (bindName) =>
{
Application.RunOnMainThread(() =>
{
if (string.IsNullOrEmpty(bindName))
{
btnTemperatureStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
}
else
{
btnTemperatureStatu.Text = bindName;
}
});
};
};
}
#endregion
#region ■ 湿度来源_________________________
///
/// 湿度来源行
///
private void AddHumiditySourceRow()
{
//湿度
var rowHumidity = new FrameRowControl(listview.rowSpace / 2);
listview.AddChidren(rowHumidity);
rowHumidity.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.HumiditySource), 600);
//底线
rowHumidity.AddBottomLine();
//右箭头
rowHumidity.AddRightArrow();
var msg = Language.StringByID(R.MyInternationalizationString.nothing);
if (!string.IsNullOrEmpty(bindHumidityName))
{
msg = bindHumidityName;
}
var btnHumidityStatu = rowHumidity.AddMostRightView(msg, 700);
rowHumidity.ButtonClickEvent += (sender, e) =>
{
var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindHumidityDev, 3);
Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
addDevicePage.Show();
addDevicePage.actionHumidityTarget += (bindName) =>
{
Application.RunOnMainThread(() =>
{
if (string.IsNullOrEmpty(bindName))
{
btnHumidityStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
}
else
{
btnHumidityStatu.Text = bindName;
}
});
};
};
}
#endregion
#region ■ 亮度调节_________________________
///
/// 亮度调节行
///
private void AddLevelRow()
{
//亮度调节
var rowLight = new FrameRowControl(listview.rowSpace / 2);
listview.AddChidren(rowLight);
rowLight.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uLightRegulation), 600);
//底线
rowLight.AddBottomLine();
//右箭头
rowLight.AddRightArrow();
rowLight.ButtonClickEvent += (sender, e) =>
{
//给新风面板建立一个新的支持面板对象,用200端点设置
var panel = new Panel();
panel.DeviceAddr = this.deviceObj.DeviceAddr;
panel.DeviceEpoint = 200;
panel.CurrentGateWayId = this.deviceObj.CurrentGateWayId;
var form = new PanelFangyueFreshAirBackLightSettionForm();
form.AddForm(panel);
};
}
#endregion
#region ■ 右上角菜单_________________________
///
/// 初始化右上角菜单
///
private void InitTopRightMenu()
{
//检测此回路是否拥有定位功能
if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(deviceObj) == false)
{
return;
}
var btnIcon = new MostRightIconControl(69, 69);
btnIcon.UnSelectedImagePath = "Item/More.png";
topFrameLayout.AddChidren(btnIcon);
btnIcon.InitControl();
btnIcon.ButtonClickEvent += ((sender, e) =>
{
//显示右上角菜单界面
this.ShowTopRightMenu();
});
}
///
/// 显示右上角菜单界面
///
private void ShowTopRightMenu()
{
var frame = new TopRightMenuControl(1, 1);
//定位
string deviceMenu = Language.StringByID(R.MyInternationalizationString.uFixedPosition);
frame.AddRowMenu(deviceMenu, "Item/FixedPosition.png", "Item/FixedPositionSelected.png", () =>
{
//发送定位功能
Common.LocalDevice.Current.SetFixedPositionCommand(deviceObj);
});
}
#endregion
}
}