diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-07-23 10:39:42 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-07-23 14:48:03 +0200 |
commit | 9536af1e296be52f6da4f5b22ee66ae965058b55 (patch) | |
tree | 4f07a455f6c682730a2d4423c2685c7f2593682c /src | |
parent | eafbee7f60bafbaf05a9f99a4ce53f89647c1cab (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.rs | 33 |
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) + } + +} |