using System;
|
using System.Collections.Generic;
|
using System.Text;
|
using ZigBee.Device;
|
|
namespace Shared.Phone.UserCenter.GatewayUpdate
|
{
|
/// <summary>
|
/// 网关的历史版本界面
|
/// </summary>
|
public class GatewayHistoryFirmwareVersionForm : EditorCommonForm
|
{
|
/// <summary>
|
/// 要升级的网关
|
/// </summary>
|
private ZbGateway upDatezbGateway = null;
|
/// <summary>
|
/// 虚拟设备的固件信息
|
/// </summary>
|
private FirmwareVersionInfo virtualFirmware = null;
|
/// <summary>
|
/// 协调器新版本的固件信息
|
/// </summary>
|
private FirmwareVersionInfo coordinatorFirmware = null;
|
/// <summary>
|
/// 网关新版本的固件信息
|
/// </summary>
|
private FirmwareVersionInfo gatewayFirmware = null;
|
/// <summary>
|
/// 列表控件
|
/// </summary>
|
private VerticalListControl listView = null;
|
/// <summary>
|
/// 虚拟驱动号
|
/// </summary>
|
private List<ZbGatewayData.DriveCodeObj> listVode = null;
|
/// <summary>
|
/// 界面关闭的Action(虚拟设备,协调器,网关)
|
/// </summary>
|
public Action<FirmwareVersionInfo, FirmwareVersionInfo, FirmwareVersionInfo, List<ZbGatewayData.DriveCodeObj>> SelectFirmwareInfoEvent = null;
|
|
/// <summary>
|
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
|
/// </summary>
|
/// <param name="i_zbGateway">网关</param>
|
/// <param name="i_virtualFirmware">虚拟设备的固件信息</param>
|
/// <param name="i_coordinatorFirmware">协调器新版本的固件信息</param>
|
/// <param name="i_gatewayFirmware">网关新版本的固件信息</param>
|
/// <param name="i_listVode">虚拟驱动</param>
|
public void ShowForm(ZbGateway i_zbGateway, FirmwareVersionInfo i_virtualFirmware,
|
FirmwareVersionInfo i_coordinatorFirmware, FirmwareVersionInfo i_gatewayFirmware, List<ZbGatewayData.DriveCodeObj> 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();
|
}
|
|
/// <summary>
|
/// 初始化中部控件
|
/// </summary>
|
private void InitMiddleFrame()
|
{
|
//清空bodyFrame
|
this.ClearBodyFrame();
|
|
listView = new VerticalListControl();
|
listView.Height = bodyFrameLayout.Height;
|
listView.BackgroundColor = UserCenterColor.Current.White;
|
bodyFrameLayout.AddChidren(listView);
|
|
//网关
|
var listData1 = HdlFirmwareUpdateLogic.GetFirmwareVersionListInfo(FirmwareLevelType.Linux,
|
upDatezbGateway.LinuxHardVersion.ToString(),
|
upDatezbGateway.LinuxImageType.ToString());
|
|
//协调器
|
var listData2 = HdlFirmwareUpdateLogic.GetFirmwareVersionListInfo(FirmwareLevelType.Coordinator,
|
upDatezbGateway.CoordinatorHardVersion.ToString(),
|
upDatezbGateway.CoordinatorImageId.ToString());
|
|
//虚拟驱动
|
var listData3 = new List<FirmwareVersionInfo>();
|
if (this.listVode != null && this.listVode.Count > 0)
|
{
|
//如果这个网关要有虚拟驱动这个东西的时候才考虑
|
listData3 = HdlFirmwareUpdateLogic.GetFirmwareVersionListInfo(FirmwareLevelType.VirtualDevice,
|
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.Coordinator);
|
}
|
|
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.VirtualDevice);
|
}
|
listView.AdjustRealHeight(Application.GetRealHeight(23));
|
});
|
}
|
|
/// <summary>
|
/// 添加行
|
/// </summary>
|
/// <param name="info"></param>
|
/// <param name="levelType"></param>
|
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 = Common.LocalDevice.Current.AppendVersion(info.FirmwareVersion);
|
firmwareText += " " + UserCenterLogic.ConvertUtcTimeToLocalTime(info.CreatedOnUtc).ToString("yyyy/MM/dd HH:mm:ss");
|
rowlayout.AddBottomView(firmwareText, 800);
|
|
//向右的图标
|
rowlayout.AddRightArrow();
|
rowlayout.AddBottomLine();
|
|
rowlayout.ButtonClickEvent += (sender, e) =>
|
{
|
if (FirmwareUpdateResourse.dicUpdateList.ContainsKey(upDatezbGateway.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;
|
}
|
|
SelectFirmwareInfoEvent?.Invoke(this.virtualFirmware, this.coordinatorFirmware, this.gatewayFirmware, this.listVode);
|
|
this.CloseForm();
|
};
|
}
|
|
/// <summary>
|
/// 添加标题行
|
/// </summary>
|
/// <param name="title"></param>
|
private void AddTitleRowlayout(string title)
|
{
|
var rowlayout = new FrameRowControl();
|
rowlayout.UseClickStatu = false;
|
this.listView.AddChidren(rowlayout);
|
|
rowlayout.AddLeftCaption(title, 800);
|
}
|
|
/// <summary>
|
/// 界面关闭
|
/// </summary>
|
public override void CloseFormBefore()
|
{
|
SelectFirmwareInfoEvent = null;
|
|
base.CloseFormBefore();
|
}
|
}
|
}
|