private void ExecuteCloneFilesets(IEnumerable <FilesetViewModel> filesets) { foreach (var filesetViewModel in filesets.ToArray()) { FilesetViewModel model = filesetViewModel; _filesetService.Add().ContinueWith(task => { if (task.IsFaulted) { Trace.WriteLine(task.Exception); } else { var clone = task.Result; clone.Name = model.Name + " [Clone]"; clone.Category = model.Category; clone.Includes.AddRange(model.Includes); clone.Excludes.AddRange(model.Excludes); clone.KillLockingProcess = model.KillLockingProcess; clone.DestinationPath = model.DestinationPath; clone.SourcePath = model.SourcePath; clone.IsEnabled = false; } }); } }
private void ExecuteRemoveFileset(FilesetViewModel model) { var fs = _filesetService.Filesets.FirstOrDefault(f => f.Id == model.Id); if (fs != null) { _filesetService .Remove(fs) .ContinueWith(task => { Trace.WriteLineIf(task.IsFaulted, task.Exception); }); } }
void INavigationAware.OnNavigatedTo(NavigationContext navigationContext) { _navigationService = navigationContext.NavigationService; foreach (var fileset in _filesetService.Filesets) { var viewModel = new FilesetViewModel(fileset); viewModel.PropertyChanged += OnFilesetPropertyChanged; _filesets.Add(viewModel); } _filesetAdded = _filesetService .FilesetAdded .ObserveOnDispatcher() .Subscribe(fileset => { var viewModel = new FilesetViewModel(fileset); viewModel.PropertyChanged += OnFilesetPropertyChanged; _filesets.Add(viewModel); Filesets.MoveCurrentTo(viewModel); }); _filesetRemoved = _filesetService .FilesetRemoved .ObserveOnDispatcher() .Subscribe(fileset => { var fs = _filesets.FirstOrDefault(fvm => fvm.Id == fileset.Id); if (fs != null) { fs.PropertyChanged -= OnFilesetPropertyChanged; _filesets.Remove(fs); } if (Filesets.IsEmpty) { _navigationService.Region.RegionManager.Regions[AppRegions.MainRegion] .RequestNavigate(typeof(IWelcomeView).Name); } }); Filesets = CollectionViewSource.GetDefaultView(_filesets); Filesets.GroupDescriptions.Add(new PropertyGroupDescription("Category")); Filesets.SortDescriptions.Add(new SortDescription("Category", ListSortDirection.Ascending)); Filesets.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending)); Filesets.CurrentChanged += CurrentFilesetChanged; Filesets.MoveCurrentTo(null); Filesets.MoveCurrentToFirst(); }
void INavigationAware.OnNavigatedTo(NavigationContext navigationContext) { var id = navigationContext.Parameters["id"]; if (!string.IsNullOrEmpty(id)) { var fileset = _filesetService.Filesets.FirstOrDefault(fs => fs.Id.ToString() == id); if (fileset != null) { Fileset = new FilesetViewModel(fileset); ActivityLog = _activityLogService.GetEvents(fileset.Id); } _filesetService.Filesets.Select(fs => fs.Category) .Distinct() .Where(c => !string.IsNullOrEmpty(c)) .ForEach(_categories.Add); } }
private void ExecuteExportFileset(FilesetViewModel fileset) { var dialog = new SaveFileDialog(); dialog.Title = "Select location to export the fileset"; dialog.FileName = fileset.Id + ".fis"; if (dialog.ShowDialog() == true) { var fs = _filesetService.Filesets.FirstOrDefault(fvm => fvm.Id == fileset.Id); if (fs != null) { _filesetService .Save(fs, () => new FileStream(dialog.FileName, FileMode.Create)) .ContinueWith(task => { Trace.WriteLineIf(task.IsFaulted, task); }); } } }
private bool CanExecuteRemoveFileset(FilesetViewModel model) { return(model != null); }
private bool CanExecuteExportFileset(FilesetViewModel fileset) { return(fileset != null); }