aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/app.rs
diff options
context:
space:
mode:
authorlukeflo2024-10-01 22:07:22 +0200
committerlukeflo2024-10-01 22:07:22 +0200
commitc78ae222ea75d36f4aef6e274d2c986e37462276 (patch)
tree06ddb27b79db1d497bb63da5c0681a76e601e135 /src/frontend/app.rs
parent4ce74dc8ab23e2b72c3f5d3310ec088fa2610ad9 (diff)
downloadbibiman-c78ae222ea75d36f4aef6e274d2c986e37462276.tar.gz
bibiman-c78ae222ea75d36f4aef6e274d2c986e37462276.zip
finish single functions, remove old code
Diffstat (limited to 'src/frontend/app.rs')
-rw-r--r--src/frontend/app.rs127
1 files changed, 65 insertions, 62 deletions
diff --git a/src/frontend/app.rs b/src/frontend/app.rs
index eeb2d4c..72d1020 100644
--- a/src/frontend/app.rs
+++ b/src/frontend/app.rs
@@ -263,6 +263,41 @@ impl App {
// }
}
+ pub fn reset_current_list(&mut self) {
+ if let CurrentArea::EntryArea = self.current_area {
+ self.entry_table =
+ EntryTable::from_iter(self.biblio_data.entry_list.bibentries.clone());
+ if self.search_struct.inner_search {
+ self.tag_list = TagList::from_iter(self.main_biblio.keyword_list.clone())
+ }
+ } else if let CurrentArea::TagArea = self.current_area {
+ self.tag_list = TagList::from_iter(self.main_biblio.keyword_list.clone());
+ self.tag_list.tag_list_state.select(Some(0))
+ }
+ self.former_area = None
+ }
+
+ // Yank the passed string to system clipboard
+ pub fn yank_text(selection: &str) {
+ let mut clipboard = Clipboard::new().unwrap();
+ let yanked_text = selection.to_string();
+ clipboard.set_text(yanked_text).unwrap();
+ }
+
+ pub fn scroll_info_down(&mut self) {
+ self.scroll_info = self.scroll_info + 1;
+ }
+
+ pub fn scroll_info_up(&mut self) {
+ if self.scroll_info == 0 {
+ {}
+ } else {
+ self.scroll_info = self.scroll_info - 1;
+ }
+ }
+
+ // Search Area
+
// Enter the search area
pub fn enter_search_area(&mut self) {
if let CurrentArea::EntryArea = self.current_area {
@@ -292,43 +327,51 @@ impl App {
pub fn break_search(&mut self) {
if let Some(FormerArea::EntryArea) = self.former_area {
self.current_area = CurrentArea::EntryArea;
- self.reset_entry_table();
} else if let Some(FormerArea::TagArea) = self.former_area {
self.current_area = CurrentArea::TagArea;
- self.reset_taglist();
self.tag_list.tag_list_state.select(Some(0))
}
+ self.reset_current_list();
self.former_area = None;
// If search is canceled, reset default status of struct
self.search_struct.search_string.clear();
}
- // Yank the passed string to system clipboard
- pub fn yank_text(selection: &str) {
- let mut clipboard = Clipboard::new().unwrap();
- let yanked_text = selection.to_string();
- clipboard.set_text(yanked_text).unwrap();
- }
-
- pub fn scroll_info_down(&mut self) {
- self.scroll_info = self.scroll_info + 1;
+ // Search entry list
+ pub fn search_entries(&mut self) {
+ let orig_list = {
+ if self.search_struct.inner_search {
+ let orig_list = &self.search_struct.filtered_entry_list;
+ orig_list
+ } else {
+ let orig_list = &self.biblio_data.entry_list.bibentries;
+ orig_list
+ }
+ };
+ let filtered_list =
+ BibiSearch::search_entry_list(&mut self.search_struct.search_string, orig_list.clone());
+ //search::search_entry_list(&self.search_string, orig_list.clone());
+ self.entry_table = EntryTable::from_iter(filtered_list)
}
- pub fn scroll_info_up(&mut self) {
- if self.scroll_info == 0 {
- {}
- } else {
- self.scroll_info = self.scroll_info - 1;
+ // Remove last char from search pattern and filter list immidiately
+ pub fn search_pattern_pop(&mut self) {
+ self.search_struct.search_string.pop();
+ if let Some(FormerArea::EntryArea) = self.former_area {
+ self.search_entries();
+ } else if let Some(FormerArea::TagArea) = self.former_area {
+ self.search_tags();
}
}
- pub fn select_none(&mut self) {
- match self.current_area {
- CurrentArea::EntryArea => self.entry_table.entry_table_state.select(None),
- CurrentArea::TagArea => self.tag_list.tag_list_state.select(None),
- _ => {}
+ // Add current char to search pattern and filter list immidiatley
+ pub fn search_pattern_push(&mut self, search_pattern: char) {
+ self.search_struct.search_string.push(search_pattern);
+ if let Some(FormerArea::EntryArea) = self.former_area {
+ self.search_entries();
+ } else if let Some(FormerArea::TagArea) = self.former_area {
+ self.search_tags();
}
- // self.tag_list.tag_list_state.select(None);
}
// Tag List commands
@@ -363,10 +406,6 @@ impl App {
self.tag_list = TagList::from_iter(filtered_list)
}
- pub fn reset_taglist(&mut self) {
- self.tag_list = TagList::from_iter(self.main_biblio.keyword_list.clone())
- }
-
// Filter the entry list by tags
// If already inside a filtered tag or entry list, apply the filtering
// to the already filtered list only
@@ -417,40 +456,4 @@ impl App {
let citekey = &self.entry_table.entry_table_items[idx].citekey;
citekey
}
-
- // Reset Entry Table to initial state
- pub fn reset_entry_table(&mut self) {
- self.entry_table = EntryTable::from_iter(self.biblio_data.entry_list.bibentries.clone())
- }
-
- pub fn reset_current_list(&mut self) {
- if let CurrentArea::EntryArea = self.current_area {
- self.entry_table =
- EntryTable::from_iter(self.biblio_data.entry_list.bibentries.clone());
- if self.search_struct.inner_search {
- self.tag_list = TagList::from_iter(self.main_biblio.keyword_list.clone())
- }
- } else if let CurrentArea::TagArea = self.current_area {
- self.tag_list = TagList::from_iter(self.main_biblio.keyword_list.clone());
- self.tag_list.tag_list_state.select(Some(0))
- }
- self.former_area = None
- }
-
- // Search entry list
- pub fn search_entries(&mut self) {
- let orig_list = {
- if self.search_struct.inner_search {
- let orig_list = &self.search_struct.filtered_entry_list;
- orig_list
- } else {
- let orig_list = &self.biblio_data.entry_list.bibentries;
- orig_list
- }
- };
- let filtered_list =
- BibiSearch::search_entry_list(&mut self.search_struct.search_string, orig_list.clone());
- //search::search_entry_list(&self.search_string, orig_list.clone());
- self.entry_table = EntryTable::from_iter(filtered_list)
- }
}