From 7e863a33397f317ffc3ffd9288496d0e4f16aa66 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期四, 12 十二月 2019 14:58:20 +0800 Subject: [PATCH] 合并了新代码 --- ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs | 450 ++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 274 insertions(+), 176 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs index e6e56e9..15f40b7 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs @@ -20,7 +20,6 @@ { Shared.Application.RunOnMainThread(() => { - //var dev = common as Panel; }); } @@ -40,15 +39,18 @@ /// <summary> /// 鎸夐敭閰嶇疆鐨勭洰鏍囧垪琛� /// </summary> - List<CommonDevice> targetList = new List<CommonDevice>(); - List<Room> roomList = new List<Room>(); + List<CommonDevice> targetList = new List<CommonDevice>();//涓存椂鐩爣鍒楄〃 + List<Room> roomList = new List<Room>();//鏈湴鎴块棿鍒楄〃 public Action<List<BindListResponseObj>> action; Button btnFinifh; Button btnFloorText; - Dictionary<string, string> dicFloor; - + Dictionary<string, string> dicFloor;//妤煎眰鍒楄〃 + List<SceneUI> currentKeyAllRoomSceneList = new List<SceneUI>(); #endregion + /// <summary> + /// 娣诲姞鍦烘櫙椤垫樉绀� + /// </summary> public void Show() { this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.AddScene)); @@ -144,17 +146,54 @@ dicFloor = Common.Room.CurrentRoom.GetFloorSortList(); currentKey.currentSelectFloorId = BindInfo.GetCurrentSelectFloorId(); btnFloorText.Text = BindInfo.GetCurrentSelectFloorIdName(); - // 鑾峰彇妤煎眰瀵瑰簲瀵规埧闂� - foreach (var room in Shared.Common.Room.Lists) + + if (Common.Config.Instance.Home.FloorDics.Count == 0) { - if (room.FloorId == currentKey.currentSelectFloorId) + // 鑾峰彇娌℃湁妤煎眰鎴块棿 + foreach (var room in Shared.Common.Room.Lists) { - roomList.Add(room); + if (string.IsNullOrEmpty(room.FloorId)) + { + roomList.Add(room); + } } } + else + { + // 鑾峰彇妤煎眰瀵瑰簲瀵规埧闂� + foreach (var room in Shared.Common.Room.Lists) + { + if (room.FloorId == currentKey.currentSelectFloorId) + { + roomList.Add(room); + } + } + } + if (roomList.Count == 0) + { + return; + } + //棣栨鎷垮埌鎵�鏈夋埧闂翠腑鎸夐敭鐨勭洰鏍囧苟瀛樺偍 + GetALlDispalyRoomSceneList(); + + if (currentKeyAllRoomSceneList.Count != 0) + { + if (currentKey.bindList.Count != 0) + { + foreach (var scTemp in currentKeyAllRoomSceneList) + { + var sc = currentKey.bindList.Find(obj => (obj != null) && (obj.BindScenesId == scTemp.Id)); + if (sc != null) + { + targetList.Add(scTemp); + } + } + } + } + Shared.Common.Room curRoom = roomList[0]; int index = 0; - RefreshRoomList(curRoom, btnFinifh, ref index); + RefreshRoomList(curRoom, ref index); RefreshSceneList(roomList[index]); if (curRoom.SceneUIList.Count == 0) @@ -167,14 +206,34 @@ btnFinifh.Enable = true; btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; } - + if (targetList.Count == 0) + { + btnFinifh.Enable = false; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect; + } + else + { + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + } btnFinifh.MouseUpEventHandler += async (sender, e) => { bool isFinish = false; - btnFinifh.Enable = false; - btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect; try { + if (targetList.Count == 0) + { + Application.RunOnMainThread(() => + { + var myTip = new Tip(); + myTip.Direction = AMPopTipDirection.None; + myTip.CloseTime = 2; + myTip.Text = Language.StringByID(R.MyInternationalizationString.BindDeviceTargetIsEmpty); + myTip.Show(Common.CommonPage.Instance); + }); + return; + } + Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); }); if (currentKey.bindList.Count != 0) { @@ -188,7 +247,6 @@ new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinifh); CommonPage.Loading.Hide(); }); - this.RemoveFromParent(); btnFinifh.Enable = true; btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; return; @@ -202,17 +260,36 @@ { Application.RunOnMainThread(() => { + CommonPage.Loading.Hide(); var myTip = new Tip(); myTip.Direction = AMPopTipDirection.None; myTip.CloseTime = 2; myTip.Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime); myTip.Show(Common.CommonPage.Instance); }); + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + return; } } var temp = await currentKey.ConfigureHdlKeyValueAsync(Panel.KeyMode.Scene_Trigger); - if (temp.setWritableValueResponData?.Status != 0) + if (temp == null || temp.setWritableValueResponData == null) + { + Application.RunOnMainThread(() => + { + CommonPage.Loading.Hide(); + var myTip = new Tip(); + myTip.Direction = AMPopTipDirection.None; + myTip.CloseTime = 2; + myTip.Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime); + myTip.Show(Common.CommonPage.Instance); + }); + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + return; + } + if (temp.setWritableValueResponData.Status != 0) { Application.RunOnMainThread(() => { @@ -221,10 +298,10 @@ myTip.CloseTime = 2; myTip.Text = Language.StringByID(R.MyInternationalizationString.ChangeBindMode); myTip.Show(Common.CommonPage.Instance); - //new Tip() { Text = Language.StringByID(R.MyInternationalizationString.ChangeBindMode), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(btnFinifh); - btnFinifh.Enable = true; - btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + CommonPage.Loading.Hide(); }); + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; return; } else @@ -233,7 +310,6 @@ var addBindeDev = new AddBindData(); addBindeDev.DeviceAddr = currentKey.DeviceAddr; addBindeDev.Epoint = currentKey.DeviceEpoint; - foreach (var de in targetList) { if (de.DeviceAddr != null) @@ -258,112 +334,81 @@ var dev = new AddedDeviceBindResponseAllData(); dev = await currentKey.AddDeviceBindAsync(addBindeDev); - foreach (var ab in dev.addedDeviceBindResponseData?.BindList) + if (dev.addedDeviceBindResponseData == null) { - switch (ab.Result) + Application.RunOnMainThread(() => { - case 0: - currentKey.bindList.Add((BindListResponseObj)ab); - - for (int i = 0; i < targetList.Count; i++) + CommonPage.Loading.Hide(); + new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinifh); + }); + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + return; + } + else + { + if (dev.addedDeviceBindResponseData.Result == 0) + { + currentKey.bindList = dev.addedDeviceBindResponseData.BindList; + targetList.Clear(); + isFinish = true; + if (isFinish) + { + if (action != null) { - var de = targetList[i]; - var sc1 = new SceneUI(); - if (de.DeviceAddr == null) - { - sc1 = (SceneUI)de; - - if (sc1.Id == ab.BindScenesId) - { - targetList.RemoveAt(i); - i--; - } - } + action(currentKey.bindList); } - isFinish = true; - break; - case 1: - Application.RunOnMainThread(() => + this.RemoveFromParent(); + } + else + { + this.RemoveFromParent(); + } + Application.RunOnMainThread(() => + { + CommonPage.Loading.Hide(); + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + }); + } + else if (dev.addedDeviceBindResponseData.Result == 1) + { + Application.RunOnMainThread(() => + { + CommonPage.Loading.Hide(); + new Tip() { - new Tip() - { - MaxWidth = 150, - Text = Language.StringByID(R.MyInternationalizationString.BindErrorAbsence), - Direction = AMPopTipDirection.Up, - CloseTime = 1 - }.Show(btnFinifh); - }); - break; - case 2: - switch (dev.addBindResultResponseData?.Result) + MaxWidth = 150, + Text = Language.StringByID(R.MyInternationalizationString.BindFailed), + Direction = AMPopTipDirection.Up, + CloseTime = 1 + }.Show(btnFinifh); + }); + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + return; + } + else + { + Application.RunOnMainThread(() => + { + CommonPage.Loading.Hide(); + new Tip() { - case 0: - currentKey.bindList.Add((BindListResponseObj)ab); - for (int i = 0; i < targetList.Count; i++) - { - var de = targetList[i]; - if (de.DeviceAddr == ab.BindMacAddr && de.DeviceEpoint == ab.BindEpoint) - { - targetList.RemoveAt(i); - i--; - } - } - isFinish = true; - break; - case 140: - Application.RunOnMainThread(() => - { - new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFull), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinifh); - }); - break; - default: - Application.RunOnMainThread(() => - { - new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinifh); - }); - break; - } - break; - case 3: - Application.RunOnMainThread(() => - { - new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindErrorExisted), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinifh); - }); - break; - case 4: - Application.RunOnMainThread(() => - { - new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinifh); - }); - break; - default: - break; + MaxWidth = 150, + Text = Language.StringByID(R.MyInternationalizationString.BindUnknownError), + Direction = AMPopTipDirection.Up, + CloseTime = 1 + }.Show(btnFinifh); + }); + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + return; } } } } catch { } - finally - { - if (isFinish) - { - if (action != null) - { - action(currentKey.bindList); - } - this.RemoveFromParent(); - } - else - { - this.RemoveFromParent(); - } - Application.RunOnMainThread(() => - { - CommonPage.Loading.Hide(); - btnFinifh.Enable = true; - btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; - }); - } }; #endregion } @@ -373,7 +418,7 @@ /// </summary> /// <param name="gateway">Gateway.</param> /// <param name="key">Key.</param> - void RefreshRoomList(Shared.Common.Room curRoom, Button btnChooseKeyMode, ref int index2) + void RefreshRoomList(Shared.Common.Room curRoom, ref int index2) { if (roomList.Count == 0) { @@ -410,12 +455,11 @@ var btnRoomFrameLayout = new FrameLayout { - Height = Application.GetRealHeight(78), - Width = Application.GetRealWidth(187), - Y = Application.GetRealHeight(58), - X = Application.GetRealWidth(58), - Radius = (uint)Application.GetMinRealAverage(78 / 2), - BorderColor = Shared.Common.ZigbeeColor.Current.XMOrange, + Height = Application.GetRealHeight(159), + Width = Application.GetRealWidth(255), + Y = Application.GetRealHeight(23), + X = Application.GetRealWidth(5), + BackgroundImagePath = "Item/RoomIconBackground.png", BorderWidth = 1, }; btnHorizontalScrolViewLayout.AddChidren(btnRoomFrameLayout); @@ -436,9 +480,7 @@ btnRoom.IsSelected = false; if (index == 0) { - btnRoom.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMOrange; - btnRoomFrameLayout.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMOrange; - btnRoomFrameLayout.BorderWidth = 0; + btnRoomFrameLayout.BackgroundImagePath = "Item/RoomIconBackgroundSelected.png"; btnRoom.TextColor = Shared.Common.ZigbeeColor.Current.XMWhite; curentOldRoom = btnRoom; curentOldRoomFrameLayout = btnRoomFrameLayout; @@ -450,75 +492,63 @@ if (curentOldRoom != null) { curentOldRoom.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3; - curentOldRoom.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMMidFrameLayout; } curentOldRoom = btnRoom; curentOldRoom.TextColor = Shared.Common.ZigbeeColor.Current.XMWhite; - curentOldRoom.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMOrange; - curRoom = room; - currentKey.RoomId = room.Id; - RefreshSceneList(curRoom); - if (curRoom.SceneUIList.Count == 0) - { - btnChooseKeyMode.Enable = false; - btnChooseKeyMode.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect; - } - else - { - btnChooseKeyMode.Enable = true; - btnChooseKeyMode.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; - } } - if (btnRoomFrameLayout.BorderWidth == 1) { if (curentOldRoomFrameLayout != null) { curentOldRoomFrameLayout.BorderWidth = 1; - curentOldRoomFrameLayout.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMMidFrameLayout; + curentOldRoomFrameLayout.BorderColor = Shared.Common.ZigbeeColor.Current.XMOrange; + curentOldRoomFrameLayout.BackgroundImagePath = "Item/RoomIconBackground.png"; } curentOldRoomFrameLayout = btnRoomFrameLayout; curentOldRoomFrameLayout.BorderWidth = 0; - curentOldRoomFrameLayout.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMOrange; - curRoom = room; - currentKey.RoomId = room.Id; - RefreshSceneList(curRoom); - if (curRoom.SceneUIList.Count == 0) - { - btnChooseKeyMode.Enable = false; - btnChooseKeyMode.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect; - } - else - { - btnChooseKeyMode.Enable = true; - btnChooseKeyMode.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; - } + curentOldRoomFrameLayout.BackgroundImagePath = "Item/RoomIconBackgroundSelected.png"; } + curRoom = room; + currentKey.RoomId = room.Id; + if (curRoom.SceneUIList.Count == 0) + { + btnFinifh.Enable = false; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect; + } + else + { + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + } + if (targetList.Count == 0) + { + btnFinifh.Enable = false; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect; + } + else + { + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + } + RefreshSceneList(curRoom); + }; btnRoom.MouseUpEventHandler += eHandlerRoom; btnRoomFrameLayout.MouseUpEventHandler += eHandlerRoom; - - var btnEmpty = new Button - { - Width = Application.GetRealWidth(58), - X = btnRoom.Right, - }; - btnHorizontalScrolViewLayout.AddChidren(btnEmpty); index++; } - BindInfo.FinishDisplay(roomTempList, btnChooseKeyMode); + BindInfo.FinishDisplay(roomTempList, btnFinifh); RefreshSceneList(curRoom); } //鎸夐敭缁戝畾鍦烘櫙琛ㄦ樉绀� void RefreshSceneList(Shared.Common.Room curRoom) { + midVerticalScrolViewLayout.RemoveAll(); if (curRoom.SceneUIList.Count == 0) { return; } - midVerticalScrolViewLayout.RemoveAll(); - Button oldScene = null; int curIndex = 0; foreach (var scene in curRoom.SceneUIList) @@ -586,15 +616,30 @@ { btnBindName.Text = scene.Name; } - - foreach (var bindedSc in currentKey.bindList) + if (targetList.Count == 0) { - if (scene.Id == bindedSc.BindScenesId) + foreach (var bindedSc in currentKey.bindList) { - btnChoose.IsSelected = true; - btnChoose.Visible = true; - oldScene = btnChoose; - targetList.Add(scene); + if (scene.Id == bindedSc.BindScenesId) + { + btnChoose.IsSelected = true; + btnChoose.Visible = true; + oldScene = btnChoose; + targetList.Add(scene); + } + } + } + else + { + foreach (var bindedSc in targetList) + { + var sc1 = (SceneUI)bindedSc; + if (scene.Id == sc1.Id) + { + btnChoose.IsSelected = true; + btnChoose.Visible = true; + oldScene = btnChoose; + } } } @@ -621,7 +666,6 @@ { oldScene.IsSelected = false; oldScene.Visible = false; - targetList.Clear(); } oldScene = btnChoose; oldScene.IsSelected = true; @@ -630,12 +674,32 @@ targetList.Clear(); targetList.Add(scene); } + if (targetList.Count == 0) + { + btnFinifh.Enable = false; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect; + } + else + { + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + } }; rowLayout.MouseUpEventHandler += hander; devicePic.MouseUpEventHandler += hander; btnBindName.MouseUpEventHandler += hander; btnChoose.MouseUpEventHandler += hander; curIndex++; + } + if (targetList.Count == 0) + { + btnFinifh.Enable = false; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect; + } + else + { + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; } } @@ -735,7 +799,6 @@ currentKey.currentSelectFloorId = curFloorId; btnFloorText.Text = dicFloor[floorId]; roomList.Clear(); - if (!btnMethodText.IsSelected) { if (oldbutton != null) @@ -772,9 +835,18 @@ roomList.Add(curRoom); } int index = 0; - RefreshRoomList(curRoom, btnFinifh, ref index); + RefreshRoomList(curRoom, ref index); RefreshSceneList(roomList[0]); - + if (targetList.Count == 0) + { + btnFinifh.Enable = false; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect; + } + else + { + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + } dialog.Close(); }; btnAllMethod.MouseUpEventHandler += hander; @@ -783,6 +855,32 @@ } } + //褰撳墠鎸夐敭鎵�鏈夋樉绀烘埧闂寸殑鎵�鏈夊満鏅鐞� + List<SceneUI> GetALlDispalyRoomSceneList() + { + currentKeyAllRoomSceneList.Clear(); + // 鑾峰彇鎵�鏈夋埧闂� + foreach (var room in Shared.Common.Room.Lists) + { + //濡傛灉鎴块棿涓哄枩鐖憋紝鍒欎笉鏄剧ず + if (room.IsLove == true) + { + continue; + } + //濡傛灉鎴块棿涓病鏈夊満鏅紝鍒欎笉鏄剧ず + if (room.SceneUIList.Count == 0) + { + continue; + } + + foreach (var scene in room.SceneUIList) + { + currentKeyAllRoomSceneList.Add(scene); + } + } + return currentKeyAllRoomSceneList; + } + public void DeviceInfoChange(CommonDevice common, string typeTag) { } -- Gitblit v1.8.0