From 3291885285dfd5d4f665c20676307878dc3163bc Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期五, 20 十二月 2019 16:28:53 +0800
Subject: [PATCH] 请合并最新代码(优化设备不支持的功能)
---
ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs | 349 +++++++++++++++++++++++++++++++++++----------------------
1 files changed, 214 insertions(+), 135 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
old mode 100644
new mode 100755
index dc6a573..83b6397
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
@@ -44,6 +44,7 @@
private System.Collections.Generic.List<CommonDevice> localDeviceList = new System.Collections.Generic.List<CommonDevice>();//鏈湴璁惧鍒楄〃
private System.Collections.Generic.List<SceneUI> scList = new System.Collections.Generic.List<SceneUI> { };//鏈湴鍦烘櫙鍒楄〃
FrameLayout blankFrameLayout;//绌烘暟鎹樉绀哄竷灞�
+ List<int> typeModeList;
#endregion
//鍒濆鍖栨寜閿暟鎹�
@@ -71,10 +72,25 @@
var tempDeata = await currentKey.ReadPanelConfigureInfoAsync();
if (tempDeata != null && tempDeata.deviceStatusReportData != null)
{
- currentClusterID = tempDeata.deviceStatusReportData.CluterID;
foreach (var attr in tempDeata.deviceStatusReportData.AttriBute)
{
currentKey.panelMode = attr.AttriButeData;
+ if (currentKey.panelMode == 1)
+ {
+ currentClusterID = 6;
+ }
+ else if (currentKey.panelMode == 100 || currentKey.panelMode == 101 || currentKey.panelMode == 102)
+ {
+ currentClusterID = 6;
+ }
+ else if (currentKey.panelMode == 200 || currentKey.panelMode == 201 || currentKey.panelMode == 203 || currentKey.panelMode == 204 || currentKey.panelMode == 205)
+ {
+ currentClusterID = 8;
+ }
+ else if (currentKey.panelMode == 300 || currentKey.panelMode == 301 || currentKey.panelMode == 302 || currentKey.panelMode == 303 || currentKey.panelMode == 304)
+ {
+ currentClusterID = 258;
+ }
currentKey.ReSave();
//璇诲彇鎸夐敭褰撳墠缁戝畾鐩爣
var getBindList = await currentKey.GetDeviceBindAsync();
@@ -82,6 +98,7 @@
var bindSceneListTemp = new System.Collections.Generic.List<BindListResponseObj> { };
if (getBindList != null && getBindList.getAllBindResponseData != null)
{
+ currentKey.bindList.Clear();
foreach (var b in getBindList.getAllBindResponseData.BindList)
{
if (b.BindCluster == currentClusterID)
@@ -100,7 +117,17 @@
}
else
{
- currentKey.bindList.Add(b);
+ if (currentClusterID == 8)
+ {
+ if (b.BindCluster == 8)
+ {
+ currentKey.bindList.Add(b);
+ }
+ }
+ else
+ {
+ currentKey.bindList.Add(b);
+ }
}
}
}
@@ -123,7 +150,7 @@
currentKey.bindList = bindDeviceListTemp;
currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddSwitch);
}
- else if (currentKey.panelMode == 200 || currentKey.panelMode == 201 || currentKey.panelMode == 202 || currentKey.panelMode == 203 || currentKey.panelMode == 204 || currentKey.panelMode == 205)
+ else if (currentKey.panelMode == 200 || currentKey.panelMode == 201 || currentKey.panelMode == 203 || currentKey.panelMode == 204 || currentKey.panelMode == 205)
{
currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddDimmer);
}
@@ -133,24 +160,27 @@
}
}
#endregion
+
+ //鍔ㄦ�佽幏鍙栨寜閿敮鎸佺殑澶х被
+ typeModeList = await GetTypeMode();
+ Application.RunOnMainThread(() =>
+ {
+ RefreshList();
+ CommonPage.Loading.Hide();
+ });
}
else
{
Application.RunOnMainThread(() =>
{
+ CommonPage.Loading.Hide();
+
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
+ return;
}
}
catch { }
- finally
- {
- Application.RunOnMainThread(() =>
- {
- RefreshList();
- CommonPage.Loading.Hide();
- });
- }
});
}
@@ -255,15 +285,15 @@
}
}
else
- {
- currentKey.panelMode = 65535;
+ {
+ currentKey.panelMode = 65535;
SideslipFramelayout();
}
};
btnBindAdd.MouseDownEventHandler += eHandlerAdd;
btnAddFrameLayout.MouseDownEventHandler += eHandlerAdd;
#endregion
- CommonPage.Loading.Start("");
+ CommonPage.Loading.Start("");
middleFrameLayout();
InitListInfo();
@@ -272,7 +302,7 @@
/// 涓儴甯冨眬
/// </summary>
void middleFrameLayout()
- {
+ {
midVerticalRefreshLayout = new VerticalRefreshLayout()
{
};
@@ -282,7 +312,7 @@
midVerticalRefreshLayout.BeginHeaderRefreshing();
InitListInfo();
midVerticalRefreshLayout.EndHeaderRefreshing();
- };
+ };
topFrameLayout = new FrameLayout
{
Height = Application.GetMinRealAverage(0),
@@ -344,8 +374,8 @@
entryStatusPic.Width = Application.GetRealWidth(654);
btnPicTip.Height = Application.GetRealHeight(49);
btnPicTip.Visible = true;
- entryStatusPic.Visible = true;
- blankFrameLayout.Height = midVerticalRefreshLayout.Height;
+ entryStatusPic.Visible = true;
+ blankFrameLayout.Height = midVerticalRefreshLayout.Height;
}
else
{
@@ -353,7 +383,7 @@
entryStatusPic.Width = Application.GetRealWidth(0);
btnPicTip.Height = Application.GetRealHeight(0);
btnPicTip.Visible = false;
- entryStatusPic.Visible = false;
+ entryStatusPic.Visible = false;
blankFrameLayout.Height = Application.GetRealHeight(0);
if (currentKey.panelMode == 1)
{
@@ -362,7 +392,7 @@
}
else
{
- topFrameLayout.Height = Application.GetRealHeight(150);
+ topFrameLayout.Height = Application.GetRealHeight(150);
BindModeDisplay();
}
int curIndex = 0;
@@ -442,9 +472,9 @@
if (isExistScene)
{
curSceneUI = Room.CurrentRoom.GetSceneUIBySceneId(bindDevice.BindScenesId);
+ devicePic.UnSelectedImagePath = "Scene/SceneIcon.png";
if (curSceneUI == null)
{
- devicePic.UnSelectedImagePath = "Scene/SceneIcon.png";
if (string.IsNullOrEmpty(bindDevice.ESName))
{
btnBindName.Text = Language.StringByID(R.MyInternationalizationString.OffLineScene) + "_" + "ID" + "_" + bindDevice.BindScenesId.ToString();
@@ -456,11 +486,10 @@
}
else
{
- devicePic.UnSelectedImagePath = curSceneUI.IconPath;
- btnBindName.Text = curSceneUI.Name;
- if (curSceneUI.GetZone() != null)
- {
- btnFloorRoomName.Text = curSceneUI.GetZone();
+ btnBindName.Text = curSceneUI.Name;
+ if (curSceneUI.GetZone() != null)
+ {
+ btnFloorRoomName.Text = curSceneUI.GetZone();
}
}
}
@@ -473,26 +502,30 @@
if (tempDev != null)
{
//鑾峰彇璁惧鎵�灞炴埧闂�
- var tempDevRoom = Common.Room.CurrentRoom.GetRoomByDevice(tempDev);
- //鑾峰彇璁惧鎵�鍦ㄦゼ灞�
- if (Common.Config.Instance.Home.FloorDics.Count == 0)
- {
- }
- if (tempDevRoom != null)
- {
- var tempDevFloorId = tempDevRoom.FloorId;
- //鑾峰彇妤煎眰鐨勫悕瀛�
- var tempDevRoomName = tempDevRoom.Name;
- //鑾峰彇妤煎眰鐨勫悕瀛�
- var tempDevFloorName = Common.Config.Instance.Home.GetFloorNameById(tempDevFloorId);
- btnFloorRoomName.Text = tempDevFloorName + "," + tempDevRoomName;
- }
- var deviceUi = Common.LocalDevice.Current.GetDeviceUI(tempDev);
- if (deviceUi != null)
+ var tempDevRoom = Common.Room.CurrentRoom.GetRoomByDevice(tempDev);
+
+ if (tempDevRoom != null)
{
- devicePic.UnSelectedImagePath = deviceUi.IconPath;
- devicePic.Width = Application.GetRealWidth(110);
- devicePic.Text = "";
+ var tempDevFloorId = tempDevRoom.FloorId;
+ //鑾峰彇鎴块棿鐨勫悕瀛�
+ var tempDevRoomName = tempDevRoom.Name;
+ //鑾峰彇妤煎眰鐨勫悕瀛�
+ var tempDevFloorName = Common.Config.Instance.Home.GetFloorNameById(tempDevFloorId);
+ if (string.IsNullOrEmpty(tempDevFloorName))
+ {
+ btnFloorRoomName.Text = tempDevRoomName;
+ }
+ else
+ {
+ btnFloorRoomName.Text = tempDevFloorName + "," + tempDevRoomName;
+ }
+ }
+ var deviceUi = Common.LocalDevice.Current.GetDeviceUI(tempDev);
+ if (deviceUi != null)
+ {
+ devicePic.UnSelectedImagePath = deviceUi.IconPath;
+ devicePic.Width = Application.GetRealWidth(110);
+ devicePic.Text = "";
}
if (tempDev.DeviceEpointName == "")
{
@@ -620,82 +653,82 @@
//涓�閿竻闄ゆ寜閿簨浠�
btnDel.MouseUpEventHandler += async (sender, e) =>
- {
- var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.SureClearKeyModeAndTargets),
- Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
- alert.Show();
-
- alert.ResultEventHandler += async (s1, e1) =>
- {
- if (e1)
- {
- bool isDelSuccess = false;
- try
- {
- CommonPage.Loading.Start("");
- var bindResult = await currentKey.ClearBindInfoAsync();
- if (bindResult != null && bindResult.clearBindInfoResponseData != null)
- {
- if (bindResult.clearBindInfoResponseData.Result != 0)
- {
- new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDel);
- CommonPage.Loading.Hide();
- return;
- }
- else
- {
- var temp = await currentKey.ConfigureHdlKeyValueAsync(Panel.KeyMode.Default);
- if (temp.setWritableValueResponData?.Status != 0)
- {
- var temp1 = await currentKey.ConfigureHdlKeyValueAsync(Panel.KeyMode.Default);
- if (temp1.setWritableValueResponData?.Status != 0)
- {
- new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.ChangeBindMode), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
- }
- else
- {
- isDelSuccess = true;
- }
- }
- else
- {
- isDelSuccess = true;
- }
- }
- }
- else
- {
- new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
- }
- }
- catch { }
- finally
- {
- if (isDelSuccess)
- {
- currentKey.panelMode = 65535;
- currentKey.bindList.Clear();
- RefreshList();
- //濡傛灉鏄満鏅紝鐢ㄦ埛鍒犻櫎娓呯┖褰撳墠鍒版埧闂村垪琛�
- currentKey.RoomId = "";
- currentKey.ReSave();
- }
- CommonPage.Loading.Hide();
- }
- }
- else
- {
-
- }
- };
-
+ {
+ var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.SureClearKeyModeAndTargets),
+ Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
+ alert.Show();
+
+ alert.ResultEventHandler += async (s1, e1) =>
+ {
+ if (e1)
+ {
+ bool isDelSuccess = false;
+ try
+ {
+ CommonPage.Loading.Start("");
+ var bindResult = await currentKey.ClearBindInfoAsync();
+ if (bindResult != null && bindResult.clearBindInfoResponseData != null)
+ {
+ if (bindResult.clearBindInfoResponseData.Result != 0)
+ {
+ new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDel);
+ CommonPage.Loading.Hide();
+ return;
+ }
+ else
+ {
+ var temp = await currentKey.ConfigureHdlKeyValueAsync(Panel.KeyMode.Default);
+ if (temp.setWritableValueResponData?.Status != 0)
+ {
+ var temp1 = await currentKey.ConfigureHdlKeyValueAsync(Panel.KeyMode.Default);
+ if (temp1.setWritableValueResponData?.Status != 0)
+ {
+ new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.ChangeBindMode), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
+ }
+ else
+ {
+ isDelSuccess = true;
+ }
+ }
+ else
+ {
+ isDelSuccess = true;
+ }
+ }
+ }
+ else
+ {
+ new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
+ }
+ }
+ catch { }
+ finally
+ {
+ if (isDelSuccess)
+ {
+ currentKey.panelMode = 65535;
+ currentKey.bindList.Clear();
+ RefreshList();
+ //濡傛灉鏄満鏅紝鐢ㄦ埛鍒犻櫎娓呯┖褰撳墠鍒版埧闂村垪琛�
+ currentKey.RoomId = "";
+ currentKey.ReSave();
+ }
+ CommonPage.Loading.Hide();
+ }
+ }
+ else
+ {
+
+ }
+ };
+
};
}
/// <summary>
/// 渚ц竟瀵艰埅鏍�
/// </summary>
- void SideslipFramelayout()
+ async void SideslipFramelayout()
{
#region UI
var dialog = new Dialog { };
@@ -728,7 +761,29 @@
Button oldbuttonText = null;
string oldKeySelectModeText = currentKey.currentKeySelectModeText;
- for (var i = 0; i < 4; i++)
+
+ if (typeModeList == null)
+ {
+ //鍐嶆鍔ㄦ�佽幏鍙栨寜閿敮鎸佺殑澶х被
+ CommonPage.Loading.Start();
+ typeModeList = await GetTypeMode();
+ if (typeModeList == null)
+ {
+ Application.RunOnMainThread(() =>
+ {
+ new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+ });
+ CommonPage.Loading.Hide();
+ dialog.Close();
+ return;
+ }
+ else
+ {
+ CommonPage.Loading.Hide();
+ }
+ }
+
+ foreach (var value in typeModeList)
{
#region rowView
var rowView = new FrameLayout()
@@ -759,62 +814,62 @@
};
rowView.AddChidren(line2);
- if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene) && i == 0)
+ if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene) && value == 1)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
oldbuttonText = btnMethodText;
}
- else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch) && i == 1)
+ else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch) && value == 100)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
oldbuttonText = btnMethodText;
}
- else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer) && i == 2)
+ else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer) && value == 200)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
oldbuttonText = btnMethodText;
}
- else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain) && i == 3)
+ else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain) && value == 300)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
oldbuttonText = btnMethodText;
}
- #endregion
+ #endregion
#region 鏁版嵁澶勭悊
- switch (i)
+ switch (value)
{
- case 0:
+ case 1:
btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddScene);
break;
- case 1:
+ case 100:
btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddSwitch);
break;
- case 2:
+ case 200:
btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddDimmer);
break;
- case 3:
+ case 300:
btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddCurtain);
line2.Visible = false;
break;
}
- if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene) && i == 0)
+ if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene) && value == 1)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
oldbuttonText = btnMethodText;
}
- if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch) && i == 1)
+ if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch) && value == 100)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
oldbuttonText = btnMethodText;
}
- if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer) && i == 2)
+ if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer) && value == 200)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
oldbuttonText = btnMethodText;
}
- if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain) && i == 3)
+ if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain) && value == 300)
{
btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
oldbuttonText = btnMethodText;
@@ -1077,13 +1132,37 @@
}
}
+ //鑾峰彇鎸夐敭鏀寔鐨勫ぇ绫�
+ private async System.Threading.Tasks.Task<List<int>> GetTypeMode()
+ {
+ if (typeModeList != null)
+ {
+ typeModeList.Clear();
+ }
+ if (currentKey.privateFuncSecondLevelList.Count == 0 || currentKey.privateFuncSecondLevelList.Contains(1) == false || currentKey.privateFuncSecondLevelList.Contains(100) == false || currentKey.privateFuncSecondLevelList.Contains(200) == false || currentKey.privateFuncSecondLevelList.Contains(300) == false)
+ {
+ //鑾峰彇绗簩绾у姛鑳�
+ typeModeList = await currentKey.GetPanelDeviceFunctionLevel2(256);
+ if (typeModeList == null)
+ {
+ return null;
+ }
+ currentKey.privateFuncSecondLevelList = typeModeList;
+ }
+ else
+ {
+ typeModeList = currentKey.privateFuncSecondLevelList;
+ }
+ return typeModeList;
+ }
+
/// <summary>
/// 鍒犻櫎褰撳墠鐩爣鏂规硶
/// </summary>
/// <param name="bindDevice"></param>
/// <param name="btnDel"></param>
/// <returns></returns>
- async System.Threading.Tasks.Task<int> RemoveTargets(BindListResponseObj bindDevice, Button btnDel)
+ private async System.Threading.Tasks.Task<int> RemoveTargets(BindListResponseObj bindDevice, Button btnDel)
{
var delDevice = new DelDeviceBindData();
delDevice.DeviceAddr = currentKey.DeviceAddr;
@@ -1111,7 +1190,7 @@
{
CommonPage.Loading.Start("");
var delResult = new DelDeviceBindResponseAllData();
- delResult = await currentKey.DelDeviceBindAsync(delDevice);
+ delResult = await currentKey.DelDeviceBindAsync(delDevice);
if (delResult != null && delResult.delDeviceBindResponseData != null)
{
if (delResult.delDeviceBindResponseData?.RemoveBindList != null)
@@ -1124,9 +1203,9 @@
currentKey.bindList.Remove(bindDevice);
RefreshList();
//濡傛灉鏄満鏅紝鐢ㄦ埛鍒犻櫎娓呯┖褰撳墠鍒版埧闂村垪琛�
- if(re.BindType == 2)
- {
- currentKey.panelMode = 65535;
+ if (re.BindType == 2)
+ {
+ currentKey.panelMode = 65535;
}
currentKey.RoomId = "";
currentKey.ReSave();
--
Gitblit v1.8.0