From 48ba446936b51fffafa7c3600c0dadc6ac0e8c20 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期五, 10 七月 2020 10:52:13 +0800 Subject: [PATCH] 2020-07-10-01 --- ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddDevicePage.cs | 275 ++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 170 insertions(+), 105 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddDevicePage.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddDevicePage.cs index c57bf0f..441b86e 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddDevicePage.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddDevicePage.cs @@ -1,26 +1,14 @@ 锘縰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 + public class AddDevicePage : BindCommonLayout { - /// <summary> - /// 鎸夐敭妯″紡鎺ユ敹 - /// </summary> - /// <param name="common">Common.</param> - public void Changed(CommonDevice common) - { - Shared.Application.RunOnMainThread(() => - { - }); - } - /// 鏋勯�犲嚱鏁� /// </summary> /// <param name="doorLock"></param> @@ -30,27 +18,68 @@ 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; - bool IsInitEntry = false;//鏄惁棣栨杩涘叆璇ラ〉 - List<DeviceUI> currentKeyAllRoomDeviceList = new List<DeviceUI>(); + /// <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(); @@ -73,20 +102,20 @@ { RemoveFromParent(); }; - this.btnTitle.Width = Application.GetRealWidth(1080 - 161 - 200 - 58); + 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(830), + X = Application.GetRealWidth(619), }; this.titleFrameLayout.AddChidren(btnAddFrameLayout); btnFloorText = new Button { - Width = Application.GetRealWidth(110), + Width = Application.GetRealWidth(300 - 69 - 58), X = Application.GetRealWidth(15), Text = Language.StringByID(R.MyInternationalizationString.FirstFloor), TextColor = Shared.Common.ZigbeeColor.Current.XMBlack, @@ -96,36 +125,47 @@ }; 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(69), - Width = Application.GetRealWidth(69), - X = Application.GetRealWidth(200 - 77), + Height = Application.GetMinReal(69), + Width = Application.GetMinReal(69), UnSelectedImagePath = "BindPic/BindDown.png", Gravity = Gravity.CenterVertical, }; - btnAddFrameLayout.AddChidren(btnBindDown); + btnBindDownFrameLayout.AddChidren(btnBindDown); if (Common.Config.Instance.Home.FloorDics.Count == 0) { btnBindDown.Visible = false; } - btnBindDown.MouseDownEventHandler += (sender, e) => + 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(200); + btnAddFrameLayout.Width = Application.GetRealWidth(300); } MidFrameLayoutContent(btnFloorText); } + /// <summary> + /// 涓儴甯冨眬 + /// </summary> async void MidFrameLayoutContent(Button btnFloorText) { #region UI @@ -177,14 +217,15 @@ #region 鏁版嵁澶勭悊 //鑾峰彇妤煎眰 - dicFloor = Common.Room.CurrentRoom.GetFloorSortList(); + dicFloor = HdlRoomLogic.Current.GetFloorSortList(); currentKey.currentSelectFloorId = BindInfo.GetCurrentSelectFloorId(); btnFloorText.Text = BindInfo.GetCurrentSelectFloorIdName(); if (Common.Config.Instance.Home.FloorDics.Count == 0) { // 鑾峰彇娌℃湁妤煎眰鎴块棿 - foreach (var room in Shared.Common.Room.Lists) + var listAllRoom = HdlRoomLogic.Current.GetAllListRooms(); + foreach (var room in listAllRoom) { if (string.IsNullOrEmpty(room.FloorId)) { @@ -195,7 +236,8 @@ else { // 鑾峰彇妤煎眰瀵瑰簲瀵规埧闂� - foreach (var room in Shared.Common.Room.Lists) + var listAllRoom = HdlRoomLogic.Current.GetAllListRooms(); + foreach (var room in listAllRoom) { if (room.FloorId == currentKey.currentSelectFloorId) { @@ -211,13 +253,13 @@ { foreach (var devA in currentKeyAllRoomDeviceList) { - var id = devA.CommonDevice?.DeviceAddr + devA.CommonDevice?.DeviceEpoint; + 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.CommonDevice); + oldTargetList.Add(id, devA); } } } @@ -312,15 +354,17 @@ continue; } roomTempList.Add(room); - if (roomTempList.Count != 0) - { - curRoom = roomTempList[0]; - } + } + + for (int i = 0; i < roomTempList.Count; i++) + { + var room = roomTempList[i]; + curRoom = roomTempList[0]; var btnRoomFrameLayout = new FrameLayout { - Height = Application.GetRealHeight(159), - Width = Application.GetRealWidth(255), + Height = Application.GetMinReal(159), + Width = Application.GetMinReal(255), Y = Application.GetRealHeight(23), X = Application.GetRealWidth(5), BackgroundImagePath = "Item/RoomIconBackground.png", @@ -349,6 +393,18 @@ curentOldRoom = btnRoom; curentOldRoomFrameLayout = btnRoomFrameLayout; } + if (index == roomTempList.Count - 1 && index > 3) + { + var btnRoomFrameLayoutEmpty = new FrameLayout + { + 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) @@ -374,7 +430,6 @@ curentOldRoomFrameLayout.BackgroundImagePath = "Item/RoomIconBackgroundSelected.png"; } curRoom = room; - currentKey.RoomId = room.Id; RefreshDeviceList(curRoom); if (curTypeDeviceList.Count == 0) { @@ -405,16 +460,20 @@ RefreshDeviceList(curRoom); } - //褰撳墠鎸夐敭鎵�鏈夋樉绀烘埧闂寸殑鎵�鏈夎澶囧鐞� - List<DeviceUI> GetALlDispalyRoomDeviceList() + /// <summary> + /// 褰撳墠鎸夐敭鎵�鏈夋樉绀烘埧闂寸殑鎵�鏈夎澶囧鐞� + /// </summary> + /// <returns></returns> + List<CommonDevice> GetALlDispalyRoomDeviceList() { currentKeyAllRoomDeviceList.Clear(); + var listAllRoom = HdlRoomLogic.Current.GetAllListRooms(); switch (curDeviceBindType) { case "AddSwitch": - foreach (var r in Shared.Common.Room.Lists) + foreach (var r in listAllRoom) { - if (r.DeviceUIList.Count == 0) + if (r.ListDevice.Count == 0) { continue; } @@ -422,11 +481,12 @@ { continue; } - foreach (var device in r.DeviceUIList) + foreach (var deviceKeys in r.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) { currentKeyAllRoomDeviceList.Add(device); @@ -436,9 +496,9 @@ } break; case "AddDimmer": - foreach (var r in Shared.Common.Room.Lists) + foreach (var r in listAllRoom) { - if (r.DeviceUIList.Count == 0) + if (r.ListDevice.Count == 0) { continue; } @@ -446,11 +506,12 @@ { continue; } - foreach (var device in r.DeviceUIList) + foreach (var deviceKeys in r.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) { currentKeyAllRoomDeviceList.Add(device); @@ -460,9 +521,9 @@ } break; case "AddCurtain": - foreach (var r in Shared.Common.Room.Lists) + foreach (var r in listAllRoom) { - if (r.DeviceUIList.Count == 0) + if (r.ListDevice.Count == 0) { continue; } @@ -470,11 +531,12 @@ { continue; } - foreach (var device in r.DeviceUIList) + foreach (var deviceKeys in r.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) { currentKeyAllRoomDeviceList.Add(device); @@ -488,7 +550,7 @@ } /// <summary> - /// 鎸夐敭缁戝畾鍦烘櫙琛ㄦ樉绀� + /// 鎸夐敭缁戝畾鐩爣琛ㄦ樉绀� /// </summary> /// <param name="gateway">Gateway.</param> /// <param name="key">Key.</param> @@ -499,11 +561,12 @@ 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); @@ -512,11 +575,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); @@ -525,11 +589,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); @@ -542,7 +607,7 @@ foreach (var device in curTypeDeviceList) { curIndex++; - if (device.CommonDevice != null && device.CommonDevice.IsOnline == 0) + if (device != null && device.IsOnline == 0) { continue; } @@ -551,7 +616,7 @@ { Height = Application.GetRealHeight(23 + 127), BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite, - Tag = device.CommonDevice?.DeviceEpointName, + Tag = device.DeviceEpointName, }; midVerticalScrolViewLayout.AddChidren(rowLayout); @@ -562,7 +627,7 @@ Width = Application.GetMinRealAverage(81), Height = Application.GetMinRealAverage(81), UnSelectedImagePath = device.IconPath, - Tag = device.CommonDevice?.DeviceEpointName, + Tag = device.DeviceEpointName, }; rowLayout.AddChidren(devicePic); @@ -572,22 +637,25 @@ 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", 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() @@ -612,7 +680,7 @@ if (!btnChoose.IsSelected) { - targetList.Remove(device.CommonDevice); + targetList.Remove(device); btnChoose.IsSelected = false; btnChoose.Visible = false; } @@ -624,7 +692,7 @@ } else { - targetList.Add(device.CommonDevice); + targetList.Add(device); btnChoose.IsSelected = true; btnChoose.Visible = true; } @@ -645,17 +713,9 @@ btnBindName.MouseUpEventHandler += hander; btnChoose.MouseUpEventHandler += hander; - if (string.IsNullOrEmpty(device.CommonDevice?.DeviceEpointName)) - { - btnBindName.Text = device.CommonDevice?.DeviceAddr + "_" + device.CommonDevice?.DeviceEpoint; - } - else - { - btnBindName.Text = device.CommonDevice?.DeviceEpointName; - } foreach (var bindedDev in targetList) { - var id = device.CommonDevice?.DeviceAddr + device.CommonDevice?.DeviceEpoint; + var id = device.DeviceAddr + device.DeviceEpoint; if (id == bindedDev.DeviceAddr + bindedDev.DeviceEpoint) { btnChoose.IsSelected = true; @@ -675,7 +735,9 @@ } } - // 渚ц竟瀵艰埅鏍� + /// <summary> + /// 閫夋嫨妤煎眰鐨勪晶杈规爮 + /// </summary> void SideslipFramelayout() { var dialog = new Dialog @@ -692,8 +754,7 @@ var sidelipFrameLayout = new FrameLayout() { - Height = Application.GetRealHeight(783), - Width = Application.GetRealWidth(449), + Width = Application.GetMinReal(449), Y = Application.GetRealHeight(161), X = Application.GetRealWidth(596), BackgroundImagePath = "DoorLock/SideslipPic.png", @@ -717,17 +778,19 @@ var sidelipVerticalScrolViewLayout = new VerticalScrolViewLayout() { Height = Application.GetRealHeight(600), - Y = btnSelectFloor.Bottom, + 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(150), + Height = Application.GetRealHeight(152), LineColor = Shared.Common.ZigbeeColor.Current.XMRowLine, X = Application.GetRealWidth(81), }; @@ -735,9 +798,9 @@ var btnAllMethod = new Button() { - Width = Application.GetRealWidth(81), - Height = Application.GetRealHeight(81), - Y = Application.GetRealHeight(55), + Width = Application.GetMinReal(81), + Height = Application.GetMinReal(81), + Gravity = Gravity.CenterVertical, UnSelectedImagePath = "Floor/Floor.png", SelectedImagePath = "Floor/FloorSelected.png", }; @@ -748,7 +811,7 @@ Width = Application.GetRealWidth(311), Height = Application.GetRealHeight(58), X = Application.GetRealWidth(92), - Y = Application.GetRealHeight(69), + Gravity = Gravity.CenterVertical, TextColor = Shared.Common.ZigbeeColor.Current.XMGray3, TextSize = 14, TextAlignment = TextAlignment.CenterLeft, @@ -792,7 +855,8 @@ } //鑾峰彇妤煎眰瀵瑰簲鐨勬埧闂� - foreach (var room in Shared.Common.Room.Lists) + var listAllRoom = HdlRoomLogic.Current.GetAllListRooms(); + foreach (var room in listAllRoom) { if (room.FloorId == currentKey.currentSelectFloorId) { @@ -818,18 +882,19 @@ rowFrameLayout.MouseUpEventHandler += hander; btnMethodText.MouseUpEventHandler += hander; } - } - public void DeviceInfoChange(CommonDevice common, string typeTag) - { - } - - public void ChangedILogicStatus(ZigBee.Device.Logic logic) - { - } - - public void ChangedISceneStatus(Scene scene) - { + 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