using System;
|
using System.Collections.Generic;
|
using System.Text;
|
using ZigBee.Device;
|
|
namespace Shared.Phone.UserCenter.GatewayManage
|
{
|
/// <summary>
|
/// 网关固件升级的画面
|
/// </summary>
|
public class GatewayFirmwareUpdateForm : 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 List<ZbGatewayData.DriveCodeObj> listVode = 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.uFirmwareUpdate));
|
|
var btnIcon = new MostRightIconControl(69, 69);
|
btnIcon.UnSelectedImagePath = "Item/More.png";
|
topFrameLayout.AddChidren(btnIcon);
|
btnIcon.InitControl();
|
btnIcon.ButtonClickEvent += (sender, e) =>
|
{
|
//菜单控件
|
var frameMenu = new TopRightMenuControl(1);
|
//历史版本
|
string menu1 = Language.StringByID(R.MyInternationalizationString.uHistoryVersion);
|
frameMenu.AddRowMenu(menu1, "", "", () =>
|
{
|
var form = new GatewayHistoryFirmwareVersionForm();
|
form.AddForm(upDatezbGateway, virtualFirmware, coordinatorFirmware, gatewayFirmware, this.listVode);
|
form.FormCloseAction += ((virtualFirmware1, coordinatorFirmware1, gatewayFirmware1, listVode1) =>
|
{
|
//如果这个东西正在升级。则不刷新历史版本
|
string gwID = HdlGatewayLogic.Current.GetGatewayId(upDatezbGateway);
|
if (FirmwareUpdateResourse.dicGatewayUpdateList.ContainsKey(gwID) == false)
|
{
|
//重新刷新界面
|
this.ShowForm(upDatezbGateway, virtualFirmware1, coordinatorFirmware1, gatewayFirmware1, listVode1);
|
}
|
});
|
});
|
};
|
|
//初始化中部控件
|
this.InitMiddleFrame();
|
}
|
|
/// <summary>
|
/// 初始化中部控件
|
/// </summary>
|
private void InitMiddleFrame()
|
{
|
//清空bodyFrame
|
this.ClearBodyFrame();
|
|
//没有新版本
|
if (virtualFirmware == null && coordinatorFirmware == null && gatewayFirmware == null)
|
{
|
//显示已经是新版本
|
this.ShowIsMostNewVersion();
|
}
|
else
|
{
|
//显示存在最新版本
|
this.ShowIsHadNewVersion();
|
}
|
}
|
|
/// <summary>
|
/// 显示已经是新版本
|
/// </summary>
|
private void ShowIsMostNewVersion()
|
{
|
//如果选择的是历史版本,则同步
|
string gwID = HdlGatewayLogic.Current.GetGatewayId(upDatezbGateway);
|
if (FirmwareUpdateResourse.dicGatewayUpdateList.ContainsKey(gwID) == true)
|
{
|
var btnUpdateControl = FirmwareUpdateResourse.dicGatewayUpdateList[gwID];
|
bodyFrameLayout.AddChidren(btnUpdateControl);
|
//初始化升级控件
|
this.InitGatewayUpdateControl(btnUpdateControl);
|
|
return;
|
}
|
|
//当前程序版本
|
var btnVersionMsg = new NormalViewControl(800, true);
|
btnVersionMsg.TextID = R.MyInternationalizationString.uIsMostNewVersion;
|
btnVersionMsg.Y = Application.GetRealHeight(100);
|
btnVersionMsg.TextAlignment = TextAlignment.Center;
|
btnVersionMsg.Gravity = Gravity.CenterHorizontal;
|
bodyFrameLayout.AddChidren(btnVersionMsg);
|
|
//版本
|
var btnVersion = new NormalViewControl(800, true);
|
var linVersion = HdlGatewayLogic.Current.GetGwInfoAttribute(upDatezbGateway, "LinuxFWVersion");
|
btnVersion.Text = Common.LocalDevice.Current.AppendVersion(Convert.ToInt32(linVersion));
|
btnVersion.Y = btnVersionMsg.Bottom + Application.GetRealHeight(10);
|
btnVersion.TextAlignment = TextAlignment.Center;
|
btnVersion.Gravity = Gravity.CenterHorizontal;
|
bodyFrameLayout.AddChidren(btnVersion);
|
}
|
|
/// <summary>
|
/// 显示存在最新版本
|
/// </summary>
|
private void ShowIsHadNewVersion()
|
{
|
//升级控件
|
GatewayFirmwareUpdateControl btnUpdateControl = null;
|
string gwID = HdlGatewayLogic.Current.GetGatewayId(upDatezbGateway);
|
if (FirmwareUpdateResourse.dicGatewayUpdateList.ContainsKey(gwID) == true)
|
{
|
btnUpdateControl = FirmwareUpdateResourse.dicGatewayUpdateList[gwID];
|
bodyFrameLayout.AddChidren(btnUpdateControl);
|
}
|
else
|
{
|
btnUpdateControl = new GatewayFirmwareUpdateControl(null, this.upDatezbGateway, this.virtualFirmware, this.coordinatorFirmware, this.gatewayFirmware);
|
bodyFrameLayout.AddChidren(btnUpdateControl);
|
btnUpdateControl.InitChidrenControl();
|
}
|
|
//初始化升级控件
|
this.InitGatewayUpdateControl(btnUpdateControl);
|
}
|
|
/// <summary>
|
/// 初始化升级控件
|
/// </summary>
|
/// <param name="btnUpdateControl"></param>
|
private void InitGatewayUpdateControl(GatewayFirmwareUpdateControl btnUpdateControl)
|
{
|
//升级:注意此处还没有处理事件还原
|
BottomClickButton btnUpdate = btnUpdateControl.btnUpdateButton;
|
if (btnUpdate == null)
|
{
|
btnUpdate = new BottomClickButton();
|
btnUpdate.UseClickStatu = false;
|
btnUpdate.TextID = R.MyInternationalizationString.uLevelUp;
|
btnUpdate.Gravity = Gravity.BottomCenter;
|
btnUpdate.Radius = 0;
|
btnUpdate.Width = Application.CurrentWidth;
|
btnUpdate.ButtonClickEvent += (sender, e) =>
|
{
|
if (btnUpdateControl.UpdateStatu == UpdateStatuMode.UpdateSuccess)
|
{
|
//升级成功的时候,如果单击此按钮,则关闭界面
|
this.CloseForm();
|
return;
|
}
|
//进入执行更新操作准备阶段
|
btnUpdateControl.StartUpdateReady();
|
};
|
}
|
btnUpdateControl.btnUpdateButton = btnUpdate;
|
bodyFrameLayout.AddChidren(btnUpdate);
|
|
var listView = new VerticalScrolViewLayout();
|
listView.Y = btnUpdateControl.Bottom;
|
listView.Height = bodyFrameLayout.Height - btnUpdateControl.Height - btnUpdate.Height;
|
bodyFrameLayout.AddChidren(listView);
|
|
//获取更新内容
|
List<string> listmsg = new List<string>();
|
if (btnUpdateControl.virtualFirmware != null)
|
{
|
listmsg.AddRange(btnUpdateControl.virtualFirmware.UpdateContent);
|
}
|
if (btnUpdateControl.coordinatorFirmware != null)
|
{
|
if (listmsg.Count > 0)
|
{
|
listmsg.Add(string.Empty);
|
}
|
listmsg.AddRange(btnUpdateControl.coordinatorFirmware.UpdateContent);
|
}
|
if (btnUpdateControl.gatewayFirmware != null)
|
{
|
if (listmsg.Count > 0)
|
{
|
listmsg.Add(string.Empty);
|
}
|
listmsg.AddRange(btnUpdateControl.gatewayFirmware.UpdateContent);
|
}
|
|
//做成更新内容控件
|
NormalViewControl btnTemp = null;
|
foreach (string msg in listmsg)
|
{
|
var btnmsg = new NormalViewControl(listView.Width, false);
|
btnmsg.X = ControlCommonResourse.XXLeft;
|
if (btnTemp != null)
|
{
|
btnmsg.Y = btnTemp.Bottom + Application.GetRealHeight(5);
|
}
|
btnmsg.Text = msg;
|
listView.AddChidren(btnmsg);
|
btnTemp = btnmsg;
|
}
|
}
|
|
/// <summary>
|
/// 画面关闭
|
/// </summary>
|
public override void CloseForm()
|
{
|
//升级控件
|
string mainKeys = HdlGatewayLogic.Current.GetGatewayId(upDatezbGateway);
|
if (FirmwareUpdateResourse.dicGatewayUpdateList.ContainsKey(mainKeys) == true
|
&& FirmwareUpdateResourse.dicGatewayUpdateList[mainKeys].IsFinishUpdate == true)
|
{
|
//如果网关已经升级完成,界面关闭时,则移除内存
|
FirmwareUpdateResourse.dicGatewayUpdateList.Remove(mainKeys);
|
}
|
|
base.CloseForm();
|
}
|
}
|
}
|