Some kind of refactoring
This commit is contained in:
54
src/services/dict_nav.rs
Normal file
54
src/services/dict_nav.rs
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user