summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorManos Pitsidianakis <el13635@mail.ntua.gr>2019-03-23 00:28:17 +0200
committerManos Pitsidianakis <el13635@mail.ntua.gr>2019-06-10 19:40:40 +0300
commit9522508a924955768b13cdd996cd52a869a45105 (patch)
treecb09a89cde4cf37ee3d0a4889138622d10f1264b /ui
parent39c8082a47d391070783a60b9b5ae87e1b5d4d7c (diff)
Update broken reply_context drawing
concerns #38
Diffstat (limited to 'ui')
-rw-r--r--ui/src/components/mail/compose.rs57
-rw-r--r--ui/src/components/mail/listing/thread.rs7
-rw-r--r--ui/src/components/mail/view/thread.rs14
3 files changed, 51 insertions, 27 deletions
diff --git a/ui/src/components/mail/compose.rs b/ui/src/components/mail/compose.rs
index 06be5ae8..d5c030ea 100644
--- a/ui/src/components/mail/compose.rs
+++ b/ui/src/components/mail/compose.rs
@@ -252,13 +252,13 @@ impl Component for Composer {
let mid = if width > 80 {
let width = width - 80;
let mid = if self.reply_context.is_some() {
- width!(area) / 2 + width / 2
+ get_x(upper_left) + width!(area) / 2
} else {
width / 2
};
if self.reply_context.is_some() {
- for i in get_y(upper_left)..=get_y(bottom_right) {
+ for i in get_y(upper_left) - 1..=get_y(bottom_right) {
set_and_join_box(grid, (mid, i), VERT_BOUNDARY);
grid[(mid, i)].set_fg(Color::Default);
grid[(mid, i)].set_bg(Color::Default);
@@ -281,39 +281,42 @@ impl Component for Composer {
};
if width > 80 && self.reply_context.is_some() {
- let area = (upper_left, set_x(bottom_right, mid - 1));
+ let area = (upper_left, set_x(bottom_right, (mid - 1)));
let view = &mut self.reply_context.as_mut().unwrap().1;
- view.draw(grid, area, context);
- }
-
- if self.dirty {
- for i in get_x(upper_left) + mid + 1..=get_x(upper_left) + mid + width.saturating_sub(0)
- {
- //set_and_join_box(grid, (i, header_height), HORZ_BOUNDARY);
- //grid[(i, header_height)].set_fg(Color::Default);
- //grid[(i, header_height)].set_bg(Color::Default);
- }
+ view.set_dirty();
+ view.draw(grid, std::dbg!(area), context);
}
- let header_area = (
- pos_inc(upper_left, (mid + 1, 0)),
+ let header_area = if self.reply_context.is_some() {
+ (set_x(upper_left, mid + 1), set_y(bottom_right, get_y(upper_left) + header_height + 1))
+ } else {
+ (set_x(upper_left, mid + 1), (get_x(bottom_right).saturating_sub(mid), get_y(upper_left) + header_height + 1),)
+ };
+ let body_area = if self.reply_context.is_some() {
+ ((mid + 1, get_y(upper_left) + header_height + 1), bottom_right)
+ } else {
(
- get_x(bottom_right).saturating_sub(mid),
- get_y(upper_left) + header_height + 1,
- ),
- );
- let body_area = (
pos_inc(upper_left, (mid + 1, header_height + 2)),
pos_dec(bottom_right, ((mid, 0))),
- );
+ )
+ };
+ let (x, y) = write_string_to_grid(
+ if self.reply_context.is_some() { "COMPOSING REPLY" } else { "COMPOSING MESSAGE" },
+ grid,
+ Color::Byte(189),
+ Color::Byte(167),
+ (pos_dec(upper_left!(header_area), (0, 1)), bottom_right!(header_area)),
+ false);
+ change_colors(grid, (set_x(pos_dec(upper_left!(header_area), (0, 1)), x), set_y(bottom_right!(header_area), y)), Color::Byte(189), Color::Byte(167));
+
/* Regardless of view mode, do the following */
- self.form.draw(grid, header_area, context);
+ self.form.draw(grid, std::dbg!(header_area), context);
match self.mode {
ViewMode::Overview | ViewMode::Pager => {
self.pager.set_dirty();
- self.pager.draw(grid, body_area, context);
+ self.pager.draw(grid, std::dbg!(body_area), context);
}
ViewMode::Discard(_) => {
/* Let user choose whether to quit with/without saving or cancel */
@@ -382,10 +385,10 @@ impl Component for Composer {
}
}
(ViewMode::Overview, Some((_, ref mut view))) => {
- if view.process_event(event, context) {
- self.dirty = true;
- return true;
- }
+ //if view.process_event(event, context) {
+ // self.dirty = true;
+ // return true;
+ //}
}
_ => {}
}
diff --git a/ui/src/components/mail/listing/thread.rs b/ui/src/components/mail/listing/thread.rs
index 1b8a134d..a514b64b 100644
--- a/ui/src/components/mail/listing/thread.rs
+++ b/ui/src/components/mail/listing/thread.rs
@@ -698,4 +698,11 @@ impl Component for ThreadListing {
};
self.dirty = true;
}
+ fn get_shortcuts(&self, context: &Context) -> ShortcutMap {
+ self
+ .view
+ .as_ref()
+ .map(|p| p.get_shortcuts(context))
+ .unwrap_or_default()
+ }
}
diff --git a/ui/src/components/mail/view/thread.rs b/ui/src/components/mail/view/thread.rs
index 5b106938..0d167703 100644
--- a/ui/src/components/mail/view/thread.rs
+++ b/ui/src/components/mail/view/thread.rs
@@ -598,4 +598,18 @@ impl Component for ThreadView {
self.dirty = true;
self.mailview.set_dirty();
}
+ fn get_shortcuts(&self, context: &Context) -> ShortcutMap {
+ let mut map = self
+ .mailview
+ .get_shortcuts(context);
+
+ map.insert(
+ "reply", Key::Char('R')
+ );
+ map.insert(
+ "toggle_mailview", Key::Char('p')
+ );
+
+ map
+ }
}