private Task LoadFromFile() { using (BusyStack.GetToken()) { var options = new FileSystemBrowserOptions() { CanCancel = true, MultiSelection = false, Title = _translator.Translate(nameof(Resources.SelectFiles)), }; return(_dialogViewModel.ShowFileBrowserDialog(options)); } }
private async Task LoadFromFile(CancellationToken token) { using (BusyStack.GetToken()) { var options = new FileSystemBrowserOptions() { CanCancel = true, MultiSelection = false, Title = _translator.Translate(nameof(Resources.SelectFiles)), }; (var Result, var MediaItems) = await _dialogViewModel.ShowMediaItemSelectionDialog(options, token).ConfigureAwait(true); if (Result) { AddRange(MediaItems); } } }
public FolderBrowserContentDialogViewModel(FileSystemViewModel fileSystemViewModel, FileSystemBrowserOptions options) { _options = options ?? throw new ArgumentNullException(nameof(options), $"{nameof(options)} {Resources.IsRequired}"); FileSystemViewModel = fileSystemViewModel ?? throw new ArgumentNullException(nameof(fileSystemViewModel), $"{nameof(fileSystemViewModel)} {Resources.IsRequired}"); }
public FileBrowserDialogViewModel(FileSystemViewModel fileSystemViewModel, FileSystemBrowserOptions options) { _options = options ?? throw new ArgumentNullException(nameof(options)); FileSystemViewModel = fileSystemViewModel ?? throw new ArgumentNullException(nameof(fileSystemViewModel)); }
/// <summary> /// Shows the folder browser dialog. /// </summary> /// <returns></returns> /// <exception cref="System.InvalidOperationException"></exception> public async Task <(DialogResult Result, IFileSystemDirectory Directory)> ShowFolderBrowserDialog(FileSystemBrowserOptions options) { if (IsOpen) { throw new InvalidOperationException(Resources.DialogOpenAlready); } var tuple = default((DialogResult Result, IFileSystemDirectory Directory)); var viewModel = new FileBrowserDialogViewModel(_fileSystemViewModel, options); TitleDetail = string.Empty; Context = viewModel; Title = options.Title; IsCancelVisible = options.CanCancel; using (_messenger.Subscribe <FileSystemInfoChangedMessage>(FileSystemInfoChanged)) { AcceptAction = () => { var items = viewModel.FileSystemViewModel.SelectedItems; items.Add(viewModel.FileSystemViewModel.SelectedItem); tuple = (DialogResult.OK, items.Distinct().FirstOrDefault() as IFileSystemDirectory); }; CancelAction = () => { var items = viewModel.FileSystemViewModel.SelectedItems; tuple = (DialogResult.Cancel, default(IFileSystemDirectory)); }; await Open().ConfigureAwait(false); } return(tuple); }
/// <summary> /// Shows the file browser dialog. /// </summary> /// <returns></returns> /// <exception cref="System.InvalidOperationException"></exception> public async Task <(DialogResult Result, IList <IFileSystemFile> Files)> ShowFileBrowserDialog(FileSystemBrowserOptions options) { if (IsOpen) { throw new InvalidOperationException(Resources.DialogOpenAlready); } var tuple = default((DialogResult Result, IList <IFileSystemFile> Files)); var viewModel = new FileBrowserDialogViewModel(_fileSystemViewModel, options); TitleDetail = string.Empty; Context = viewModel; Title = options.Title; IsCancelVisible = options.CanCancel; using (_messenger.Subscribe <FileSystemInfoChangedMessage>(FileSystemInfoChanged)) { AcceptAction = () => { var items = viewModel.FileSystemViewModel.SelectedItems; tuple = (DialogResult.OK, items.Select(p => p as IFileSystemFile).Where(p => p != null).ToList()); }; CancelAction = () => { var items = viewModel.FileSystemViewModel.SelectedItems; tuple = (DialogResult.Cancel, new List <IFileSystemFile>()); }; await Open().ConfigureAwait(false); } return(tuple); }
public async Task <(bool Result, ICollection <MediaItem> MediaItems)> ShowMediaItemSelectionDialog(FileSystemBrowserOptions options, CancellationToken token) { var mediaItems = new List <MediaItem>(); (var Result, var Files) = await ShowFileBrowserDialog(options, token).ConfigureAwait(true); if (!Result) { return(Result, mediaItems); } foreach (var file in Files) { // TODO parse the files and generate mediaitems from them } return(Result, mediaItems); }