diff options
author | Manos Pitsidianakis <el13635@mail.ntua.gr> | 2019-03-14 12:19:25 +0200 |
---|---|---|
committer | Manos Pitsidianakis <el13635@mail.ntua.gr> | 2019-06-10 19:40:39 +0300 |
commit | bf038428c2cc3da8eb348524be06ac612612d61c (patch) | |
tree | fe10fb1a8e959a862270d6cb4147e7f5525f0800 /ui | |
parent | e7c95ba2297a9bd155760ee9adc14406401c6184 (diff) |
Run rustfmt
Diffstat (limited to 'ui')
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 |