private void btnStart_Click(object sender, System.EventArgs e) { switch (step) { case TimingStep.NotStarted: _start = DateTime.Now; timerStartToSilence.Enabled = true; step = TimingStep.StartToSilence; break; case TimingStep.StartToSilence: StartToSilence = DateTime.Now - _start; timerStartToSilence.Enabled = false; lblVerse.Text = _secondVerse; _start = DateTime.Now; timerSilenceToStop.Enabled = true; step = TimingStep.SilenceToStop; break; case TimingStep.SilenceToStop: SilenceToStop = DateTime.Now - _start; timerSilenceToStop.Enabled = false; lblVerse.Text = _firstVerse; step = TimingStep.NotStarted; break; } }
private void lblVerse_Click(object sender, EventArgs e) { if (!_started) { _start = DateTime.Now; _started = true; _firstVerse = true; lblVerse.Text = _Verses.Count > 0 ? _Verses[0]._Text : ""; lblNextVerse.Text = _Verses.Count > 1 ? _Verses[1]._Text : ""; timer.Enabled = true; _step = TimingStep.StartToSilence; _CurVerse = 0; } else { timer.Enabled = false; } }
private void timer_Tick(object sender, EventArgs e) { TimeSpan span = DateTime.Now - _start; switch (_step) { case TimingStep.StartToSilence: if (span >= StartToSilence) { if ((_CurVerse + 1) >= _Verses.Count) { timer.Enabled = false; progressBar.Value = 100; lblVerse.Text = "پایان"; } else { _step = TimingStep.SilenceToStop; _start = DateTime.Now; lblVerse.Text = "تنفس"; } } else { double ratio = span.TotalMilliseconds / StartToSilence.TotalMilliseconds; string verse = lblVerse.Text; lblVerse.Keyword = verse.Substring(0, (int)(ratio * verse.Length)); lblVerse.Invalidate(); progressBar.Value = (int)(ratio * 100); } break; case TimingStep.SilenceToStop: if ( (_firstVerse && span >= SilenceToStop) || (!_firstVerse && span >= (SilenceToStop + SilenceToStop)) ) { _CurVerse++; if (_CurVerse < _Verses.Count) { lblVerse.Text = _Verses[_CurVerse]._Text; if ((_CurVerse + 1) < _Verses.Count) { lblNextVerse.Text = _Verses[_CurVerse + 1]._Text; } else { lblNextVerse.Text = "پایان"; } } _firstVerse = !_firstVerse; _step = TimingStep.StartToSilence; _start = DateTime.Now; } break; } }