Files
jap_learn/src/repetition.rs
T

57 lines
1.4 KiB
Rust
Raw Normal View History

2026-04-13 22:25:58 +03:00
use std::sync::{Arc, Mutex};
2026-04-09 22:45:31 +03:00
use crate::Page::PreviousPage;
2026-04-13 22:25:58 +03:00
use crate::{AppState, NavigatedPage, Page, RootMessage};
2026-04-09 22:45:31 +03:00
use iced::widget::{button, container};
use iced::{Element, Fill, Left, Task};
2026-04-13 22:25:58 +03:00
use crate::lang::CardSet;
use crate::repetitions::CardSetSettings;
2026-04-09 22:45:31 +03:00
2026-04-13 22:25:58 +03:00
#[derive(Clone)]
2026-04-09 22:45:31 +03:00
pub struct RepetitionState {
2026-04-13 22:25:58 +03:00
pub set: CardSetSettings,
pub state: Arc<Mutex<AppState>>,
2026-04-09 22:45:31 +03:00
}
impl NavigatedPage<RepetitionMessage> for RepetitionState {
fn navigate(&self, message: &RepetitionMessage) -> Option<Page> {
if let RepetitionMessage::Back = message {
Some(PreviousPage)
} else {
None
}
}
}
impl RepetitionState {
2026-04-13 22:25:58 +03:00
pub(crate) fn new(set: CardSetSettings, state: Arc<Mutex<AppState>>) -> RepetitionState {
2026-04-09 22:45:31 +03:00
RepetitionState {
2026-04-13 22:25:58 +03:00
set,
state
2026-04-09 22:45:31 +03:00
}
}
}
impl RepetitionState {
pub fn update(&mut self, message: RepetitionMessage) -> Task<RootMessage> {
Task::none()
}
pub fn view(&self) -> Element<'_, RepetitionMessage> {
container(
iced::widget::column![
button("Назад").on_press(RepetitionMessage::Back),
].align_x(Left).width(Fill)
)
.center_x(Fill)
.padding(10)
.into()
}
}
#[derive(Debug, Clone)]
pub enum RepetitionMessage {
Next,
Back,
SwitchShowMode(bool),
}