aboutsummaryrefslogtreecommitdiff
path: root/src/gui/gui.rs
diff options
context:
space:
mode:
authorJoris2022-02-12 17:21:29 +0100
committerJoris2022-02-12 17:21:29 +0100
commit87e12144440b9525cbabdca5a9f79038a9a0f0e0 (patch)
tree8414fe44230448eae35e72ae2904cf93753dd552 /src/gui/gui.rs
parent3adf3f9697c4e2beb10e652947046d5fddda2ed4 (diff)
downloadflashcards-87e12144440b9525cbabdca5a9f79038a9a0f0e0.tar.gz
flashcards-87e12144440b9525cbabdca5a9f79038a9a0f0e0.tar.bz2
flashcards-87e12144440b9525cbabdca5a9f79038a9a0f0e0.zip
Show current progress after the deck name
Diffstat (limited to 'src/gui/gui.rs')
-rw-r--r--src/gui/gui.rs20
1 files changed, 17 insertions, 3 deletions
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)
+ }
+}