using System;
using System.Collections.Generic;
using Shared.Common;
using Shared.Phone.Device.CommonForm;
using Shared.Phone.UserCenter;
using Shared.Phone.UserView;
namespace Shared.Phone.Device.Room
{
public class EditRoom : FrameLayout
{
#region ◆ 变量____________________________
///
/// bodyFrameLayout
///
private FrameLayout bodyFrameLayout;
///
/// The room.
///
public Shared.Common.Room room;
///
/// The action.
///
public Action action;
#endregion
public EditRoom()
{
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
}
///
/// Show this instance.
///
public void Show(Shared.Common.Room r)
{
room = r;
AddTop();
AddBodyView();
}
public override void RemoveFromParent()
{
HdlDeviceAttributeLogic.Current.RemoveEvent("TemperatrueDevice");
HdlDeviceAttributeLogic.Current.RemoveEvent("HumidityDevice");
base.RemoveFromParent();
}
#region Add____________________________________
///
/// AddTop
///
public void AddTop()
{
var top = new TopFrameLayout();
AddChidren(top);
top.InitTopview();
top.SetTopTitle(R.MyInternationalizationString.EditRoom);
top.backButton.MouseUpEventHandler += (sender, e) =>
{
RemoveFromParent();
};
}
///
/// AddBodyView
///
public void AddBodyView()
{
bodyFrameLayout = new FrameLayout()
{
Y = Application.GetRealHeight(184),
Height = Application.GetRealHeight(1737),
BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
};
AddChidren(bodyFrameLayout);
var imgFL = new FrameLayout
{
Y=Application.GetRealHeight(60),
Width=Application.GetMinRealAverage(916),
Height = Application.GetMinRealAverage(478),
Gravity=Gravity.CenterHorizontal,
BackgroundImagePath= "Room/Room_Rectangle.png"
};
bodyFrameLayout.AddChidren(imgFL);
var backGround = new Button()
{
Y = Application.GetRealHeight(60),
Width = Application.GetMinRealAverage(887),
Height = Application.GetMinRealAverage(444),
Gravity = Gravity.CenterHorizontal,
Radius = (uint)Application.GetRealHeight(CommonFormResouce.BigFormRadius),
UnSelectedImagePath = room.BackgroundImage
};
bodyFrameLayout.AddChidren(backGround);
var infoFL = new FrameLayout
{
Y = Application.GetRealHeight(562),
Height = Application.GetRealHeight(1175),
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
};
bodyFrameLayout.AddChidren(infoFL);
var infoEdit = new Button
{
X = Application.GetRealWidth(CommonFormResouce.X_Left),
Y=Application.GetRealHeight(80),
Height = Application.GetRealHeight(60),
Width = Application.GetRealWidth(700),
TextID = R.MyInternationalizationString.EditInfo,
TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor,
TextAlignment = TextAlignment.CenterLeft,
TextSize = 15
};
infoFL.AddChidren(infoEdit);
var nameRow = new DeviceInfoEditRow(170);
nameRow.Init();
nameRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.RoomName)} :");
nameRow.SetTitle(room.Name);
infoFL.AddChidren(nameRow);
var floorRow = new DeviceInfoRow(308);
floorRow.Init();
floorRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.BelongFloor)} :");
floorRow.SetTitle(room.FloorName);
infoFL.AddChidren(floorRow);
floorRow.ClickBtn.MouseUpEventHandler += (sender, e) =>
{
if (Config.Instance.Home.FloorDics != null)
{
List floorIds = new List { };
List floorNames = new List { };
foreach (var floor in Config.Instance.Home.FloorDics)
{
floorIds.Add(floor.Key);
floorNames.Add(floor.Value);
}
PickerView.Show(floorNames, (index) =>
{
room.FloorId = floorIds[index];
floorRow.SetTitle(room.FloorName);
}, floorIds.IndexOf(room.FloorId), Language.StringByID(R.MyInternationalizationString.BelongFloor), Language.StringByID(R.MyInternationalizationString.Confrim), Language.StringByID(R.MyInternationalizationString.Cancel));
}
};
var temperatureRow = new DeviceInfoRow(446);
temperatureRow.Init();
temperatureRow.SetTipTitle(R.MyInternationalizationString.Temperature);
temperatureRow.SetTitle("26.8℃");
temperatureRow.NameText.TextAlignment = TextAlignment.CenterRight;
infoFL.AddChidren(temperatureRow);
temperatureRow.ClickBtn.MouseUpEventHandler += (sender, e) =>
{
var tem = new RoomTemperatureSetting { };
HomePage.Instance.AddChidren(tem);
HomePage.Instance.PageIndex += 1;
tem.tempDevice = Common.LocalDevice.Current.GetDevice(room.TemperatrueDevice);
tem.Show(room);
tem.selectDeviceAction = (selectTemp) =>
{
if(selectTemp==null)
{
return;
}
room.TemperatrueDevice =$"{selectTemp.DeviceAddr}{selectTemp.DeviceEpoint}";
HdlDeviceAttributeLogic.Current.RemoveEvent("TemperatrueDevice");
HdlDeviceAttributeLogic.Current.AddAttributeEvent("TemperatrueDevice", "DeviceStatusReport", (Action)((report) =>
{
string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
if (room.TemperatrueDevice != mainKeys)
{
return;
}
//移除掉事件
HdlDeviceAttributeLogic.Current.RemoveEvent("TemperatrueDevice");
foreach (var data in report.DeviceStatusReport.AttriBute)
{
if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
{
if (data.AttriButeData == 0)
{
//0℃
temperatureRow.NameText.Text = "0.0℃";
}
else if (data.AttriButeData > 32767)
{
//负数(特殊处理)
string strValue = (data.AttriButeData - 65536).ToString();
//小数点需要一位
strValue = strValue.Substring(0, strValue.Length - 1);
temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "℃";
}
else
{
//小数点需要一位
string strValue = data.AttriButeData.ToString();
strValue = strValue.Substring(0, strValue.Length - 1);
temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "℃";
}
}
}
}));
//发送获取温度的命令
(selectTemp as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
};
};
if (string.IsNullOrEmpty(room.TemperatrueDevice) == false)
{
HdlDeviceAttributeLogic.Current.RemoveEvent("TemperatrueDevice");
HdlDeviceAttributeLogic.Current.AddAttributeEvent("TemperatrueDevice", "DeviceStatusReport", (Action)((report) =>
{
string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
if (room.TemperatrueDevice != mainKeys)
{
return;
}
//移除掉事件
HdlDeviceAttributeLogic.Current.RemoveEvent("TemperatrueDevice");
foreach (var data in report.DeviceStatusReport.AttriBute)
{
if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
{
if (data.AttriButeData == 0)
{
//0℃
temperatureRow.NameText.Text = "0.0℃";
}
else if (data.AttriButeData > 32767)
{
//负数(特殊处理)
string strValue = (data.AttriButeData - 65536).ToString();
//小数点需要一位
strValue = strValue.Substring(0, strValue.Length - 1);
temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "℃";
}
else
{
//小数点需要一位
string strValue = data.AttriButeData.ToString();
strValue = strValue.Substring(0, strValue.Length - 1);
temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "℃";
}
}
}
}));
//发送获取温度的命令
var dev = Common.LocalDevice.Current.GetDevice(room.TemperatrueDevice);
if (dev != null)
{
(dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
}
}
var humidityRow = new DeviceInfoRow(585);
humidityRow.Init();
humidityRow.SetTipTitle(R.MyInternationalizationString.Humidity);
humidityRow.SetTitle("66.5%");
humidityRow.NameText.TextAlignment = TextAlignment.CenterRight;
infoFL.AddChidren(humidityRow);
humidityRow.ClickBtn.MouseUpEventHandler += (sender, e) =>
{
var tem = new RoomHumiditySetting { };
HomePage.Instance.AddChidren(tem);
HomePage.Instance.PageIndex += 1;
tem.Show(room);
tem.selectDeviceAction = (selectTemp) =>
{
if (selectTemp == null)
{
return;
}
room.HumidityDevice = $"{selectTemp.DeviceAddr}{selectTemp.DeviceEpoint}";
HdlDeviceAttributeLogic.Current.RemoveEvent("HumidityDevice");
HdlDeviceAttributeLogic.Current.AddAttributeEvent("HumidityDevice", "DeviceStatusReport", (report) =>
{
string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
if (room.HumidityDevice != mainKeys)
{
return;
}
//移除掉事件
HdlDeviceAttributeLogic.Current.RemoveEvent("HumidityDevice");
foreach (var data in report.DeviceStatusReport.AttriBute)
{
if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
{
if (data.AttriButeData == 0)
{
//0
humidityRow.NameText.Text = "0.0%";
}
else
{
//小数点需要一位(湿度没有负数)
string strValue = data.AttriButeData.ToString();
strValue = strValue.Substring(0, strValue.Length - 1);
humidityRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
}
}
}
});
//发送获取湿度的命令
(selectTemp as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
};
};
if (string.IsNullOrEmpty(room.HumidityDevice) == false)
{
HdlDeviceAttributeLogic.Current.RemoveEvent("HumidityDevice");
HdlDeviceAttributeLogic.Current.AddAttributeEvent("HumidityDevice", "DeviceStatusReport", (report) =>
{
string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
if (room.HumidityDevice != mainKeys)
{
return;
}
//移除掉事件
HdlDeviceAttributeLogic.Current.RemoveEvent("HumidityDevice");
foreach (var data in report.DeviceStatusReport.AttriBute)
{
if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
{
if (data.AttriButeData == 0)
{
//0
humidityRow.NameText.Text = "0.0%";
}
else
{
//小数点需要一位(湿度没有负数)
string strValue = data.AttriButeData.ToString();
strValue = strValue.Substring(0, strValue.Length - 1);
humidityRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
}
}
}
});
//发送获取湿度的命令
var dev = Common.LocalDevice.Current.GetDevice(room.HumidityDevice);
if (dev != null)
{
(dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
}
}
var shareRow = new DeviceInfoRow(723);
shareRow.Init();
shareRow.SetTipTitle(R.MyInternationalizationString.Share);
shareRow.SetTitle("2 人");
shareRow.NameText.TextAlignment = TextAlignment.CenterRight;
infoFL.AddChidren(shareRow);
shareRow.NextBtn.MouseUpEventHandler += (sender, e) =>
{
var tem = new RoomShareSetting { };
HomePage.Instance.AddChidren(tem);
HomePage.Instance.PageIndex += 1;
tem.Show(room);
tem.action = (selectTemp) =>
{
};
};
var confirm = new Device.CommonForm.CompleteButton(1700, 700, 127);
confirm.SetTitle(R.MyInternationalizationString.Confrim);
AddChidren(confirm);
confirm.MouseUpEventHandler += (sender, e) =>
{
room.Name = nameRow.NameText.Text.Trim();
room.Save();
RemoveFromParent();
};
}
#endregion
}
}