Esempio n. 1
0
        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);
        }