Some kind of refactoring

This commit is contained in:
2026-02-04 19:35:30 +01:00
parent 6cf9d2eec1
commit 82b0668bcf
18 changed files with 688 additions and 772 deletions

54
src/services/dict_nav.rs Normal file
View File

@@ -0,0 +1,54 @@
use crate::model::categories;
use crate::state::{DictFocus, UiState};
pub fn toggle_focus(ui: &mut UiState) {
ui.dict_focus = match ui.dict_focus {
DictFocus::Categories => DictFocus::Words,
DictFocus::Words => DictFocus::Categories,
};
}
pub fn next_category(ui: &mut UiState) {
let count = categories::category_count();
ui.dict_category = (ui.dict_category + 1) % count;
}
pub fn prev_category(ui: &mut UiState) {
let count = categories::category_count();
ui.dict_category = (ui.dict_category + count - 1) % count;
}
pub fn scroll_down(ui: &mut UiState, n: usize) {
let s = ui.dict_scroll_mut();
*s = s.saturating_add(n);
}
pub fn scroll_up(ui: &mut UiState, n: usize) {
let s = ui.dict_scroll_mut();
*s = s.saturating_sub(n);
}
pub fn activate_search(ui: &mut UiState) {
ui.dict_search_active = true;
ui.dict_focus = DictFocus::Words;
}
pub fn clear_search(ui: &mut UiState) {
ui.dict_search_query.clear();
ui.dict_search_active = false;
*ui.dict_scroll_mut() = 0;
}
pub fn search_input(ui: &mut UiState, c: char) {
ui.dict_search_query.push(c);
*ui.dict_scroll_mut() = 0;
}
pub fn search_backspace(ui: &mut UiState) {
ui.dict_search_query.pop();
*ui.dict_scroll_mut() = 0;
}
pub fn search_confirm(ui: &mut UiState) {
ui.dict_search_active = false;
}