using System; using System.Collections.Generic; namespace Shared.Phone.UserCenter { /// /// 房间选择画面, /// 它从[DeviceInfoForm,AddedDeviceInfoForm]画面打开 /// public class SelectRoomForm : UserCenterCommonForm { /// /// 房间选择确定后的回调函数(房间名) /// public Action> ActionSelectRoom = null; /// /// 列表控件 /// private VerticalScrolViewLayout listView = null; /// /// 设备原来的房间 /// private List listRoomName = new List(); /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// /// 已经选了的房间名字 public void ShowForm(List i_listRoomName) { this.listRoomName = i_listRoomName; //设置标题信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uSelectRoom)); //完成 var btnfinish = new TopLayoutFinshView(); topFrameLayout.AddChidren(btnfinish); btnfinish.MouseUpEventHandler += (sender, e) => { List listName = this.GetRoomNameFromRow(); if (ActionSelectRoom != null) { ActionSelectRoom(listName); } this.CloseForm(); }; listView = new VerticalScrolViewLayout(); listView.Height = bodyFrameLayout.Height; bodyFrameLayout.AddChidren(listView); //添加房间行 this.AddAllRoomRow(); } /// /// 添加所有房间行 /// private void AddAllRoomRow() { new System.Threading.Thread(() => { foreach (Common.Room room in Common.Room.Lists) { if (room.IsSharedRoom == true && this.listRoomName.Contains(room.Name) == false) { //分享的房间不能显示,如果该设备本来就属于分享的房间,则可以显示,但不能取消 continue; } Application.RunOnMainThread(() => { this.AddRoomRow(room); }); } }) { IsBackground = true }.Start(); } /// /// 添加房间行 /// /// Room. private void AddRoomRow(Common.Room room) { var row = new RoomSelectRow(listView, room); //设置选择状态 if (this.listRoomName.Contains(room.Name) == true) { if (room.IsSharedRoom == true) { //分享的房间不允许取消 row.SelectCancel = false; } row.IsSelected = true; } } /// /// 获取选中的房间 /// /// private List GetRoomNameFromRow() { List listName = new List(); for (int i = 0; ; i++) { var row = (RoomSelectRow)this.listView.GetChildren(i); if (row == null) { break; } if (row.IsSelected == true) { listName.Add(row.RoomName); } } return listName; } } }