summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorManos Pitsidianakis <el13635@mail.ntua.gr>2019-03-14 12:19:25 +0200
committerManos Pitsidianakis <el13635@mail.ntua.gr>2019-06-10 19:40:39 +0300
commitbf038428c2cc3da8eb348524be06ac612612d61c (patch)
treefe10fb1a8e959a862270d6cb4147e7f5525f0800 /ui
parente7c95ba2297a9bd155760ee9adc14406401c6184 (diff)
Run rustfmt
Diffstat (limited to 'ui')
-rw-r--r--ui/src/components.rs43
-rw-r--r--ui/src/components/contacts.rs90
-rw-r--r--ui/src/components/contacts/contact_list.rs74
-rw-r--r--ui/src/components/indexer.rs3
-rw-r--r--ui/src/components/indexer/index.rs2
-rw-r--r--ui/src/components/mail.rs3
-rw-r--r--ui/src/components/mail/accounts.rs40
-rw-r--r--ui/src/components/mail/compose.rs260
-rw-r--r--ui/src/components/mail/listing.rs1
-rw-r--r--ui/src/components/mail/listing/compact.rs92
-rw-r--r--ui/src/components/mail/listing/thread.rs12
-rw-r--r--ui/src/components/mail/view.rs47
-rw-r--r--ui/src/components/mail/view/envelope.rs9
-rw-r--r--ui/src/components/notifications.rs44
-rw-r--r--ui/src/components/utilities.rs129
-rw-r--r--ui/src/components/utilities/widgets.rs371
-rw-r--r--ui/src/conf.rs13
-rw-r--r--ui/src/conf/accounts.rs24
-rw-r--r--ui/src/conf/shortcuts.rs17
-rw-r--r--ui/src/execute/actions.rs8
-rw-r--r--ui/src/state.rs39
-rw-r--r--ui/src/terminal.rs2
-rw-r--r--ui/src/terminal/cells.rs15
-rw-r--r--ui/src/terminal/keys.rs65
-rw-r--r--ui/src/terminal/position.rs6
-rw-r--r--ui/src/terminal/wcwidth.rs2
26 files changed, 844 insertions, 567 deletions
diff --git a/ui/src/components.rs b/ui/src/components.rs
index d6dd2d9e..1ded7791 100644
--- a/ui/src/components.rs
+++ b/ui/src/components.rs
@@ -20,10 +20,10 @@
*/
/*!
- Components are ways to handle application data. They can draw on the terminal and receive events, but also do other stuff as well. (For example, see the `notifications` module.)
+Components are ways to handle application data. They can draw on the terminal and receive events, but also do other stuff as well. (For example, see the `notifications` module.)
- See the `Component` Trait for more details.
- */
+See the `Component` Trait for more details.
+*/
use super::*;
@@ -76,8 +76,6 @@ const _DOUBLE_DOWN_AND_LEFT: char = '╗';
const _DOUBLE_UP_AND_LEFT: char = '╝';
const _DOUBLE_UP_AND_RIGHT: char = '╚';
-
-
type EntityId = Uuid;
/// `Entity` is a container for Components.
@@ -157,7 +155,9 @@ pub trait Component: Display + Debug + Send {
fn kill(&mut self, _id: EntityId) {}
fn set_id(&mut self, _id: EntityId) {}
- fn get_shortcuts(&self, context: &Context) -> ShortcutMap { Default::default() }
+ fn get_shortcuts(&self, context: &Context) -> ShortcutMap {
+ Default::default()
+ }
}
/*
@@ -429,20 +429,23 @@ pub(crate) fn set_and_join_box(grid: &mut CellBuffer, idx: Pos, ch: char) {
}
pub fn create_box(grid: &mut CellBuffer, area: Area) {
- let upper_left = upper_left!(area);
- let bottom_right = bottom_right!(area);
+ if !is_valid_area!(area) {
+ return;
+ }
+ let upper_left = upper_left!(area);
+ let bottom_right = bottom_right!(area);
- for x in get_x(upper_left)..get_x(bottom_right) {
- grid[(x, get_y(upper_left))].set_ch(HORZ_BOUNDARY);
- grid[(x, get_y(bottom_right))].set_ch(HORZ_BOUNDARY);
- }
+ for x in get_x(upper_left)..get_x(bottom_right) {
+ grid[(x, get_y(upper_left))].set_ch(HORZ_BOUNDARY);
+ grid[(x, get_y(bottom_right))].set_ch(HORZ_BOUNDARY);
+ }
- for y in get_y(upper_left)..get_y(bottom_right) {
- grid[(get_x(upper_left), y)].set_ch(VERT_BOUNDARY);
- grid[(get_x(bottom_right), y)].set_ch(VERT_BOUNDARY);
- }
- set_and_join_box(grid, upper_left, HORZ_BOUNDARY);
- set_and_join_box(grid, set_x(upper_left, get_x(bottom_right)), HORZ_BOUNDARY);
- set_and_join_box(grid, set_y(upper_left, get_y(bottom_right)), VERT_BOUNDARY);
- set_and_join_box(grid, bottom_right, VERT_BOUNDARY);
+ for y in get_y(upper_left)..get_y(bottom_right) {
+ grid[(get_x(upper_left), y)].set_ch(VERT_BOUNDARY);
+ grid[(get_x(bottom_right), y)].set_ch(VERT_BOUNDARY);
+ }
+ set_and_join_box(grid, upper_left, HORZ_BOUNDARY);
+ set_and_join_box(grid, set_x(upper_left, get_x(bottom_right)), HORZ_BOUNDARY);
+ set_and_join_box(grid, set_y(upper_left, get_y(bottom_right)), VERT_BOUNDARY);
+ set_and_join_box(grid, bottom_right, VERT_BOUNDARY);
}
diff --git a/ui/src/components/contacts.rs b/ui/src/components/contacts.rs
index 08190b85..9bd73f86 100644
--- a/ui/src/components/contacts.rs
+++ b/ui/src/components/contacts.rs
@@ -78,7 +78,7 @@ impl ContactManager {
Color::Default,
((0, 0), (width, 0)),
false,
- );
+ );
let (x, _) = write_string_to_grid(
"Last edited: ",
&mut self.content,
@@ -86,7 +86,7 @@ impl ContactManager {
Color::Default,
((x, 0), (width, 0)),
false,
- );
+ );
write_string_to_grid(
&self.card.last_edited(),
&mut self.content,
@@ -94,15 +94,23 @@ impl ContactManager {
Color::Default,
((x, 0), (width, 0)),
false,
- );
+ );
self.form = FormWidget::new("Save".into());
self.form.add_button(("Cancel".into(), false));
- self.form.push(("First Name".into(), self.card.firstname().to_string()));
- self.form.push(("Last Name".into(), self.card.lastname().to_string()));
- self.form.push(("Additional Name".into(), self.card.additionalname().to_string()));
- self.form.push(("Name Prefix".into(), self.card.name_prefix().to_string()));
- self.form.push(("Name Suffix".into(), self.card.name_suffix().to_string()));
- self.form.push(("E-mail".into(), self.card.email().to_string()));
+ self.form
+ .push(("First Name".into(), self.card.firstname().to_string()));
+ self.form
+ .push(("Last Name".into(), self.card.lastname().to_string()));
+ self.form.push((
+ "Additional Name".into(),
+ self.card.additionalname().to_string(),
+ ));
+ self.form
+ .push(("Name Prefix".into(), self.card.name_prefix().to_string()));
+ self.form
+ .push(("Name Suffix".into(), self.card.name_suffix().to_string()));
+ self.form
+ .push(("E-mail".into(), self.card.email().to_string()));
self.form.push(("url".into(), self.card.url().to_string()));
self.form.push(("key".into(), self.card.key().to_string()));
}
@@ -120,55 +128,71 @@ impl Component for ContactManager {
let upper_left = upper_left!(area);
let bottom_right = bottom_right!(area);
- self.form.draw(grid, (set_y(upper_left, get_y(upper_left) + 1), bottom_right), context);
+ self.form.draw(
+ grid,
+ (set_y(upper_left, get_y(upper_left) + 1), bottom_right),
+ context,
+ );
context.dirty_areas.push_back(area);
}
fn process_event(&mut self, event: &mut UIEvent, context: &mut Context) -> bool {
if self.form.process_event(event, context) {
match self.form.buttons_result() {
- None => {},
+ None => {}
Some(true) => {
- let mut fields = std::mem::replace(&mut self.form, FormWidget::default()).collect().unwrap();
- let fields: FnvHashMap<String, String> = fields.into_iter().map(|(s, v)| {
- (s, match v {
- Field::Text(v, _, _) | Field::TextArea(v, _) => v,
- Field::Choice(mut v, c) => v.remove(c),
- })}).collect();
+ let mut fields = std::mem::replace(&mut self.form, FormWidget::default())
+ .collect()
+ .unwrap();
+ let fields: FnvHashMap<String, String> = fields
+ .into_iter()
+ .map(|(s, v)| {
+ (
+ s,
+ match v {
+ Field::Text(v, _, _) | Field::TextArea(v, _) => v,
+ Field::Choice(mut v, c) => v.remove(c),
+ },
+ )
+ })
+ .collect();
let mut new_card = Card::from(fields);
new_card.set_id(*self.card.id());
- context.accounts[self.account_pos].address_book.add_card(new_card);
+ context.accounts[self.account_pos]
+ .address_book
+ .add_card(new_card);
context.replies.push_back(UIEvent {
id: 0,
- event_type: UIEventType::StatusEvent(StatusEvent::DisplayMessage("Saved.".into())),
+ event_type: UIEventType::StatusEvent(StatusEvent::DisplayMessage(
+ "Saved.".into(),
+ )),
});
context.replies.push_back(UIEvent {
id: 0,
event_type: UIEventType::EntityKill(self.id),
});
- },
+ }
Some(false) => {
context.replies.push_back(UIEvent {
id: 0,
event_type: UIEventType::EntityKill(self.id),
});
-
- },
+ }
}
return true;
}
/*
- match event.event_type {
- UIEventType::Input(Key::Char('\n')) => {
- context.replies.push_back(UIEvent {
- id: 0,
- event_type: UIEventType::EntityKill(self.id),
- });
- return true;
- },
- _ => {},
- }
- */
+ match event.event_type {
+ UIEventType::Input(Key::Char('\n')) => {
+ context.replies.push_back(UIEvent {
+ id: 0,
+ event_type: UIEventType::EntityKill(self.id),
+ });
+ return true;
+ },
+ _ => {},
+ }
+ */
false
}
diff --git a/ui/src/components/contacts/contact_list.rs b/ui/src/components/contacts/contact_list.rs
index f1b70ddf..c9f47cd4 100644
--- a/ui/src/components/contacts/contact_list.rs
+++ b/ui/src/components/contacts/contact_list.rs
@@ -20,7 +20,7 @@ pub struct ContactList {
content: CellBuffer,
id_positions: Vec<CardId>,
-
+
mode: ViewMode,
dirty: bool,
view: Option<Entity>,
@@ -60,29 +60,30 @@ impl ContactList {
..Self::new()
}
}
-
+
fn initialize(&mut self, context: &mut Context) {
let account = &mut context.accounts[self.account_pos];
let book = &mut account.address_book;
self.length = book.len();
- self.content.resize(MAX_COLS, book.len(), Cell::with_char(' '));
+ self.content
+ .resize(MAX_COLS, book.len(), Cell::with_char(' '));
self.id_positions.clear();
if self.id_positions.capacity() < book.len() {
- self.id_positions.reserve(book.len());
+ self.id_positions.reserve(book.len());
}
for (i, c) in book.values().enumerate() {
self.id_positions.push(*c.id());
-
+
write_string_to_grid(
c.email(),
&mut self.content,
Color::Default,
Color::Default,
((0, i), (MAX_COLS - 1, book.len() - 1)),
- false
- );
+ false,
+ );
}
}
}
@@ -105,7 +106,15 @@ impl Component for ContactList {
if self.dirty {
self.initialize(context);
clear_area(grid, area);
- copy_area(grid, &self.content, area, ((0, 0), (MAX_COLS - 1, self.content.size().1.saturating_sub(1))));
+ copy_area(
+ grid,
+ &self.content,
+ area,
+ (
+ (0, 0),
+ (MAX_COLS - 1, self.content.size().1.saturating_sub(1)),
+ ),
+ );
context.dirty_areas.push_back(area);
self.dirty = false;
}
@@ -116,11 +125,27 @@ impl Component for ContactList {
/* Reset previously highlighted line */
let fg_color = Color::Default;
let bg_color = Color::Default;
- change_colors(grid, (pos_inc(upper_left, (0, self.cursor_pos)), set_y(bottom_right, get_y(upper_left) + self.cursor_pos)), fg_color, bg_color);
+ change_colors(
+ grid,
+ (
+ pos_inc(upper_left, (0, self.cursor_pos)),
+ set_y(bottom_right, get_y(upper_left) + self.cursor_pos),
+ ),
+ fg_color,
+ bg_color,
+ );
/* Highlight current line */
let bg_color = Color::Byte(246);
- change_colors(grid, (pos_inc(upper_left, (0, self.new_cursor_pos)), set_y(bottom_right, get_y(upper_left) + self.new_cursor_pos)), fg_color, bg_color);
+ change_colors(
+ grid,
+ (
+ pos_inc(upper_left, (0, self.new_cursor_pos)),
+ set_y(bottom_right, get_y(upper_left) + self.new_cursor_pos),
+ ),
+ fg_color,
+ bg_color,
+ );
self.cursor_pos = self.new_cursor_pos;
}
@@ -139,10 +164,10 @@ impl Component for ContactList {
self.mode = ViewMode::View(*entity.id());
self.view = Some(entity);
-
+
return true;
- },
-
+ }
+
UIEventType::Input(ref key) if *key == shortcuts["edit_contact"] && self.length > 0 => {
let account = &mut context.accounts[self.account_pos];
let book = &mut account.address_book;
@@ -154,9 +179,9 @@ impl Component for ContactList {
self.mode = ViewMode::View(*entity.id());
self.view = Some(entity);
-
+
return true;
- },
+ }
UIEventType::Input(Key::Char('n')) => {
let card = Card::new();
let mut manager = ContactManager::default();
@@ -165,27 +190,26 @@ impl Component for ContactList {
let entity = Entity::from(Box::new(manager));
self.mode = ViewMode::View(*entity.id());
self.view = Some(entity);
-
+
return true;
- },
+ }
UIEventType::Input(Key::Up) => {
self.set_dirty();
self.new_cursor_pos = self.cursor_pos.saturating_sub(1);
return true;
- },
+ }
UIEventType::Input(Key::Down) if self.cursor_pos < self.length.saturating_sub(1) => {
self.set_dirty();
self.new_cursor_pos += 1;
return true;
- },
+ }
UIEventType::EntityKill(ref kill_id) if self.mode == ViewMode::View(*kill_id) => {
self.mode = ViewMode::List;
self.view.take();
self.set_dirty();
return true;
-
- },
- _ => {},
+ }
+ _ => {}
}
false
}
@@ -205,7 +229,11 @@ impl Component for ContactList {
self.mode = ViewMode::Close(uuid);
}
fn get_shortcuts(&self, context: &Context) -> ShortcutMap {
- let mut map = self.view.as_ref().map(|p| p.get_shortcuts(context)).unwrap_or_default();
+ let mut map = self
+ .view
+ .as_ref()
+ .map(|p| p.get_shortcuts(context))
+ .unwrap_or_default();
let config_map = context.settings.shortcuts.contact_list.key_values();
map.insert("create_contact", (*config_map["create_contact"]).clone());
diff --git a/ui/src/components/indexer.rs b/ui/src/components/indexer.rs
index 30da0f5e..2d1640ea 100644
--- a/ui/src/components/indexer.rs
+++ b/ui/src/components/indexer.rs
@@ -58,8 +58,7 @@ impl Default for Indexer {
}
impl Indexer {
- fn draw_menu(&mut self, _grid: &mut CellBuffer, _area: Area, _context: &mut Context) {
- }
+ fn draw_menu(&mut self, _grid: &mut CellBuffer, _area: Area, _context: &mut Context) {}
}
impl Component for Indexer {
diff --git a/ui/src/components/indexer/index.rs b/ui/src/components/indexer/index.rs
index d636a9a0..4794baca 100644
--- a/ui/src/components/indexer/index.rs
+++ b/ui/src/components/indexer/index.rs
@@ -42,7 +42,7 @@ impl Index {
let bg_color = if self.cursor_pos == idx {
Color::Byte(246)
/* } else if idx % 2 == 0 {
- Color::Byte(236)*/
+ Color::Byte(236)*/
} else {
Color::Default
};
diff --git a/ui/src/components/mail.rs b/ui/src/components/mail.rs
index fcfd7aa5..f4d4322f 100644
--- a/ui/src/components/mail.rs
+++ b/ui/src/components/mail.rs
@@ -73,7 +73,8 @@ impl AccountMenu {
}
entries
},
- }).collect();
+ })
+ .collect();
AccountMenu {
accounts,
dirty: true,
diff --git a/ui/src/components/mail/accounts.rs b/ui/src/components/mail/accounts.rs
index 8fdc620b..c3684a4b 100644
--- a/ui/src/components/mail/accounts.rs
+++ b/ui/src/components/mail/accounts.rs
@@ -35,7 +35,6 @@ impl fmt::Display for AccountsPanel {
}
}
-
impl Component for AccountsPanel {
fn draw(&mut self, grid: &mut CellBuffer, area: Area, context: &mut Context) {
if self.dirty {
@@ -46,26 +45,26 @@ impl Component for AccountsPanel {
Color::Default,
((2, 3), (120 - 1, 3)),
true,
- );
+ );
for (i, a) in context.accounts.iter().enumerate() {
- create_box(&mut self.content, ((2,5+i*10 ), (120-1, 15+i*10)));
+ create_box(&mut self.content, ((2, 5 + i * 10), (120 - 1, 15 + i * 10)));
let (x, y) = write_string_to_grid(
a.name(),
&mut self.content,
Color::Default,
Color::Default,
- ((3, 5 + i*10), (120 - 2, 5 + i*10)),
+ ((3, 5 + i * 10), (120 - 2, 5 + i * 10)),
true,
- );
+ );
write_string_to_grid(
" ▒██▒ ",
&mut self.content,
Color::Byte(32),
Color::Default,
- ((x, y), (120 - 2, 5 + i*10)),
+ ((x, y), (120 - 2, 5 + i * 10)),
true,
- );
+ );
write_string_to_grid(
&a.runtime_settings.account().identity,
&mut self.content,
@@ -73,10 +72,10 @@ impl Component for AccountsPanel {
Color::Default,
((4, y + 2), (120 - 2, y + 2)),
true,
- );
+ );
if i == self.cursor {
for h in 1..8 {
- self.content[(2, h+y+1)].set_ch('*');
+ self.content[(2, h + y + 1)].set_ch('*');
}
}
write_string_to_grid(
@@ -86,7 +85,7 @@ impl Component for AccountsPanel {
Color::Default,
((5, y + 3), (120 - 2, y + 3)),
true,
- );
+ );
write_string_to_grid(
"- Contacts",
&mut self.content,
@@ -94,7 +93,7 @@ impl Component for AccountsPanel {
Color::Default,
((5, y + 4), (120 - 2, y + 4)),
true,
- );
+ );
write_string_to_grid(
"- Mailing Lists",
&mut self.content,
@@ -102,10 +101,7 @@ impl Component for AccountsPanel {
Color::Default,
((5, y + 5), (120 - 2, y + 5)),
true,
- );
-
-
-
+ );
}
self.dirty = false;
}
@@ -121,22 +117,24 @@ impl Component for AccountsPanel {
self.cursor = self.cursor.saturating_sub(1);
self.dirty = true;
return true;
- },
+ }
UIEventType::Input(Key::Down) => {
if self.cursor + 1 < context.accounts.len() {
self.cursor += 1;
self.dirty = true;
}
return true;
- },
+ }
UIEventType::Input(Key::Char('\n')) => {
context.replies.push_back(UIEvent {
id: 0,
- event_type: UIEventType::Action(Tab(TabOpen(Some(Box::new(ContactList::for_account(self.cursor)))
- )))});
+ event_type: UIEventType::Action(Tab(TabOpen(Some(Box::new(
+ ContactList::for_account(self.cursor),
+ ))))),
+ });
return true;
- },
- _ => {},
+ }
+ _ => {}
}
false
diff --git a/ui/src/components/mail/compose.rs b/ui/src/components/mail/compose.rs
index 5b8de117..06be5ae8 100644
--- a/ui/src/components/mail/compose.rs
+++ b/ui/src/components/mail/compose.rs
@@ -24,7 +24,6 @@ use super::*;
use melib::Draft;
use std::str::FromStr;
-
#[derive(Debug, PartialEq)]
enum Cursor {
Headers,
@@ -173,10 +172,15 @@ impl Composer {
let account_cursor = self.account_cursor;
for &k in &["Date", "From", "To", "Cc", "Bcc", "Subject"] {
if k == "To" {
- self.form.push_cl((k.into(), headers[k].to_string(), Box::new(move |c, term| {
- let book: &AddressBook = &c.accounts[account_cursor].address_book;
- let results: Vec<String> = book.search(term);
- results})));
+ self.form.push_cl((
+ k.into(),
+ headers[k].to_string(),
+ Box::new(move |c, term| {
+ let book: &AddressBook = &c.accounts[account_cursor].address_book;
+ let results: Vec<String> = book.search(term);
+ results
+ }),
+ ));
} else {
self.form.push((k.into(), headers[k].to_string()));
}
@@ -184,36 +188,36 @@ impl Composer {
}
/*
- let (x, y) = if k == "From" {
- write_string_to_grid(
- "◀ ",
- grid,
- Color::Byte(251),
- Color::Default,
- ((x, y), set_y(bottom_right, y)),
- true,
- )
- } else {
- (x, y)
- };
- let (x, y) = write_string_to_grid(
- &headers[k],
- grid,
- Color::Default,
- bg_color,
- ((x, y), set_y(bottom_right, y)),
- true,
- );
- if k == "From" {
- write_string_to_grid(
- " ▶",
- grid,
- Color::Byte(251),
- Color::Default,
- ((x, y), set_y(bottom_right, y)),
- true,
- )
- */
+ let (x, y) = if k == "From" {
+ write_string_to_grid(
+ "◀ ",
+ grid,
+ Color::Byte(251),
+ Color::Default,
+ ((x, y), set_y(bottom_right, y)),
+ true,
+ )
+ } else {
+ (x, y)
+ };
+ let (x, y) = write_string_to_grid(
+ &headers[k],
+ grid,
+ Color::Default,
+ bg_color,
+ ((x, y), set_y(bottom_right, y)),
+ true,
+ );
+ if k == "From" {
+ write_string_to_grid(
+ " ▶",
+ grid,
+ Color::Byte(251),
+ Color::Default,
+ ((x, y), set_y(bottom_right, y)),
+ true,
+ )
+ */
}
impl Component for Composer {
@@ -283,14 +287,21 @@ impl Component for Composer {
}
if self.dirty {
- for i in get_x(upper_left) + mid + 1..=get_x(upper_left) + mid + width.saturating_sub(0) {
+ 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);
}
}
- let header_area = (pos_inc(upper_left, (mid + 1, 0)), (get_x(bottom_right).saturating_sub(mid), get_y(upper_left) + header_height + 1));
+ let header_area = (
+ pos_inc(upper_left, (mid + 1, 0)),
+ (
+ 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))),
@@ -303,21 +314,26 @@ impl Component for Composer {
ViewMode::Overview | ViewMode::Pager => {
self.pager.set_dirty();
self.pager.draw(grid, body_area, context);
- },
+ }
ViewMode::Discard(_) => {
/* Let user choose whether to quit with/without saving or cancel */
- let mid_x = {
- std::cmp::max(width!(area) / 2, width / 2) - width / 2
- };
- let mid_y = {
- std::cmp::max(height!(area) / 2, 11) - 11
- };
+ let mid_x = { std::cmp::max(width!(area) / 2, width / 2) - width / 2 };
+ let mid_y = { std::cmp::max(height!(area) / 2, 11) - 11 };
let upper_left = upper_left!(body_area);
let bottom_right = bottom_right!(body_area);
- let area = (pos_inc(upper_left, (mid_x, mid_y)), pos_dec(bottom_right, (mid_x, mid_y)));
+ let area = (
+ pos_inc(upper_left, (mid_x, mid_y)),
+ pos_dec(bottom_right, (mid_x, mid_y)),
+ );
create_box(grid, area);
- let area = (pos_inc(upper_left, (mid_x + 2, mid_y + 2)), pos_dec(bottom_right, (mid_x.saturating_sub(2), mid_y.saturating_sub(2))));
+ let area = (
+ pos_inc(upper_left, (mid_x + 2, mid_y + 2)),
+ pos_dec(
+ bottom_right,
+ (mid_x.saturating_sub(2), mid_y.saturating_sub(2)),
+ ),
+ );
let (_, y) = write_string_to_grid(
&format!("Draft \"{:10}\"", self.draft.headers()["Subject"]),
@@ -326,7 +342,7 @@ impl Component for Composer {
Color::Default,
area,
true,
- );
+ );
let (_, y) = write_string_to_grid(
"[x] quit without saving",
grid,
@@ -334,7 +350,7 @@ impl Component for Composer {
Color::Default,
(set_y(upper_left!(area), y + 2), bottom_right!(area)),
true,
- );
+ );
let (_, y) = write_string_to_grid(
"[y] save draft and quit",
grid,
@@ -342,7 +358,7 @@ impl Component for Composer {
Color::Default,
(set_y(upper_left!(area), y + 1), bottom_right!(area)),
true,
- );
+ );
write_string_to_grid(
"[n] cancel",
grid,
@@ -350,9 +366,8 @@ impl Component for Composer {
Color::Default,
(set_y(upper_left!(area), y + 1), bottom_right!(area)),
true,
- );
-
- },
+ );
+ }
}
context.dirty_areas.push_back(area);
@@ -371,7 +386,7 @@ impl Component for Composer {
self.dirty = true;
return true;
}
- },
+ }
_ => {}
}
if self.form.process_event(event, context) {
@@ -381,36 +396,36 @@ impl Component for Composer {
match event.event_type {
UIEventType::Resize => {
self.set_dirty();
- },
+ }
/*
/* Switch e-mail From: field to the `left` configured account. */
UIEventType::Input(Key::Left) if self.cursor == Cursor::From => {
- self.account_cursor = self.account_cursor.saturating_sub(1);
- self.draft.headers_mut().insert(
- "From".into(),
- get_display_name(context, self.account_cursor),
- );
- self.dirty = true;
- return true;
+ self.account_cursor = self.account_cursor.saturating_sub(1);
+ self.draft.headers_mut().insert(
+ "From".into(),
+ get_display_name(context, self.account_cursor),
+ );
+ self.dirty = true;
+ return true;
}
/* Switch e-mail From: field to the `r