using System;
|
using System.Collections.Generic;
|
using System.Globalization;
|
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 ◆ 变量____________________________
|
/// <summary>
|
/// bodyFrameLayout
|
/// </summary>
|
private FrameLayout bodyFrameLayout;
|
|
/// <summary>
|
/// The room.
|
/// </summary>
|
public Shared.Common.Room room;
|
|
/// <summary>
|
/// The action.
|
/// </summary>
|
public Action action;
|
|
/// <summary>
|
/// backGround
|
/// </summary>
|
private Button backGround;
|
/// <summary>
|
/// IconPathType
|
/// </summary>
|
public int IconPathType;
|
/// <summary>
|
/// OldBackgroundImagePath
|
/// </summary>
|
private string OldBackgroundImagePath;
|
|
/// <summary>
|
/// OldIconPathType
|
/// </summary>
|
public int OldIconPathType;
|
|
|
#endregion
|
|
public EditRoom()
|
{
|
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
|
}
|
|
/// <summary>
|
/// Show this instance.
|
/// </summary>
|
public void Show(Shared.Common.Room r)
|
{
|
room = r;
|
IconPathType = r.BackgroundImageType;
|
OldIconPathType= r.BackgroundImageType;
|
if (IconPathType != 1)
|
{
|
OldBackgroundImagePath = r.BackgroundImage;
|
}
|
AddTop();
|
|
AddBodyView();
|
|
}
|
|
public override void RemoveFromParent()
|
{
|
HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
|
HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
|
|
CommonPage.Instance.IsDrawerLockMode = false;
|
base.RemoveFromParent();
|
}
|
|
#region Add____________________________________
|
|
/// <summary>
|
/// AddTop
|
/// </summary>
|
public void AddTop()
|
{
|
var top = new TopFrameLayout();
|
AddChidren(top);
|
top.InitTopview();
|
top.SetTopTitle(R.MyInternationalizationString.EditRoom);
|
top.backButton.MouseUpEventHandler += (sender, e) =>
|
{
|
RemoveFromParent();
|
};
|
}
|
|
/// <summary>
|
/// AddBodyView
|
/// </summary>
|
public void AddBodyView()
|
{
|
bodyFrameLayout = new FrameLayout()
|
{
|
Y = Application.GetRealHeight(184),
|
Height = Application.GetRealHeight(1737),
|
BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
|
};
|
AddChidren(bodyFrameLayout);
|
|
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);
|
backGround.SetViewShadow(true);
|
backGround.MouseUpEventHandler += backGroundIMGHander;
|
|
var infoFL = new FrameLayout
|
{
|
Y = Application.GetRealHeight(562),
|
Height = Application.GetRealHeight(1175),
|
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
|
};
|
bodyFrameLayout.AddChidren(infoFL);
|
var rectCornerID = HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight;
|
infoFL.SetCornerWithSameRadius(Application.GetRealHeight(50), rectCornerID);
|
|
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)} :");
|
infoFL.AddChidren(floorRow);
|
if (!room.IsLove)
|
{
|
floorRow.SetTitle(room.FloorName);
|
floorRow.ClickBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
if (Config.Instance.Home.FloorDics != null)
|
{
|
List<string> floorIds = new List<string> { };
|
List<string> floorNames = new List<string> { };
|
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.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}";
|
|
HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
|
HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A设备属性上报, ((report) =>
|
{
|
string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
|
if (room.TemperatrueDevice != mainKeys)
|
{
|
return;
|
}
|
//移除掉事件
|
HdlGatewayReceiveLogic.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)
|
{
|
HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
|
HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A设备属性上报, (Action<ZigBee.Device.CommonDevice>)((report) =>
|
{
|
string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
|
if (room.TemperatrueDevice != mainKeys)
|
{
|
return;
|
}
|
//移除掉事件
|
HdlGatewayReceiveLogic.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.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.tempDevice = Common.LocalDevice.Current.GetDevice(room.HumidityDevice);
|
tem.Show(room);
|
tem.selectDeviceAction = (selectTemp) =>
|
{
|
if (selectTemp == null)
|
{
|
return;
|
}
|
room.HumidityDevice = $"{selectTemp.DeviceAddr}{selectTemp.DeviceEpoint}";
|
|
HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
|
HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice", ReceiveComandDiv.A设备属性上报, (report) =>
|
{
|
string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
|
if (room.HumidityDevice != mainKeys)
|
{
|
return;
|
}
|
//移除掉事件
|
HdlGatewayReceiveLogic.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)
|
{
|
HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
|
HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice", ReceiveComandDiv.A设备属性上报, (report) =>
|
{
|
string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
|
if (room.HumidityDevice != mainKeys)
|
{
|
return;
|
}
|
//移除掉事件
|
HdlGatewayReceiveLogic.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 confirm = new Device.CommonForm.CompleteButton(1700, 700, 127);
|
confirm.SetTitle(R.MyInternationalizationString.Confrim);
|
AddChidren(confirm);
|
confirm.MouseUpEventHandler += (sender, e) =>
|
{
|
var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo);
|
var fileName = $"RoomIcon_{tradeTime}.png";
|
room.Name = nameRow.NameText.Text.Trim();
|
if (OldIconPathType != 1)
|
{
|
Shared.IO.FileUtils.DeleteFile(OldBackgroundImagePath);
|
}
|
if (IconPathType == 0)
|
{
|
room.BackgroundImage = backGround.UnSelectedImagePath;
|
}
|
else
|
{
|
Shared.IO.FileUtils.WriteFileByBytes(System.IO.Path.Combine(Config.Instance.FullPath, fileName), backGround.ImageBytes);
|
room.BackgroundImage = System.IO.Path.Combine(Config.Instance.FullPath, fileName);
|
}
|
room.BackgroundImageType = IconPathType;
|
room.Save();
|
action?.Invoke();
|
RemoveFromParent();
|
};
|
|
}
|
|
/// <summary>
|
/// 选择背景图
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void backGroundIMGHander(object sender, MouseEventArgs e)
|
{
|
if (room != null && room.IsSharedRoom)
|
{
|
RoomCommon.ShowTipRoomIsShared();
|
return;
|
}
|
|
int selectRow_Height = 150;
|
int selectRow_Width = 1034;
|
var selectFL = new FrameLayout()
|
{
|
BackgroundColor = ZigbeeColor.Current.GXCDailogBackGroundColor
|
};
|
AddChidren(selectFL);
|
|
var itemFL = new FrameLayout()
|
{
|
Y = Application.GetRealHeight(1276),
|
Height = Application.GetRealHeight(450),
|
Width = Application.GetRealWidth(selectRow_Width),
|
Gravity = Gravity.CenterHorizontal,
|
Radius = (uint)Application.GetRealHeight(17),
|
BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor
|
};
|
selectFL.AddChidren(itemFL);
|
itemFL.Animate = Animate.DownToUp;
|
|
var selectLocalPicture = new Button()
|
{
|
Height = Application.GetRealHeight(selectRow_Height) - 1,
|
TextID = R.MyInternationalizationString.LocalPicture,
|
TextColor = ZigbeeColor.Current.GXCTextSelectedColor4
|
};
|
itemFL.AddChidren(selectLocalPicture);
|
var selectLocalLine = new Button()
|
{
|
Y = selectLocalPicture.Bottom,
|
Height = 1,
|
BackgroundColor = ZigbeeColor.Current.GXCLineColor
|
};
|
itemFL.AddChidren(selectLocalLine);
|
|
var selectPhotographBtn = new Button()
|
{
|
Y = selectLocalLine.Bottom,
|
Height = Application.GetRealHeight(selectRow_Height) - 1,
|
TextID = R.MyInternationalizationString.Photograph,
|
TextColor = ZigbeeColor.Current.GXCTextSelectedColor4
|
};
|
itemFL.AddChidren(selectPhotographBtn);
|
var selectPhotographLine = new Button()
|
{
|
Y = selectPhotographBtn.Bottom,
|
Height = 1,
|
BackgroundColor = ZigbeeColor.Current.GXCLineColor,
|
};
|
itemFL.AddChidren(selectPhotographLine);
|
|
var selectAblumsBtn = new Button()
|
{
|
Y = selectPhotographLine.Bottom,
|
Height = Application.GetRealHeight(selectRow_Height) - 1,
|
TextID = R.MyInternationalizationString.MyAblums,
|
TextColor = ZigbeeColor.Current.GXCTextSelectedColor4
|
};
|
itemFL.AddChidren(selectAblumsBtn);
|
|
var cancelBtn = new Button()
|
{
|
Y = Application.GetRealHeight(1742),
|
Height = Application.GetRealHeight(selectRow_Height),
|
Width = Application.GetRealWidth(selectRow_Width),
|
Gravity = Gravity.CenterHorizontal,
|
TextID = R.MyInternationalizationString.Cancel,
|
TextColor = ZigbeeColor.Current.GXCTextSelectedColor4,
|
BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor,
|
Radius = (uint)Application.GetRealHeight(17)
|
};
|
selectFL.AddChidren(cancelBtn);
|
|
selectLocalPicture.MouseUpEventHandler += (send, ee) =>
|
{
|
selectFL.RemoveFromParent();
|
var localPic = new AddRoomSelectPicByLocal();
|
Shared.Phone.UserView.HomePage.Instance.AddChidren(localPic);
|
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
|
localPic.Show();
|
localPic.action = (imgPath) =>
|
{
|
IconPathType = 0;
|
backGround.ImageBytes = null;
|
backGround.UnSelectedImagePath = imgPath;
|
};
|
};
|
selectPhotographBtn.MouseUpEventHandler += (send, ee) =>
|
{
|
selectFL.RemoveFromParent();
|
var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo);
|
var fileName = $"RoomIcon_{tradeTime}.png";
|
//通过相机拍照裁剪
|
CropImage.TakePicture((imagePath) =>
|
{
|
if (IconPathType != 0)
|
{
|
Global.DeleteFilebyHomeId(backGround.UnSelectedImagePath);
|
}
|
|
IconPathType = 1;
|
backGround.ImageBytes = Shared.IO.FileUtils.ReadFile(imagePath);
|
backGround.UnSelectedImagePath = imagePath;
|
System.IO.File.Delete(imagePath);
|
|
}, fileName, 2, 1);
|
};
|
|
selectAblumsBtn.MouseUpEventHandler += (send, ee) =>
|
{
|
selectFL.RemoveFromParent();
|
var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo);
|
var fileName = $"RoomIcon_{tradeTime}.png";
|
//从相册选择图片裁剪
|
CropImage.SelectPicture((imagePath) =>
|
{
|
if (IconPathType != 0)
|
{
|
Global.DeleteFilebyHomeId(backGround.UnSelectedImagePath);
|
}
|
|
IconPathType = 2;
|
backGround.ImageBytes = Shared.IO.FileUtils.ReadFile(imagePath);
|
backGround.UnSelectedImagePath = imagePath;
|
System.IO.File.Delete(imagePath);
|
|
}, fileName, 2, 1);
|
};
|
|
cancelBtn.MouseUpEventHandler += (send, ee) =>
|
{
|
selectFL.RemoveFromParent();
|
};
|
selectFL.MouseUpEventHandler += (send, ee) =>
|
{
|
selectFL.RemoveFromParent();
|
};
|
}
|
|
#endregion
|
|
}
|
}
|