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),
|
|
|
|
|
}
|