public PageControllerModel( PageControllerToken token, ModuleActivator activator, PageControllerReducer reducer, SerialUtil serialUtil, MainReducer mainReducer, WindowPageHost windowPageHost, DatabaseManager databaseManager, DatabaseBackupService databaseBackupService ) { _activator = activator; _windowPageHost = windowPageHost; _databaseManager = databaseManager; _databaseBackupService = databaseBackupService; this._serialUtil = serialUtil; InitHandlers(); ActivateContent(token); this.WhenActivated((c) => { mainReducer.Select(state => state.FullscreenMode) .ObserveOnDispatcher(DispatcherPriority.Background) .Subscribe(isFullScreen => this.MenuVisibility = !isFullScreen) .DisposeWith(c); reducer.Select(state => state.SelectedPage) .Where(LambdaHelper.NotNull) .WithLatestFrom(reducer.Select(state => state.Controls), LambdaHelper.ToTuple) .ObserveOnDispatcher(DispatcherPriority.Background) .Subscribe(tuple => { var(selectedPage, controlsDict) = tuple; var controls = selectedPage == null ? new List <ButtonConfig>() : controlsDict.GetOrDefault(selectedPage.Id) ?? new List <ButtonConfig>(); SetActionButtons(controls); }) .DisposeWith(c); _serialUtil.ConnectionStatus .ObserveOnDispatcher(DispatcherPriority.Background) .Select(status => status.IsConnected) .Subscribe(status => { this.ReaderMenuText = status ? Localization["Отключить считыватель"] : Localization["Включить считыватель"]; }) .DisposeWith(c); }); }
private void ActivateContent(PageControllerToken token) { var tabControllerToken = new TabControllerToken(); if (token.Content == null) { _activator.ActivateAsync(tabControllerToken) .ToObservable() .ObserveOnDispatcher(DispatcherPriority.Background) .Subscribe(module => { _host = module.Injector.Locate <TabPageHost>(); this.CentralControl = module.GetEntryComponent(); _host.AddPageAsync(token.ContentToken); }); } else { var tabModule = _activator.Activate(tabControllerToken); _host = tabModule.Injector.Locate <TabPageHost>(); this.CentralControl = tabModule.GetEntryComponent(); // _host.Attach(token.Content); } }
public PageControllerReducer(PageControllerToken token, Storage storage) : base(token, storage) { }