using System;
|
using System.Collections.Generic;
|
using System.Text;
|
|
namespace Shared.Phone.UserCenter.Residence
|
{
|
/// <summary>
|
/// 编辑房间信息的界面
|
/// </summary>
|
public class EditorRoomInforForm : EditorCommonForm
|
{
|
#region ■ 变量声明___________________________
|
|
/// <summary>
|
/// 结束编辑的事件
|
/// </summary>
|
public Action<string> FinishEditorEvent = null;
|
/// <summary>
|
/// 列表控件
|
/// </summary>
|
private FrameListControl listview = null;
|
/// <summary>
|
/// 房间对象
|
/// </summary>
|
private Common.Room editorRoom = null;
|
/// <summary>
|
/// 克隆对象
|
/// </summary>
|
private Common.Room cloneRoom = null;
|
/// <summary>
|
/// 改变房间图片
|
/// </summary>
|
private bool changedRoomPic = false;
|
|
#endregion
|
|
#region ■ 初始化_____________________________
|
|
/// <summary>
|
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
|
/// </summary>
|
/// <param name="i_editorRoom">编辑的房间对象</param>
|
public void ShowForm(Common.Room i_editorRoom = null)
|
{
|
//弄一点初始值
|
this.editorRoom = i_editorRoom;
|
this.cloneRoom = HdlRoomLogic.Current.CloneRoomClass(i_editorRoom);
|
|
//设置头部信息
|
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uEditorRoom));
|
|
//初始化中部信息
|
this.InitMiddleFrame();
|
}
|
|
/// <summary>
|
/// 初始化中部信息
|
/// </summary>
|
private void InitMiddleFrame()
|
{
|
//清空bodyFrame
|
this.ClearBodyFrame();
|
|
var listBackControl = new VerticalFrameControl();
|
listBackControl.Height = bodyFrameLayout.Height;
|
bodyFrameLayout.AddChidren(listBackControl);
|
|
//加一个白色背景
|
var frameBack1 = new FrameLayout();
|
frameBack1.Height = Application.GetRealHeight(750);
|
frameBack1.Y = Application.GetRealHeight(196);
|
frameBack1.BackgroundColor = UserCenterColor.Current.White;
|
frameBack1.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
|
listBackControl.frameTable.AddChidren(frameBack1);
|
|
//房间图片底部阴影
|
var btnShadow = new PicViewControl(853, 593);
|
btnShadow.Y = Application.GetRealHeight(58);
|
btnShadow.Gravity = Gravity.CenterHorizontal;
|
btnShadow.UnSelectedImagePath = "Room/RoomShadow.png";
|
listBackControl.frameTable.AddChidren(btnShadow);
|
//房间图片
|
var btnPic = new ImageView();
|
btnPic.Y = Application.GetRealHeight(60);
|
btnPic.Width = this.GetPictrueRealSize(824);
|
btnPic.Height = this.GetPictrueRealSize(549);
|
btnPic.Radius = (uint)Application.GetRealHeight(17);
|
btnPic.Gravity = Gravity.CenterHorizontal;
|
if (this.editorRoom.BackgroundImageType == 0)
|
{
|
btnPic.ImagePath = this.editorRoom.BackgroundImage;
|
}
|
else
|
{
|
btnPic.ImageBytes = Common.Global.ReadFileByHomeId(this.editorRoom.BackgroundImage);
|
}
|
listBackControl.frameTable.AddChidren(btnPic);
|
//图片遮罩
|
var btnZhezhao = new FrameLayout();
|
btnZhezhao.Width = btnPic.Width;
|
btnZhezhao.Height = btnPic.Height;
|
btnZhezhao.Y = btnPic.Y;
|
btnZhezhao.Gravity = Gravity.CenterHorizontal;
|
btnZhezhao.BackgroundColor = UserCenterColor.Current.PictrueZhezhaoColor;
|
btnZhezhao.Radius = (uint)Application.GetRealHeight(17);
|
listBackControl.frameTable.AddChidren(btnZhezhao);
|
//分享的房间不能编辑
|
if (this.editorRoom.IsSharedRoom == false && Common.Config.Instance.Home.IsShowTemplate == false)
|
{
|
btnZhezhao.MouseUpEventHandler += (sender, e) =>
|
{
|
//房间图片选择
|
this.RoomPictrueSelect(btnPic);
|
};
|
}
|
|
//初始化信息桌布
|
var tableContr = new InformationEditorControl();
|
this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uInfoEditor), bodyFrameLayout.Height - btnShadow.Bottom, false);
|
|
//添加全部菜单
|
this.AddAllMenuRow(tableContr, btnPic);
|
}
|
|
#endregion
|
|
#region ■ 添加菜单___________________________
|
|
/// <summary>
|
/// 添加全部菜单
|
/// </summary>
|
private void AddAllMenuRow(InformationEditorControl tableContr, ImageView btnPic)
|
{
|
//【房间名称】
|
FrameCaptionInputControl txtRoomName = null;
|
if (this.editorRoom.IsLove == false)
|
{
|
txtRoomName = new FrameCaptionInputControl(Language.StringByID(R.MyInternationalizationString.uRoomName), this.cloneRoom.Name, this.listview.rowSpace / 2);
|
txtRoomName.txtInput.PlaceholderText = Language.StringByID(R.MyInternationalizationString.uPleaseInputRoomName);
|
txtRoomName.txtInput.MaxByte = 48;//限制只能输入48个字节
|
listview.AddChidren(txtRoomName);
|
txtRoomName.InitControl();
|
//底线
|
txtRoomName.AddBottomLine();
|
}
|
else
|
{
|
//我的喜爱不能编辑名字
|
var rowRoomName = new FrameCaptionViewControl(Language.StringByID(R.MyInternationalizationString.uRoomName), this.cloneRoom.Name, this.listview.rowSpace / 2);
|
listview.AddChidren(rowRoomName);
|
rowRoomName.UseClickStatu = false;
|
rowRoomName.InitControl();
|
//底线
|
rowRoomName.AddBottomLine();
|
}
|
|
//该APP为有楼层的模式才开启这个菜单
|
if (this.editorRoom.IsLove == false && string.IsNullOrEmpty(this.cloneRoom.FloorId) == false)
|
{
|
//【所属楼层】
|
var btnBelone = new FrameCaptionViewControl(Language.StringByID(R.MyInternationalizationString.uBelongeFloor), Common.Config.Instance.Home.FloorDics[this.cloneRoom.FloorId], this.listview.rowSpace / 2);
|
listview.AddChidren(btnBelone);
|
btnBelone.InitControl();
|
//底线
|
btnBelone.AddBottomLine();
|
//分享的房间不能修改
|
if (this.editorRoom.IsSharedRoom == false && Common.Config.Instance.Home.IsShowTemplate == false)
|
{
|
//右箭头
|
btnBelone.AddRightArrow();
|
btnBelone.ButtonClickEvent += (sender, e) =>
|
{
|
//楼层选择
|
this.ShowSelectFloor(btnBelone);
|
};
|
}
|
}
|
|
//【温度】
|
var rowTemperature = new FrameRowControl(this.listview.rowSpace / 2);
|
listview.AddChidren(rowTemperature);
|
rowTemperature.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uTemperature), 600);
|
//右箭头
|
rowTemperature.AddRightArrow();
|
var btnTemper = rowTemperature.AddMostRightView(Language.StringByID(R.MyInternationalizationString.uNothing), 300);
|
//底线
|
rowTemperature.AddBottomLine();
|
//分享的房间不能修改 或者当前住宅不是虚拟的
|
if (this.editorRoom.IsSharedRoom == false && Common.Config.Instance.Home.IsVirtually == false
|
&& Common.Config.Instance.Home.IsShowTemplate == false)
|
{
|
rowTemperature.ButtonClickEvent += (sender, e) =>
|
{
|
//显示温度传感器列表
|
this.ShowTemperatrueDevice(btnTemper);
|
};
|
}
|
if (string.IsNullOrEmpty(cloneRoom.TemperatrueDevice) == false
|
&& Common.Config.Instance.Home.IsShowTemplate == false)
|
{
|
//获取温度
|
this.GetTemperatrueValue(btnTemper, cloneRoom.TemperatrueDevice);
|
}
|
|
//【湿度】
|
var rowHumidity = new FrameRowControl(this.listview.rowSpace / 2);
|
listview.AddChidren(rowHumidity);
|
rowHumidity.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uHumidity), 600);
|
//右箭头
|
rowHumidity.AddRightArrow();
|
var btnHumi = rowHumidity.AddMostRightView(Language.StringByID(R.MyInternationalizationString.uNothing), 300);
|
//底线
|
rowHumidity.AddBottomLine();
|
//分享的房间不能修改 或者当前住宅不是虚拟的
|
if (this.editorRoom.IsSharedRoom == false && Common.Config.Instance.Home.IsVirtually == false
|
&& Common.Config.Instance.Home.IsShowTemplate == false)
|
{
|
rowHumidity.ButtonClickEvent += (sender, e) =>
|
{
|
//显示湿度传感器列表
|
this.ShowHumidityDevice(btnHumi);
|
};
|
}
|
if (string.IsNullOrEmpty(cloneRoom.HumidityDevice) == false
|
&& Common.Config.Instance.Home.IsShowTemplate == false)
|
{
|
//获取湿度
|
this.GetHumidityValue(btnHumi, cloneRoom.HumidityDevice);
|
}
|
|
//初始化桌布完成
|
tableContr.FinishInitControl();
|
tableContr = null;
|
|
//分享的房间不能保存
|
if (this.editorRoom.IsSharedRoom == true|| Common.Config.Instance.Home.IsShowTemplate == true)
|
{
|
return;
|
}
|
|
//保存
|
var btnFinish = new BottomClickButton();
|
btnFinish.TextID = R.MyInternationalizationString.uSave;
|
bodyFrameLayout.AddChidren(btnFinish);
|
btnFinish.ButtonClickEvent += (sender, e) =>
|
{
|
if (txtRoomName != null)
|
{
|
this.cloneRoom.Name = txtRoomName.Text;
|
}
|
//检测能否保存房间
|
if (this.CheckCanSaveRoom() == false)
|
{
|
return;
|
}
|
//更改图片
|
if (this.changedRoomPic == true)
|
{
|
if (editorRoom.BackgroundImageType == 1 || editorRoom.BackgroundImageType == 2)
|
{
|
//删除掉原来的自定义图片
|
if (Common.Global.IsExistsByHomeId(editorRoom.BackgroundImage) == true)
|
{
|
Common.Global.DeleteFilebyHomeId(editorRoom.BackgroundImage);
|
}
|
//备份
|
HdlBackupLogic.Current.DeleteAutoBackFileStatu(editorRoom.BackgroundImage);
|
}
|
//自定义图片
|
if (cloneRoom.BackgroundImageType == 1 || cloneRoom.BackgroundImageType == 2)
|
{
|
//生成图片
|
string picName = $"RoomIcon_{DateTime.Now.ToString("yyyyMMddHHmmss")}.png";
|
string picFullName = System.IO.Path.Combine(Common.Config.Instance.FullPath, picName);
|
Shared.IO.FileUtils.WriteFileByBytes(picFullName, btnPic.ImageBytes);
|
cloneRoom.BackgroundImage = picName;
|
//备份
|
HdlBackupLogic.Current.AddOrEditorAutoBackFileStatu(picName);
|
}
|
}
|
|
bool changedFloor = editorRoom.FloorId != cloneRoom.FloorId;
|
editorRoom.FloorId = cloneRoom.FloorId;
|
editorRoom.Name = cloneRoom.Name;
|
editorRoom.HumidityDevice = cloneRoom.HumidityDevice;
|
editorRoom.TemperatrueDevice = cloneRoom.TemperatrueDevice;
|
editorRoom.BackgroundImage = cloneRoom.BackgroundImage;
|
editorRoom.BackgroundImageType = cloneRoom.BackgroundImageType;
|
editorRoom.Save();
|
|
FinishEditorEvent?.Invoke(this.editorRoom.Name);
|
if (changedFloor == false)
|
{
|
//刷新左滑的房间列表界面的指定房间的信息
|
MainPage.LeftListRoomViewFrom.Instance.RefreshRoomInfo(this.editorRoom);
|
}
|
else
|
{
|
//刷新左滑的房间列表界面的房间列表信息
|
MainPage.LeftListRoomViewFrom.Instance.RefreshListRoom();
|
}
|
|
//算了,这里如果按下保存,则主页需要重新刷新
|
UserView.UserPage.Instance.RefreshAllForm = true;
|
|
this.CloseForm();
|
};
|
}
|
|
#endregion
|
|
#region ■ 楼层选择___________________________
|
|
/// <summary>
|
/// 楼层选择
|
/// </summary>
|
/// <param name="control"></param>
|
private void ShowSelectFloor(FrameCaptionViewControl control)
|
{
|
var dicFloor = HdlRoomLogic.Current.GetFloorSortList();
|
|
var listKeys = new List<string>();
|
var listName = new List<string>();
|
int index = 0;
|
foreach (string keys in dicFloor.Keys)
|
{
|
listKeys.Add(keys);
|
listName.Add(dicFloor[keys]);
|
if (keys == cloneRoom.FloorId)
|
{
|
index = listKeys.Count - 1;
|
}
|
}
|
PickerView.Show(listName, (value) =>
|
{
|
control.txtView.Text = listName[value];
|
//主键修改
|
cloneRoom.FloorId = listKeys[value];
|
},
|
index,
|
Language.StringByID(R.MyInternationalizationString.uBelongeFloor),
|
Language.StringByID(R.MyInternationalizationString.uFinish),
|
Language.StringByID(R.MyInternationalizationString.uCancel));
|
}
|
|
#endregion
|
|
#region ■ 温度传感器相关_____________________
|
|
/// <summary>
|
/// 显示温度传感器列表
|
/// </summary>
|
/// <param name="btnTemper"></param>
|
private void ShowTemperatrueDevice(NormalViewControl btnTemper)
|
{
|
var listDevice = new List<ZigBee.Device.CommonDevice>();
|
foreach (var device in HdlDeviceCommonLogic.Current.listAllDevice)
|
{
|
//获取温度传感器
|
if (device is ZigBee.Device.TemperatureSensor && ((ZigBee.Device.TemperatureSensor)device).SensorDiv == 1)
|
{
|
listDevice.Add(device);
|
}
|
//PM2.5是温度和湿度合在同一个端点
|
else if (device.Type == ZigBee.Device.DeviceType.PMSensor)
|
{
|
listDevice.Add(device);
|
}
|
}
|
var listSelect = new List<string>() { cloneRoom.TemperatrueDevice };
|
var form = new SelectDeviceForm();
|
form.AddForm(listDevice, listSelect, true, true);
|
form.ActionSelectDevice += (list) =>
|
{
|
if (list.Count == 0)
|
{
|
cloneRoom.TemperatrueDevice = string.Empty;
|
btnTemper.Text = Language.StringByID(R.MyInternationalizationString.uNothing);
|
return;
|
}
|
cloneRoom.TemperatrueDevice = HdlDeviceCommonLogic.Current.GetDeviceMainKeys(list[0]);
|
//获取温度值
|
this.GetTemperatrueValue(btnTemper, cloneRoom.TemperatrueDevice);
|
};
|
}
|
|
/// <summary>
|
/// 获取温度值
|
/// </summary>
|
/// <param name="btnHumi"></param>
|
/// <param name="deviceKey"></param>
|
private void GetTemperatrueValue(NormalViewControl btnTemper, string deviceKey)
|
{
|
var device = HdlDeviceCommonLogic.Current.GetDevice(deviceKey);
|
if (device == null)
|
{
|
return;
|
}
|
//获取中
|
btnTemper.Text = Language.StringByID(R.MyInternationalizationString.Getting);
|
|
bool receiveData = false;
|
HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
|
HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A设备属性上报, ((report) =>
|
{
|
string mainKeys = HdlDeviceCommonLogic.Current.GetDeviceMainKeys(report);
|
if (cloneRoom.TemperatrueDevice != mainKeys || btnTemper == null
|
|| report.DeviceStatusReport.CluterID != 1026)
|
{
|
return;
|
}
|
receiveData = true;
|
var localDevice = HdlDeviceCommonLogic.Current.GetDevice(mainKeys);
|
HdlThreadLogic.Current.RunMain(() =>
|
{
|
decimal temperatrue = (decimal)device.GetType().InvokeMember("currentTemperature", System.Reflection.BindingFlags.GetField, null, device, null);
|
if (temperatrue == 0)
|
{
|
//0
|
btnTemper.Text = "0.0℃";
|
}
|
else
|
{
|
btnTemper.Text = temperatrue + "℃";
|
}
|
|
}, ShowErrorMode.NO);
|
}));
|
//发送获取温度的命令
|
device.ReadAttri(ZigBee.Device.Cluster_ID.TemperatureMeasurement, ZigBee.Device.AttriButeId.MeasuredValue);
|
|
HdlThreadLogic.Current.RunThread(() =>
|
{
|
//去获取设备列表的信息
|
System.Threading.Thread.Sleep(1500);
|
var result = HdlDeviceCommonLogic.Current.ReadDeviceEpointDeviceInfo(device);
|
if (result != null)
|
{
|
device.AttributeStatus.Clear();
|
device.AttributeStatus.AddRange(result.AttributeStatus);
|
device.ReSave();
|
}
|
if (receiveData == true)
|
{
|
//已经读取到数据
|
return;
|
}
|
|
foreach (var data in device.AttributeStatus)
|
{
|
if (data.ClusterId == 1026
|
&& data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
|
{
|
//处理网关返回的温度值
|
decimal temperatrue = 0;
|
this.AdjustTemperatrueValue(data.AttributeData, ref temperatrue);
|
|
device.GetType().InvokeMember("currentTemperature", System.Reflection.BindingFlags.SetField, null, device, new object[] { temperatrue });
|
device.ReSave();
|
|
//制作虚假的属性上报
|
var report = new ZigBee.Device.CommonDevice { DeviceAddr = device.DeviceAddr, DeviceEpoint = device.DeviceEpoint };
|
report.DeviceStatusReport.CluterID = 1026;
|
HdlGatewayReceiveLogic.Current.DeviceReportPush(report, ReceiveComandDiv.A设备属性上报);
|
|
HdlThreadLogic.Current.RunMain(() =>
|
{
|
btnTemper.Text = temperatrue == 0 ? "0.0℃" : temperatrue.ToString() + "℃";
|
});
|
break;
|
}
|
}
|
});
|
}
|
|
/// <summary>
|
/// 处理网关返回的温度值
|
/// </summary>
|
/// <param name="value">网关返回的属性值</param>
|
/// <param name="temperatrue">转换成的温度值</param>
|
private void AdjustTemperatrueValue(int value, ref decimal temperatrue)
|
{
|
if (value == 0)
|
{
|
//0℃
|
temperatrue = 0;
|
}
|
else if (value > 32767)
|
{
|
//负数(特殊处理)
|
string strValue = (value - 65536).ToString();
|
//小数点需要一位
|
strValue = strValue.Substring(0, strValue.Length - 1);
|
//记录温度
|
temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
|
}
|
else
|
{
|
//小数点需要一位
|
string strValue = value.ToString();
|
strValue = strValue.Substring(0, strValue.Length - 1);
|
//记录温度
|
temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
|
}
|
}
|
|
#endregion
|
|
#region ■ 湿度传感器相关_____________________
|
|
/// <summary>
|
/// 显示湿度传感器列表
|
/// </summary>
|
/// <param name="btnHumi"></param>
|
private void ShowHumidityDevice(NormalViewControl btnHumi)
|
{
|
var listDevice = new List<ZigBee.Device.CommonDevice>();
|
foreach (var device in HdlDeviceCommonLogic.Current.listAllDevice)
|
{
|
//获取湿度传感器
|
if (device is ZigBee.Device.TemperatureSensor && ((ZigBee.Device.TemperatureSensor)device).SensorDiv == 2)
|
{
|
listDevice.Add(device);
|
}
|
//新风
|
else if (device.Type == ZigBee.Device.DeviceType.FreshAirHumiditySensor)
|
{
|
listDevice.Add(device);
|
}
|
//PM2.5是温度和湿度合在同一个端点
|
else if (device.Type == ZigBee.Device.DeviceType.PMSensor)
|
{
|
listDevice.Add(device);
|
}
|
}
|
var listSelect = new List<string>() { cloneRoom.HumidityDevice };
|
var form = new SelectDeviceForm();
|
form.AddForm(listDevice, listSelect, true, true);
|
form.ActionSelectDevice += (list) =>
|
{
|
if (list.Count == 0)
|
{
|
cloneRoom.HumidityDevice = string.Empty;
|
btnHumi.Text = Language.StringByID(R.MyInternationalizationString.uNothing);
|
return;
|
}
|
cloneRoom.HumidityDevice = HdlDeviceCommonLogic.Current.GetDeviceMainKeys(list[0]);
|
//获取湿度值
|
this.GetHumidityValue(btnHumi, cloneRoom.HumidityDevice);
|
};
|
}
|
|
/// <summary>
|
/// 获取湿度值
|
/// </summary>
|
/// <param name="btnHumi"></param>
|
/// <param name="deviceKey"></param>
|
private void GetHumidityValue(NormalViewControl btnHumi, string deviceKey)
|
{
|
var device = HdlDeviceCommonLogic.Current.GetDevice(deviceKey);
|
if (device == null)
|
{
|
return;
|
}
|
//获取中
|
btnHumi.Text = Language.StringByID(R.MyInternationalizationString.Getting);
|
|
bool receiveData = false;
|
HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
|
HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice", ReceiveComandDiv.A设备属性上报, (report) =>
|
{
|
string mainKeys = HdlDeviceCommonLogic.Current.GetDeviceMainKeys(report);
|
if (cloneRoom.HumidityDevice != mainKeys || btnHumi == null
|
|| report.DeviceStatusReport.CluterID != 1029)
|
{
|
return;
|
}
|
receiveData = true;
|
var localDevice = HdlDeviceCommonLogic.Current.GetDevice(mainKeys);
|
HdlThreadLogic.Current.RunMain(() =>
|
{
|
decimal humidity = (decimal)localDevice.GetType().InvokeMember("currentHumidity", System.Reflection.BindingFlags.GetField, null, localDevice, null);
|
if (humidity == 0)
|
{
|
//0
|
btnHumi.Text = "0.0%";
|
}
|
else
|
{
|
btnHumi.Text = humidity.ToString() + "%";
|
}
|
|
}, ShowErrorMode.NO);
|
});
|
//发送获取湿度的命令
|
device.ReadAttri(ZigBee.Device.Cluster_ID.RelativeHumidityMeasurement, ZigBee.Device.AttriButeId.MeasuredValue);
|
|
HdlThreadLogic.Current.RunThread(() =>
|
{
|
//去获取设备列表的信息
|
System.Threading.Thread.Sleep(1500);
|
var result = HdlDeviceCommonLogic.Current.ReadDeviceEpointDeviceInfo(device);
|
if (result != null)
|
{
|
device.AttributeStatus.Clear();
|
device.AttributeStatus.AddRange(result.AttributeStatus);
|
device.ReSave();
|
}
|
if (receiveData == true)
|
{
|
//已经读到数据
|
return;
|
}
|
|
//初始值,取缓存数据
|
foreach (var data in device.AttributeStatus)
|
{
|
if (data.ClusterId == 1029
|
&& data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
|
{
|
//处理网关返回的湿度值
|
decimal humidity = 0;
|
this.AdjustHumidityValue(data.AttributeData, ref humidity);
|
|
device.GetType().InvokeMember("currentHumidity", System.Reflection.BindingFlags.SetField, null, device, new object[] { humidity });
|
device.ReSave();
|
|
//制作虚假的属性上报
|
var report = new ZigBee.Device.CommonDevice { DeviceAddr = device.DeviceAddr, DeviceEpoint = device.DeviceEpoint };
|
report.DeviceStatusReport.CluterID = 1029;
|
HdlGatewayReceiveLogic.Current.DeviceReportPush(report, ReceiveComandDiv.A设备属性上报);
|
|
HdlThreadLogic.Current.RunMain(() =>
|
{
|
btnHumi.Text = humidity == 0 ? "0.0%" : humidity.ToString() + "%";
|
});
|
break;
|
}
|
}
|
});
|
}
|
|
/// <summary>
|
/// 处理网关返回的湿度值
|
/// </summary>
|
/// <param name="value">网关返回的属性值</param>
|
/// <param name="temperatrue">转换成的湿度值</param>
|
/// <param name="valueText">转换成的湿度值的翻译文本</param>
|
private void AdjustHumidityValue(int value, ref decimal humidity)
|
{
|
if (value == 0)
|
{
|
//0%
|
humidity = 0;
|
}
|
//不会出现负数
|
else
|
{
|
//小数点需要一位
|
string strValue = value.ToString();
|
strValue = strValue.Substring(0, strValue.Length - 1);
|
//记录温度
|
humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
|
}
|
}
|
|
#endregion
|
|
#region ■ 房间图片选择_______________________
|
|
/// <summary>
|
/// 房间图片选择
|
/// </summary>
|
/// <param name="imageContr"></param>
|
private void RoomPictrueSelect(ImageView imageContr)
|
{
|
var menuContr = new BottomMenuSelectForm();
|
menuContr.AddForm(3);
|
//默认图库
|
menuContr.AddMenu(Language.StringByID(R.MyInternationalizationString.LocalPicture), () =>
|
{
|
var form = new SelectLocalRoomImageForm();
|
form.AddForm();
|
form.FinishSelectEvent = (imgPath) =>
|
{
|
if (string.IsNullOrEmpty(imgPath) == true)
|
{
|
return;
|
}
|
this.changedRoomPic = true;
|
this.cloneRoom.BackgroundImageType = 0;
|
this.cloneRoom.BackgroundImage = imgPath;
|
imgPath = IO.FileUtils.GetImageFilePath(imgPath);
|
imageContr.ImageBytes = IO.FileUtils.ReadFile(imgPath);
|
};
|
});
|
//拍照
|
menuContr.AddMenu(Language.StringByID(R.MyInternationalizationString.Photograph), () =>
|
{
|
//通过相机拍照裁剪
|
CropImage.TakePicture((imagePath) =>
|
{
|
if (string.IsNullOrEmpty(imagePath) == true)
|
{
|
return;
|
}
|
this.changedRoomPic = true;
|
this.cloneRoom.BackgroundImageType = 1;
|
imageContr.ImageBytes = Shared.IO.FileUtils.ReadFile(imagePath);
|
System.IO.File.Delete(imagePath);
|
}, "HdlPic", 2, 1);
|
});
|
//我的相册
|
menuContr.AddMenu(Language.StringByID(R.MyInternationalizationString.MyAblums), () =>
|
{
|
//从相册选择图片裁剪
|
CropImage.SelectPicture((imagePath) =>
|
{
|
if (string.IsNullOrEmpty(imagePath) == true)
|
{
|
return;
|
}
|
this.changedRoomPic = true;
|
this.cloneRoom.BackgroundImageType = 2;
|
imageContr.ImageBytes = Shared.IO.FileUtils.ReadFile(imagePath);
|
System.IO.File.Delete(imagePath);
|
|
}, "HdlPic", 2, 1);
|
});
|
}
|
|
#endregion
|
|
#region ■ 界面关闭___________________________
|
|
/// <summary>
|
/// 界面关闭
|
/// </summary>
|
public override void CloseFormBefore()
|
{
|
this.FinishEditorEvent = null;
|
|
HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
|
HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
|
|
base.CloseFormBefore();
|
}
|
|
#endregion
|
|
#region ■ 一般方法___________________________
|
|
/// <summary>
|
/// 检测能否保存房间
|
/// </summary>
|
/// <returns></returns>
|
private bool CheckCanSaveRoom()
|
{
|
if (this.cloneRoom.Name == string.Empty)
|
{
|
//请输入房间名称
|
this.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.uPleaseInputRoomName));
|
return false;
|
}
|
if (string.IsNullOrEmpty(this.cloneRoom.FloorId) == true)
|
{
|
if (HdlRoomLogic.Current.GetAllListRooms().Find((obj) => obj.Name == this.cloneRoom.Name && obj.Id != this.cloneRoom.Id) != null)
|
{
|
this.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.HadSameRoom));
|
return false;
|
}
|
}
|
else
|
{
|
var listRoom = HdlRoomLogic.Current.GetFloorSortRoom(this.cloneRoom.FloorId);
|
if (listRoom.Find((obj) => obj.Name == this.cloneRoom.Name && obj.Id != this.cloneRoom.Id) != null)
|
{
|
this.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.HadSameRoom));
|
return false;
|
}
|
}
|
|
return true;
|
}
|
|
#endregion
|
}
|
}
|