feat: better listing of timers

This commit is contained in:
Moritz Böhme 2023-08-26 11:08:45 +02:00
parent 1a10f620b4
commit 739f76fa90
Signed by: moritz
GPG key ID: 970C6E89EB0547A9
2 changed files with 20 additions and 4 deletions

View file

@ -19,10 +19,11 @@ impl Display for Pomodoro {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!( write!(
f, f,
"Pomodoro ({}, {}, {}) currently {} with {} remaining.\n", "Pomodoro ({}, {}, {}) currently {} {} with {} remaining.\n",
humantime::format_duration(self.work), humantime::format_duration(self.work),
humantime::format_duration(self.pause), humantime::format_duration(self.pause),
humantime::format_duration(self.long_pause), humantime::format_duration(self.long_pause),
self.timer.state,
self.status, self.status,
humantime::format_duration(self.timer.remaining()) humantime::format_duration(self.timer.remaining())
) )

View file

@ -11,7 +11,7 @@ pub struct Timer {
#[serde(with = "approx_instant")] #[serde(with = "approx_instant")]
start: Instant, start: Instant,
duration: Duration, duration: Duration,
state: State, pub state: State,
} }
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)] #[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
@ -20,6 +20,16 @@ pub enum State {
Paused, Paused,
} }
impl Display for State {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
let string = match self {
State::Running => "running",
State::Paused => "paused",
};
write!(f, "{}", string)
}
}
impl Timer { impl Timer {
/// Create a new [`Timer`] with the supplied name and duration /// Create a new [`Timer`] with the supplied name and duration
/// The timer is instantly started. /// The timer is instantly started.
@ -72,10 +82,16 @@ impl Timer {
impl Display for Timer { impl Display for Timer {
fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), std::fmt::Error> { fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), std::fmt::Error> {
let state_message = match self.state {
State::Running => "has",
State::Paused => "is paused and has",
};
write!( write!(
f, f,
"{} has {} remaining.", "'{}' {} {} remaining.",
self.name, self.name,
state_message,
humantime::format_duration(self.remaining()) humantime::format_duration(self.remaining())
) )
} }
@ -107,4 +123,3 @@ mod approx_instant {
Ok(instant) Ok(instant)
} }
} }