public IObservable <LoadData> SetupUI(UIControllerFlow controllerFlow, [AllowNull] IConnection connection) { StopUI(); var factory = TryGetService(typeof(IExportFactoryProvider)) as IExportFactoryProvider; currentUIFlow = factory.UIControllerFactory.CreateExport(); var disposable = currentUIFlow; var ui = currentUIFlow.Value; var creation = ui.SelectFlow(controllerFlow); windowController = new UI.WindowController(creation); windowController.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner; windowController.Closed += StopUIFlowWhenWindowIsClosedByUser; creation.Subscribe(c => {}, () => { windowController.Closed -= StopUIFlowWhenWindowIsClosedByUser; windowController.Close(); if (currentUIFlow != disposable) { StopUI(disposable); } else { StopUI(); } }); ui.Start(connection); return(creation); }
public void RunInDialog(IUIController controller) { var listener = controller.TransitionSignal; windowController = new UI.WindowController(listener); windowController.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner; EventHandler stopUIAction = (s, e) => { StopUI(controller); }; windowController.Closed += stopUIAction; listener.Subscribe(_ => { }, () => { windowController.Closed -= stopUIAction; windowController.Close(); StopUI(controller); }); controller.Start(); windowController.ShowModal(); windowController = null; }
public IObservable <LoadData> SetupUI(UIControllerFlow controllerFlow, [AllowNull] IConnection connection) { if (!Initialized) { log.Error("ExportProvider is not initialized, cannot setup UI."); return(Observable.Empty <LoadData>()); } StopUI(); var factory = GetService <IExportFactoryProvider>(); currentUIFlow = factory.UIControllerFactory.CreateExport(); var disposable = currentUIFlow; var ui = currentUIFlow.Value; var creation = ui.SelectFlow(controllerFlow); windowController = new UI.WindowController(creation); windowController.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner; windowController.Closed += StopUIFlowWhenWindowIsClosedByUser; creation.Subscribe(c => {}, () => { windowController.Closed -= StopUIFlowWhenWindowIsClosedByUser; windowController.Close(); if (currentUIFlow != disposable) { StopUI(disposable); } else { StopUI(); } }); ui.Start(connection); return(creation); }