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(); }; }
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(); }
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 }
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; }
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); } }
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); } }
// User Stats public void SetUserStatsDataViewStyle(bool showTeamStats) { UserStatsDataModel.SetViewStyle(showTeamStats); }
public void RefreshUserStatsData() { UserStatsDataModel.Refresh(); }