using System;
using System.Collections.Generic;
using System.Text;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.GatewayUpdate
{
///
/// 网关的历史版本界面
///
public class GatewayHistoryFirmwareVersionForm : EditorCommonForm
{
///
/// 要升级的网关
///
private ZbGateway upDatezbGateway = null;
///
/// 虚拟设备的固件信息
///
private FirmwareVersionInfo virtualFirmware = null;
///
/// 协调器新版本的固件信息
///
private FirmwareVersionInfo coordinatorFirmware = null;
///
/// 网关新版本的固件信息
///
private FirmwareVersionInfo gatewayFirmware = null;
///
/// 列表控件
///
private VerticalListControl listView = null;
///
/// 虚拟驱动号
///
private List listVode = null;
///
/// 界面关闭的Action(虚拟设备,协调器,网关)
///
public Action> SelectFirmwareInfoEvent = 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()
{
//清空bodyFrame
this.ClearBodyFrame();
listView = new VerticalListControl();
listView.Height = bodyFrameLayout.Height;
listView.BackgroundColor = UserCenterColor.Current.White;
bodyFrameLayout.AddChidren(listView);
//网关
var listData1 = HdlFirmwareUpdateLogic.Current.GetFirmwareVersionListInfo(FirmwareLevelType.Linux,
upDatezbGateway.LinuxHardVersion.ToString(),
upDatezbGateway.LinuxImageType.ToString());
//协调器
var listData2 = HdlFirmwareUpdateLogic.Current.GetFirmwareVersionListInfo(FirmwareLevelType.A协调器,
upDatezbGateway.CoordinatorHardVersion.ToString(),
upDatezbGateway.CoordinatorImageId.ToString());
//虚拟驱动
var listData3 = new List();
if (this.listVode != null && this.listVode.Count > 0)
{
//如果这个网关要有虚拟驱动这个东西的时候才考虑
listData3 = HdlFirmwareUpdateLogic.Current.GetFirmwareVersionListInfo(FirmwareLevelType.A虚拟驱动,
this.listVode[0].DriveHwVersion.ToString(),
this.listVode[0].DriveImageType.ToString());
}
HdlThreadLogic.Current.RunMainInThread(() =>
{
bool canAddTitle = true;
int fVersion1 = upDatezbGateway.LinuxFirmwareVersion;
string imageType1 = upDatezbGateway.LinuxImageType.ToString();
foreach (var data in listData1)
{
if (data.ImagType == imageType1 && fVersion1 == data.FirmwareVersion)
{
//同一个东西,不显示出来
continue;
}
if (canAddTitle == true)
{
this.AddTitleRowlayout("Linux模块");
canAddTitle = false;
}
this.AddRowlayout(data, FirmwareLevelType.Linux);
}
canAddTitle = true;
int fVersion2 = upDatezbGateway.CoordinatorFirmwareVersion;
string imageType2 = upDatezbGateway.CoordinatorImageId.ToString();
foreach (var data in listData2)
{
if (data.ImagType == imageType2 && fVersion2 == data.FirmwareVersion)
{
//同一个东西,不显示出来
continue;
}
if (canAddTitle == true)
{
this.AddTitleRowlayout("协调器模块");
canAddTitle = false;
}
this.AddRowlayout(data, FirmwareLevelType.A协调器);
}
canAddTitle = true;
string imageType3 = this.listVode[0].DriveImageType.ToString();
foreach (var data in listData3)
{
if (data.ImagType == imageType3 && this.listVode[0].DriveFwVersion == data.FirmwareVersion)
{
//同一个东西,不显示出来
continue;
}
if (canAddTitle == true)
{
this.AddTitleRowlayout("虚拟设备模块");
canAddTitle = false;
}
this.AddRowlayout(data, FirmwareLevelType.A虚拟驱动);
}
listView.AdjustRealHeight(Application.GetRealHeight(23));
});
}
///
/// 添加行
///
///
///
private void AddRowlayout(FirmwareVersionInfo info, FirmwareLevelType levelType)
{
var rowlayout = new FrameRowControl();
this.listView.AddChidren(rowlayout);
//图标
var btnIcon = rowlayout.AddLeftIcon(81);
HdlGatewayLogic.Current.SetGatewayIcon(btnIcon, this.upDatezbGateway);
rowlayout.AddChidren(btnIcon);
//指定的网关
rowlayout.AddTopView(info.ShowName, 800);
//固件信息
string firmwareText = HdlDeviceCommonLogic.Current.AppendVersion(info.FirmwareVersion);
firmwareText += " " + HdlCommonLogic.Current.ConvertUtcTimeToLocalTime(info.CreatedOnUtc).ToString("yyyy/MM/dd HH:mm:ss");
rowlayout.AddBottomView(firmwareText, 800);
//向右的图标
rowlayout.AddRightArrow();
rowlayout.AddBottomLine();
rowlayout.ButtonClickEvent += (sender, e) =>
{
if (HdlFirmwareUpdateResourse.dicUpdateList.ContainsKey(upDatezbGateway.GwId) == true)
{
this.CloseForm();
return;
}
if (levelType == FirmwareLevelType.Linux)
{
this.gatewayFirmware = info;
}
else if (levelType == FirmwareLevelType.A协调器)
{
this.coordinatorFirmware = info;
}
else if (levelType == FirmwareLevelType.A虚拟驱动)
{
this.virtualFirmware = info;
this.virtualFirmware.VirtualCode = this.listVode[0].DriveCode;
}
SelectFirmwareInfoEvent?.Invoke(this.virtualFirmware, this.coordinatorFirmware, this.gatewayFirmware, this.listVode);
this.CloseForm();
};
}
///
/// 添加标题行
///
///
private void AddTitleRowlayout(string title)
{
var rowlayout = new FrameRowControl();
rowlayout.UseClickStatu = false;
this.listView.AddChidren(rowlayout);
rowlayout.AddLeftCaption(title, 800);
}
///
/// 界面关闭
///
public override void CloseFormBefore()
{
SelectFirmwareInfoEvent = null;
base.CloseFormBefore();
}
}
}