feat: 添加暂停和恢复功能以优化工作计时管理

This commit is contained in:
2026-01-17 14:12:52 +08:00
parent 694b40e06b
commit 50955e84c7
3 changed files with 114 additions and 7 deletions

View File

@@ -61,6 +61,7 @@ namespace TimerApp
btnRestPlus.BackColor = panelColor;
btnStartStop.BackColor = dark ? Color.FromArgb(63, 63, 70) : Color.White;
btnReset.BackColor = dark ? Color.FromArgb(63, 63, 70) : Color.White;
btnPause.BackColor = dark ? Color.FromArgb(63, 63, 70) : Color.White;
// 优化绘制,减少闪烁
this.SetStyle(ControlStyles.AllPaintingInWmPaint |
@@ -256,6 +257,7 @@ namespace TimerApp
// Update buttons
UpdateButtonStyle(btnStartStop, dark);
UpdateButtonStyle(btnReset, dark);
UpdateButtonStyle(btnPause, dark);
UpdateButtonStyle(btnHide, dark);
// Numeric buttons and text
@@ -372,6 +374,20 @@ namespace TimerApp
_monitor.Restart();
}
private void btnPause_Click(object sender, EventArgs e)
{
if (_monitor.IsPaused)
{
_monitor.Resume();
btnPause.Text = "暂停";
}
else
{
_monitor.Pause();
btnPause.Text = "恢复";
}
}
private void ApplySettings()
{
int workMin = 20;
@@ -400,6 +416,18 @@ namespace TimerApp
bool dark = _settings.IsDarkMode;
// 更新暂停按钮状态
if (_monitor.CurrentState == MonitorState.Idle)
{
btnPause.Enabled = false;
btnPause.Text = "暂停";
}
else
{
btnPause.Enabled = true;
btnPause.Text = _monitor.IsPaused ? "恢复" : "暂停";
}
switch (_monitor.CurrentState)
{
case MonitorState.Idle:
@@ -409,12 +437,12 @@ namespace TimerApp
lblTimeLeft.ForeColor = Color.Gray;
break;
case MonitorState.Working:
lblStatus.Text = "状态: 工作中";
lblStatus.Text = _monitor.IsPaused ? "状态: 工作中 (已暂停)" : "状态: 工作中";
lblStatus.ForeColor = dark ? Color.LightGreen : Color.Green;
lblTimeLeft.ForeColor = dark ? Color.White : Color.Black;
break;
case MonitorState.Resting:
lblStatus.Text = "状态: 休息中";
lblStatus.Text = _monitor.IsPaused ? "状态: 休息中 (已暂停)" : "状态: 休息中";
lblStatus.ForeColor = dark ? Color.LightSkyBlue : Color.Blue;
lblTimeLeft.ForeColor = dark ? Color.LightSkyBlue : Color.Blue;
break;