コード例 #1
0
        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);
            });
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
 public PageControllerReducer(PageControllerToken token, Storage storage)
     : base(token, storage)
 {
 }