private void mainActionButton_Click(object sender, EventArgs e) { switch (currentMode) { case StopWatchMode.Options: MessageBox.Show(Properties.Languages.warningNoStartTimer, Name, MessageBoxButtons.OK, MessageBoxIcon.Information); break; case StopWatchMode.Default: biosTimer.Enabled = false; bool isLapCounted = Properties.Settings.Default.isLappingEnabled; if (isLapCounted && Properties.Settings.Default.lappingCount == 0) { bool isInfoAccepted = MessageBox.Show(Properties.Languages.infoNoLapRecord, Name, MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes; if (!isInfoAccepted) { return; } } DisplayTime(TimeSpan.Zero); currentMode = StopWatchMode.Prepared; stopWatch.Reset(); delayTime = TimeSpan.FromSeconds(GetRandomNumber(Properties.Settings.Default.delayTimeStart, Properties.Settings.Default.delayTimeStop)); lastLap = delayTime + preparedTime; isDelayTimeShows = Properties.Settings.Default.isDelayTimeShows; isDelayLapAllowed = new[] { LapAllowances.DELAYS_ONLY, LapAllowances.ALL_DURATIONS }.Contains(Properties.Settings.Default.lapsAllowancesType); isStartLapAllowed = new[] { LapAllowances.AFTER_DELAYS, LapAllowances.ALL_DURATIONS }.Contains(Properties.Settings.Default.lapsAllowancesType); displayType = Properties.Settings.Default.lapsDisplayType; ChangeModeUI(currentMode); timer.Enabled = true; stopWatch.Start(); break; case StopWatchMode.Prepared: break; case StopWatchMode.Delayed: break; case StopWatchMode.Started: stopWatch.Stop(); currentMode = StopWatchMode.Paused; timer_Tick(this, null); timer.Enabled = false; ChangeModeUI(currentMode); break; case StopWatchMode.Paused: currentMode = StopWatchMode.Started; ChangeModeUI(currentMode); timer.Enabled = true; stopWatch.Start(); break; default: break; } }
private void timer_Tick(object sender, EventArgs e) { switch (currentMode) { case StopWatchMode.Options: stopWatch.Reset(); timer.Enabled = false; break; case StopWatchMode.Default: stopWatch.Reset(); timer.Enabled = false; break; case StopWatchMode.Paused: break; default: if (stopWatch.Elapsed > (delayTime + preparedTime)) { if (currentMode != StopWatchMode.Started) { currentMode = StopWatchMode.Started; ChangeModeUI(currentMode); } DisplayTime(stopWatch.Elapsed - delayTime - preparedTime); } else if (stopWatch.Elapsed > preparedTime) { if (currentMode != StopWatchMode.Delayed) { currentMode = StopWatchMode.Delayed; ChangeModeUI(currentMode); } if (isDelayTimeShows) { // Needs positive time, since ChangeModeUI() already toggles negative mode DisplayTime(delayTime + preparedTime - stopWatch.Elapsed); } } else if (currentMode != StopWatchMode.Prepared) { currentMode = StopWatchMode.Prepared; ChangeModeUI(currentMode); } break; } }
private void secondaryActionButton_Click(object sender, EventArgs e) { switch (currentMode) { case StopWatchMode.Options: timer.Interval = Properties.Settings.Default.updateThreshold; preparedTime = TimeSpan.FromSeconds(Properties.Settings.Default.preparationTime); currentMode = StopWatchMode.Default; ChangeModeUI(currentMode); ToggleExtendMenuVisibility(false); break; case StopWatchMode.Default: // Options button currentMode = StopWatchMode.Options; ChangeModeUI(currentMode); ToggleExtendMenuVisibility(true); break; case StopWatchMode.Prepared: MessageBox.Show(Properties.Languages.infoWaitForSignal, Name, MessageBoxButtons.OK, MessageBoxIcon.Information); break; case StopWatchMode.Delayed: if (!isExpanded) { ToggleExtendMenuVisibility(true); extendForm.lapsControl.Visible = true; } AddDelayLap(); if (extendForm.lapsControl.laps.Count >= Properties.Settings.Default.lappingCount && Properties.Settings.Default.lappingCount >= 0) { secondaryActionButton.Enabled = false; } break; case StopWatchMode.Started: if (!isExpanded) { ToggleExtendMenuVisibility(true); extendForm.lapsControl.Visible = true; } AddStartLap(); if (extendForm.lapsControl.laps.Count >= Properties.Settings.Default.lappingCount && Properties.Settings.Default.lappingCount >= 0) { secondaryActionButton.Enabled = false; } break; case StopWatchMode.Paused: currentMode = StopWatchMode.Default; preparedTime = TimeSpan.FromSeconds(Properties.Settings.Default.preparationTime); extendForm.lapsControl.ResetLap(); if (isExpanded) { ToggleExtendMenuVisibility(false); } DisplayTime(TimeSpan.Zero); ChangeModeUI(currentMode); if (Properties.Settings.Default.isBiosTimeEnabled) { biosTimer.Enabled = true; } break; default: break; } }
public void ChangeModeUI(StopWatchMode mode) { switch (mode) { case StopWatchMode.Options: mainActionButton.Enabled = false; secondaryActionButton.Text = Properties.Languages.backButtonText; extendForm.settingsControl.Visible = true; break; case StopWatchMode.Default: mainActionButton.Enabled = true; mainActionButton.Text = Properties.Languages.startButtonText; secondaryActionButton.Text = Properties.Languages.optionsButtonText; if (!Properties.Settings.Default.isBiosTimeEnabled) { tickTimerText.Text = Properties.Languages.tickIdleText; } else { biosTimer_Tick(secondaryActionButton, null); } extendForm.settingsControl.Visible = true; extendForm.lapsControl.Visible = false; // Temporary disable theme to properly apply dark mode (when possible) metroStyleExtender.SetApplyMetroTheme(mainTimerText, false); mainTimerText.ForeColor = defaultForeColor; metroStyleExtender.SetApplyMetroTheme(mainTimerText, true); break; case StopWatchMode.Prepared: mainActionButton.Enabled = false; secondaryActionButton.Enabled = false; mainActionButton.Text = Properties.Languages.waitButtonText; secondaryActionButton.Text = Properties.Languages.lapButtonText; mainTimerText.ForeColor = Properties.Settings.Default.preparationTimeColor; tickTimerText.Text = Properties.Languages.preparationPhaseText; extendForm.settingsControl.Visible = false; extendForm.lapsControl.Visible = true; break; case StopWatchMode.Delayed: if (isDelayLapAllowed) { secondaryActionButton.Enabled = true; } mainActionButton.Text = Properties.Languages.waitButtonText; secondaryActionButton.Text = Properties.Languages.lapButtonText; if (!Properties.Settings.Default.isLappingEnabled || Properties.Settings.Default.lappingCount == 0) { secondaryActionButton.Enabled = false; } mainTimerText.ForeColor = Properties.Settings.Default.delayTimeColor; break; case StopWatchMode.Started: mainActionButton.Enabled = true; if (isStartLapAllowed) { secondaryActionButton.Enabled = true; } else { secondaryActionButton.Enabled = false; } mainActionButton.Text = Properties.Languages.stopButtonText; secondaryActionButton.Text = Properties.Languages.lapButtonText; if (!Properties.Settings.Default.isLappingEnabled || (extendForm.lapsControl.laps.Count >= Properties.Settings.Default.lappingCount && Properties.Settings.Default.lappingCount >= 0)) { secondaryActionButton.Enabled = false; } mainTimerText.ForeColor = Properties.Settings.Default.startTimeColor; break; case StopWatchMode.Paused: secondaryActionButton.Enabled = true; mainActionButton.Text = Properties.Languages.startButtonText; secondaryActionButton.Text = Properties.Languages.resetButtonText; mainTimerText.ForeColor = Properties.Settings.Default.pauseTimeColor; break; default: break; } }