From 01a1e5e4f45dc80cd430d18492817b733fab5603 Mon Sep 17 00:00:00 2001 From: Joris Date: Sat, 26 Feb 2022 22:23:34 +0100 Subject: Fix linter warnings --- src/gui/gui.rs | 98 ---------------------------------------------------------- 1 file changed, 98 deletions(-) delete mode 100644 src/gui/gui.rs (limited to 'src/gui/gui.rs') diff --git a/src/gui/gui.rs b/src/gui/gui.rs deleted file mode 100644 index 92b1a72..0000000 --- a/src/gui/gui.rs +++ /dev/null @@ -1,98 +0,0 @@ -use crate::deck; -use crate::util::time; -use crate::{db::db, gui::message, gui::question, space_repetition, util::event::Events}; -use anyhow::Result; -use rusqlite::Connection; -use std::{fs, io, time::Duration}; -use termion::{raw::IntoRawMode, raw::RawTerminal, screen::AlternateScreen}; -use tui::{backend::TermionBackend, Terminal}; - -type Term = Terminal>>>; - -pub fn terminal() -> Result { - let stdout = io::stdout().into_raw_mode()?; - let stdout = AlternateScreen::from(stdout); - let backend = TermionBackend::new(stdout); - Ok(Terminal::new(backend)?) -} - -pub fn synchronize( - conn: &Connection, - term: &mut Term, - events: &Events, - deck_path: &str, - deck_name: &str, -) -> Result<()> { - let last_modified = time::seconds_since_unix_epoch_of(fs::metadata(deck_path)?.modified()?)?; - let last_deck_read = db::last_deck_read(&conn); - let must_synchronize = last_deck_read.map(|r| r < last_modified).unwrap_or(true); - - if must_synchronize { - let _ = message::show(term, events, &deck_name, "Synchronization du deck…", false); - time::wait_at_least( - || db::synchronize(&conn, deck::read(&deck_path)?), - Duration::from_secs(1), - )?; - } - - Ok(()) -} - -pub fn start( - conn: &Connection, - term: &mut Term, - events: &Events, - deck_name: &String, -) -> Result<()> { - let mut answers = 0; - - loop { - let now = time::seconds_since_unix_epoch()?; - let title = title(deck_name, answers, db::count_available(&conn).unwrap_or(0)); - - match db::pick_random_ready(&conn) { - Some(card) => { - let difficulty = question::ask(term, events, &title, &card)?; - answers += 1; - db::update( - &conn, - &card.question, - &space_repetition::update(card.state, difficulty), - )?; - } - None => { - let message = match db::next_ready(&conn) { - Some(ready) => format!( - "Prochaine carte disponible dans {}.", - time::pp_duration(ready - now) - ), - None => format!("Aucune carte n’est disponible. Votre deck est-il vide ?"), - }; - let _ = message::show(term, events, &title, &message, true); - break; - } - } - } - - 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