Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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;
            }
        }
Esempio n. 3
0
        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;
            }
        }
Esempio n. 4
0
        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;
            }
        }