Rewrite fully second db table into result
This commit is contained in:
1 parent
06bf9138c0
commit
8841a51897
11 files changed
+127
-74
No files matched your search
+18
-11
@@ -1,19 +1,20 @@
|
||||
use crate::app::AppState;
|
||||
use crate::core::deck::DeckData;
|
||||
use crate::core::srs::WordOpenMode;
|
||||
use crate::data::entities::{CardStatistics, DeckSettings, WordData};
|
||||
use crate::data::Id;
|
||||
use crate::data::entities::{CardStatistics, DeckSettings, WordData};
|
||||
use crate::data_provider::voice::get_voice;
|
||||
use crate::navigation::Page::PreviousPage;
|
||||
use crate::navigation::{KeyPressedPage, NavigatedPage, Page, RootMessage};
|
||||
use crate::notification::{NotificationData, NotificationRequest};
|
||||
use crate::notification::NotificationData;
|
||||
use crate::styling::*;
|
||||
use crate::{push_error, push_error_task};
|
||||
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 parking_lot::Mutex;
|
||||
use rodio::MixerDeviceSink;
|
||||
use std::collections::HashSet;
|
||||
@@ -57,7 +58,7 @@ impl NavigatedPage<RepetitionMessage> for RepetitionState {
|
||||
if self.settings.require_speech() {
|
||||
return Task::perform(play_sound(self.sink.clone(), value), |r| match r {
|
||||
Ok(_) => RootMessage::Repetition(RepetitionMessage::PlayFinished),
|
||||
Err(err) => RootMessage::PushNotification(NotificationRequest::Error(err)),
|
||||
Err(err) => push_error!(err),
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -101,8 +102,11 @@ impl NavigatedPage<RepetitionMessage> for RepetitionState {
|
||||
}
|
||||
|
||||
impl RepetitionState {
|
||||
pub(crate) fn new(set: DeckSettings, state: Arc<Mutex<AppState>>) -> RepetitionState {
|
||||
let mut card_set = DeckData::new(&set, state.clone());
|
||||
pub(crate) fn new(
|
||||
set: DeckSettings,
|
||||
state: Arc<Mutex<AppState>>,
|
||||
) -> Result<RepetitionState, NotificationData> {
|
||||
let mut card_set = DeckData::new(&set, state.clone())?;
|
||||
let (word, stat) = card_set.next();
|
||||
|
||||
let sink_handle = if set.forward.contains("speech") || set.backward.contains("speech") {
|
||||
@@ -111,7 +115,7 @@ impl RepetitionState {
|
||||
None
|
||||
};
|
||||
|
||||
RepetitionState {
|
||||
Ok(RepetitionState {
|
||||
state,
|
||||
settings: set,
|
||||
set: card_set,
|
||||
@@ -121,7 +125,7 @@ impl RepetitionState {
|
||||
can_play: true,
|
||||
sink: Arc::new(sink_handle),
|
||||
opened: HashSet::new(),
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,7 +144,10 @@ impl RepetitionState {
|
||||
return Task::none();
|
||||
}
|
||||
|
||||
self.set.open(mode);
|
||||
if let Err(err) = self.set.open(mode) {
|
||||
return push_error_task!(err);
|
||||
}
|
||||
|
||||
self.open = false;
|
||||
self.opened.insert(self.current_word.id);
|
||||
let next = self.set.next();
|
||||
@@ -152,7 +159,7 @@ impl RepetitionState {
|
||||
let task = play_sound(sink, self.current_word.key.clone());
|
||||
return Task::perform(task, |r| match r {
|
||||
Ok(_) => RootMessage::Repetition(RepetitionMessage::PlayFinished),
|
||||
Err(err) => RootMessage::PushNotification(NotificationRequest::Error(err)),
|
||||
Err(err) => push_error!(err),
|
||||
});
|
||||
}
|
||||
self.increment_counter();
|
||||
|
||||
Reference in new issue
Block a user