using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.Device
{
///
/// 固件升级画面
///
public class DeviceFirmwareUpdateForm : UserCenterCommonForm
{
///
/// 升级的设备
///
private List listUpdateDevice = null;
///
/// 设备新版本的固件信息
///
private FirmwareVersionInfo deviceFirmware = null;
///
/// 当前镜像版本
///
private int imageVersion = 0;
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
/// 设备
/// 设备新版本
/// 当前镜像版本
public void ShowForm(List 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();
}
///
/// 初始化中部控件
///
private void InitMiddleFrame()
{
bodyFrameLayout.RemoveAll();
//没有新版本
if (deviceFirmware == null)
{
//显示已经是新版本
this.ShowIsMostVewVersion();
}
else
{
//显示已经是新版本
this.ShowIsHadNewVersion();
}
}
///
/// 显示已经是新版本
///
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);
}
///
/// 显示存在最新版本
///
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);
}
///
/// 初始化升级控件
///
///
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;
}
}
///
/// 画面关闭
///
/// 是否关闭界面,false的时候,只会调用关闭函数里面的附加功能
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);
}
}
}