public MainWindow(IViewModel <MainWindowViewModel> model, LocLocalizer localizer,
                          IMainWindowCoordinator mainWindowCoordinator, IDialogCoordinator coordinator,
                          ProjectFileWorkspace workspace,
                          CommonUIFramework framework, IOperationManager operationManager)
            : base(model)
        {
            _localizer             = localizer;
            _mainWindowCoordinator = mainWindowCoordinator;
            _coordinator           = coordinator;
            _workspace             = workspace;
            _framework             = framework;

            InitializeComponent();

            var diag = (IDialogCoordinatorUIEvents)_coordinator;

            diag.ShowDialogEvent += o => this.ShowDialog(o);
            diag.HideDialogEvent += () => Dialogs.CurrentSession?.Close();

            _mainWindowCoordinator.TitleChanged +=
                () => Dispatcher.BeginInvoke(new Action(MainWindowCoordinatorOnTitleChanged));
            _mainWindowCoordinator.IsBusyChanged += IsBusyChanged;

            Closing += OnClosing;
            Closed  += async(_, _) =>
            {
                SaveLayout();
                Shutdown?.Invoke(this, EventArgs.Empty);

                await Task.Delay(TimeSpan.FromSeconds(60));

                Process.GetCurrentProcess().Kill(false);
            };

            operationManager.OperationFailed
            .ObserveOnDispatcher()
            .Subscribe(f =>
            {
                Snackbar.MessageQueue ??= new SnackbarMessageQueue(TimeSpan.FromSeconds(5));
                Snackbar.MessageQueue.Enqueue($"{f.Status ?? " / "}");
            });
        }
示例#2
0
 public DialogCoordinator(CommonUIFramework framework) => _framework = framework;