using System;
using System.Collections.Generic;
using Shared.Common;
using Shared.Phone.UserCenter.Device.Bind;
using ZigBee.Common;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DevicePanel
{
///
/// 面板的按键配置界面【该类暂时舍弃】
///
public class PanelSimpleEnvironmentButtonSettionForm : 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 bindAcName = string.Empty;
///
/// 被绑目标是新风
///
private CommonDevice bindFreshAirDev;
///
/// 被绑目标是温度
///
private CommonDevice bindTemperatureDev;
///
/// 被绑目标是湿度
///
private CommonDevice bindHumidityDev;
///
/// 被绑目标是空调
///
private CommonDevice bindAcDev;
//
/// 按键中被绑定的目标列表
///
public List bindList = new List();
#endregion
#region ■ 初始化_____________________________
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
/// 设备的某一回路
public void ShowForm(CommonDevice i_device)
{
this.deviceObj = i_device;
//获取数据
InitInfo(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/ButtonPanelSimpleEnvironment.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();
//Ac来源
this.AddAcRow();
//添加新风目标
this.AddFreshAirRow();
//添加温度来源
this.AddTemperatureSensorRow();
//添加湿度来源
this.AddHumiditySourceRow();
//亮度调节
this.AddLevelRow();
}
#endregion
#region ■ 数据处理_________________________
///
/// 初始化数据
///
void InitInfo(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) + "(" + "5007" + ")", Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
}
}
catch (Exception ex)
{
var mess = ex.Message;
}
finally
{
Application.RunOnMainThread(() =>
{
this.InitMenuRow();
CommonPage.Loading.Hide();
});
}
});
}
///
/// 获取绑定目标
///
///
///
private async System.Threading.Tasks.Task GetBindName(CommonDevice curDev)
{
bool result = false;
//获取面板中存在的绑定目标
var curControlDev = new CommonDevice();
curControlDev.DeviceAddr = curDev.DeviceAddr;
curControlDev.CurrentGateWayId = curDev.CurrentGateWayId;
curControlDev.Type = curDev.Type;
int count = 0;
for (int i = 1; i < 3; i++)
{
curControlDev.DeviceEpoint = i;
var panelBindListRes = HdlDeviceBindLogic.Current.GetDeviceBindAsync(curControlDev);
if (panelBindListRes != null && panelBindListRes.getAllBindResponseData != null)
{
bindList = panelBindListRes.getAllBindResponseData.BindList;
foreach (var bDev in bindList)
{
var device = HdlDeviceCommonLogic.Current.GetDevice(bDev.BindMacAddr, bDev.BindEpoint);
if (device == null)
{
continue;
}
if (device.Type == DeviceType.FreshAir)
{
//获取设备类型的
var deviceEnumInfo = HdlDeviceCommonLogic.Current.GetMyDeviceEnumInfo(new List() { device });
//新风面板的新风设备,则不显示
if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir)
{
continue;
}
bindFreshAirName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device);
bindFreshAirDev = device;
}
else if (device.Type == DeviceType.TemperatureSensor)
{
var bD = device as TemperatureSensor;
if (bD.SensorDiv == 1)
{
bindTemperatureName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device);
bindTemperatureDev = device;
}
if (bD.SensorDiv == 2)
{
bindHumidityName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device);
bindHumidityDev = device;
}
}
else if (device.Type == DeviceType.FreshAirHumiditySensor)
{
bindHumidityName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device);
bindHumidityDev = device;
}
else if (device.Type == DeviceType.Thermostat)
{
bindAcName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device);
bindAcDev = device;
}
else if (device.Type == DeviceType.PMSensor)
{
if (bDev.BindCluster == 1026)
{
bindTemperatureName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.TemperatureSensor);
bindTemperatureDev = device;
}
if (bDev.BindCluster == 1029)
{
bindHumidityName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.HumiditySensor);
bindHumidityDev = device;
}
}
}
count++;
if (count == 2)
{
result = true;
}
}
}
return result;
}
#endregion
#region ■ Ac来源_________________________
///
/// Ac来源行
///
private void AddAcRow()
{
//Ac
var rowAc = new FrameRowControl(listview.rowSpace / 2);
listview.AddChidren(rowAc);
rowAc.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.AcTargets), 600);
//底线
rowAc.AddBottomLine();
//右箭头
rowAc.AddRightArrow();
var msg = Language.StringByID(R.MyInternationalizationString.nothing);
if (!string.IsNullOrEmpty(bindAcName))
{
msg = bindAcName;
}
var btnAcStatu = rowAc.AddMostRightView(msg, 700);
rowAc.ButtonClickEvent += (sender, e) =>
{
this.deviceObj.DeviceEpoint = 1;
var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindAcDev, DeviceBind.BindInfo.BindType.AC);
Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
paneTargetsBaseFormp.Show();
paneTargetsBaseFormp.actionAcTarget += (bindName) =>
{
Application.RunOnMainThread(() =>
{
if (string.IsNullOrEmpty(bindName))
{
btnAcStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
}
else
{
btnAcStatu.Text = bindName;
}
});
};
};
}
#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) =>
{
this.deviceObj.DeviceEpoint = 2;
var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindAcDev, DeviceBind.BindInfo.BindType.FreshAir);
Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
paneTargetsBaseFormp.Show();
paneTargetsBaseFormp.actionFreshAirTarget += (bindName) =>
{
Application.RunOnMainThread(() =>
{
if (string.IsNullOrEmpty(bindName))
{
btnNewWindStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
}
else
{
btnNewWindStatu.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) =>
{
this.deviceObj.DeviceEpoint = 1;
var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindAcDev, DeviceBind.BindInfo.BindType.Temperature);
Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
paneTargetsBaseFormp.Show();
paneTargetsBaseFormp.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) =>
{
this.deviceObj.DeviceEpoint = 1;
var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindAcDev, DeviceBind.BindInfo.BindType.Humidity);
Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
paneTargetsBaseFormp.Show();
paneTargetsBaseFormp.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) =>
{
var form = new PanelBrightnessAdjustForm();
form.AddForm(this.deviceObj);
};
}
#endregion
#region ■ 右上角菜单_________________________
///
/// 初始化右上角菜单
///
private void InitTopRightMenu()
{
//检测此回路是否拥有定位功能
if (HdlDeviceCommonLogic.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", () =>
{
//发送定位功能
HdlDeviceCommonLogic.Current.SetFixedPositionCommand(deviceObj);
});
}
#endregion
}
}