Ejemplo n.º 1
0
 private Task LoadFromFile()
 {
     using (BusyStack.GetToken())
     {
         var options = new FileSystemBrowserOptions()
         {
             CanCancel      = true,
             MultiSelection = false,
             Title          = _translator.Translate(nameof(Resources.SelectFiles)),
         };
         return(_dialogViewModel.ShowFileBrowserDialog(options));
     }
 }
Ejemplo n.º 2
0
        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);
                }
            }
        }
Ejemplo n.º 3
0
 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}");
 }
Ejemplo n.º 4
0
 public FileBrowserDialogViewModel(FileSystemViewModel fileSystemViewModel, FileSystemBrowserOptions options)
 {
     _options            = options ?? throw new ArgumentNullException(nameof(options));
     FileSystemViewModel = fileSystemViewModel ?? throw new ArgumentNullException(nameof(fileSystemViewModel));
 }
Ejemplo n.º 5
0
        /// <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);
        }
Ejemplo n.º 6
0
        /// <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);
        }
Ejemplo n.º 7
0
        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);
        }