using System;
using System.Collections.Generic;
using System.Text;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.Gateway
{
///
/// 网关固件信息界面★
///
public class GatewayFirmwareInfoForm : UserCenterCommonForm
{
#region ■ 变量声明___________________________
///
/// 列表控件
///
private VerticalScrolViewLayout listView = null;
///
/// 当前选择的网关
///
private ZbGateway zbGateway = null;
///
/// 升级固件信息(0:Linux新版本 1:协调器新版本 2~X:都是虚拟驱动的)
///
private List listVersionInfo = null;
///
/// 虚拟驱动号
///
private List listVode = null;
#endregion
#region ■ 初始化_____________________________
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
/// 当前选择的网关
public void ShowForm(ZbGateway i_zbGateway)
{
if (zbGateway != null && Common.LocalGateway.Current.GetGatewayId(zbGateway) != Common.LocalGateway.Current.GetGatewayId(i_zbGateway))
{
//不是同一个东西
return;
}
this.zbGateway = i_zbGateway;
//设置标题信息
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uFirmwareInformation));
//初始化中部控件
this.InitMiddleFrame();
}
///
/// 初始化中部控件
///
private void InitMiddleFrame()
{
bodyFrameLayout.RemoveAll();
listView = new VerticalScrolViewLayout();
listView.Height = bodyFrameLayout.Height;
bodyFrameLayout.AddChidren(listView);
if (this.NowFormIsAction() == true)
{
//开启进度条
this.ShowProgressBar();
}
new System.Threading.Thread(async () =>
{
//获取网关新版本信息
this.listVersionInfo = await Common.LocalGateway.Current.GetGatewayAllNewVersion(this.zbGateway);
if (listVersionInfo == null)
{
//关闭进度条
this.CloseProgressBar(ShowReLoadMode.YES);
return;
}
//虚拟驱动号
this.listVode = await Common.LocalGateway.Current.GetListVDDriveCode(this.zbGateway);
//关闭进度条
this.CloseProgressBar();
//添加网关版本行
Application.RunOnMainThread(() =>
{
//添加网关行
this.AddGatewayRow();
//添加协调器行
this.AddCoordinatorRow();
if (listVode != null)
{
//添加虚拟驱动行
this.AddVirtualRow(listVode);
}
//添加固件升级行
this.AddFirmwareUpdateRow();
});
})
{ IsBackground = true }.Start();
}
#endregion
#region ■ 添加网关行_________________________
///
/// 添加网关行
///
private void AddGatewayRow()
{
var row = new StatuRowLayout(listView);
//网关
var btnUpview = new RowCenterView(false);
btnUpview.TextID = R.MyInternationalizationString.uGateWay;
row.AddChidren(btnUpview);
row.AddRightIconControl();
row.MouseUpEvent += (sender, e) =>
{
var form = new GatewayLinuxInfoForm();
this.AddForm(form, zbGateway);
};
}
#endregion
#region ■ 添加协调器行_______________________
///
/// 添加协调器行
///
private void AddCoordinatorRow()
{
var row = new StatuRowLayout(listView);
//协调器
var btnUpview = new RowCenterView(false);
btnUpview.TextID = R.MyInternationalizationString.uCoordinator;
row.AddChidren(btnUpview);
row.AddRightIconControl();
row.MouseUpEvent += (sender, e) =>
{
var form = new GatewayCoordinatorInfoForm();
this.AddForm(form, zbGateway);
};
}
#endregion
#region ■ 添加虚拟驱动行_____________________
///
/// 添加虚拟驱动行
///
/// 虚拟驱动列表
private void AddVirtualRow(List listCode)
{
var row = new StatuRowLayout(listView);
//虚拟驱动
var btnUpview = new RowCenterView(false);
btnUpview.TextID = R.MyInternationalizationString.uVirtualDrive;
row.AddChidren(btnUpview);
row.AddRightIconControl();
row.MouseUpEvent += (sender, e) =>
{
var form = new GatewayVirtualDriveListForm();
this.AddForm(form, listCode);
};
}
#endregion
#region ■ 添加固件升级行_____________________
///
/// 添加固件升级行
///
private void AddFirmwareUpdateRow()
{
var statuRow = new StatuRowLayout();
listView.AddChidren(statuRow);
//固件升级
var btnUpview = new RowCenterView(false);
btnUpview.TextID = R.MyInternationalizationString.uFirmwareUpdate;
statuRow.AddChidren(btnUpview);
//版本向右的图标
statuRow.AddRightIconControl();
if (listVersionInfo[0] != null || listVersionInfo[1] != null || listVersionInfo[2] != null)
{
//提示有新版本
var btnNewVersion = new RowNewVersionTipView();
statuRow.AddChidren(btnNewVersion);
}
statuRow.MouseUpEvent += (sender, e) =>
{
ZbGateway realway = null;
if (Common.LocalGateway.Current.GetRealGateway(ref realway, zbGateway) == false)
{
//错误:网关对象丢失
string msg = Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg);
this.ShowErrorMsg(msg);
return;
}
var form = new GatewayFirmwareUpdateForm();
this.AddForm(form, realway, listVersionInfo[2], listVersionInfo[1], listVersionInfo[0], this.listVode);
};
}
#endregion
}
}