private void DownloaderBatchEvent(object sender, DownloaderBatchEventArgs e) { foreach (DownloadItemEventArgs downloadItemEventArgs in e.BatchEvents) { DownloadItem downloadItem; switch (downloadItemEventArgs) { case DownloadItemAddedEventArgs downloadItemAddedEvent: downloadItem = downloadItemAddedEvent.AddedDownloadItem; break; case DownloadItemChangedEventArgs downloadItemChangedEvent: downloadItem = downloadItemChangedEvent.ChangedDownloadItem; break; case DownloadItemRemovedEventArgs downloadItemRemovedEvent: downloadItem = downloadItemRemovedEvent.RemovedDownloadItem; break; default: downloadItem = null; break; } if (downloadItem != null && downloadItem.DownloadPageUrl == downloadUrl) { UpdateDownloadStatus(downloadItem); } } }
private void DownloaderBatchEvent(object sender, DownloaderBatchEventArgs e) { if (e.AddEventCount + e.RemoveEventCount < LARGE_DOWNLOADER_BATCH_UPDATE_ITEM_COUNT) { ExecuteInUiThread(() => { isSelectionChangedHandlerEnabled = false; ApplyDownloaderBatchEventArgs(Downloads, e, out bool selectionButtonStatesUpdateRequired, out bool nonSelectionButtonStatesUpdateRequired); if (selectionButtonStatesUpdateRequired) { UpdateSelectionButtonStates(); UpdateSelectedDownloadLogs(); } if (nonSelectionButtonStatesUpdateRequired) { UpdateNonSelectionButtonStates(); } isSelectionChangedHandlerEnabled = true; }); } else { ObservableCollection <DownloadItemViewModel> newDownloads = new ObservableCollection <DownloadItemViewModel>(Downloads); ApplyDownloaderBatchEventArgs(newDownloads, e, out bool selectionButtonStatesUpdateRequired, out bool nonSelectionButtonStatesUpdateRequired); ExecuteInUiThread(() => { Downloads = newDownloads; if (selectionButtonStatesUpdateRequired) { UpdateSelectionButtonStates(); UpdateSelectedDownloadLogs(); } if (nonSelectionButtonStatesUpdateRequired) { UpdateNonSelectionButtonStates(); } }); } }
private void DownloaderBatchEvent(object sender, DownloaderBatchEventArgs e) { if (!(SelectedTabViewModel is DownloadManagerTabViewModel)) { foreach (DownloadItemEventArgs downloadItemEventArgs in e.BatchEvents) { switch (downloadItemEventArgs) { case DownloadItemAddedEventArgs _: IsDownloadManagerButtonHighlighted = true; break; case DownloadItemChangedEventArgs downloadItemChangedEvent: DownloadItem changedDownloadItem = downloadItemChangedEvent.ChangedDownloadItem; if (changedDownloadItem.Status == DownloadItemStatus.COMPLETED) { CompletedDownloadCount++; IsCompletedDownloadCounterVisible = true; } break; } } } }
private void ApplyDownloaderBatchEventArgs(ObservableCollection <DownloadItemViewModel> downloads, DownloaderBatchEventArgs downloaderBatchEventArgs, out bool selectionButtonStatesUpdateRequired, out bool nonSelectionButtonStatesUpdateRequired) { selectionButtonStatesUpdateRequired = false; nonSelectionButtonStatesUpdateRequired = false; foreach (DownloadItemEventArgs downloadItemEventArgs in downloaderBatchEventArgs.BatchEvents) { switch (downloadItemEventArgs) { case DownloadItemAddedEventArgs downloadItemAddedEvent: DownloadItemViewModel newDownloadItemViewModel = ToDownloadItemViewModel(downloadItemAddedEvent.AddedDownloadItem); downloadDictionary[newDownloadItemViewModel.Id] = newDownloadItemViewModel; downloads.Add(newDownloadItemViewModel); nonSelectionButtonStatesUpdateRequired = true; break; case DownloadItemChangedEventArgs downloadItemChangedEvent: DownloadItem changedDownloadItem = downloadItemChangedEvent.ChangedDownloadItem; DownloadItemViewModel changedDownloadItemViewModel = downloadDictionary[changedDownloadItem.Id]; bool statusChanged = changedDownloadItemViewModel.Status != changedDownloadItem.Status; changedDownloadItemViewModel.Name = changedDownloadItem.FileName; if (statusChanged) { changedDownloadItemViewModel.Status = changedDownloadItem.Status; } changedDownloadItemViewModel.ProgressText = GetDownloadProgressText(changedDownloadItem); changedDownloadItemViewModel.ProgressValue = GetDownloadProgressValue(changedDownloadItem); if (statusChanged) { if (changedDownloadItemViewModel.IsSelected) { selectionButtonStatesUpdateRequired = true; } nonSelectionButtonStatesUpdateRequired = true; } break; case DownloadItemRemovedEventArgs downloadItemRemovedEvent: DownloadItem removedDownloadItem = downloadItemRemovedEvent.RemovedDownloadItem; DownloadItemViewModel removedDownloadItemViewModel = downloadDictionary[removedDownloadItem.Id]; bool wasSelected = removedDownloadItemViewModel.IsSelected; downloads.Remove(removedDownloadItemViewModel); if (wasSelected) { selectionButtonStatesUpdateRequired = true; } nonSelectionButtonStatesUpdateRequired = true; break; case DownloadItemLogLineEventArgs downloadItemLogLineEvent: DownloadItemViewModel downloadItemViewModel = downloadDictionary[downloadItemLogLineEvent.DownloadItemId]; if (downloadItemLogLineEvent.LineIndex >= downloadItemViewModel.Logs.Count) { downloadItemViewModel.Logs.Add(ToDownloadItemLogLineViewModel(downloadItemLogLineEvent.LogLine)); } break; } } }