示例#1
0
 private void raiseInitializationCompleted(Download download, IDownloadSlotsViewModel downloadSlotsViewModel)
 {
     if (InitializationCompleted != null)
     {
         InitializationCompleted(download, downloadSlotsViewModel);
     }
 }
示例#2
0
        public DownloadViewModel(IDownloadModel downloadModel,
                                 IDownloadSlotsViewModel downloadSlotsViewModel,
                                 IFileSystemManager fileSystemManager)
        {
            if (downloadModel == null)
            {
                throw new ArgumentNullException("download");
            }
            if (downloadSlotsViewModel == null)
            {
                throw new ArgumentNullException("downloadSlotsViewModel");
            }
            if (fileSystemManager == null)
            {
                throw new ArgumentNullException("fileSystemManager");
            }

            this.downloadModel          = downloadModel;
            this.downloadSlotsViewModel = downloadSlotsViewModel;
            this.fileSystemManager      = fileSystemManager;

            this.downloadSlotsViewModel.DownloadCompleted       += downloadSlotsViewModel_DownloadCompleted;
            this.downloadSlotsViewModel.DownloadProgressChanged += downloadSlotsViewModel_DownloadProgressChanged;
            this.downloadSlotsViewModel.DownloadFailed          += downloadSlotsViewModel_DownloadFailed;
        }
示例#3
0
        public void TryInitializeDownloadSlotsViewModelAsync(Download download)
        {
            IDownloadSlotsViewModel downloadSlotsViewModel = CreateDownloadSlotsViewModel(download);

            Task <bool> initializeDownloadingSlotsTask = new Task <bool>(downloadSlotsViewModel.TryInitialize);

            initializeDownloadingSlotsTask.ContinueWith((faultedTask) =>
            {
                logger.LogException(faultedTask.Exception);
            }, TaskContinuationOptions.OnlyOnFaulted);

            initializeDownloadingSlotsTask.ContinueWith((completedTask) =>
            {
                if (completedTask.Status != TaskStatus.Faulted && completedTask.Result)
                {
                    raiseInitializationCompleted(download, downloadSlotsViewModel);
                }
                else
                {
                    NotificationService.Alert(Properties.Resources.DownloadStartFailedMessage,
                                              Properties.Resources.DownloadingFailedHeader);
                }
            }, TaskScheduler.FromCurrentSynchronizationContext());
            initializeDownloadingSlotsTask.Start();
        }
示例#4
0
        private void addDownload(Download download)
        {
            IDownloadSlotsViewModel downloadSlotsViewModel =
                this.downloadSlotsViewModelAsyncFactory.CreateDownloadSlotsViewModel(download);

            addDownloadViewModel(download, downloadSlotsViewModel);
        }
 public IDownloadViewModel CreateDownloadViewModel(Download download,
     IDownloadSlotsViewModel downloadSlotsViewModel)
 {
     DownloadViewModel downloadViewModel =
         new DownloadViewModel(download, downloadSlotsViewModel, fileSystemManager);
     return downloadViewModel;
 }
示例#6
0
        public IDownloadViewModel CreateDownloadViewModel(Download download,
                                                          IDownloadSlotsViewModel downloadSlotsViewModel)
        {
            DownloadViewModel downloadViewModel =
                new DownloadViewModel(download, downloadSlotsViewModel, fileSystemManager);

            return(downloadViewModel);
        }
示例#7
0
        private IDownloadViewModel createDownloadViewModel(Download download,
                                                           IDownloadSlotsViewModel downloadSlotsViewModel)
        {
            IDownloadViewModel downloadViewModel = downloadViewModelFactory.CreateDownloadViewModel(download,
                                                                                                    downloadSlotsViewModel);

            items.Add(downloadViewModel);
            return(downloadViewModel);
        }
示例#8
0
        private IDownloadViewModel addDownloadViewModel(Download download, IDownloadSlotsViewModel downloadSlotsViewModel)
        {
            IDownloadViewModel downloadViewModel = this.createDownloadViewModel(download, downloadSlotsViewModel);

            downloadViewModel.OnRemove += () =>
            {
                this.removeFromDownloadModels(download);
                this.removeFromDownloadViewModels(downloadViewModel);
            };

            return(downloadViewModel);
        }
        protected override void Establish_context()
        {
            base.Establish_context();
            download = new Download("some uri");
            generatedViewModel = new Mock<IDownloadSlotsViewModel>();
            generatedViewModel.Setup(viewModel => viewModel.TryInitialize()).Returns(true);

            DownloadSlotsViewModelFactory.Setup(factory => factory.CreateDownloadSlotsViewModel(download)).
                Returns(generatedViewModel.Object);

            DownloadSlotsViewModelAsyncFactory.InitializationCompleted += (forDownload, viewModel) =>
                {
                    createdIsRaised = true;
                    forDownloadCreated = forDownload;
                    viewModelCreated = viewModel;
                    resetEvent.Set();
                };

            SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
        }
示例#10
0
        protected override void Establish_context()
        {
            base.Establish_context();
            download           = new Download("some uri");
            generatedViewModel = new Mock <IDownloadSlotsViewModel>();
            generatedViewModel.Setup(viewModel => viewModel.TryInitialize()).Returns(true);

            DownloadSlotsViewModelFactory.Setup(factory => factory.CreateDownloadSlotsViewModel(download)).
            Returns(generatedViewModel.Object);

            DownloadSlotsViewModelAsyncFactory.InitializationCompleted += (forDownload, viewModel) =>
            {
                createdIsRaised    = true;
                forDownloadCreated = forDownload;
                viewModelCreated   = viewModel;
                resetEvent.Set();
            };

            SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
        }
示例#11
0
        private IDownloadViewModel addDownloadViewModel(Download download, IDownloadSlotsViewModel downloadSlotsViewModel)
        {
            IDownloadViewModel downloadViewModel = this.createDownloadViewModel(download, downloadSlotsViewModel);

            downloadViewModel.OnRemove += () =>
            {
                this.removeFromDownloadModels(download);
                this.removeFromDownloadViewModels(downloadViewModel);
            };

            return downloadViewModel;
        }
示例#12
0
 void downloadSlotsViewModelAsyncFactoryInitializationCompleted(Download download, IDownloadSlotsViewModel initializedViewModel)
 {
     downloads.Add(download);
     var newDownloadViewModel = addDownloadViewModel(download, initializedViewModel);
     newDownloadViewModel.Start();
 }
示例#13
0
 private IDownloadViewModel createDownloadViewModel(Download download,
     IDownloadSlotsViewModel downloadSlotsViewModel)
 {
     IDownloadViewModel downloadViewModel = downloadViewModelFactory.CreateDownloadViewModel(download,
         downloadSlotsViewModel);
     items.Add(downloadViewModel);
     return downloadViewModel;
 }
示例#14
0
        public DownloadViewModel(IDownloadModel downloadModel,
            IDownloadSlotsViewModel downloadSlotsViewModel,
            IFileSystemManager fileSystemManager)
        {
            if (downloadModel == null)
                throw new ArgumentNullException("download");
            if (downloadSlotsViewModel == null)
                throw new ArgumentNullException("downloadSlotsViewModel");
            if (fileSystemManager == null)
                throw new ArgumentNullException("fileSystemManager");

            this.downloadModel = downloadModel;
            this.downloadSlotsViewModel = downloadSlotsViewModel;
            this.fileSystemManager = fileSystemManager;

            this.downloadSlotsViewModel.DownloadCompleted += downloadSlotsViewModel_DownloadCompleted;
            this.downloadSlotsViewModel.DownloadProgressChanged += downloadSlotsViewModel_DownloadProgressChanged;
            this.downloadSlotsViewModel.DownloadFailed += downloadSlotsViewModel_DownloadFailed;
        }
示例#15
0
        void downloadSlotsViewModelAsyncFactoryInitializationCompleted(Download download, IDownloadSlotsViewModel initializedViewModel)
        {
            downloads.Add(download);
            var newDownloadViewModel = addDownloadViewModel(download, initializedViewModel);

            newDownloadViewModel.Start();
        }