summaryrefslogtreecommitdiffstats
path: root/src/views/mail.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/views/mail.rs')
-rw-r--r--src/views/mail.rs25
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)
}