using System;
|
using System.Collections.Generic;
|
using System.Text;
|
using System.Threading.Tasks;
|
using ZigBee.Device;
|
|
namespace Shared.Phone.UserCenter.Device
|
{
|
/// <summary>
|
/// 固件升级画面
|
/// </summary>
|
public class DeviceFirmwareUpdateForm : UserCenterCommonForm
|
{
|
/// <summary>
|
/// 升级的设备
|
/// </summary>
|
private List<CommonDevice> listUpdateDevice = null;
|
/// <summary>
|
/// 设备新版本的固件信息
|
/// </summary>
|
private FirmwareVersionInfo deviceFirmware = null;
|
/// <summary>
|
/// 当前镜像版本
|
/// </summary>
|
private int imageVersion = 0;
|
|
/// <summary>
|
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
|
/// </summary>
|
/// <param name="i_listdevice">设备</param>
|
/// <param name="i_deviceFirmware">设备新版本</param>
|
/// <param name="i_imageVersion">当前镜像版本</param>
|
public void ShowForm(List<CommonDevice> i_listdevice, FirmwareVersionInfo i_deviceFirmware, int i_imageVersion)
|
{
|
this.listUpdateDevice = i_listdevice;
|
this.imageVersion = i_imageVersion;
|
this.deviceFirmware = i_deviceFirmware;
|
|
//设置标题信息
|
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uFirmwareUpdate));
|
|
var btnIcon = new TopLayoutMostRightView();
|
btnIcon.UnSelectedImagePath = "Item/More.png";
|
btnIcon.SelectedImagePath = "Item/MoreSelected.png";
|
topFrameLayout.AddChidren(btnIcon);
|
btnIcon.MouseUpEventHandler += (sender, e) =>
|
{
|
//菜单控件
|
var frameMenu = new TopRightMenuControl(this, 1);
|
//历史版本
|
string menu1 = Language.StringByID(R.MyInternationalizationString.uHistoryVersion);
|
frameMenu.AddRowMenu(menu1, (obj) =>
|
{
|
var form = new DeviceHistoryFirmwareVersionForm();
|
this.AddForm(form, listUpdateDevice);
|
form.FormCloseAction += ((firmwareInfo) =>
|
{
|
//如果当前正在升级,则历史版本无效
|
if (FirmwareUpdateResourse.dicDeviceUpdateList.ContainsKey(this.listUpdateDevice[0].DeviceAddr) == false)
|
{
|
//重新刷新界面
|
this.ShowForm(listUpdateDevice, firmwareInfo, firmwareInfo.FirmwareVersion);
|
}
|
});
|
});
|
};
|
|
//初始化中部控件
|
this.InitMiddleFrame();
|
}
|
|
/// <summary>
|
/// 初始化中部控件
|
/// </summary>
|
private void InitMiddleFrame()
|
{
|
bodyFrameLayout.RemoveAll();
|
|
//没有新版本
|
if (deviceFirmware == null)
|
{
|
//显示已经是新版本
|
this.ShowIsMostVewVersion();
|
}
|
else
|
{
|
//显示已经是新版本
|
this.ShowIsHadNewVersion();
|
}
|
}
|
|
/// <summary>
|
/// 显示已经是新版本
|
/// </summary>
|
private void ShowIsMostVewVersion()
|
{
|
//如果点的是历史版本,则同步界面
|
string mainKeys = this.listUpdateDevice[0].DeviceAddr;
|
if (FirmwareUpdateResourse.dicDeviceUpdateList.ContainsKey(mainKeys) == true)
|
{
|
var btnUpdateControl = FirmwareUpdateResourse.dicDeviceUpdateList[mainKeys];
|
bodyFrameLayout.AddChidren(btnUpdateControl);
|
//初始化升级控件
|
this.InitDeviceUpdateControl(btnUpdateControl);
|
return;
|
}
|
|
//当前程序版本
|
var btnVersionMsg = new MsgViewControl(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 MsgViewControl(800, true);
|
btnVersion.Text = Common.LocalDevice.Current.AppendVersion(this.imageVersion);
|
btnVersion.Y = btnVersionMsg.Bottom + Application.GetRealHeight(10);
|
btnVersion.TextAlignment = TextAlignment.Center;
|
btnVersion.Gravity = Gravity.CenterHorizontal;
|
bodyFrameLayout.AddChidren(btnVersion);
|
}
|
|
/// <summary>
|
/// 显示存在最新版本
|
/// </summary>
|
private void ShowIsHadNewVersion()
|
{
|
//升级控件
|
string mainKeys = this.listUpdateDevice[0].DeviceAddr;
|
|
//临时控件
|
var btnTemp = new ButtonCommon();
|
Common.LocalDevice.Current.SetDeviceBeloneIconToControl(btnTemp, this.listUpdateDevice);
|
|
DeviceFirmwareUpdateControl btnUpdateControl = null;
|
if (FirmwareUpdateResourse.dicDeviceUpdateList.ContainsKey(mainKeys) == true)
|
{
|
btnUpdateControl = FirmwareUpdateResourse.dicDeviceUpdateList[mainKeys];
|
bodyFrameLayout.AddChidren(btnUpdateControl);
|
}
|
else
|
{
|
btnUpdateControl = new DeviceFirmwareUpdateControl(null, this.listUpdateDevice, this.deviceFirmware);
|
bodyFrameLayout.AddChidren(btnUpdateControl);
|
btnUpdateControl.InitChidrenControl(btnTemp.UnSelectedImagePath);
|
}
|
//初始化升级控件
|
this.InitDeviceUpdateControl(btnUpdateControl);
|
}
|
|
/// <summary>
|
/// 初始化升级控件
|
/// </summary>
|
/// <param name="btnUpdateControl"></param>
|
private void InitDeviceUpdateControl(DeviceFirmwareUpdateControl btnUpdateControl)
|
{
|
//升级
|
BottomClickButton btnUpdate = btnUpdateControl.btnUpdateButton;
|
if (btnUpdate == null)
|
{
|
btnUpdate = new BottomClickButton();
|
btnUpdate.UseClickStatu = false;
|
btnUpdate.TextID = R.MyInternationalizationString.uLevelUp;
|
btnUpdate.Gravity = Gravity.BottomCenter;
|
btnUpdate.MouseUpTime = 0;
|
btnUpdate.Radius = 0;
|
btnUpdate.Width = Application.CurrentWidth;
|
btnUpdate.MouseUpEvent += (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);
|
|
//做成更新内容控件
|
ViewNormalControl btnTempMsg = null;
|
//临时控件
|
ButtonCommon btnTemp = null;
|
//做成更新记录控件
|
foreach (string msg in btnUpdateControl.deviceFirmware.UpdateContent)
|
{
|
var btnmsg = new ViewNormalControl(listView.Width);
|
btnmsg.X = ControlCommonResourse.XXLeft;
|
if (btnTemp != null)
|
{
|
btnmsg.Y = btnTemp.Bottom + Application.GetRealHeight(5);
|
}
|
btnmsg.Text = msg;
|
listView.AddChidren(btnmsg);
|
btnTempMsg = btnmsg;
|
}
|
}
|
|
/// <summary>
|
/// 画面关闭
|
/// </summary>
|
/// <param name="isCloseForm">是否关闭界面,false的时候,只会调用关闭函数里面的附加功能</param>
|
public override void CloseForm(bool isCloseForm = true)
|
{
|
//升级控件
|
string mainKeys = this.listUpdateDevice[0].DeviceAddr;
|
if (FirmwareUpdateResourse.dicDeviceUpdateList.ContainsKey(mainKeys) == true
|
&& FirmwareUpdateResourse.dicDeviceUpdateList[mainKeys].IsFinishUpdate == true)
|
{
|
//如果设备已经升级完成,界面关闭时,则移除内存
|
FirmwareUpdateResourse.dicDeviceUpdateList.Remove(mainKeys);
|
}
|
|
base.CloseForm(isCloseForm);
|
}
|
}
|
}
|