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;
}
}
}