private void InitializeCommands() { PauseCommand = new RelayCommand <IDownloadingFile>( item => OperateTaskToken(item, token => token.Suspend(), "Pause task failed."), // TODO: [I18N] item => item.DownloadInfo.Status == TransferStatus.Transferring || item.DownloadInfo.Status == TransferStatus.Ready); StartCommand = new RelayCommand <IDownloadingFile>( item => OperateTaskToken(item, token => token.Ready(), "Restart task failed."), item => item.DownloadInfo.Status == TransferStatus.Suspended); StartForceCommand = new RelayCommand <IDownloadingFile>( item => OperateTaskToken(item, token => token.AsNext(), "Jump queue failed."), item => item.DownloadInfo.Status != TransferStatus.Transferring); CancelCommand = new RelayCommand <IDownloadingFile>( item => OperateTaskToken(item, token => token.Dispose(), "Cancel task failed.")); PauseAllCommand = new RelayCommand( () => TransferTasks.ForEach(item => PauseCommand.Invoke(item)), () => TransferTasks?.Any() ?? false); CancelAllCommand = new RelayCommand( () => TransferTasks.ForEach(item => CancelCommand.Invoke(item)), () => TransferTasks?.Any() ?? false); }
public DownloadingViewModel(IUnityContainer container) : base(container) { PauseAllCommand = new RelayCommand(() => { foreach (var task in TransferTasks) { if (PauseCommand.CanExecute(task)) { PauseCommand.Execute(task); } } }, () => TransferTasks?.Any() ?? false); CancelAllCommand = new RelayCommand(() => { foreach (var task in TransferTasks) { if (CancelCommand.CanExecute(task)) { CancelCommand.Execute(task); } } }, () => TransferTasks?.Any() ?? false); }
private void InitializeTransferItem(IDownloadingFile item) { var previousStatus = item.DownloadInfo.Status; item.DownloadInfo .Where(notification => { var result = notification.Status != previousStatus; previousStatus = notification.Status; return(result); }) .ObserveOn(Dispatcher) .Subscribe(_ => { TransferTasks.Remove(item); TransferTasks.Add(item); }); item.DownloadInfo .Where(notification => notification.Status == TransferStatus.Disposed) .ObserveOn(Dispatcher) .Subscribe( _ => TransferTasks.Remove(item), () => { TransferTasks.Remove(item); EventAggregator .GetEvent <TransferItemCompletedEvent>() .Publish(LocalDiskFile.Create(item)); }); TransferTasks.Add(item); }
public DownloadingViewModel(IUnityContainer container) : base(container) { PauseAllCommand = new RelayCommand(() => TransferTasks.ForEach(item => { if (PauseCommand.CanExecute(item)) { PauseCommand.Execute(item); } }), () => TransferTasks?.Any() ?? false); CancelAllCommand = new RelayCommand(() => TransferTasks.ForEach(item => { if (CancelCommand.CanExecute(item)) { CancelCommand.Execute(item); } }), () => TransferTasks?.Any() ?? false); }