Writing test page
This commit is contained in:
+19
-5
@@ -1,17 +1,21 @@
|
||||
use crate::lang::{KanaSet, KanaType};
|
||||
use crate::Page::Quiz;
|
||||
use crate::selector::SelectorMessage::ChangeMode;
|
||||
use crate::writing::WritingState;
|
||||
use crate::Page::{Quiz, Writing};
|
||||
use crate::{NavigatedPage, Page, QuizState};
|
||||
use iced::widget::{button, checkbox, container, text, Column, Row};
|
||||
use iced::widget::*;
|
||||
use iced::{alignment, Element, Font};
|
||||
|
||||
pub struct SelectorState {
|
||||
pub set: KanaSet,
|
||||
is_writing: bool,
|
||||
}
|
||||
|
||||
impl Default for SelectorState {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
set: KanaSet::hiragana(),
|
||||
is_writing: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -21,14 +25,20 @@ pub enum SelectorMessage {
|
||||
Change,
|
||||
Goto,
|
||||
Check(usize, bool),
|
||||
ChangeMode(bool),
|
||||
}
|
||||
|
||||
impl NavigatedPage<SelectorMessage> for SelectorState {
|
||||
fn navigate(&self, message: &SelectorMessage) -> Option<Page> {
|
||||
if let SelectorMessage::Goto = message {
|
||||
let mut quiz = QuizState::new();
|
||||
quiz.set = self.set.clone();
|
||||
return Some(Quiz(quiz));
|
||||
return if self.is_writing {
|
||||
let writing = WritingState::new(&self.set);
|
||||
Some(Writing(writing))
|
||||
} else {
|
||||
let mut quiz = QuizState::new();
|
||||
quiz.set = self.set.clone();
|
||||
Some(Quiz(quiz))
|
||||
};
|
||||
}
|
||||
None
|
||||
}
|
||||
@@ -43,6 +53,7 @@ impl SelectorState {
|
||||
},
|
||||
SelectorMessage::Goto => {}
|
||||
SelectorMessage::Check(i, b) => self.set.include_map[i] = b,
|
||||
ChangeMode(b) => self.is_writing = b,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,6 +62,9 @@ impl SelectorState {
|
||||
iced::widget::column![
|
||||
button("Переключить").on_press(SelectorMessage::Change),
|
||||
self.rows_selector(),
|
||||
toggler(self.is_writing)
|
||||
.label("Режим письма")
|
||||
.on_toggle(ChangeMode),
|
||||
button("К тесту").on_press(SelectorMessage::Goto),
|
||||
]
|
||||
.spacing(10),
|
||||
|
||||
Reference in New Issue
Block a user