From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001 From: hxb <hxb@hdlchina.com.cn> Date: 星期二, 30 八月 2022 09:37:38 +0800 Subject: [PATCH] 合并了IOS的代码 --- ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddDevicePage.cs | 737 +++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 559 insertions(+), 178 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddDevicePage.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddDevicePage.cs index 5cb012c..63679cc 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddDevicePage.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddDevicePage.cs @@ -1,32 +1,17 @@ 锘縰sing System; using System.Collections.Generic; using Shared.Common; -using Shared.Phone.Device.Light; using Shared.Phone.UserCenter.Device; using ZigBee.Device; using static ZigBee.Device.BindObj; using static ZigBee.Device.Panel; namespace Shared.Phone.UserCenter.DeviceBind { - public class AddDevicePage : BindCommonLayout, ZigBee.Common.IStatus + /// <summary> + /// 鏅�氶潰鏉跨殑缁戝畾璁惧鐣岄潰銆愬彲缁戝畾澶氫釜璁惧銆� + /// </summary> + public class AddDevicePage : BindCommonLayout { - /// <summary> - /// 鎸夐敭妯″紡鎺ユ敹 - /// </summary> - /// <param name="common">Common.</param> - public void Changed(CommonDevice common) - { - //if (common.Type != ZigBee.Device.DeviceType.OnOffSwitch) - //{ - // return; - //} - - Shared.Application.RunOnMainThread(() => - { - //var dev = common as Panel; - }); - } - /// 鏋勯�犲嚱鏁� /// </summary> /// <param name="doorLock"></param> @@ -36,25 +21,73 @@ this.curDeviceBindType = deviceBindType; } - #region 鈼� 鍙橀噺鐢虫槑__________________________ + #region 鍙橀噺鐢虫槑 + /// <summary> + /// 褰撳墠鎸夐敭 + /// </summary> ZigBee.Device.Panel currentKey; - //鏄剧ず琚粦瀹氳澶囨垨鍦烘櫙鐨剉iew + /// <summary> + /// 鏄剧ず琚粦瀹氳澶囨垨鍦烘櫙鐨剉iew + /// </summary> VerticalScrolViewLayout midVerticalScrolViewLayout; + /// <summary> + /// 鏄剧ず鎴块棿鐨剉iew + /// </summary> HorizontalScrolViewLayout btnHorizontalScrolViewLayout; /// <summary> /// 鎸夐敭閰嶇疆鐨勭洰鏍囧垪琛� /// </summary> List<CommonDevice> targetList = new List<CommonDevice>(); + /// <summary> + /// 鎴块棿鍒楄〃 + /// </summary> List<Room> roomList = new List<Room>(); + /// <summary> + /// 娣诲姞璁惧鍚庣殑鍥炶皟 + /// </summary> public Action<List<BindListResponseObj>> actionAddDevicePage; - List<DeviceUI> curTypeDeviceList = new List<DeviceUI> { }; + /// <summary> + /// 褰撳墠璁惧绫诲瀷鍒楄〃 + /// </summary> + List<CommonDevice> curTypeDeviceList = new List<CommonDevice> { }; + /// <summary> + /// 褰撳墠璁惧缁戝畾绫诲瀷 + /// </summary> string curDeviceBindType = ""; + /// <summary> + /// 妤煎眰鏂囨湰 + /// </summary> + Button btnFloorText; + /// <summary> + /// 妤煎眰琛� + /// </summary> + Dictionary<string, string> dicFloor; + /// <summary> + /// 褰撳墠閫夋嫨鐨勬寜閿ā寮� + /// </summary> + Button btnChooseKeyMode; + /// <summary> + /// 鏄惁棣栨杩涘叆璇ラ〉 + /// </summary> + bool IsInitEntry = false; + /// <summary> + /// 褰撳墠鎸夐敭鐨勬墍鏈夋埧闂磋澶囧垪琛� + /// </summary> + List<CommonDevice> currentKeyAllRoomDeviceList = new List<CommonDevice>(); + /// <summary> + /// 涓存椂瀛樺偍鐨勭洰鏍囧垪琛� + /// </summary> + Dictionary<string, CommonDevice> oldTargetList = new Dictionary<string, CommonDevice> { }; #endregion + /// <summary> + /// 娣诲姞璁惧鏄剧ず + /// </summary> public void Show() { targetList.Clear(); string titleText = ""; + IsInitEntry = true; switch (curDeviceBindType) { case "AddSwitch": @@ -68,48 +101,75 @@ break; } this.TopFrameLayout(this, titleText); - EventHandler<MouseEventArgs> eHandlerBack = (sender, e) => { RemoveFromParent(); }; + this.btnTitle.Width = Application.GetRealWidth(1080 - 161 - 300); this.btnBack.MouseUpEventHandler += eHandlerBack; this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack; this.MidFrameLayout(this); var btnAddFrameLayout = new FrameLayout { - X = Application.GetRealWidth(953), - Height = Application.GetRealHeight(72), - Width = Application.GetRealWidth(72), + X = Application.GetRealWidth(619), }; this.titleFrameLayout.AddChidren(btnAddFrameLayout); - var btnFloorText = new Button + btnFloorText = new Button { - Height = Application.GetRealHeight(84), - Width = Application.GetRealWidth(58), - X = Application.GetRealWidth(881), - Text = "涓�妤�", + Width = Application.GetRealWidth(300 - 69 - 58), + X = Application.GetRealWidth(15), + Text = Language.StringByID(R.MyInternationalizationString.FirstFloor), TextColor = Shared.Common.ZigbeeColor.Current.XMBlack, + TextSize = 14, + IsBold = true, + TextAlignment = TextAlignment.CenterRight, }; btnAddFrameLayout.AddChidren(btnFloorText); + var btnBindDownFrameLayout = new FrameLayout + { + Width = Application.GetMinReal(69 + 58), + X = Application.GetRealWidth(300 - 69 - 58), + }; + btnAddFrameLayout.AddChidren(btnBindDownFrameLayout); + var btnBindDown = new Button { - Height = Application.GetRealHeight(72), - Width = Application.GetRealWidth(72), - //UnSelectedImagePath = "BindPic/BindDown.png", + Height = Application.GetMinReal(69), + Width = Application.GetMinReal(69), + UnSelectedImagePath = "BindPic/BindDown.png", + Gravity = Gravity.CenterVertical, }; - btnAddFrameLayout.AddChidren(btnBindDown); - btnBindDown.MouseDownEventHandler += (sender, e) => - { - }; + btnBindDownFrameLayout.AddChidren(btnBindDown); - MidFrameLayoutContent(); + if (Common.Config.Instance.Home.FloorDics.Count == 0) + { + btnBindDown.Visible = false; + } + + EventHandler<MouseEventArgs> eHandlerBindDown = (sender, e) => + { + SideslipFramelayout(); + }; + btnBindDown.MouseDownEventHandler += eHandlerBindDown; + btnBindDownFrameLayout.MouseDownEventHandler += eHandlerBindDown; + if (Common.Config.Instance.Home.FloorDics.Count == 0) + { + btnAddFrameLayout.Width = 0; + } + else + { + btnAddFrameLayout.Width = Application.GetRealWidth(300); + } + MidFrameLayoutContent(btnFloorText); } - async void MidFrameLayoutContent() + /// <summary> + /// 涓儴甯冨眬 + /// </summary> + async void MidFrameLayoutContent(Button btnFloorText) { #region UI var btnMidTopLayout = new FrameLayout @@ -120,16 +180,9 @@ btnHorizontalScrolViewLayout = new HorizontalScrolViewLayout { + X = Application.GetRealWidth(58), }; btnMidTopLayout.AddChidren(btnHorizontalScrolViewLayout); - - //var btnLine = new Button - //{ - // Y = btnMidTopLayout.Bottom, - // Height = 1, - // BackgroundColor = Shared.Common.ZigbeeColor.Current.XMTitleLine, - //}; - //this.midFrameLayout.AddChidren(btnLine); var btnmidVerticalScrolViewLayoutFrameLayout = new FrameLayout { @@ -140,7 +193,6 @@ midVerticalScrolViewLayout = new VerticalScrolViewLayout() { - }; btnmidVerticalScrolViewLayoutFrameLayout.AddChidren(midVerticalScrolViewLayout); @@ -152,25 +204,87 @@ }; this.midFrameLayout.AddChidren(bottomFrameLayout); - var btnChooseKeyMode = new Button() + btnChooseKeyMode = new Button() { Width = Application.GetRealWidth(907), Gravity = Gravity.CenterHorizontal, - Radius = (uint)Application.GetRealHeight(120) / 2, + Radius = (uint)Application.GetRealHeight(127) / 2, TextID = R.MyInternationalizationString.ChooseKeyMode, BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack, TextColor = Shared.Common.ZigbeeColor.Current.XMWhite, TextSize = 16, + IsBold = true, }; bottomFrameLayout.AddChidren(btnChooseKeyMode); #endregion #region 鏁版嵁澶勭悊 - roomList = Shared.Common.Room.Lists; + //鑾峰彇妤煎眰 + dicFloor = HdlRoomLogic.Current.GetFloorSortList(); + currentKey.currentSelectFloorId = BindInfo.GetCurrentSelectFloorId(); + btnFloorText.Text = BindInfo.GetCurrentSelectFloorIdName(); + + if (Common.Config.Instance.Home.FloorDics.Count == 0) + { + // 鑾峰彇娌℃湁妤煎眰鎴块棿 + var listAllRoom = HdlRoomLogic.Current.GetAllListRooms(); + foreach (var room in listAllRoom) + { + if (string.IsNullOrEmpty(room.FloorId)) + { + roomList.Add(room); + } + } + } + else + { + // 鑾峰彇妤煎眰瀵瑰簲瀵规埧闂� + var listAllRoom = HdlRoomLogic.Current.GetAllListRooms(); + foreach (var room in listAllRoom) + { + if (room.FloorId == currentKey.currentSelectFloorId) + { + roomList.Add(room); + } + } + } + //棣栨鎷垮埌鎵�鏈夋埧闂翠腑鎸夐敭鐨勭洰鏍囧苟瀛樺偍 + GetALlDispalyRoomDeviceList(); + if (currentKeyAllRoomDeviceList.Count != 0) + { + if (currentKey.bindList.Count != 0) + { + foreach (var devA in currentKeyAllRoomDeviceList) + { + var id = devA.DeviceAddr + devA.DeviceEpoint; + var dev = currentKey.bindList.Find(obj => (obj != null) && (obj.BindMacAddr + obj.BindEpoint == id)); + if (dev != null) + { + if (!oldTargetList.ContainsKey(id)) + { + oldTargetList.Add(id, devA); + } + } + } + } + } + if (oldTargetList.Count != 0) + { + foreach (var de in oldTargetList.Keys) + { + var curDev = oldTargetList[de]; + targetList.Add(curDev); + } + } + + if (roomList.Count == 0) + { + return; + } Shared.Common.Room curRoom = roomList[0]; int index = 0; RefreshRoomList(curRoom, btnChooseKeyMode, ref index); - RefreshDeviceList(roomList[index]); + if (curTypeDeviceList.Count == 0) { btnChooseKeyMode.Enable = false; @@ -181,9 +295,23 @@ btnChooseKeyMode.Enable = true; btnChooseKeyMode.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; } - + if (targetList.Count == 0) + { + btnChooseKeyMode.Enable = false; + btnChooseKeyMode.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect; + } + else + { + btnChooseKeyMode.Enable = true; + btnChooseKeyMode.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + } btnChooseKeyMode.MouseUpEventHandler += (sender, e) => { + if (targetList.Count == 0) + { + new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindDeviceTargetIsEmpty), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnChooseKeyMode); + return; + } this.RemoveFromParent(); var chooseKeyModePage = new Shared.Phone.UserCenter.DeviceBind.ChooseKeyModePage(currentKey, curDeviceBindType, targetList); @@ -201,7 +329,7 @@ chooseKeyModePage.action += action; } }; - #endregion + #endregion } /// <summary> @@ -211,21 +339,38 @@ /// <param name="key">Key.</param> void RefreshRoomList(Shared.Common.Room curRoom, Button btnChooseKeyMode, ref int index2) { + if (roomList.Count == 0) + { + return; + } + btnHorizontalScrolViewLayout.RemoveAll(); Button curentOldRoom = null; FrameLayout curentOldRoomFrameLayout = null; int index = 0; + var roomTempList = new List<Room>(); for (int i = 0; i < roomList.Count; i++) { var room = roomList[i]; + //妫�娴嬭鎴块棿鑳藉惁鏄剧ず + if (BindInfo.CheckCanShowRoom(room, curDeviceBindType) == false) + { + continue; + } + roomTempList.Add(room); + } + + for (int i = 0; i < roomTempList.Count; i++) + { + var room = roomTempList[i]; + curRoom = roomTempList[0]; 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.GetMinReal(159), + Width = Application.GetMinReal(255), + Y = Application.GetRealHeight(23), + X = Application.GetRealWidth(5), + BackgroundImagePath = "Item/RoomIconBackground.png", BorderWidth = 1, }; btnHorizontalScrolViewLayout.AddChidren(btnRoomFrameLayout); @@ -233,7 +378,7 @@ var btnRoom = new Button { Height = Application.GetRealHeight(58), - Width = Application.GetRealWidth(127), + Width = Application.GetRealWidth(255), Y = Application.GetRealHeight(58), X = Application.GetRealWidth(14), Text = room.Name, @@ -244,45 +389,25 @@ btnRoomFrameLayout.AddChidren(btnRoom); btnRoom.IsSelected = false; - if (currentKey.RoomId == "") + if (index == 0) { - if (i == index) - { - btnRoom.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMOrange; - btnRoomFrameLayout.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMOrange; - btnRoomFrameLayout.BorderWidth = 0; - btnRoom.TextColor = Shared.Common.ZigbeeColor.Current.XMWhite; - curentOldRoom = btnRoom; - curentOldRoomFrameLayout = btnRoomFrameLayout; - } - else - { - btnRoom.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3; - btnRoomFrameLayout.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMMidFrameLayout; - btnRoomFrameLayout.BorderWidth = 1; - } + btnRoomFrameLayout.BackgroundImagePath = "Item/RoomIconBackgroundSelected.png"; + btnRoom.TextColor = Shared.Common.ZigbeeColor.Current.XMWhite; + curentOldRoom = btnRoom; + curentOldRoomFrameLayout = btnRoomFrameLayout; } - else + if (index == roomTempList.Count - 1 && index > 2) { - if (currentKey.RoomId == room.Id) + var btnRoomFrameLayoutEmpty = new FrameLayout { - btnRoom.TextColor = Shared.Common.ZigbeeColor.Current.XMWhite; - btnRoom.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMOrange; - btnRoomFrameLayout.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMOrange; - btnRoomFrameLayout.BorderWidth = 0; - curentOldRoom = btnRoom; - curentOldRoomFrameLayout = btnRoomFrameLayout; - curRoom = room; - index2 = i; - } - else - { - btnRoom.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3; - btnRoomFrameLayout.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMMidFrameLayout; - btnRoomFrameLayout.BorderWidth = 1; - } + Height = Application.GetMinReal(159), + Width = Application.GetMinReal(50), + Y = Application.GetRealHeight(23), + X = Application.GetRealWidth(5), + BorderWidth = 1, + }; + btnHorizontalScrolViewLayout.AddChidren(btnRoomFrameLayoutEmpty); } - EventHandler<MouseEventArgs> eHandlerRoom = (sender, e) => { if (!btnRoom.IsSelected) @@ -290,24 +415,9 @@ 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; - RefreshDeviceList(curRoom); - if (curTypeDeviceList.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) @@ -315,56 +425,151 @@ 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; - RefreshDeviceList(curRoom); - if (curTypeDeviceList.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; + RefreshDeviceList(curRoom); + if (curTypeDeviceList.Count == 0) + { + btnChooseKeyMode.Enable = false; + btnChooseKeyMode.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect; + } + else + { + btnChooseKeyMode.Enable = true; + btnChooseKeyMode.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + } + if (targetList.Count == 0) + { + btnChooseKeyMode.Enable = false; + btnChooseKeyMode.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect; + } + else + { + btnChooseKeyMode.Enable = true; + btnChooseKeyMode.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; } }; 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); + RefreshDeviceList(curRoom); } /// <summary> - /// 鎸夐敭缁戝畾鍦烘櫙琛ㄦ樉绀� + /// 褰撳墠鎸夐敭鎵�鏈夋樉绀烘埧闂寸殑鎵�鏈夎澶囧鐞� + /// </summary> + /// <returns></returns> + List<CommonDevice> GetALlDispalyRoomDeviceList() + { + currentKeyAllRoomDeviceList.Clear(); + var listAllRoom = HdlRoomLogic.Current.GetAllListRooms(); + switch (curDeviceBindType) + { + case "AddSwitch": + foreach (var r in listAllRoom) + { + if (r.ListDevice.Count == 0) + { + continue; + } + if (r.IsLove == true) + { + continue; + } + foreach (var deviceKeys in r.ListDevice) + { + var device = LocalDevice.Current.GetDevice(deviceKeys); + if (device != null) + { + var dev = device.InClusterList.Find(obj => (obj != null) && (obj.InCluster == 6)); + if (dev != null) + { + currentKeyAllRoomDeviceList.Add(device); + } + } + } + } + break; + case "AddDimmer": + foreach (var r in listAllRoom) + { + if (r.ListDevice.Count == 0) + { + continue; + } + if (r.IsLove == true) + { + continue; + } + foreach (var deviceKeys in r.ListDevice) + { + var device = LocalDevice.Current.GetDevice(deviceKeys); + if (device != null) + { + var dev = device.InClusterList.Find(obj => (obj != null) && (obj.InCluster == 8)); + if (dev != null) + { + currentKeyAllRoomDeviceList.Add(device); + } + } + } + } + break; + case "AddCurtain": + foreach (var r in listAllRoom) + { + if (r.ListDevice.Count == 0) + { + continue; + } + if (r.IsLove == true) + { + continue; + } + foreach (var deviceKeys in r.ListDevice) + { + var device = LocalDevice.Current.GetDevice(deviceKeys); + if (device != null) + { + var dev = device.InClusterList.Find(obj => (obj != null) && (obj.InCluster == 258)); + if (dev != null) + { + currentKeyAllRoomDeviceList.Add(device); + } + } + } + } + break; + } + return currentKeyAllRoomDeviceList; + } + + /// <summary> + /// 鎸夐敭缁戝畾鐩爣琛ㄦ樉绀� /// </summary> /// <param name="gateway">Gateway.</param> /// <param name="key">Key.</param> void RefreshDeviceList(Shared.Common.Room curRoom) { midVerticalScrolViewLayout.RemoveAll(); - curTypeDeviceList.Clear(); switch (curDeviceBindType) { case "AddSwitch": - foreach (var device in curRoom.DeviceUIList) + foreach (var deviceKeys in curRoom.ListDevice) { - if (device.CommonDevice != null) + var device = LocalDevice.Current.GetDevice(deviceKeys); + if (device != null) { - var dev = device.CommonDevice.InClusterList.Find(obj => (obj != null) && (obj.InCluster == 6)); + var dev = device.InClusterList.Find(obj => (obj != null) && (obj.InCluster == 6)); if (dev != null) { curTypeDeviceList.Add(device); @@ -373,11 +578,12 @@ } break; case "AddDimmer": - foreach (var device in curRoom.DeviceUIList) + foreach (var deviceKeys in curRoom.ListDevice) { - if (device.CommonDevice != null) + var device = LocalDevice.Current.GetDevice(deviceKeys); + if (device != null) { - var dev = device.CommonDevice.InClusterList.Find(obj => (obj != null) && (obj.InCluster == 8)); + var dev = device.InClusterList.Find(obj => (obj != null) && (obj.InCluster == 8)); if (dev != null) { curTypeDeviceList.Add(device); @@ -386,11 +592,12 @@ } break; case "AddCurtain": - foreach (var device in curRoom.DeviceUIList) + foreach (var deviceKeys in curRoom.ListDevice) { - if (device.CommonDevice != null) + var device = LocalDevice.Current.GetDevice(deviceKeys); + if (device != null) { - var dev = device.CommonDevice.InClusterList.Find(obj => (obj != null) && (obj.InCluster == 258)); + var dev = device.InClusterList.Find(obj => (obj != null) && (obj.InCluster == 258)); if (dev != null) { curTypeDeviceList.Add(device); @@ -402,12 +609,17 @@ int curIndex = 0; foreach (var device in curTypeDeviceList) { + curIndex++; + if (device != null && device.IsOnline == 0) + { + continue; + } #region 缁戝畾琛║I鏄撅紙鏃犳暟鎹鐞嗭級 var rowLayout = new FrameLayout() { Height = Application.GetRealHeight(23 + 127), BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite, - Tag = device.CommonDevice?.DeviceEpointName, + Tag = device.DeviceEpointName, }; midVerticalScrolViewLayout.AddChidren(rowLayout); @@ -418,32 +630,35 @@ Width = Application.GetMinRealAverage(81), Height = Application.GetMinRealAverage(81), UnSelectedImagePath = device.IconPath, - Tag = device.CommonDevice?.DeviceEpointName, + Tag = device.DeviceEpointName, }; rowLayout.AddChidren(devicePic); var btnBindName = new Button() { - Width = Application.GetRealWidth(500 - 120), + Width = Application.GetRealWidth(790), X = devicePic.Right + Application.GetRealWidth(20), TextColor = Shared.Common.ZigbeeColor.Current.TextBlack, TextAlignment = TextAlignment.CenterLeft, - Tag = device.CommonDevice?.DeviceEpointName, + Tag = device.DeviceEpointName, + Text = Common.LocalDevice.Current.GetDeviceEpointName(device), + TextSize = 15, }; rowLayout.AddChidren(btnBindName); var btnChoose = new Button() { - Width = Application.GetRealWidth(60), - Height = Application.GetRealHeight(60), + Width = Application.GetMinReal(60), + Height = Application.GetMinReal(60), X = Application.GetRealWidth(861 + 81), Y = Application.GetRealHeight(35), SelectedImagePath = "DoorLock/SelectedIcon.png", - //Text = device.CommonDevice?.DeviceEpointName, TextColor = Shared.Common.ZigbeeColor.Current.XMWhite, Visible = false, - Tag = device.CommonDevice?.DeviceEpointName, + Tag = device.DeviceEpointName, + Gravity = Gravity.CenterVertical, }; + rowLayout.AddChidren(btnChoose); var line2 = new Button() @@ -456,7 +671,7 @@ }; rowLayout.AddChidren(line2); - if (curIndex == curRoom.SceneUIList.Count - 1) + if (curIndex == curTypeDeviceList.Count) { line2.Visible = false; } @@ -468,15 +683,32 @@ if (!btnChoose.IsSelected) { - targetList.Remove(device.CommonDevice); + targetList.Remove(device); btnChoose.IsSelected = false; btnChoose.Visible = false; } else { - targetList.Add(device.CommonDevice); - btnChoose.IsSelected = true; - btnChoose.Visible = true; + if (targetList.Count > 7) + { + new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFull), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance); + } + else + { + targetList.Add(device); + btnChoose.IsSelected = true; + btnChoose.Visible = true; + } + } + if (targetList.Count == 0) + { + btnChooseKeyMode.Enable = false; + btnChooseKeyMode.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect; + } + else + { + btnChooseKeyMode.Enable = true; + btnChooseKeyMode.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; } }; rowLayout.MouseUpEventHandler += hander; @@ -484,39 +716,188 @@ btnBindName.MouseUpEventHandler += hander; btnChoose.MouseUpEventHandler += hander; - if (device.CommonDevice?.DeviceEpointName == "") + foreach (var bindedDev in targetList) { - btnBindName.Text = device.CommonDevice?.DeviceAddr + "_" + device.CommonDevice?.DeviceEpoint; - } - else - { - btnBindName.Text = device.CommonDevice?.DeviceEpointName; - } - - foreach (var bindedDev in currentKey.bindList) - { - var id = device.CommonDevice?.DeviceAddr + device.CommonDevice?.DeviceEpoint; - if (id == bindedDev.BindMacAddr + bindedDev.BindEpoint) + var id = device.DeviceAddr + device.DeviceEpoint; + if (id == bindedDev.DeviceAddr + bindedDev.DeviceEpoint) { btnChoose.IsSelected = true; btnChoose.Visible = true; - targetList.Add(device.CommonDevice); } } - curIndex++; + } + if (targetList.Count == 0) + { + btnChooseKeyMode.Enable = false; + btnChooseKeyMode.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect; + } + else + { + btnChooseKeyMode.Enable = true; + btnChooseKeyMode.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; } } - public void DeviceInfoChange(CommonDevice common, string typeTag) + /// <summary> + /// 閫夋嫨妤煎眰鐨勪晶杈规爮 + /// </summary> + void SideslipFramelayout() { - } + var dialog = new Dialog + { + }; + dialog.Show(); - public void ChangedILogicStatus(ZigBee.Device.Logic logic) - { - } + var flMain = new FrameLayout { BackgroundColor = 0x00000000 }; + dialog.AddChidren(flMain); + flMain.MouseUpEventHandler += (sender11, e11) => + { + dialog.Close(); + }; - public void ChangedISceneStatus(Scene scene) - { + var sidelipFrameLayout = new FrameLayout() + { + Width = Application.GetMinReal(449), + Y = Application.GetRealHeight(161), + X = Application.GetRealWidth(596), + BackgroundImagePath = "DoorLock/SideslipPic.png", + }; + flMain.AddChidren(sidelipFrameLayout); + + var btnSelectFloor = new Button() + { + Width = Application.GetRealWidth(200), + Height = Application.GetRealHeight(58), + X = Application.GetRealWidth(81), + Y = Application.GetRealHeight(81), + TextColor = Shared.Common.ZigbeeColor.Current.XMBlack, + TextSize = 14, + TextAlignment = TextAlignment.CenterLeft, + TextID = R.MyInternationalizationString.SelectFloor, + IsBold = true, + }; + sidelipFrameLayout.AddChidren(btnSelectFloor); + + var sidelipVerticalScrolViewLayout = new VerticalScrolViewLayout() + { + Height = Application.GetRealHeight(600), + Y = btnSelectFloor.Bottom + Application.GetRealHeight(45), + }; + sidelipFrameLayout.AddChidren(sidelipVerticalScrolViewLayout); + + Button oldbutton = null; + Button oldbuttonText = null; + int count = 0; + foreach (var floorId in dicFloor.Keys) + { + count++; + var rowFrameLayout = new RowLayout() + { + Height = Application.GetRealHeight(152), + LineColor = Shared.Common.ZigbeeColor.Current.XMRowLine, + X = Application.GetRealWidth(81), + }; + sidelipVerticalScrolViewLayout.AddChidren(rowFrameLayout); + + var btnAllMethod = new Button() + { + Width = Application.GetMinReal(81), + Height = Application.GetMinReal(81), + Gravity = Gravity.CenterVertical, + UnSelectedImagePath = "Floor/Floor.png", + SelectedImagePath = "Floor/FloorSelected.png", + }; + rowFrameLayout.AddChidren(btnAllMethod); + + var btnMethodText = new Button() + { + Width = Application.GetRealWidth(311), + Height = Application.GetRealHeight(58), + X = Application.GetRealWidth(92), + Gravity = Gravity.CenterVertical, + TextColor = Shared.Common.ZigbeeColor.Current.XMGray3, + TextSize = 14, + TextAlignment = TextAlignment.CenterLeft, + Text = dicFloor[floorId], + }; + rowFrameLayout.AddChidren(btnMethodText); + + if (currentKey.currentSelectFloorId == floorId) + { + btnAllMethod.IsSelected = true; + btnAllMethod.IsBold = true; + btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack; + } + + string curFloorId = floorId; + EventHandler<MouseEventArgs> hander = (sender, e) => + { + if (currentKey.currentSelectFloorId == curFloorId) + { + return; + } + currentKey.currentSelectFloorId = curFloorId; + btnFloorText.Text = dicFloor[floorId]; + roomList.Clear(); + + if (!btnMethodText.IsSelected) + { + if (oldbutton != null) + { + oldbutton.IsSelected = false; + } + if (oldbuttonText != null) + { + oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3; + } + oldbutton = btnMethodText; + oldbuttonText = btnMethodText; + btnMethodText.IsSelected = true; + oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack; + oldbuttonText.IsBold = true; + } + + //鑾峰彇妤煎眰瀵瑰簲鐨勬埧闂� + var listAllRoom = HdlRoomLogic.Current.GetAllListRooms(); + foreach (var room in listAllRoom) + { + if (room.FloorId == currentKey.currentSelectFloorId) + { + roomList.Add(room); + } + } + Shared.Common.Room curRoom = new Shared.Common.Room(); + if (roomList.Count != 0) + { + curRoom = roomList[0]; + } + else + { + curRoom = new Shared.Common.Room(); + roomList.Add(curRoom); + } + int index = 0; + RefreshRoomList(curRoom, btnChooseKeyMode, ref index); + + dialog.Close(); + }; + btnAllMethod.MouseUpEventHandler += hander; + rowFrameLayout.MouseUpEventHandler += hander; + btnMethodText.MouseUpEventHandler += hander; + } + + if (count == 0) + { + sidelipFrameLayout.Height = 0; + } + else if (count <= 4 && count > 0) + { + sidelipFrameLayout.Height = Application.GetRealHeight(180) + count * Application.GetRealHeight(150); + } + else + { + sidelipFrameLayout.Height = Application.GetMinReal(780); + } } } } -- Gitblit v1.8.0