summaryrefslogtreecommitdiffstats
path: root/ui/src/components/mail/view.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ui/src/components/mail/view.rs')
-rw-r--r--ui/src/components/mail/view.rs57
1 files changed, 39 insertions, 18 deletions
diff --git a/ui/src/components/mail/view.rs b/ui/src/components/mail/view.rs
index 8da8e054..1c569775 100644
--- a/ui/src/components/mail/view.rs
+++ b/ui/src/components/mail/view.rs
@@ -396,18 +396,15 @@ impl Component for MailView {
self.pager = None;
let attachment = &body.attachments()[aidx];
self.subview = Some(Box::new(HtmlView::new(
- decode(&attachment, None),
+ &attachment,
context,
self.coordinates.0,
)));
self.mode = ViewMode::Subview;
}
ViewMode::Normal if body.is_html() => {
- self.subview = Some(Box::new(HtmlView::new(
- decode(&body, None),
- context,
- self.coordinates.0,
- )));
+ self.subview =
+ Some(Box::new(HtmlView::new(&body, context, self.coordinates.0)));
self.pager = None;
self.mode = ViewMode::Subview;
}
@@ -547,25 +544,24 @@ impl Component for MailView {
self.cmd_buf.clone(),
)));
}
- UIEvent::Input(Key::Char('r'))
- if self.mode == ViewMode::Normal || self.mode == ViewMode::Raw =>
+ UIEvent::Input(Key::Alt('r'))
+ if self.mode == ViewMode::Normal || self.mode == ViewMode::Subview =>
{
- self.mode = if self.mode == ViewMode::Raw {
- ViewMode::Normal
- } else {
- ViewMode::Raw
- };
- self.dirty = true;
+ self.mode = ViewMode::Raw;
+ self.set_dirty();
}
UIEvent::Input(Key::Char('r'))
- if self.mode.is_attachment() || self.mode == ViewMode::Subview =>
+ if self.mode.is_attachment()
+ || self.mode == ViewMode::Subview
+ || self.mode == ViewMode::Url
+ || self.mode == ViewMode::Raw =>
{
self.mode = ViewMode::Normal;
- self.subview.take();
- self.dirty = true;
+ self.set_dirty();
}
UIEvent::Input(Key::Char('a'))
- if !self.cmd_buf.is_empty() && self.mode == ViewMode::Normal =>
+ if !self.cmd_buf.is_empty()
+ && (self.mode == ViewMode::Normal || self.mode == ViewMode::Subview) =>
{
let lidx = self.cmd_buf.parse::<usize>().unwrap();
self.cmd_buf.clear();
@@ -734,6 +730,31 @@ impl Component for MailView {
_ => {}
}
}
+ fn get_shortcuts(&self, context: &Context) -> ShortcutMap {
+ let mut map = if let Some(ref sbv) = self.subview {
+ sbv.get_shortcuts(context)
+ } else if let Some(ref pgr) = self.pager {
+ pgr.get_shortcuts(context)
+ } else {
+ FnvHashMap::with_capacity_and_hasher(4, Default::default())
+ };
+
+ map.insert("add_addresses_to_contacts", Key::Char('c'));
+ map.insert("view_raw_source", Key::Alt('r'));
+ if self.mode.is_attachment() || self.mode == ViewMode::Subview || self.mode == ViewMode::Raw
+ {
+ map.insert("return_to_normal_view", Key::Char('r'));
+ }
+ map.insert("open_attachment", Key::Char('a'));
+ if self.mode == ViewMode::Url {
+ map.insert("go_to_url", Key::Char('g'));
+ }
+ if self.mode == ViewMode::Normal || self.mode == ViewMode::Url {
+ map.insert("toggle_url_mode", Key::Char('u'));
+ }
+
+ map
+ }
fn id(&self) -> ComponentId {
self.id