diff options
Diffstat (limited to 'src/views/mail.rs')
-rw-r--r-- | src/views/mail.rs | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/views/mail.rs b/src/views/mail.rs index 93c781a..fe3a2f3 100644 --- a/src/views/mail.rs +++ b/src/views/mail.rs @@ -1,7 +1,8 @@ use std::path::PathBuf; -use anyhow::Result; -use anyhow::Error; +use std::rc::Rc; +use anyhow::Error; +use anyhow::Result; use cursive::Printer; use cursive::Rect; use cursive::View; @@ -9,25 +10,27 @@ use cursive::XY; use cursive::direction::Direction; use cursive::event::Event; use cursive::event::EventResult; -use cursive::view::Nameable; -use cursive::view::Selector; use cursive::view::Scrollable; -use cursive::views::NamedView; -use cursive::views::TextView; +use cursive::view::Selector; +use cursive::view::ViewNotFound; use cursive::views::LinearLayout; use cursive::views::ScrollView; -use result_inspect::ResultInspect; +use cursive::views::TextView; use mailparse::ParsedMail; +use result_inspect::ResultInspect; + +use crate::runtime::Runtime; pub struct MailView { + rt: Rc<Runtime>, view: ScrollView<LinearLayout>, } impl MailView { - pub fn create_for(database_path: PathBuf, id: String, mailfile: PathBuf, name: String) -> Result<NamedView<Self>> { + pub fn create_for(rt: Rc<Runtime>, id: String, mailfile: PathBuf) -> Result<Self> { let query = format!("id:{}", id); - let view = notmuch::Database::open(&database_path, notmuch::DatabaseMode::ReadOnly)? + let view = rt.database() .create_query(&query)? .search_messages()? .map(|msg| { @@ -58,7 +61,7 @@ impl MailView { view }; - Ok(MailView { view: view.scrollable() }.with_name(name)) + Ok(MailView { rt, view: view.scrollable() }) } fn parsed_mail_to_list_of_textviews<'a>(pm: &'a ParsedMail) -> Result<Vec<TextView>> { @@ -103,7 +106,7 @@ impl View for MailView { self.view.call_on_any(s, tpl); } - fn focus_view(&mut self, s: &Selector) -> Result<(), ()> { + fn focus_view(&mut self, s: &Selector) -> Result<(), ViewNotFound> { self.view.focus_view(s) } |