コード例 #1
0
        public MainFormPresenter(IMainView view, ISharedViewState sharedViewState, IApplicationManager applicationManager)
        {
            _view               = view;
            _sharedViewState    = sharedViewState;
            _applicationManager = applicationManager;


            //  _view.EnterClicked += (o, e) => _sharedViewState.CurrentAction?.Invoke(o, e);


            _view.ModeForcedToReal += (sender, args) =>
            {
                //   SetMode(CalculationsMode.Real);
                EventAggregator.Instance.Publish(new CalculationsModeChangedEvent(CalculationsMode.Real));
            };
            _view.ModeForcedToComplex += (sender, args) =>
            {
                //  SetMode(CalculationsMode.Complex);
                EventAggregator.Instance.Publish(new CalculationsModeChangedEvent(CalculationsMode.Complex));
            };
            _view.ModeForcedToFxy += (sender, args) =>
            {
                //  SetMode(CalculationsMode.Fxy);
                EventAggregator.Instance.Publish(new CalculationsModeChangedEvent(CalculationsMode.Fxy));
            };

            EventAggregator.Instance.Subscribe <CalculationsModeChangedEvent>(mode => SetMode(mode.CalculationsMode));

            Settings.Default.PropertyChanged += (o, e) =>
            {
                switch (e.PropertyName)
                {
                case nameof(Settings.Default.Language):
                    _applicationNeedRestart = !Equals(CultureInfo.CurrentCulture, Settings.Default.Language);
                    break;
                }
            };

            Settings.Default.SettingsSaved += (o, e) =>
            {
                if (_applicationNeedRestart)
                {
                    _applicationNeedRestart = false;
                    Task.Factory.StartNew(() => { Thread.Sleep(400); _applicationManager.Restart(); });
                }
            };

            ///////EventAggregator.Instance.Subscribe<ChangeViewEvent>(cv => { _view.SelectedViewIndex = (int) cv.View; });

            _view.SelectedViewIndex = (int)_sharedViewState.CurrentView;

            _sharedViewState.PropertyChanged += (o, e) =>
            {
                switch (e.PropertyName)
                {
                case nameof(_sharedViewState.CurrentView):
                    Logger.Info($"Changing {nameof(_view.SelectedViewIndex)} {(ViewName)_view.SelectedViewIndex} to {_sharedViewState.CurrentView}");
                    _view.SelectedViewIndex = (int)_sharedViewState.CurrentView;
                    break;
                }
            };

            _view.SelectedViewChanged += _view_SelectedViewChanged;

            _view.StatusText = AppInformation.Version;
        }