|  |  |  |  | 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(); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 }); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } |