ui: add update and expand_headers in MailView

embed
Manos Pitsidianakis 2019-06-05 01:27:13 +03:00
parent 3318123870
commit d3ce424361
Signed by: Manos Pitsidianakis
GPG Key ID: 73627C2F690DF710
1 changed files with 51 additions and 1 deletions

View File

@ -67,6 +67,7 @@ pub struct MailView {
subview: Option<Box<Component>>,
dirty: bool,
mode: ViewMode,
expand_headers: bool,
cmd_buf: String,
id: ComponentId,
@ -110,6 +111,7 @@ impl MailView {
subview,
dirty: true,
mode: ViewMode::Normal,
expand_headers: false,
cmd_buf: String::with_capacity(4),
id: ComponentId::new_v4(),
@ -279,6 +281,12 @@ impl MailView {
}
buf
}
pub fn update(&mut self, new_coordinates: (usize, usize, EnvelopeHash)) {
self.coordinates = new_coordinates;
self.mode = ViewMode::Normal;
self.set_dirty();
}
}
impl Component for MailView {
@ -355,7 +363,7 @@ impl Component for MailView {
grid[(x, y)].set_bg(Color::Default);
grid[(x, y)].set_fg(Color::Default);
}
let (x, y) = write_string_to_grid(
let (x, mut y) = write_string_to_grid(
&format!("Message-ID: <{}>", envelope.message_id_raw()),
grid,
Color::Byte(33),
@ -368,6 +376,43 @@ impl Component for MailView {
grid[(x, y)].set_bg(Color::Default);
grid[(x, y)].set_fg(Color::Default);
}
if self.expand_headers && envelope.in_reply_to().is_some() {
let (x, _y) = write_string_to_grid(
&format!("In-Reply-To: {}", envelope.in_reply_to_display().unwrap()),
grid,
Color::Byte(33),
Color::Default,
(set_y(upper_left, y + 1), bottom_right),
true,
);
for x in x..=get_x(bottom_right) {
grid[(x, _y)].set_ch(' ');
grid[(x, _y)].set_bg(Color::Default);
grid[(x, _y)].set_fg(Color::Default);
}
let (x, _y) = write_string_to_grid(
&format!(
"References: {}",
envelope
.references()
.iter()
.map(|r| r.to_string())
.collect::<Vec<String>>()
.join(", ")
),
grid,
Color::Byte(33),
Color::Default,
(set_y(upper_left, _y + 1), bottom_right),
true,
);
for x in x..=get_x(bottom_right) {
grid[(x, _y)].set_ch(' ');
grid[(x, _y)].set_bg(Color::Default);
grid[(x, _y)].set_fg(Color::Default);
}
y = _y;
}
clear_area(grid, (set_y(upper_left, y + 1), set_y(bottom_right, y + 1)));
context
.dirty_areas
@ -656,6 +701,11 @@ impl Component for MailView {
}
};
}
UIEvent::Input(Key::Char('h')) => {
self.expand_headers = !self.expand_headers;
self.dirty = true;
return true;
}
UIEvent::Input(Key::Char('g'))
if !self.cmd_buf.is_empty() && self.mode == ViewMode::Url =>
{