Exemplo n.º 1
0
        public void OnProviderStatisticsUpdated(CloudMount mount, StatisticUpdateReason reason, AStatisticFileInfo info)
        {
            var cloud = mount.CloudInfo;

            switch (reason)
            {
            case StatisticUpdateReason.UploadAdded:
            {
                var item = new FileItemInfo(cloud.Id, info.Id)
                {
                    CloudIcon    = mount.Instance.CloudServiceIcon,
                    FileName     = info.FileName,
                    FullPath     = $"{mount.MountLetter}:{info.Path}",
                    ErrorMessage = info.ErrorMessage,
                    Total        = info.Total,
                    CloudName    = cloud.Name
                };
                UploadFiles.Remove(item);
                UploadFiles.Add(item);
            }

            break;

            case StatisticUpdateReason.UploadFinished:
                UploadFiles.Remove(new FileItemInfo(cloud.Id, info.Id));
                break;

            case StatisticUpdateReason.DownloadAdded:
            {
                var item = new FileItemInfo(cloud.Id, info.Id)
                {
                    CloudIcon    = mount.Instance.CloudServiceIcon,
                    FileName     = info.FileName,
                    FullPath     = $"{mount.MountLetter}:{info.Path}",
                    ErrorMessage = info.ErrorMessage,
                    Total        = info.Total,
                    CloudName    = cloud.Name
                };
                DownloadFiles.Remove(item);
                DownloadFiles.Add(item);
            }

            break;

            case StatisticUpdateReason.DownloadFinished:
            {
                DownloadFiles.Remove(new FileItemInfo(cloud.Id, info.Id));
            }

            break;

            case StatisticUpdateReason.DownloadFailed:
            {
                var item = UploadFiles.Single(f => f.Id == info.Id && f.CloudId == cloud.Id);
                item.ErrorMessage = info.ErrorMessage;
                DownloadFiles.Remove(item);
                DownloadFailedFiles.Add(item);
                if (DownloadFailedFiles.Count > 10)
                {
                    DownloadFailedFiles.RemoveAt(DownloadFailedFiles.Count - 1);
                }
            }

            break;

            case StatisticUpdateReason.UploadFailed:
            {
                var item = UploadFiles.Single(f => f.Id == info.Id && f.CloudId == cloud.Id);
                item.ErrorMessage = info.ErrorMessage;
                UploadFiles.Remove(item);
                UploadFiles.Add(item);
            }

            break;

            case StatisticUpdateReason.UploadAborted:
            {
                var item = UploadFiles.Single(f => f.Id == info.Id && f.CloudId == cloud.Id);
                item.ErrorMessage = info.ErrorMessage;
                item.DismissOnly  = true;
                UploadFiles.Remove(item);
                UploadFiles.Add(item);
            }

            break;

            case StatisticUpdateReason.Progress:
            {
                var item = UploadFiles.SingleOrDefault(f => f.Id == info.Id && f.CloudId == cloud.Id);
                if (item != null)
                {
                    item.Done = info.Done;
                }
            }

            break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Exemplo n.º 2
0
 private async Task ProviderStatisticsUpdated(IHttpCloud cloud, StatisticUpdateReason reason, AStatisticFileInfo info)
 {
     try
     {
         await App.Dispatcher.InvokeAsync(() =>
         {
             model.OnProviderStatisticsUpdated(this, reason, info);
         });
     }
     catch (TaskCanceledException)
     {
         Log.Trace("Task cancelled");
     }
 }
Exemplo n.º 3
0
        public void OnProviderStatisticsUpdated(CloudMount mount, StatisticUpdateReason reason, AStatisticFileInfo info)
        {
            if (info is UploadStatisticInfo uploadInfo)
            {
                OnProviderUploadStatisticsUpdated(mount, reason, uploadInfo);
                return;
            }

            if (info is DownloadStatisticInfo downloadInfo)
            {
                OnProviderDownloadStatisticsUpdated(mount, reason, downloadInfo);
                return;
            }

            throw new ArgumentOutOfRangeException(nameof(info));
        }