Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
 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();
             }
         });
     }
 }
Ejemplo n.º 3
0
        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;
                    }
                }
            }
        }
Ejemplo n.º 4
0
        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;
                }
            }
        }