summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorManos Pitsidianakis <el13635@mail.ntua.gr>2019-03-31 00:28:01 +0200
committerManos Pitsidianakis <el13635@mail.ntua.gr>2019-06-10 19:40:41 +0300
commite4aec7c17eb77a1303b5a760bbb14c8521e83924 (patch)
tree35837fc324b645b595513866063941cd86c4552e /ui
parentc3adc244d7bb9cd9104dbf63919a29503b8030f7 (diff)
ui: add shortcuts in compose menu
Diffstat (limited to 'ui')
-rw-r--r--ui/src/components/mail/compose.rs77
1 files changed, 58 insertions, 19 deletions
diff --git a/ui/src/components/mail/compose.rs b/ui/src/components/mail/compose.rs
index 4584b468..ac1f2929 100644
--- a/ui/src/components/mail/compose.rs
+++ b/ui/src/components/mail/compose.rs
@@ -59,7 +59,7 @@ impl Default for Composer {
draft: Draft::default(),
form: FormWidget::default(),
- mode: ViewMode::Overview,
+ mode: ViewMode::Edit,
dirty: true,
initialized: false,
}
@@ -69,7 +69,7 @@ impl Default for Composer {
#[derive(Debug)]
enum ViewMode {
Discard(Uuid),
- Pager,
+ Edit,
//Selector(Selector),
Overview,
}
@@ -83,16 +83,16 @@ impl ViewMode {
}
}
- fn is_overview(&self) -> bool {
- if let ViewMode::Overview = self {
+ fn is_edit(&self) -> bool {
+ if let ViewMode::Edit = self {
true
} else {
false
}
}
- fn is_pager(&self) -> bool {
- if let ViewMode::Pager = self {
+ fn is_overview(&self) -> bool {
+ if let ViewMode::Overview = self {
true
} else {
false
@@ -361,7 +361,7 @@ impl Component for Composer {
self.form.draw(grid, header_area, context);
match self.mode {
- ViewMode::Overview | ViewMode::Pager => {
+ ViewMode::Overview | ViewMode::Edit => {
self.pager.set_dirty();
self.pager.draw(grid, body_area, context);
}
@@ -424,18 +424,24 @@ impl Component for Composer {
}
fn process_event(&mut self, event: &mut UIEvent, context: &mut Context) -> bool {
- match (&mut self.mode, &mut self.reply_context) {
- (ViewMode::Pager, _) => {
+ match (&mut self.mode, &mut self.reply_context, &event.event_type) {
+ // don't pass Reply command to thread view in reply_context
+ (_, _, UIEventType::Input(Key::Char('R'))) => {},
+ (ViewMode::Overview, Some((_, ref mut view)), _) => {
+ if view.process_event(event, context) {
+ self.dirty = true;
+ return true;
+ }
/* Cannot mutably borrow in pattern guard, pah! */
if self.pager.process_event(event, context) {
return true;
}
}
- (ViewMode::Overview, Some((_, ref mut _view))) => {
- //if view.process_event(event, context) {
- // self.dirty = true;
- // return true;
- //}
+ (ViewMode::Overview, _, _) => {
+ /* Cannot mutably borrow in pattern guard, pah! */
+ if self.pager.process_event(event, context) {
+ return true;
+ }
}
_ => {}
}
@@ -512,15 +518,15 @@ impl Component for Composer {
self.set_dirty();
return true;
}
- /* Switch to Overview mode if we're on Pager mode */
- UIEventType::Input(Key::Char('o')) if self.mode.is_pager() => {
+ /* Switch to Overview mode if we're on Edit mode */
+ UIEventType::Input(Key::Char('v')) if self.mode.is_edit() => {
self.mode = ViewMode::Overview;
self.set_dirty();
return true;
}
- /* Switch to Pager mode if we're on Overview mode */
- UIEventType::Input(Key::Char('v')) if self.mode.is_overview() => {
- self.mode = ViewMode::Pager;
+ /* Switch to Edit mode if we're on Overview mode */
+ UIEventType::Input(Key::Char('o')) if self.mode.is_overview() => {
+ self.mode = ViewMode::Edit;
self.set_dirty();
return true;
}
@@ -598,6 +604,39 @@ impl Component for Composer {
fn kill(&mut self, uuid: Uuid) {
self.mode = ViewMode::Discard(uuid);
}
+
+ fn get_shortcuts(&self, context: &Context) -> ShortcutMap {
+ let mut map = if self.mode.is_overview() {
+ self.pager
+ .get_shortcuts(context)
+ } else {
+ Default::default()
+ };
+
+ if let Some((_, ref view)) = self.reply_context {
+ map.extend(view.get_shortcuts(context));
+ map.remove("reply");
+ }
+
+ if self.mode.is_overview() {
+ map.insert(
+ "Switch to edit mode",
+ Key::Char('o')
+ );
+ }
+ if self.mode.is_edit() {
+ map.insert(
+ "Switch to overview",
+ Key::Char('v')
+ );
+ }
+ map.insert(
+ "Edit in $EDITOR",
+ Key::Char('e')
+ );
+
+ map
+ }
}
fn get_display_name(context: &Context, idx: usize) -> String {