aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/app.rs
diff options
context:
space:
mode:
authorlukeflo2024-09-28 23:11:15 +0200
committerlukeflo2024-09-28 23:11:15 +0200
commit96a5cc63cce9a2a8f505538268a42fef0891f0b5 (patch)
tree78660837e8c9ba9a2644dd955b7ed03e046fb699 /src/frontend/app.rs
parenta13f63f34272889239d1e0fcd37f9c4fb5ec983a (diff)
downloadbibiman-96a5cc63cce9a2a8f505538268a42fef0891f0b5.tar.gz
bibiman-96a5cc63cce9a2a8f505538268a42fef0891f0b5.zip
start impl of search mode
Diffstat (limited to 'src/frontend/app.rs')
-rw-r--r--src/frontend/app.rs41
1 files changed, 38 insertions, 3 deletions
diff --git a/src/frontend/app.rs b/src/frontend/app.rs
index 1a8eab7..75a6ede 100644
--- a/src/frontend/app.rs
+++ b/src/frontend/app.rs
@@ -30,7 +30,15 @@ pub type AppResult<T> = std::result::Result<T, Box<dyn error::Error>>;
pub enum CurrentArea {
EntryArea,
TagArea,
- // SearchArea,
+ SearchArea,
+ HelpArea,
+}
+
+// Check which area was active when popup set active
+#[derive(Debug)]
+pub enum FormerArea {
+ EntryArea,
+ TagArea,
}
// Application.
@@ -50,6 +58,10 @@ pub struct App {
pub scroll_info: u16,
// area
pub current_area: CurrentArea,
+ // mode for popup window
+ pub former_area: Option<FormerArea>,
+ // search string
+ pub search_string: String,
}
// Define the fundamental List
@@ -176,6 +188,8 @@ impl Default for App {
entry_table,
scroll_info: 0,
current_area,
+ former_area: None,
+ search_string: String::new(),
}
}
}
@@ -199,18 +213,34 @@ impl App {
match self.current_area {
CurrentArea::EntryArea => self.current_area = CurrentArea::TagArea,
CurrentArea::TagArea => self.current_area = CurrentArea::EntryArea,
+ CurrentArea::SearchArea => {
+ if let Some(former_area) = &self.former_area {
+ match former_area {
+ FormerArea::EntryArea => self.current_area = CurrentArea::EntryArea,
+ FormerArea::TagArea => self.current_area = CurrentArea::TagArea,
+ }
+ }
+ }
+ CurrentArea::HelpArea => {
+ if let Some(former_area) = &self.former_area {
+ match former_area {
+ FormerArea::EntryArea => self.current_area = CurrentArea::EntryArea,
+ FormerArea::TagArea => self.current_area = CurrentArea::TagArea,
+ }
+ }
+ }
}
}
pub fn scroll_info_down(&mut self) {
- self.scroll_info = (self.scroll_info + 1);
+ 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);
+ self.scroll_info = self.scroll_info - 1;
}
}
@@ -218,6 +248,7 @@ impl App {
match self.current_area {
CurrentArea::EntryArea => self.entry_table.entry_table_state.select(None),
CurrentArea::TagArea => self.tag_list.tag_list_state.select(None),
+ _ => {}
}
// self.tag_list.tag_list_state.select(None);
}
@@ -227,6 +258,7 @@ impl App {
match self.current_area {
CurrentArea::EntryArea => self.entry_table.entry_table_state.select_next(),
CurrentArea::TagArea => self.tag_list.tag_list_state.select_next(),
+ _ => {}
}
// self.tag_list.tag_list_state.select_next();
}
@@ -235,6 +267,7 @@ impl App {
match self.current_area {
CurrentArea::EntryArea => self.entry_table.entry_table_state.select_previous(),
CurrentArea::TagArea => self.tag_list.tag_list_state.select_previous(),
+ _ => {}
}
// self.tag_list.tag_list_state.select_previous();
}
@@ -244,6 +277,7 @@ impl App {
match self.current_area {
CurrentArea::EntryArea => self.entry_table.entry_table_state.select_first(),
CurrentArea::TagArea => self.tag_list.tag_list_state.select_first(),
+ _ => {}
}
// self.tag_list.tag_list_state.select_first();
}
@@ -253,6 +287,7 @@ impl App {
match self.current_area {
CurrentArea::EntryArea => self.entry_table.entry_table_state.select_last(),
CurrentArea::TagArea => self.tag_list.tag_list_state.select_last(),
+ _ => {}
}
// self.tag_list.tag_list_state.select_last();
}