You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.7 KiB
C#
94 lines
2.7 KiB
C#
using Prism.Commands;
|
|
using Prism.Mvvm;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Input;
|
|
using Txgy.EWS.Client.Upgrade.DAL;
|
|
using Txgy.EWS.Client.Upgrade.Model;
|
|
|
|
namespace Txgy.EWS.Client.Upgrade.ViewModel
|
|
{
|
|
public class MainWindowViewModel : BindableBase
|
|
{
|
|
//private LocalDataAccess localDataAccess = new LocalDataAccess();
|
|
private WebDataAccess webDataAccess = new WebDataAccess();
|
|
|
|
public Action ConfirmAction;
|
|
public MainWindowViewModel(string[] files)
|
|
{
|
|
for (int i = 0; i < files.Length; i++)
|
|
{
|
|
string[] arg = files[i].Split('|');
|
|
FileList.Add(new FileInfoModel
|
|
{
|
|
Index = (i + 1),
|
|
FileName = arg[0],
|
|
FileMd5 = arg[1],
|
|
State = "待更新",
|
|
Progress = 0
|
|
});
|
|
}
|
|
}
|
|
private int _progress;
|
|
public int Progress
|
|
{
|
|
get { return _progress; }
|
|
set { SetProperty(ref _progress, value); }
|
|
}
|
|
public ObservableCollection<FileInfoModel> FileList { get; set; } = new ObservableCollection<FileInfoModel>();
|
|
|
|
private ICommand _startCommand;
|
|
|
|
public ICommand StartCommand
|
|
{
|
|
get
|
|
{
|
|
if (_startCommand == null)
|
|
_startCommand = new DelegateCommand(OnStart).ObservesCanExecute(() => IsCanStart);
|
|
|
|
return _startCommand;
|
|
}
|
|
}
|
|
private bool _isCanStart = true;
|
|
public bool IsCanStart
|
|
{
|
|
get { return _isCanStart; }
|
|
set { SetProperty(ref _isCanStart, value); }
|
|
}
|
|
|
|
private int completedCount = 0;
|
|
private void OnStart()
|
|
{
|
|
if (FileList.Count > 0)
|
|
{
|
|
IsCanStart = false;
|
|
|
|
Task.Run(async () =>
|
|
{
|
|
int count = await webDataAccess.DownloadAsync(
|
|
FileList.ToList(),
|
|
new Action<FileInfoModel>((fi) =>
|
|
{
|
|
completedCount++;
|
|
Progress = (int)(completedCount * 1.0 / FileList.Count * 100);
|
|
}));
|
|
|
|
|
|
if (FileList.Count != count)
|
|
IsCanStart = true;
|
|
else
|
|
{
|
|
// 打开更新完成确认窗口
|
|
ConfirmAction?.Invoke();
|
|
}
|
|
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|