summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-07-23 10:39:42 +0200
committerMatthias Beyer <mail@beyermatthias.de>2020-07-23 14:48:03 +0200
commit9536af1e296be52f6da4f5b22ee66ae965058b55 (patch)
tree4f07a455f6c682730a2d4423c2685c7f2593682c /src
parenteafbee7f60bafbaf05a9f99a4ce53f89647c1cab (diff)
Implement querying notmuch in new popup window
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'src')
-rw-r--r--src/main_view.rs33
1 files changed, 32 insertions, 1 deletions
diff --git a/src/main_view.rs b/src/main_view.rs
index 81d4748..b0da75e 100644
--- a/src/main_view.rs
+++ b/src/main_view.rs
@@ -6,10 +6,12 @@ use cursive::Rect;
use cursive::View;
use cursive::XY;
use cursive::direction::Direction;
+use cursive::event::Callback;
use cursive::event::Event;
use cursive::event::EventResult;
use cursive::view::Nameable;
use cursive::view::Selector;
+use cursive::views::EditView;
use cursive::views::ListView;
use cursive::views::LinearLayout;
use cursive::views::NamedView;
@@ -64,6 +66,11 @@ impl View for MainView {
}
}
},
+
+ Event::Char('o') => {
+ EventResult::Consumed(Some(Callback::from_fn(MainView::add_notmuch_query_layer)))
+ },
+
other => self.tabs.on_event(other),
}
}
@@ -113,5 +120,29 @@ impl MainView {
&self.config
}
-}
+ fn add_notmuch_query_layer(siv: &mut Cursive) {
+ let edit_view = EditView::new()
+ .on_submit(move |siv: &mut Cursive, query: &str| {
+ let database_path = siv.call_on_name(MAIN_VIEW_NAME, move |main_view: &mut MainView| {
+ main_view.config().notmuch_database_path().clone()
+ });
+
+ let database_path = database_path.unwrap(); // TODO: Fixme
+
+ let tab_name = format!("{}-view", query);
+ let tab = MaillistView::create_for(&database_path, query, tab_name.clone())
+ .unwrap() // TODO: FIXME
+ .with_name(tab_name.clone());
+ siv.call_on_name(MAIN_VIEW_NAME, move |main_view: &mut MainView| {
+ main_view.add_tab(tab_name, tab);
+ });
+
+ siv.pop_layer();
+ })
+ .with_name("query");
+
+ siv.add_layer(edit_view)
+ }
+
+}