improve:计时器UI

This commit is contained in:
2025-10-06 19:43:04 +08:00
parent aa3be4ab0d
commit 3ef047fb41
4 changed files with 394 additions and 0 deletions
@@ -26,6 +26,11 @@ namespace Ink_Canvas
// 应用主题
ApplyTheme();
// 初始化隐藏定时器
hideTimer = new Timer(1000); // 每秒检查一次
hideTimer.Elapsed += HideTimer_Elapsed;
lastActivityTime = DateTime.Now;
}
@@ -86,6 +91,9 @@ namespace Ink_Canvas
bool isPaused = false;
Timer timer = new Timer();
private Timer hideTimer;
private MinimizedTimerWindow minimizedWindow;
private DateTime lastActivityTime;
// 最近计时记录
private string recentTimer1 = "--:--";
@@ -194,6 +202,70 @@ namespace Ink_Canvas
SetDigitDisplay("Digit6Display", second % 10);
}
private void HideTimer_Elapsed(object sender, ElapsedEventArgs e)
{
Application.Current.Dispatcher.Invoke(() =>
{
// 只有在计时器运行时才检查自动隐藏
if (isTimerRunning && !isPaused)
{
var timeSinceLastActivity = DateTime.Now - lastActivityTime;
if (timeSinceLastActivity.TotalSeconds >= 5) // 5秒无操作
{
ShowMinimizedWindow();
}
}
});
}
private void ShowMinimizedWindow()
{
if (minimizedWindow == null || !minimizedWindow.IsVisible)
{
minimizedWindow = new MinimizedTimerWindow(this);
minimizedWindow.Show();
// 隐藏主窗口
this.Hide();
}
}
public void UpdateActivityTime()
{
lastActivityTime = DateTime.Now;
}
public bool IsTimerRunning => isTimerRunning;
public TimeSpan? GetRemainingTime()
{
if (!isTimerRunning || isPaused) return null;
var elapsed = DateTime.Now - startTime;
var totalSeconds = hour * 3600 + minute * 60 + second;
var remaining = totalSeconds - elapsed.TotalSeconds;
if (remaining <= 0) return TimeSpan.Zero;
return TimeSpan.FromSeconds(remaining);
}
public void StopTimer()
{
timer.Stop();
isTimerRunning = false;
StartPauseIcon.Data = Geometry.Parse(PlayIconData);
}
private void Window_MouseMove(object sender, MouseEventArgs e)
{
UpdateActivityTime();
}
private void Window_MouseEnter(object sender, MouseEventArgs e)
{
UpdateActivityTime();
}
/// <summary>
/// 根据数字值设置SVG数字显示
/// </summary>
@@ -453,6 +525,9 @@ namespace Ink_Canvas
isPaused = false;
isTimerRunning = true;
timer.Start();
// 启动隐藏定时器
hideTimer.Start();
// 保存到最近计时记录
SaveRecentTimer();