diff --git a/src/repetition.rs b/src/repetition.rs index 84b1207..3d9a625 100644 --- a/src/repetition.rs +++ b/src/repetition.rs @@ -5,11 +5,12 @@ use crate::navigation::{KeyPressedPage, NavigatedPage, Page}; use crate::repetitions::CardSetSettings; use crate::styling::*; use crate::{AppState, RootMessage}; +use chrono::Local; use iced::alignment::Horizontal::Center; use iced::keyboard::key::Physical::Code; use iced::widget::text::Style; -use iced::widget::{button, column, container, row, rule, space, text, tooltip, Column}; -use iced::{alignment, keyboard, Element, Fill, Task, Theme}; +use iced::widget::{Column, button, column, container, row, rule, space, text, tooltip}; +use iced::{Element, Fill, Task, Theme, alignment, keyboard}; use rodio::MixerDeviceSink; use std::collections::HashSet; use std::sync::{Arc, Mutex}; @@ -111,10 +112,28 @@ impl RepetitionState { |_| RootMessage::Repetition(RepetitionMessage::PlayFinished), ); } - + self.increment_counter(); Task::none() } + fn increment_counter(&mut self) { + let mut state = self.state.lock().unwrap(); + let id = self.settings.id; + let activity = state.activity.get_mut(&id); + + let now = Local::now().date_naive(); + + if let Some(activity) = activity { + let (last_day, counter) = activity.last_mut().unwrap(); + if *last_day == now { + *counter += 1; + } else { + activity.push((now, 1)); + } + } else { + state.activity.insert(id, vec![(now, 1)]); + } + } pub fn view(&self) -> Element<'_, RepetitionMessage> { back_overlay( column![ @@ -152,7 +171,12 @@ impl RepetitionState { fn draw_backward(&self) -> Element<'_, RepetitionMessage> { if !self.open { - return container(text!("?").size(72)).width(Fill).height(Fill).align_y(alignment::Vertical::Center).align_x(Center).into(); + return container(text!("?").size(72)) + .width(Fill) + .height(Fill) + .align_y(alignment::Vertical::Center) + .align_x(Center) + .into(); } self.draw_card_view(self.settings.backward.as_str())