using System;
using System.Collections.Generic;
using System.Text;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.Gateway
{
///
/// 网关的历史版本界面
///
public class GatewayHistoryFirmwareVersionForm : UserCenterCommonForm
{
///
/// 要升级的网关
///
private ZbGateway upDatezbGateway = null;
///
/// 虚拟设备的固件信息
///
private FirmwareVersionInfo virtualFirmware = null;
///
/// 协调器新版本的固件信息
///
private FirmwareVersionInfo coordinatorFirmware = null;
///
/// 网关新版本的固件信息
///
private FirmwareVersionInfo gatewayFirmware = null;
///
/// 列表控件
///
private VerticalScrolViewLayout listView = null;
///
/// 虚拟驱动号
///
private List listVode = null;
///
/// 界面关闭的Action(虚拟设备,协调器,网关)
///
public Action> FormCloseAction = null;
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
/// 网关
/// 虚拟设备的固件信息
/// 协调器新版本的固件信息
/// 网关新版本的固件信息
/// 虚拟驱动
public void ShowForm(ZbGateway i_zbGateway, FirmwareVersionInfo i_virtualFirmware,
FirmwareVersionInfo i_coordinatorFirmware, FirmwareVersionInfo i_gatewayFirmware, List i_listVode)
{
this.upDatezbGateway = i_zbGateway;
this.virtualFirmware = i_virtualFirmware;
this.coordinatorFirmware = i_coordinatorFirmware;
this.gatewayFirmware = i_gatewayFirmware;
this.listVode = i_listVode;
//设置标题信息
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uHistoryVersion) + "(测试版,后面估计会删除)");
//初始化中部控件
this.InitMiddleFrame();
}
///
/// 初始化中部控件
///
private void InitMiddleFrame()
{
listView = new VerticalScrolViewLayout();
listView.Height = bodyFrameLayout.Height;
bodyFrameLayout.AddChidren(listView);
//网关
var listData1 = FirmwareUpdateLogic.GetFirmwareVersionListInfo(FirmwareLevelType.Linux,
Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "LinuxHWVersion").ToString(),
Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "LinuxImageType").ToString());
//协调器
var listData2 = FirmwareUpdateLogic.GetFirmwareVersionListInfo(FirmwareLevelType.Coordinator,
Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "ZbHWVersion").ToString(),
Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "ZbImageType").ToString());
//虚拟驱动
var listData3 = new List();
if (this.listVode != null && this.listVode.Count > 0)
{
//如果这个网关要有虚拟驱动这个东西的时候才考虑
listData3 = FirmwareUpdateLogic.GetFirmwareVersionListInfo(FirmwareLevelType.VirtualDevice,
this.listVode[0].DriveHwVersion.ToString(),
this.listVode[0].DriveImageType.ToString());
}
new System.Threading.Thread(() =>
{
string fVersion = Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "LinuxFWVersion").ToString();
string imageType = Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "LinuxImageType").ToString();
foreach (var data in listData1)
{
//if (data.ImagType == imageType && fVersion == data.FirmwareVersion)
//{
// //同一个东西,不显示出来
// continue;
//}
Application.RunOnMainThread(() =>
{
this.AddRowlayout(data, FirmwareLevelType.Linux);
});
}
fVersion = Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "ZbFWVersion").ToString();
imageType = Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "ZbImageType").ToString();
foreach (var data in listData2)
{
if (data.ImagType == imageType && Convert.ToInt32(fVersion) == data.FirmwareVersion)
{
//同一个东西,不显示出来
continue;
}
Application.RunOnMainThread(() =>
{
this.AddRowlayout(data, FirmwareLevelType.Coordinator);
});
}
imageType = this.listVode[0].DriveImageType.ToString();
foreach (var data in listData3)
{
if (data.ImagType == imageType && this.listVode[0].DriveFwVersion == data.FirmwareVersion)
{
//同一个东西,不显示出来
continue;
}
Application.RunOnMainThread(() =>
{
this.AddRowlayout(data, FirmwareLevelType.VirtualDevice);
});
}
})
{ IsBackground = true }.Start();
}
///
/// 添加行
///
///
///
private void AddRowlayout(FirmwareVersionInfo info, FirmwareLevelType levelType)
{
var rowlayout = new StatuRowLayout(listView);
//图标
var btnIcon = new RowLeftIconView();
Common.LocalGateway.Current.SetGatewayIcon(btnIcon, this.upDatezbGateway);
rowlayout.AddChidren(btnIcon);
//指定的网关
var btnGateway = new RowTopBlackView();
btnGateway.BackgroundColor = UserCenterColor.Current.Transparent;
btnGateway.Text = info.ShowName;
rowlayout.AddChidren(btnGateway);
//固件信息
var btnVersion = new RowBottomBlackView();
btnVersion.Text = Common.LocalDevice.Current.AppendVersion(info.FirmwareVersion);
rowlayout.AddChidren(btnVersion);
//向右的图标
rowlayout.AddRightIconControl();
rowlayout.MouseUpEvent += (sender, e) =>
{
string gwID = Common.LocalGateway.Current.GetGatewayId(upDatezbGateway);
if (FirmwareUpdateResourse.dicGatewayUpdateList.ContainsKey(gwID) == true)
{
this.CloseForm();
return;
}
if (levelType == FirmwareLevelType.Linux)
{
this.gatewayFirmware = info;
}
else if (levelType == FirmwareLevelType.Coordinator)
{
this.coordinatorFirmware = info;
}
else if (levelType == FirmwareLevelType.VirtualDevice)
{
this.virtualFirmware = info;
this.virtualFirmware.VirtualCode = this.listVode[0].DriveCode;
}
if (FormCloseAction != null)
{
FormCloseAction(this.virtualFirmware, this.coordinatorFirmware, this.gatewayFirmware, this.listVode);
}
this.CloseForm();
};
}
}
}