Routing to history page
This commit is contained in:
+3
-3
@@ -11,7 +11,7 @@ use HistoryMessage::Back;
|
|||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct HistoryState {
|
pub struct HistoryState {
|
||||||
set_id: u32,
|
set_id: usize,
|
||||||
list: Vec<HistoryItem>,
|
list: Vec<HistoryItem>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ impl NavigatedPage<HistoryMessage> for HistoryState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl HistoryState {
|
impl HistoryState {
|
||||||
pub fn new(id: u32, state: Arc<Mutex<AppState>>) -> Self {
|
pub fn new(id: usize, state: Arc<Mutex<AppState>>) -> Self {
|
||||||
Self {
|
Self {
|
||||||
set_id: id,
|
set_id: id,
|
||||||
list: get_history_of_set(id, &state.lock().unwrap().dictionary),
|
list: get_history_of_set(id, &state.lock().unwrap().dictionary),
|
||||||
@@ -55,7 +55,7 @@ impl HistoryState {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_history_of_set(id: u32, words: &Vec<WordData>) -> Vec<HistoryItem> {
|
fn get_history_of_set(id: usize, words: &Vec<WordData>) -> Vec<HistoryItem> {
|
||||||
let app_dir = app_data_dir();
|
let app_dir = app_data_dir();
|
||||||
let head = app_dir.clone().join(format!("set_{}_history.csv", id));
|
let head = app_dir.clone().join(format!("set_{}_history.csv", id));
|
||||||
let tail = app_dir.clone().join(format!("set_{}_history.csv", id));
|
let tail = app_dir.clone().join(format!("set_{}_history.csv", id));
|
||||||
|
|||||||
+2
-1
@@ -164,7 +164,8 @@ impl ScreenState {
|
|||||||
Repetitions,
|
Repetitions,
|
||||||
Repetition,
|
Repetition,
|
||||||
Word,
|
Word,
|
||||||
Sync
|
Sync,
|
||||||
|
History
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+9
-3
@@ -2,7 +2,7 @@ use crate::data_provider::card_sets::{delete_set, update_card_set};
|
|||||||
use crate::data_provider::card_stats::load_stats_of_set;
|
use crate::data_provider::card_stats::load_stats_of_set;
|
||||||
use crate::lang::{SetOrderMode, WordData};
|
use crate::lang::{SetOrderMode, WordData};
|
||||||
use crate::repetition::RepetitionState;
|
use crate::repetition::RepetitionState;
|
||||||
use crate::Page::{PreviousPage, Repetition};
|
use crate::Page::{History, PreviousPage, Repetition};
|
||||||
use crate::{AppState, NavigatedPage, Page, RootMessage, DEFAULT_SPACING};
|
use crate::{AppState, NavigatedPage, Page, RootMessage, DEFAULT_SPACING};
|
||||||
use iced::widget::button::danger;
|
use iced::widget::button::danger;
|
||||||
pub use iced::widget::button::{Catalog, Style};
|
pub use iced::widget::button::{Catalog, Style};
|
||||||
@@ -11,6 +11,7 @@ use iced::widget::{button, column, container, radio, row, scrollable, space, tex
|
|||||||
use iced::{Border, Center, Element, Fill, Left, Length, Shadow, Task, Theme};
|
use iced::{Border, Center, Element, Fill, Left, Length, Shadow, Task, Theme};
|
||||||
use rhai::{Engine, Scope};
|
use rhai::{Engine, Scope};
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
|
use crate::history::HistoryState;
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct RepetitionsState {
|
pub struct RepetitionsState {
|
||||||
@@ -24,6 +25,8 @@ impl NavigatedPage<RepetitionsMessage> for RepetitionsState {
|
|||||||
fn navigate(&self, message: &RepetitionsMessage) -> Option<Page> {
|
fn navigate(&self, message: &RepetitionsMessage) -> Option<Page> {
|
||||||
if let RepetitionsMessage::Back = message {
|
if let RepetitionsMessage::Back = message {
|
||||||
Some(PreviousPage)
|
Some(PreviousPage)
|
||||||
|
} else if let RepetitionsMessage::GoToHistory = message {
|
||||||
|
Some(History(HistoryState::new(self.selected_set.unwrap(), self.state.clone())))
|
||||||
} else if let RepetitionsMessage::GoToRepetition = message {
|
} else if let RepetitionsMessage::GoToRepetition = message {
|
||||||
let clone = self.state.clone();
|
let clone = self.state.clone();
|
||||||
let card_set;
|
let card_set;
|
||||||
@@ -55,6 +58,7 @@ impl RepetitionsState {
|
|||||||
RepetitionsMessage::Next => {}
|
RepetitionsMessage::Next => {}
|
||||||
RepetitionsMessage::Back => {}
|
RepetitionsMessage::Back => {}
|
||||||
RepetitionsMessage::GoToRepetition => {}
|
RepetitionsMessage::GoToRepetition => {}
|
||||||
|
RepetitionsMessage::GoToHistory => {}
|
||||||
RepetitionsMessage::CreateSet => {
|
RepetitionsMessage::CreateSet => {
|
||||||
let index = state.card_sets.len() + 1;
|
let index = state.card_sets.len() + 1;
|
||||||
state
|
state
|
||||||
@@ -169,7 +173,8 @@ impl RepetitionsState {
|
|||||||
button("Проверить фильтр").on_press(RepetitionsMessage::TryFilter),
|
button("Проверить фильтр").on_press(RepetitionsMessage::TryFilter),
|
||||||
self.count_view(&set),
|
self.count_view(&set),
|
||||||
radio("Обычный режим", SetOrderMode::Default, Some(set.open_mode), RepetitionsMessage::SetOpenMode),
|
radio("Обычный режим", SetOrderMode::Default, Some(set.open_mode), RepetitionsMessage::SetOpenMode),
|
||||||
self.words_words_view(&set)
|
self.words_words_view(&set),
|
||||||
|
button("История").on_press(RepetitionsMessage::GoToHistory),
|
||||||
]
|
]
|
||||||
.spacing(DEFAULT_SPACING)
|
.spacing(DEFAULT_SPACING)
|
||||||
)
|
)
|
||||||
@@ -260,7 +265,8 @@ pub enum RepetitionsMessage {
|
|||||||
SetBackward(String),
|
SetBackward(String),
|
||||||
SetFilter(String),
|
SetFilter(String),
|
||||||
TryFilter,
|
TryFilter,
|
||||||
SetOpenMode(SetOrderMode)
|
SetOpenMode(SetOrderMode),
|
||||||
|
GoToHistory,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
|
|||||||
Reference in New Issue
Block a user