private void OpenFile(FileInfo file) { _schedulerProvider.Background.Schedule(() => { try { _logger.Info($"Attempting to open '{file.FullName}'"); RecentFiles.Add(file); //1. resolve TailViewModel var factory = _objectProvider.Get <TailViewModelFactory>(); var newItem = factory.Create(file); //2. Display it _windowsController.Register(newItem); _logger.Info($"Objects for '{file.FullName}' has been created."); //do the work on the ui thread _schedulerProvider.MainThread.Schedule(() => { Views.Add(newItem); _logger.Info($"Opened '{file.FullName}'"); Selected = newItem; }); } catch (Exception ex) { //TODO: Create a failed to load view _logger.Error(ex, $"There was a problem opening '{file.FullName}'"); } }); }
private async Task <bool> OpenFile(IEnumerable <FileInfo> files) { OpenedFileCount = files.Count(); if (OpenedFileCount > 1) { //Here we can set the dialog window's message Dialog.text = "Would you like to tail these files?"; //Showing the dialog window await DialogHost.Show(Dialog, FileOpen.Id); //Testing the pushed button if (Dialog.Button) { //Tailing multiple files _schedulerProvider.Background.Schedule(() => { //await DialogHost.Show(Dialog, DialogNames.EntireWindow); try { _logger.Info($"Attempting to open '{files.Count()}' files"); var factory = _objectProvider.Get <TailViewModelFactory>(); var viewModel = factory.Create(files); var newItem = new ViewContainer(new FilesHeader(files), viewModel); _windowsController.Register(newItem); //_logger.Info($"Objects for '{file.FullName}' has been created."); //do the work on the ui thread _schedulerProvider.MainThread.Schedule(() => { Views.Add(newItem); _logger.Info($"Opened '{files.Count()}' files"); Selected = newItem; }); } catch { // ignored } }); } else { foreach (var fileInfo in files) { OpenFile(fileInfo); } } } else { OpenFile(files.ElementAt(0)); } return(true); }