Fixing bugs
This commit is contained in:
+39
-29
@@ -1,7 +1,7 @@
|
||||
use crate::data_provider::card_sets::update_deck;
|
||||
use crate::data_provider::card_stats::{add_stat_list, load_stats_of_deck};
|
||||
use crate::history::HistoryState;
|
||||
use crate::lang::{AppendMode, CardStatistics, DeckSettings, Id, OrderMode, INVALID_ID};
|
||||
use crate::lang::{AppendMode, CardStatistics, DeckSettings, INVALID_ID, Id, OrderMode};
|
||||
use crate::navigation::Page::{History, PreviousPage, Repetition, RepetitionSettings};
|
||||
use crate::navigation::{NavigatedPage, Page};
|
||||
use crate::repetition::RepetitionState;
|
||||
@@ -11,17 +11,17 @@ use crate::styling::*;
|
||||
use crate::{AppState, RootMessage};
|
||||
use chrono::{Days, Local, Utc};
|
||||
use hashbrown::{HashMap, HashSet};
|
||||
use iced::widget::button::{danger, Status};
|
||||
pub use iced::widget::button::{Catalog, Style};
|
||||
use iced::widget::button::{Status, danger};
|
||||
use iced::widget::tooltip::Position::Top;
|
||||
use iced::widget::{
|
||||
button, column, container, lazy, radio, row, scrollable, space, svg, text, text_input, tooltip,
|
||||
Column, Row,
|
||||
Column, Row, button, column, container, lazy, radio, row, scrollable, space, svg, text,
|
||||
text_input, tooltip,
|
||||
};
|
||||
use iced::{Background, Border, Center, Color, Element, Fill, Length, Shadow, Task, Theme};
|
||||
use iced_core::Padding;
|
||||
use iced_core::border::Radius;
|
||||
use iced_core::svg::Handle;
|
||||
use iced_core::Padding;
|
||||
use std::ops::Deref;
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
@@ -47,7 +47,6 @@ impl NavigatedPage<RepetitionsMessage> for RepetitionsState {
|
||||
|
||||
let selected_set = self.selected_deck_mut().unwrap();
|
||||
if selected_set.append_mode == AppendMode::Full {
|
||||
|
||||
Self::append_all_words(&clone.lock().unwrap(), selected_set);
|
||||
selected_set.existing_words_indices = selected_set.available_words_indices.clone();
|
||||
} else {
|
||||
@@ -62,7 +61,6 @@ impl NavigatedPage<RepetitionsMessage> for RepetitionsState {
|
||||
.unwrap()
|
||||
.is_empty()
|
||||
{
|
||||
selected_set.append_warning = true;
|
||||
return None;
|
||||
}
|
||||
}
|
||||
@@ -110,8 +108,6 @@ impl NavigatedPage<RepetitionsMessage> for RepetitionsState {
|
||||
existing_words_indices: None,
|
||||
available_words_indices: None,
|
||||
append_mode: Default::default(),
|
||||
append_warning: false,
|
||||
valid_filter: true,
|
||||
index: None,
|
||||
});
|
||||
}
|
||||
@@ -122,6 +118,15 @@ impl NavigatedPage<RepetitionsMessage> for RepetitionsState {
|
||||
if deck.id != INVALID_ID {
|
||||
let mut state = self.state.lock().unwrap();
|
||||
state.decks.remove(index);
|
||||
self.decks = self
|
||||
.decks
|
||||
.clone()
|
||||
.into_iter()
|
||||
.map(|mut deck| {
|
||||
deck.index = state.decks.iter().position(|d| d.id == deck.id);
|
||||
deck
|
||||
})
|
||||
.collect();
|
||||
}
|
||||
}
|
||||
SetName(value) => {
|
||||
@@ -154,7 +159,7 @@ impl NavigatedPage<RepetitionsMessage> for RepetitionsState {
|
||||
} else {
|
||||
state.decks.push(deck.general_settings.clone());
|
||||
deck.index = Some(state.decks.len() - 1);
|
||||
self.decks[deck.index.unwrap()] = deck.clone();
|
||||
self.decks[self.selected_deck_index.unwrap()] = deck.clone();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -259,15 +264,7 @@ impl RepetitionsState {
|
||||
map.insert(word.id, index);
|
||||
});
|
||||
|
||||
let decks = state_.decks.iter().enumerate().map(|(index, deck)| {DeckViewData{
|
||||
general_settings: deck.clone(),
|
||||
existing_words_indices: None,
|
||||
available_words_indices: None,
|
||||
append_mode: Default::default(),
|
||||
append_warning: false,
|
||||
valid_filter: true,
|
||||
index: Some(index),
|
||||
}}).collect();
|
||||
let decks = Self::get_decks_from_state(&state_);
|
||||
drop(state_);
|
||||
RepetitionsState {
|
||||
word_id_index_map: map,
|
||||
@@ -276,12 +273,29 @@ impl RepetitionsState {
|
||||
state,
|
||||
}
|
||||
}
|
||||
|
||||
fn get_decks_from_state(state: &AppState) -> Vec<DeckViewData> {
|
||||
state
|
||||
.decks
|
||||
.iter()
|
||||
.enumerate()
|
||||
.map(|(index, deck)| DeckViewData {
|
||||
general_settings: deck.clone(),
|
||||
existing_words_indices: None,
|
||||
available_words_indices: None,
|
||||
append_mode: Default::default(),
|
||||
index: Some(index),
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
}
|
||||
|
||||
impl RepetitionsState {
|
||||
fn launch_delete_button(&self, deck: &DeckViewData) -> Element<'_, RepetitionsMessage> {
|
||||
if deck.id != INVALID_ID {
|
||||
if deck.append_mode == AppendMode::Manual && deck.existing_words_indices.as_ref().unwrap().is_empty() {
|
||||
if deck.append_mode == AppendMode::Manual
|
||||
&& deck.existing_words_indices.as_ref().unwrap().is_empty()
|
||||
{
|
||||
return text!("Добавьте карточки или измените фильтр").into();
|
||||
}
|
||||
return row![
|
||||
@@ -376,7 +390,8 @@ impl RepetitionsState {
|
||||
button("Сохранить").style(jl_button).on_press(Save),
|
||||
self.launch_delete_button(deck)
|
||||
]
|
||||
.spacing(DEFAULT_SPACING).align_y(Center),
|
||||
.spacing(DEFAULT_SPACING)
|
||||
.align_y(Center),
|
||||
]
|
||||
.spacing(DEFAULT_SPACING)
|
||||
.width(Length::FillPortion(2))
|
||||
@@ -533,11 +548,8 @@ impl RepetitionsState {
|
||||
} else {
|
||||
None
|
||||
},
|
||||
text_color: if deck.valid_filter {
|
||||
_x.palette().primary
|
||||
} else {
|
||||
_x.palette().warning
|
||||
},
|
||||
text_color:
|
||||
_x.palette().primary,
|
||||
border: Border {
|
||||
color: Default::default(),
|
||||
width: 0.0,
|
||||
@@ -590,7 +602,7 @@ impl RepetitionsState {
|
||||
}
|
||||
|
||||
fn select_deck(&mut self, index: usize) {
|
||||
if self.decks.get(index).is_some() {
|
||||
if self.decks.get(index).is_some() {
|
||||
self.selected_deck_index = Some(index);
|
||||
}
|
||||
}
|
||||
@@ -633,8 +645,6 @@ struct DeckViewData {
|
||||
existing_words_indices: Option<Vec<usize>>,
|
||||
available_words_indices: Option<Vec<usize>>,
|
||||
append_mode: AppendMode,
|
||||
append_warning: bool,
|
||||
valid_filter: bool,
|
||||
index: Option<usize>,
|
||||
}
|
||||
impl Deref for DeckViewData {
|
||||
|
||||
Reference in New Issue
Block a user