fix bug in paused screen

This commit is contained in:
Joe Ardent 2022-10-15 22:31:33 -07:00
parent 5c6405d7fb
commit f54ac44db3

View file

@ -1,11 +1,13 @@
use egui::{Color32, Direction, FontId, Layout, RichText, Ui};
use egui_extras::{Size, StripBuilder};
use std::time::{Duration, Instant}; use std::time::{Duration, Instant};
use crate::{cli::Cli, util::*};
use clap::Parser; use clap::Parser;
use eframe::{App, CreationContext}; use eframe::{App, CreationContext};
use egui::{Color32, Direction, FontId, Layout, RichText, Ui};
use egui_extras::{Size, StripBuilder};
use crate::{cli::Cli, util::*};
const MIN_REPAINT: Duration = Duration::from_millis(100);
#[derive(Debug, Clone, Copy)] #[derive(Debug, Clone, Copy)]
pub enum CountDirection { pub enum CountDirection {
@ -63,8 +65,14 @@ impl App for Timer {
match self.state { match self.state {
TimerState::Unstarted => self.unstarted(ui, vsize), TimerState::Unstarted => self.unstarted(ui, vsize),
TimerState::Running(_) => self.running(ui, vsize), TimerState::Running(cs) => {
if (Instant::now() - cs.updated) > MIN_REPAINT {
ctx.request_repaint();
}
self.running(ui, vsize);
}
TimerState::Paused(_) => self.paused(ui, vsize), TimerState::Paused(_) => self.paused(ui, vsize),
TimerState::Finished => self.finished(ui, vsize), TimerState::Finished => self.finished(ui, vsize),
} }
}); });
@ -251,6 +259,11 @@ impl Timer {
Color32::DARK_GRAY Color32::DARK_GRAY
} }
}; };
// if we're counting up, do the right thing
let remaining = match self.direction {
CountDirection::Down => remaining,
CountDirection::Up => self.duration - remaining,
};
display_digits(&mut strip, remaining, color, vsize * 0.7); display_digits(&mut strip, remaining, color, vsize * 0.7);
}); });