示例#1
0
        public MainPresenter(MainGridModel mainGridModel, IMainView view, IMessagesView messagesView, IViewFactory viewFactory,
                             IMessageBoxView messageBoxView, UserStatsDataModel userStatsDataModel, IPresenterFactory presenterFactory,
                             IClientConfiguration clientConfiguration, IProteinService proteinService, IUpdateLogic updateLogic,
                             Core.ScheduledTasks.RetrievalModel retrievalModel, IExternalProcessStarter processStarter,
                             IPreferenceSet prefs, ClientSettingsManager settingsManager)
        {
            _gridModel = mainGridModel;
            _gridModel.AfterResetBindings += (sender, e) =>
            {
                // run asynchronously so binding operation can finish
                _view.BeginInvoke(new Action(() =>
                {
                    DisplaySelectedSlotData();
                    _view.RefreshControlsWithTotalsData(_gridModel.SlotTotals);
                }), null);
            };
            _gridModel.SelectedSlotChanged += (sender, e) =>
            {
                if (e.Index >= 0 && e.Index < _view.DataGridView.Rows.Count)
                {
                    // run asynchronously so binding operation can finish
                    _view.BeginInvoke(new Action(() =>
                    {
                        _view.DataGridView.Rows[e.Index].Selected = true;
                        DisplaySelectedSlotData();
                    }), null);
                }
            };
            _userStatsDataModel = userStatsDataModel;

            // Views
            _view           = view;
            _messagesView   = messagesView;
            _messageBoxView = messageBoxView;
            //
            _viewFactory      = viewFactory;
            _presenterFactory = presenterFactory;
            // Collections
            _clientConfiguration = clientConfiguration;
            _proteinService      = proteinService;
            // Logic Services
            _updateLogic       = updateLogic;
            _updateLogic.Owner = _view;
            _retrievalModel    = retrievalModel;
            _processStarter    = processStarter;
            // Data Services
            _prefs           = prefs;
            _settingsManager = settingsManager;

            _clientConfiguration.ConfigurationChanged += delegate { AutoSaveConfig(); };
        }
示例#2
0
        public MainPresenter(MainModel model, ILogger logger, IServiceScopeFactory serviceScopeFactory, MessageBoxPresenter messageBox,
                             ClientConfiguration clientConfiguration, IProteinService proteinService, EocStatsScheduledTask eocStatsScheduledTask)
            : base(model)
        {
            Model  = model;
            Logger = logger ?? NullLogger.Instance;
            ServiceScopeFactory = serviceScopeFactory ?? NullServiceScopeFactory.Instance;
            MessageBox          = messageBox ?? NullMessageBoxPresenter.Instance;
            ClientConfiguration = clientConfiguration;
            ProteinService      = proteinService ?? NullProteinService.Instance;

            UserStatsDataModel = new UserStatsDataModel(Form, Model.Preferences, eocStatsScheduledTask);
            Preferences        = Model.Preferences;
            GridModel          = new MainGridModel(Form, Model.Preferences, clientConfiguration);
            GridModel.Load();

            GridModel.AfterResetBindings += (s, e) =>
            {
                // Create a local reference before handing off to BeginInvoke.
                // This ensures that the BeginInvoke action uses the state of GridModel properties available now,
                // not the state of GridModel properties when the BeginInvoke action is executed (at a later time).
                var selectedSlot = GridModel.SelectedSlot;
                var slotTotals   = GridModel.SlotTotals;
                // run asynchronously so binding operation can finish
                Form.BeginInvoke(new Action(() =>
                {
                    Model.GridModelSelectedSlotChanged(selectedSlot);
                    Model.GridModelSlotTotalsChanged(slotTotals);
                }), null);
            };
            GridModel.PropertyChanged += (s, e) =>
            {
                switch (e.PropertyName)
                {
                case nameof(MainGridModel.SelectedSlot):
                    // Create a local reference before handing off to BeginInvoke.
                    // This ensures that the BeginInvoke action uses the state of GridModel properties available now,
                    // not the state of GridModel properties when the BeginInvoke action is executed (at a later time).
                    var selectedSlot = GridModel.SelectedSlot;
                    // run asynchronously so binding operation can finish
                    Form.BeginInvoke(new Action(() => Model.GridModelSelectedSlotChanged(selectedSlot)), null);
                    break;
                }
            };

            _settingsManager = new ClientSettingsManager(Logger);

            ClientConfiguration.ClientConfigurationChanged += (s, e) => AutoSaveConfig();
        }
示例#3
0
        public void Initialize(MainPresenter presenter, IProteinService service, UserStatsDataModel userStatsDataModel)
        {
            _presenter = presenter;
            // Resize can be invoked when InitializeComponent() is called
            // if the DPI is not set to Normal (96 DPI).  The MainFormResize
            // method depends on _presenter HAVING A VALUE.  Wait to hook
            // up this event until after _presenter has been set (above).
            Resize += MainFormResize;

            #region Initialize Controls

            // Manually Create the Columns - Issue 41
            dataGridView1.AutoGenerateColumns = false;
            SetupDataGridViewColumns(dataGridView1);
            // Add Column Selector
            new DataGridViewColumnSelector(dataGridView1);
            // Give the Queue Control access to the Protein Collection
            queueControl.SetProteinService(service);

            #endregion

            // Initialize the Presenter
            _presenter.Initialize();

            BindToUserStatsDataModel(userStatsDataModel);
            // Hook-up Status Label Event Handlers
            SubscribeToStatsLabelEvents();

            #region Hook-up DataGridView Event Handlers for Mono

            // If Mono, use the RowEnter Event (which was what 0.3.0 and prior used)
            // to set the CurrentInstance selection.  Obviously Mono doesn't fire the
            // DataGridView.SelectionChanged Event.
            if (Core.Application.IsRunningOnMono)
            {
                //dataGridView1.RowEnter += delegate
                //{
                //   _presenter.SetSelectedInstance(GetSelectedRowInstanceName(dataGridView1.SelectedRows));
                //};
                //// Use RowLeave to clear data grid when selecting New file under Mono
                //dataGridView1.RowLeave += delegate
                //{
                //   _presenter.SetSelectedInstance(GetSelectedRowInstanceName(dataGridView1.SelectedRows));
                //};
            }

            #endregion
        }
示例#4
0
        private void UserStatsDataModelPropertyChangedForMono(UserStatsDataModel userStatsDataModel)
        {
            statusUserTeamRank.Text    = userStatsDataModel.Rank;
            statusUserProjectRank.Text = userStatsDataModel.OverallRank;
            statusUser24hr.Text        = userStatsDataModel.TwentyFourHourAvgerage;
            statusUserToday.Text       = userStatsDataModel.PointsToday;
            statusUserWeek.Text        = userStatsDataModel.PointsWeek;
            statusUserTotal.Text       = userStatsDataModel.PointsTotal;
            statusUserWUs.Text         = userStatsDataModel.WorkUnitsTotal;

            statusUserTeamRank.Visible    = userStatsDataModel.ControlsVisible;
            statusUserProjectRank.Visible = userStatsDataModel.OverallRankVisible;
            statusUser24hr.Visible        = userStatsDataModel.ControlsVisible;
            statusUserToday.Visible       = userStatsDataModel.ControlsVisible;
            statusUserWeek.Visible        = userStatsDataModel.ControlsVisible;
            statusUserTotal.Visible       = userStatsDataModel.ControlsVisible;
            statusUserWUs.Visible         = userStatsDataModel.ControlsVisible;
        }
示例#5
0
        private void BindToUserStatsDataModel(UserStatsDataModel userStatsDataModel)
        {
            statusUserTeamRank.DataBindings.Add("Text", userStatsDataModel, "Rank", false, DataSourceUpdateMode.OnPropertyChanged);
            statusUserProjectRank.DataBindings.Add("Text", userStatsDataModel, "OverallRank", false, DataSourceUpdateMode.OnPropertyChanged);
            statusUser24hr.DataBindings.Add("Text", userStatsDataModel, "TwentyFourHourAvgerage", false, DataSourceUpdateMode.OnPropertyChanged);
            statusUserToday.DataBindings.Add("Text", userStatsDataModel, "PointsToday", false, DataSourceUpdateMode.OnPropertyChanged);
            statusUserWeek.DataBindings.Add("Text", userStatsDataModel, "PointsWeek", false, DataSourceUpdateMode.OnPropertyChanged);
            statusUserTotal.DataBindings.Add("Text", userStatsDataModel, "PointsTotal", false, DataSourceUpdateMode.OnPropertyChanged);
            statusUserWUs.DataBindings.Add("Text", userStatsDataModel, "WorkUnitsTotal", false, DataSourceUpdateMode.OnPropertyChanged);

            statusUserTeamRank.DataBindings.Add("Visible", userStatsDataModel, "ControlsVisible", false, DataSourceUpdateMode.OnPropertyChanged);
            statusUserProjectRank.DataBindings.Add("Visible", userStatsDataModel, "OverallRankVisible", false, DataSourceUpdateMode.OnPropertyChanged);
            statusUser24hr.DataBindings.Add("Visible", userStatsDataModel, "ControlsVisible", false, DataSourceUpdateMode.OnPropertyChanged);
            statusUserToday.DataBindings.Add("Visible", userStatsDataModel, "ControlsVisible", false, DataSourceUpdateMode.OnPropertyChanged);
            statusUserWeek.DataBindings.Add("Visible", userStatsDataModel, "ControlsVisible", false, DataSourceUpdateMode.OnPropertyChanged);
            statusUserTotal.DataBindings.Add("Visible", userStatsDataModel, "ControlsVisible", false, DataSourceUpdateMode.OnPropertyChanged);
            statusUserWUs.DataBindings.Add("Visible", userStatsDataModel, "ControlsVisible", false, DataSourceUpdateMode.OnPropertyChanged);

            if (Core.Application.IsRunningOnMono)
            {
                userStatsDataModel.PropertyChanged += (s, e) => UserStatsDataModelPropertyChangedForMono(userStatsDataModel);
            }
        }
示例#6
0
        private void LoadUserStatsData(UserStatsDataModel userStatsDataModel)
        {
            statusUserTeamRank.BindText(userStatsDataModel, nameof(UserStatsDataModel.Rank));
            statusUserProjectRank.BindText(userStatsDataModel, nameof(UserStatsDataModel.OverallRank));
            statusUser24hr.BindText(userStatsDataModel, nameof(UserStatsDataModel.TwentyFourHourAverage));
            statusUserToday.BindText(userStatsDataModel, nameof(UserStatsDataModel.PointsToday));
            statusUserWeek.BindText(userStatsDataModel, nameof(UserStatsDataModel.PointsWeek));
            statusUserTotal.BindText(userStatsDataModel, nameof(UserStatsDataModel.PointsTotal));
            statusUserWUs.BindText(userStatsDataModel, nameof(UserStatsDataModel.WorkUnitsTotal));

            statusUserTeamRank.BindVisible(userStatsDataModel, nameof(UserStatsDataModel.ControlsVisible));
            statusUserProjectRank.BindVisible(userStatsDataModel, nameof(UserStatsDataModel.OverallRankVisible));
            statusUser24hr.BindVisible(userStatsDataModel, nameof(UserStatsDataModel.ControlsVisible));
            statusUserToday.BindVisible(userStatsDataModel, nameof(UserStatsDataModel.ControlsVisible));
            statusUserWeek.BindVisible(userStatsDataModel, nameof(UserStatsDataModel.ControlsVisible));
            statusUserTotal.BindVisible(userStatsDataModel, nameof(UserStatsDataModel.ControlsVisible));
            statusUserWUs.BindVisible(userStatsDataModel, nameof(UserStatsDataModel.ControlsVisible));

            if (Core.Application.IsRunningOnMono)
            {
                userStatsDataModel.PropertyChanged += (s, e) => UserStatsDataModelPropertyChangedForMono(userStatsDataModel);
            }
        }
示例#7
0
 // User Stats
 public void SetUserStatsDataViewStyle(bool showTeamStats)
 {
     UserStatsDataModel.SetViewStyle(showTeamStats);
 }
示例#8
0
 public void RefreshUserStatsData()
 {
     UserStatsDataModel.Refresh();
 }