From 87e12144440b9525cbabdca5a9f79038a9a0f0e0 Mon Sep 17 00:00:00 2001 From: Joris Date: Sat, 12 Feb 2022 17:21:29 +0100 Subject: Show current progress after the deck name --- src/gui/gui.rs | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'src/gui/gui.rs') diff --git a/src/gui/gui.rs b/src/gui/gui.rs index 88333bb..94e15d8 100644 --- a/src/gui/gui.rs +++ b/src/gui/gui.rs @@ -14,12 +14,16 @@ pub fn start(conn: &Connection, deck_name: &String) -> Result<()> { let events = Events::new(); + let mut answers = 0; + loop { let now = time::now()?; + let title = title(deck_name, answers, db::count_available(&conn).unwrap_or(0)); match db::next_ready(&conn) { Some(card) if card.ready <= now => { - let difficulty = question::ask(&mut terminal, &events, &card, deck_name)?; + let difficulty = question::ask(&mut terminal, &events, &title, &card)?; + answers += 1; db::update( &conn, &card.question, @@ -31,12 +35,12 @@ pub fn start(conn: &Connection, deck_name: &String) -> Result<()> { "Prochaine carte disponible dans {}.", time::pp_duration(card.ready - now) ); - let _ = message::show(&mut terminal, &events, &message, deck_name); + let _ = message::show(&mut terminal, &events, &title, &message); break; } None => { let message = format!("Aucune carte n’est disponible. Votre deck est-il vide ?"); - let _ = message::show(&mut terminal, &events, &message, deck_name); + let _ = message::show(&mut terminal, &events, &title, &message); break; } } @@ -44,3 +48,13 @@ pub fn start(conn: &Connection, deck_name: &String) -> Result<()> { Ok(()) } + +fn title(deck_name: &String, answers: i32, available_cards: i32) -> String { + if answers == 0 && available_cards == 0 { + deck_name.to_string() + } else if available_cards == 0 { + format!("{} ({} / {})", deck_name, answers, answers + available_cards) + } else { + format!("{} ({} / {})", deck_name, answers + 1, answers + available_cards) + } +} -- cgit v1.2.3