コード例 #1
0
ファイル: ViewModel.cs プロジェクト: JohnAbassian/ACDDokanNet
        public void AddCloud(AvailableCloud selectedItem)
        {
            var name    = selectedItem.Name;
            var letters = VirtualDriveWrapper.GetFreeDriveLettes();

            if (letters.Count == 0)
            {
                throw new InvalidOperationException("No free letters");
            }

            if (Clouds.Any(c => c.CloudInfo.Name == name))
            {
                int i = 1;
                while (Clouds.Any(c => c.CloudInfo.Name == name + " " + i))
                {
                    i++;
                }

                name = name + " " + i;
            }

            var info = new CloudInfo
            {
                Id               = Guid.NewGuid().ToString(),
                Name             = name,
                ClassName        = selectedItem.ClassName,
                AssemblyFileName = selectedItem.AssemblyFileName,
                DriveLetter      = letters[0]
            };
            var mount = new CloudMount(info, this);

            Clouds.Add(mount);
            SaveClouds();
        }
コード例 #2
0
        public void OnProviderDownloadStatisticsUpdated(CloudMount mount, StatisticUpdateReason reason, AStatisticFileInfo info)
        {
            var cloud = mount.CloudInfo;

            switch (reason)
            {
            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;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
コード例 #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));
        }
コード例 #4
0
ファイル: ViewModel.cs プロジェクト: JohnAbassian/ACDDokanNet
 public void DeleteCloud(CloudMount cloud)
 {
     Clouds.Remove(cloud);
     SaveClouds();
 }
コード例 #5
0
        public void OnProviderUploadStatisticsUpdated(CloudMount mount, StatisticUpdateReason reason, UploadStatisticInfo info)
        {
            var cloud = mount.CloudInfo;

            if (reason == StatisticUpdateReason.UploadAdded)
            {
                var newitem = 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(newitem);
                UploadFiles.Add(newitem);
                return;
            }

            var item = UploadFiles.SingleOrDefault(f => f.Id == info.Id && f.CloudId == cloud.Id);

            if (item == null)
            {
                return;
            }

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

            case StatisticUpdateReason.UploadFailed:
            {
                item.ErrorMessage = info.ErrorMessage;
                UploadFiles.Remove(item);
                UploadFiles.Add(item);
            }

            break;

            case StatisticUpdateReason.UploadAborted:
            {
                item.ErrorMessage = info.ErrorMessage;
                item.DismissOnly  = true;
                UploadFiles.Remove(item);
                UploadFiles.Add(item);
            }

            break;

            case StatisticUpdateReason.Progress:
            {
                item.Done = info.Done;
            }

            break;

            case StatisticUpdateReason.UploadState:
            {
                item.State = info.State;
            }

            break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }