From 99da2604f81af29afc6b3c6f4f128b4e5a8a5649 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期三, 13 五月 2020 12:00:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev-tzy' into dev-2020xm
---
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs | 319 +++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 238 insertions(+), 81 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs
old mode 100755
new mode 100644
index 427baf6..3988cd9
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs
@@ -16,23 +16,25 @@
/// 鏋勯�犲嚱鏁�
/// </summary>
/// <param name="device"></param>
- /// <param name="deviceBindType">1:鏂伴;2:娓╁害浼犳劅鍣�;3:婀垮害浼犳劅鍣�</param>
- public PanelFangyueFreshAirTargetsForm(CommonDevice device, int deviceBindType)
+ /// <param name="deviceBindType">1:鏂伴;2:娓╁害浼犳劅鍣�;3:婀垮害浼犳劅鍣�;4:PM2.5浼犳劅鍣�</param>
+ /// <param name="bindDev">缁戝畾鐩爣 </param>
+ public PanelFangyueFreshAirTargetsForm(CommonDevice device, CommonDevice bindDev, int deviceBindType)
{
this.curControlDev = device as FreshAir;
+ this.curBindDevice = bindDev;
this.curDeviceBindType = deviceBindType;
}
#endregion
- #region 鍙橀噺鐢虫槑
- /// <summary>
- /// 褰撳墠鎺у埗璁惧
- /// </summary>
- //CommonDevice currentControlDevice;
+ #region 鍙橀噺鐢虫槑
/// <summary>
/// 褰撳墠鏂伴闈㈡澘銆愭帶鍒惰澶囥��
/// </summary>
FreshAir curControlDev;
+ /// <summary>
+ /// 褰撳墠琚粦璁惧
+ /// </summary>
+ CommonDevice curBindDevice;
/// <summary>
/// 鏄剧ず琚粦瀹氳澶囨垨鍦烘櫙鐨剉iew
/// </summary>
@@ -101,6 +103,10 @@
/// PM缁戝畾鐩爣鍥炶皟
/// </summary>
public Action<string> actionPMTarget = null;
+ /// <summary>
+ /// 鏄惁鑳界偣鍑讳繚瀛樻寜閽�
+ /// </summary>
+ private bool canSave = true;
#endregion
#region UI璁捐
@@ -318,6 +324,19 @@
curentOldRoom = btnRoom;
curentOldRoomFrameLayout = btnRoomFrameLayout;
}
+
+ //琚粦瀹氱殑鐩爣杩樻湭鍒嗛厤鍖哄煙锛岄粯璁ゆ槸绗竴涓�
+ if (string.IsNullOrEmpty(curControlDev.currentSelectRoomId))
+ {
+ if (index == 0)
+ {
+ btnRoomFrameLayout.BackgroundImagePath = "Item/RoomIconBackgroundSelected.png";
+ btnRoom.TextColor = Shared.Common.ZigbeeColor.Current.XMWhite;
+ curentOldRoom = btnRoom;
+ curentOldRoomFrameLayout = btnRoomFrameLayout;
+ }
+ }
+
EventHandler<MouseEventArgs> eHandlerRoom = (sender, e) =>
{
if (!btnRoom.IsSelected)
@@ -343,7 +362,6 @@
curentOldRoomFrameLayout.BackgroundImagePath = "Item/RoomIconBackgroundSelected.png";
}
curRoom = room;
- curControlDev.RoomId = room.Id;
//鏂伴闈㈡澘淇濆瓨浣胯兘
btnFinifh.Enable = true;
@@ -450,6 +468,21 @@
line2.Visible = false;
}
+ switch (curDeviceBindType)
+ {
+ case 1:
+ devicePic.UnSelectedImagePath = "Device/FreshAirEpoint.png";
+ break;
+ case 2:
+ devicePic.UnSelectedImagePath = "Device/SensorTemperature.png";
+ break;
+ case 3:
+ devicePic.UnSelectedImagePath = "Device/SensorHumidity.png";
+ break;
+ case 4:
+ devicePic.UnSelectedImagePath = "Device/FreshAirEpoint.png";
+ break;
+ }
#endregion
string mianKey = device.DeviceAddr + device.DeviceEpoint;
@@ -608,7 +641,7 @@
btnFloorText.Text = dicFloorList[floorId];
//鑾峰彇妤煎眰涓埧闂村垪琛�
- supportRoomList = GetFloorRoomList(curFloorId);
+ supportRoomList = GetFloorRoomList();
if (!btnMethodText.IsSelected)
{
if (oldbutton != null)
@@ -665,11 +698,13 @@
{
CommonPage.Loading.Start("");
});
+ //鑾峰彇琚粦鐩爣绛変俊鎭�
+ BindDevInfo(curBindDevice);
//鑾峰彇妤煎眰
dicFloorList = HdlRoomLogic.Current.GetFloorSortList();
//鑾峰彇妤煎眰涓埧闂村垪琛�
- supportRoomList = GetFloorRoomList(curControlDev.currentSelectFloorId);
+ supportRoomList = GetFloorRoomList();
//鑾峰彇鎵�鏈夋埧闂翠腑鍖归厤鐨勮兘缁戠殑鐩爣
currentPanelSupportBindDeviceList = GetAllRoomSupportDeviceList();
@@ -725,11 +760,24 @@
case 2:
if (device.Type == DeviceType.TemperatureSensor)
{
- targetList.Add(device);
- oldTargetList.Add(device);
+ var bDev = device as TemperatureSensor;
+ if (bDev.SensorDiv == 1)
+ {
+ targetList.Add(device);
+ oldTargetList.Add(device);
+ }
}
break;
case 3:
+ if (device.Type == DeviceType.TemperatureSensor)
+ {
+ var bDev = device as TemperatureSensor;
+ if (bDev.SensorDiv == 2)
+ {
+ targetList.Add(device);
+ oldTargetList.Add(device);
+ }
+ }
if (device.Type == DeviceType.FreshAirHumiditySensor)
{
targetList.Add(device);
@@ -759,6 +807,7 @@
if (targetList.Count == 0)
{
curControlDev.currentSelectFloorId = BindInfo.GetCurrentSelectFloorId();
+ curControlDev.currentSelectRoomId = null;
if (BindInfo.GetCurrentSelectFloorIdName() != null)
{
Application.RunOnMainThread(() =>
@@ -819,6 +868,7 @@
/// <param name="curControlDev"></param>
void SaveTarget()
{
+ btnFinifh.Enable = false;
if (targetList.Count == 0)
{
//绌虹洰鏍�
@@ -933,6 +983,11 @@
catch (Exception ex)
{
var mess = ex.Message;
+ Application.RunOnMainThread(() =>
+ {
+ CommonPage.Loading.Hide();
+ });
+ btnFinifh.Enable = true;
}
});
}
@@ -966,31 +1021,32 @@
{
foreach (var bd in oldTargetList)
{
- var delDevice = new DelDeviceBindData();
- delDevice.DeviceAddr = curControlDev.DeviceAddr;
- delDevice.Epoint = curControlDev.DeviceEpoint;
-
- var removeDevice = new RemoveBindListObj();
- removeDevice.BindType = 0;
- switch (curDeviceBindType)
+ var delDevice = DelBindDevice(bd);
+ var delResult = new DelDeviceBindResponseAllData();
+ delResult = await curControlDev.DelDeviceBindAsync(delDevice);
+ if (delResult != null && delResult.removeBindResultResponseData != null)
{
- case 1:
- removeDevice.BindCluster = 514;
- break;
- case 2:
- removeDevice.BindCluster = 1026;
- break;
- case 3:
- removeDevice.BindCluster = 1029;
- break;
- case 4:
- //PM2.5
- break;
+ if (delResult.removeBindResultResponseData.Result != 0)
+ {
+ Application.RunOnMainThread(() =>
+ {
+ new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance);
+ btnFinifh.Enable = true;
+ btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+ CommonPage.Loading.Hide();
+ });
+ return;
+ }
}
- removeDevice.BindMacAddr = bd.DeviceAddr;
- removeDevice.BindEpoint = bd.DeviceEpoint;
- delDevice.RemoveBindList.Add(removeDevice);
-
+ }
+ }
+ else
+ {
+ //妫�娴嬪凡缁忕粦瀹氱殑鐩爣鏄惁涓嶅湪鏈湴鎴栬�呮病鏈夊垎閰嶅埌浠讳綍鎴块棿涓�
+ //姝ゆ椂闇�瑕佸垹闄ゅ凡缁忚缁戝畾鍒扮洰鏍囷紝鎵嶈兘缁х画缁戝畾鏂扮洰鏍�
+ if (curBindDevice != null)
+ {
+ var delDevice = DelBindDevice(curBindDevice);
var delResult = new DelDeviceBindResponseAllData();
delResult = await curControlDev.DelDeviceBindAsync(delDevice);
if (delResult != null && delResult.removeBindResultResponseData != null)
@@ -1134,9 +1190,39 @@
}
catch (Exception ex)
{
+ Application.RunOnMainThread(() =>
+ {
+ CommonPage.Loading.Hide();
+ });
+ btnFinifh.Enable = true;
var mess = ex.Message;
}
});
+ }
+ }
+
+ /// <summary>
+ /// 褰撳墠琚粦瀹氳澶囨墍灞炴ゼ灞傚拰鎴块棿
+ /// </summary>
+ /// <param name="bindDev"></param>
+ void BindDevInfo(CommonDevice bindDev)
+ {
+ if (bindDev == null)
+ {
+ return;
+ }
+ //鑾峰彇鏈湴璁惧鍒楄〃
+ var localDeviceList = Shared.Common.LocalDevice.Current.listAllDevice;
+ var tempDev = localDeviceList.Find(obj => obj.DeviceAddr == bindDev.DeviceAddr && obj.DeviceEpoint == bindDev.DeviceEpoint);
+ if (tempDev != null)
+ {
+ //鑾峰彇璁惧鎵�灞炴埧闂�
+ var tempDevRoom = HdlRoomLogic.Current.GetRoomByDevice(tempDev);
+ if (tempDevRoom != null)
+ {
+ curControlDev.currentSelectRoomId = tempDevRoom.Id;
+ curControlDev.currentSelectFloorId = tempDevRoom.FloorId;
+ }
}
}
@@ -1161,6 +1247,39 @@
}
}
return exist;
+ }
+
+ /// <summary>
+ /// 妫�娴嬪凡缁忕粦瀹氱殑鐩爣鏄惁涓嶅湪鏈湴鎴栬�呮病鏈夊垎閰嶅埌浠讳綍鎴块棿涓�
+ /// </summary>
+ /// <returns></returns>
+ private DelDeviceBindData DelBindDevice(CommonDevice bd)
+ {
+ var delDevice = new DelDeviceBindData();
+ delDevice.DeviceAddr = curControlDev.DeviceAddr;
+ delDevice.Epoint = curControlDev.DeviceEpoint;
+
+ var removeDevice = new RemoveBindListObj();
+ removeDevice.BindType = 0;
+ switch (curDeviceBindType)
+ {
+ case 1:
+ removeDevice.BindCluster = 514;
+ break;
+ case 2:
+ removeDevice.BindCluster = 1026;
+ break;
+ case 3:
+ removeDevice.BindCluster = 1029;
+ break;
+ case 4:
+ //PM2.5
+ break;
+ }
+ removeDevice.BindMacAddr = bd.DeviceAddr;
+ removeDevice.BindEpoint = bd.DeviceEpoint;
+ delDevice.RemoveBindList.Add(removeDevice);
+ return delDevice;
}
/// <summary>
@@ -1194,6 +1313,7 @@
foreach (var de in room.ListDevice)
{
var device = LocalDevice.Current.GetDevice(de);
+
if (device != null)
{
//鑾峰彇璁惧绫诲瀷鐨�
@@ -1211,19 +1331,10 @@
}
break;
case 2:
- foreach (var de in room.ListDevice)
- {
- var device = LocalDevice.Current.GetDevice(de);
- if (device != null)
- {
- if (device.Type == DeviceType.TemperatureSensor)
- {
- roomIncludeMatchDevice.Add(device);
- }
- }
- }
+ roomIncludeMatchDevice = GetMatchTemperatureSensorDevice(room);
break;
case 3:
+ roomIncludeMatchDevice = GetMatchHumiditySensorDevice(room);
foreach (var de in room.ListDevice)
{
var device = LocalDevice.Current.GetDevice(de);
@@ -1244,30 +1355,90 @@
{
continue;
}
- }
- if (!string.IsNullOrEmpty(room.FloorId))
- {
- //鏈夋ゼ灞�
- if (room.FloorId == curControlDev.currentSelectFloorId)
+ if (!string.IsNullOrEmpty(room.FloorId))
{
+ //鏈夋ゼ灞�
+ if (room.FloorId == curControlDev.currentSelectFloorId)
+ {
+ roomTempList.Add(room);
+ }
+ }
+ else
+ {
+ //娌℃湁妤煎眰
roomTempList.Add(room);
}
- }
- else
- {
- //娌℃湁妤煎眰
- roomTempList.Add(room);
}
}
return roomTempList;
}
/// <summary>
+ /// 鍖归厤娓╁害浼犳劅鍣�
+ /// </summary>
+ /// <param name="room"></param>
+ List<CommonDevice> GetMatchTemperatureSensorDevice(Room room)
+ {
+ List<CommonDevice> roomIncludeMatchTempDevice = new List<CommonDevice>();
+ foreach (var de in room.ListDevice)
+ {
+ var device = LocalDevice.Current.GetDevice(de);
+ //鐢垫睜璁惧涓嶆敮鎸佺粦瀹�
+ if (device.ZigbeeType != 1)
+ {
+ continue;
+ }
+ if (device != null)
+ {
+ if (device.Type == DeviceType.TemperatureSensor)
+ {
+ var dev = device as TemperatureSensor;
+ if (dev.SensorDiv == 1)
+ {
+ roomIncludeMatchTempDevice.Add(device);
+ }
+ }
+ }
+ }
+ return roomIncludeMatchTempDevice;
+ }
+
+ /// <summary>
+ /// 鍖归厤婀垮害浼犳劅鍣�
+ /// </summary>
+ /// <param name="room"></param>
+ List<CommonDevice> GetMatchHumiditySensorDevice(Room room)
+ {
+ List<CommonDevice> roomIncludeMatchHumpDevice = new List<CommonDevice>();
+ foreach (var de in room.ListDevice)
+ {
+ var device = LocalDevice.Current.GetDevice(de);
+ //鐢垫睜璁惧涓嶆敮鎸佺粦瀹�
+ if (device.ZigbeeType != 1)
+ {
+ continue;
+ }
+ if (device != null)
+ {
+ if (device.Type == DeviceType.TemperatureSensor)
+ {
+ var dev = device as TemperatureSensor;
+ if (dev.SensorDiv == 2)
+ {
+ roomIncludeMatchHumpDevice.Add(device);
+ }
+ }
+ }
+ }
+ return roomIncludeMatchHumpDevice;
+ }
+
+ /// <summary>
/// 鑾峰彇妤煎眰瀵瑰簲鐨勬埧闂村垪琛�
/// </summary>
/// <returns></returns>
- private List<Room> GetFloorRoomList(string floorId)
+ private List<Room> GetFloorRoomList()
{
supportRoomList.Clear();
var supportRoomListTemp = new List<Room>();
@@ -1279,10 +1450,6 @@
{
if (string.IsNullOrEmpty(room.FloorId))
{
- if (room.FloorId != floorId)
- {
- continue;
- }
if (room.IsLove)
{
continue;
@@ -1350,16 +1517,10 @@
{
continue;
}
- foreach (var deviceKeys in r.ListDevice)
+ var deviceListTemp = GetMatchTemperatureSensorDevice(r);
+ foreach (var dev in deviceListTemp)
{
- var device = LocalDevice.Current.GetDevice(deviceKeys);
- if (device != null)
- {
- if (device.Type == DeviceType.TemperatureSensor)
- {
- currentPanelBindSupportDeviceListTemp.Add(device);
- }
- }
+ currentPanelBindSupportDeviceListTemp.Add(dev);
}
}
break;
@@ -1369,6 +1530,11 @@
if (r.ListDevice.Count == 0)
{
continue;
+ }
+ var deviceListTemp = GetMatchHumiditySensorDevice(r);
+ foreach (var dev in deviceListTemp)
+ {
+ currentPanelBindSupportDeviceListTemp.Add(dev);
}
foreach (var deviceKeys in r.ListDevice)
{
@@ -1420,19 +1586,10 @@
}
break;
case 2:
- foreach (var deviceKeys in curRoom.ListDevice)
- {
- var device = LocalDevice.Current.GetDevice(deviceKeys);
- if (device != null)
- {
- if (device.Type == DeviceType.TemperatureSensor)
- {
- curRoomDeviceListTemp.Add(device);
- }
- }
- }
+ curRoomDeviceListTemp = GetMatchTemperatureSensorDevice(curRoom);
break;
case 3:
+ curRoomDeviceListTemp = GetMatchHumiditySensorDevice(curRoom);
foreach (var deviceKeys in curRoom.ListDevice)
{
var device = LocalDevice.Current.GetDevice(deviceKeys);
--
Gitblit v1.8.0