using System;
using System.Collections.Generic;
using System.Text;
using ZigBee.Device;
namespace Shared.Phone.UserCenter
{
///
/// 设备选择的界面
///
public class SelectDeviceForm : UserCenterCommonForm
{
///
/// 设备选择确定后的回调函数(此函数在点击确认后,会先关闭界面再执行回调方法,与ActionSelectDeviceEx不共存)
///
public Action> ActionSelectDevice = null;
///
/// 设备选择确定后的回调函数(此函数在点击确认后,不会关闭界面,与ActionSelectDevice不共存,关闭界面请调用CloseForm函数)
///
public Action> ActionSelectDeviceEx = null;
///
/// 列表控件
///
private VerticalScrolViewLayout listView = null;
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
/// 需要显示设备列表(有些界面需要剔除一些不要的设备)
/// 指定哪些设备的初始状态为选中状态(设备的主键)
/// 初始选中状态的设备能否取消 true:可以 false:不允许
public void ShowForm(List i_listShowDevice, List i_listSelectDevice, bool SelcetCancel = true)
{
//设置标题信息
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uSelectDevice));
//完成
var btnfinish = new TopLayoutFinshView();
topFrameLayout.AddChidren(btnfinish);
btnfinish.MouseUpEventHandler += (sender, e) =>
{
List listDevice = this.GetDeviceFromRow();
if (ActionSelectDeviceEx != null)
{
ActionSelectDeviceEx(listDevice);
return;
}
this.CloseForm();
if (ActionSelectDevice != null)
{
ActionSelectDevice(listDevice);
}
};
listView = new VerticalScrolViewLayout();
listView.Height = bodyFrameLayout.Height;
bodyFrameLayout.AddChidren(listView);
//添加所有设备行
this.AddAllDeviceRow(i_listShowDevice, i_listSelectDevice, SelcetCancel);
}
///
/// 添加所有设备行
///
/// 设备列表
/// 指定哪些设备的初始状态为选中状态(设备的主键)
/// 初始选中状态的设备能否取消 true:可以 false:不允许
private void AddAllDeviceRow(List i_listShowDevice, List i_listSelectDevice, bool SelcetCancel = true)
{
new System.Threading.Thread(() =>
{
foreach (CommonDevice device in i_listShowDevice)
{
Application.RunOnMainThread(() =>
{
//添加明细行
this.AddDeviceRow(device, i_listSelectDevice, SelcetCancel);
});
}
})
{ IsBackground = true }.Start();
}
///
/// 添加设备行
///
/// 设备
/// 指定哪些设备的初始状态为选中状态(设备的主键)
/// 初始选中状态的设备能否取消 true:可以 false:不允许
private void AddDeviceRow(CommonDevice device, List i_listSelectDevice, bool SelcetCancel = true)
{
var row = new DeviceSelectRow(listView, device);
//设置选择状态
string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(device);
if (i_listSelectDevice.Contains(mainKeys) == true)
{
row.SelectCancel = SelcetCancel;
row.IsSelected = true;
}
}
///
/// 获取选中的设备
///
///
private List GetDeviceFromRow()
{
List listDevice = new List();
for (int i = 0; ; i++)
{
var row = (DeviceSelectRow)this.listView.GetChildren(i);
if (row == null)
{
break;
}
if (row.IsSelected == true)
{
listDevice.Add(row.device);
}
}
return listDevice;
}
}
}