apply new style

This commit is contained in:
micialware committed 2026-09-15 22:09:06 +03:00
1 parent b1902b35cb
commit 1847d4f44f
15 files changed
+147 -92

No files matched your search

+46 -25
View File
@@ -1,7 +1,7 @@
use crate::app::AppState;
use crate::data::Id;
use crate::data::entities::{EntityHandle, WordData, WordGroup};
use crate::data::repositories::{Query, Repository};
use crate::data::Id;
use crate::data_provider::word_groups::{WordGroupDataLayer, WordGroupRepositoryInner};
use crate::data_provider::words::WordDataLayer;
use crate::data_provider::words::WordRepositoryInner;
@@ -13,10 +13,10 @@ use crate::pages::dictionary::SelectionChangeDirection::*;
use crate::pages::dictionary_quiz::DictionaryQuizState;
use crate::pages::import::ImportState;
use crate::pages::word::{WordEditor, WordMessage};
use crate::push_error_task;
use crate::styling::*;
use crate::widgets::hard_mouse_area::hard_mouse_area;
use crate::{jl_button, push_error};
use crate::{jl_text_input, push_error_task};
use chrono::{DateTime, TimeDelta, Utc};
use hashbrown::{HashMap, HashSet};
use iced::alignment::Vertical::Center;
@@ -24,15 +24,16 @@ use iced::widget::button::Style;
use iced::widget::button::{danger, text};
use iced::widget::operation::focus;
use iced::widget::space::horizontal;
use iced::widget::text_input::default;
use iced::widget::text_input::Status::Active;
use iced::widget::text_input::default;
use iced::widget::*;
use iced::{Border, Color, Shadow, Task};
use iced_core::Length::{Fill, FillPortion};
use iced_core::border::Radius;
use iced_core::keyboard;
use iced_core::keyboard::Key::Named;
use iced_core::keyboard::key::Physical::Code;
use iced_core::keyboard::{Event, Modifiers};
use iced_core::keyboard::Key::Named;
use iced_core::Length::{Fill, FillPortion};
use log::info;
use rand::random_range;
use std::ops::Add;
@@ -81,7 +82,7 @@ pub enum DictionaryMessage {
EditField(String),
ChangeSelectedField(SelectionChangeDirection),
EditorAction(WordMessage),
ExtendedWordEdited
ExtendedWordEdited,
}
#[derive(Clone, PartialEq, Eq, Hash, Copy)]
@@ -253,7 +254,9 @@ impl NavigatedPage<DictionaryMessage> for DictionaryState {
let _ = dictionary.save(&mut handle);
if reload_query {
self.displayed_words_query.load(&dictionary);
if let Some(selected) = self.selected_cell && selected.0 == original {
if let Some(selected) = self.selected_cell
&& selected.0 == original
{
self.selected_cell = Some((handle, selected.1, selected.2));
if self.word_editor.is_some() {
self.word_editor = Some(self.editor_for_word(handle));
@@ -267,7 +270,10 @@ impl NavigatedPage<DictionaryMessage> for DictionaryState {
GotoImport => {}
SelectField(e, f, index) => {
info!("Editing word {}", e.id);
if self.word_editor.is_some() && let Some(selected) = &self.selected_cell && selected.0 != e {
if self.word_editor.is_some()
&& let Some(selected) = &self.selected_cell
&& selected.0 != e
{
self.word_editor = Some(self.editor_for_word(e));
}
self.selected_cell = Some((e, f, index));
@@ -349,18 +355,16 @@ impl NavigatedPage<DictionaryMessage> for DictionaryState {
}
self.displayed_words_query.load(&dictionary);
self.selected_cell = None;
self.word_editor = None;
self.selected_cell = None;
self.word_editor = None;
}
EditorAction(action) => {
let result = self.word_editor.as_mut().unwrap().update(action);
if let Some(result) = result {
match result {
DeleteWord(_) |
ExtendedWordEdited => {
DeleteWord(_) | ExtendedWordEdited => {
return Task::done(RootMessage::Dictionary(result));
},
}
_ => {}
}
@@ -387,7 +391,8 @@ impl NavigatedPage<DictionaryMessage> for DictionaryState {
button("Импорт").style(text).on_press(GotoImport),
]
]
.spacing(5).width(FillPortion(4)),
.spacing(5)
.width(FillPortion(4)),
self.right_panel(),
]
.spacing(DEFAULT_SPACING)
@@ -425,7 +430,9 @@ impl DictionaryState {
}
fn editor_for_word(&self, handle: EntityHandle<WordData>) -> WordEditor<DictionaryMessage> {
WordEditor::new(handle, self.state.clone()).on_delete(DeleteWord(handle)).on_edit(ExtendedWordEdited)
WordEditor::new(handle, self.state.clone())
.on_delete(DeleteWord(handle))
.on_edit(ExtendedWordEdited)
}
fn init(&mut self) {
@@ -580,7 +587,9 @@ impl DictionaryState {
fn right_panel(&self) -> iced::Element<'_, DictionaryMessage> {
if let Some(editor) = &self.word_editor {
container(editor.view().map(EditorAction)).width(FillPortion(3)).into()
container(editor.view().map(EditorAction))
.width(FillPortion(3))
.into()
} else {
self.filters()
}
@@ -590,7 +599,7 @@ impl DictionaryState {
let dict = &self.state.dictionary.read();
iced::widget::column![
text_input("Поиск", &self.search)
jl_text_input!("Поиск", &self.search)
.on_input(Search)
.width(Fill),
text!("Всего слов: {}", dict.len()),
@@ -709,6 +718,7 @@ impl DictionaryState {
fn selection_editor(&self) -> iced::Element<'_, DictionaryMessage> {
let mut display = "".to_string();
let mut editable = false;
if let Some(selected) = self.selected_cell.as_ref() {
let mut dictionary = self.state.dictionary.write();
let word = dictionary.get_mut_static(selected.0).unwrap();
@@ -724,12 +734,21 @@ impl DictionaryState {
display = word.tags.clone();
}
}
editable = true;
}
text_input("", display.as_str())
let mut field = jl_text_input!("", display.as_str())
.width(Fill)
.id(iced::widget::Id::new("editor"))
.on_input(EditField)
.into()
.style(|theme, status| {
let mut default = default(theme, status);
default.border.radius = Radius::new(0);
default
});
if editable {
field = field.on_input(EditField)
}
field.into()
}
fn groups_panel(&self) -> iced::Element<'_, DictionaryMessage> {
@@ -754,7 +773,7 @@ impl DictionaryState {
scrollable(row).width(Fill).horizontal(),
row![
jl_button!("⇳").on_press(ChangeDirection),
text_input("Название группы слов", &group.name)
jl_text_input!("Название группы слов", &group.name)
.on_input(EditGroup)
.width(250)
.on_submit(SaveGroup),
@@ -806,18 +825,20 @@ impl KeyPressedPage for DictionaryState {
Task::done(RootMessage::Dictionary(ChangeSelectedField(Previous)))
}
keyboard::key::Code::Tab => {
return if *mods == Modifiers::CTRL && let Some(selected) = self.selected_cell {
return if *mods == Modifiers::CTRL
&& let Some(selected) = self.selected_cell
{
Task::done(RootMessage::Dictionary(ExtendedEdit(selected.0)))
} else if let Named(keyboard::key::Named::Alt) = modifier {
Task::done(RootMessage::Dictionary(ChangeSelectedField(Backward)))
} else {
Task::done(RootMessage::Dictionary(ChangeSelectedField(Forward)))
}
};
}
keyboard::key::Code::Escape => {
if self.word_editor.is_some() {
self.word_editor = None;
}else if self.selected_cell.is_some() {
} else if self.selected_cell.is_some() {
self.selected_cell = None;
}