title: FileHeader,
normal_status: FileStatusLineFinal,
edit_status: FileStatusLineFinal,
+ c: YourOptionsMenuContents,
+}
+
+struct YourOptionsMenuContents {
el_display_name: EditableMenuLine<String>, // N
cl_default_vis: CyclingMenuLine<Visibility>,
cl_default_sensitive: CyclingMenuLine<bool>,
ac.bot,
);
- let mut menu = YourOptionsMenu {
- title,
- normal_status,
- edit_status,
+ let mut c = YourOptionsMenuContents {
el_display_name,
cl_default_vis,
cl_default_sensitive,
cl_hide_collections,
cl_indexable,
};
- menu.fix_widths();
+ c.fix_widths();
+ let menu = YourOptionsMenu {
+ title,
+ normal_status,
+ edit_status,
+ c,
+ };
Ok(menu)
}
+}
+impl YourOptionsMenuContents {
fn fix_widths(&mut self) -> (usize, usize) {
let mut lmaxwid = 0;
let mut rmaxwid = 0;
(lmaxwid, rmaxwid)
}
+}
+// XXXX join these two impl blocks again
+impl YourOptionsMenu {
fn submit(&self, client: &mut Client) -> LogicalAction {
+ let c = &self.c;
let details = AccountDetails {
- display_name: self.el_display_name.get_data().clone(),
- default_visibility: self.cl_default_vis.get_value(),
- default_sensitive: self.cl_default_sensitive.get_value(),
- default_language: self.el_default_language.get_data().clone(),
- locked: self.cl_locked.get_value(),
- bot: self.cl_bot.get_value(),
- discoverable: self.cl_discoverable.get_value(),
- hide_collections: self.cl_hide_collections.get_value(),
- indexable: self.cl_indexable.get_value(),
+ display_name: c.el_display_name.get_data().clone(),
+ default_visibility: c.cl_default_vis.get_value(),
+ default_sensitive: c.cl_default_sensitive.get_value(),
+ default_language: c.el_default_language.get_data().clone(),
+ locked: c.cl_locked.get_value(),
+ bot: c.cl_bot.get_value(),
+ discoverable: c.cl_discoverable.get_value(),
+ hide_collections: c.cl_hide_collections.get_value(),
+ indexable: c.cl_indexable.get_value(),
};
match client.set_account_details(&client.our_account_id(), details) {
let mut cursorpos = CursorPosition::End;
lines.extend_from_slice(&self.title.render(w));
lines.extend_from_slice(&BlankLine::render_static());
- lines.push(self.el_display_name.render(
+ lines.push(self.c.el_display_name.render(
w,
&mut cursorpos,
lines.len(),
));
lines.extend_from_slice(&BlankLine::render_static());
- lines.extend_from_slice(&self.cl_default_vis.render(w));
- lines.push(self.el_default_language.render(
+ lines.extend_from_slice(&self.c.cl_default_vis.render(w));
+ lines.push(self.c.el_default_language.render(
w,
&mut cursorpos,
lines.len(),
));
- lines.extend_from_slice(&self.cl_default_sensitive.render(w));
+ lines.extend_from_slice(&self.c.cl_default_sensitive.render(w));
lines.extend_from_slice(&BlankLine::render_static());
- lines.extend_from_slice(&self.cl_locked.render(w));
- lines.extend_from_slice(&self.cl_hide_collections.render(w));
- lines.extend_from_slice(&self.cl_discoverable.render(w));
- lines.extend_from_slice(&self.cl_indexable.render(w));
+ lines.extend_from_slice(&self.c.cl_locked.render(w));
+ lines.extend_from_slice(&self.c.cl_hide_collections.render(w));
+ lines.extend_from_slice(&self.c.cl_discoverable.render(w));
+ lines.extend_from_slice(&self.c.cl_indexable.render(w));
lines.extend_from_slice(&BlankLine::render_static());
- lines.extend_from_slice(&self.cl_bot.render(w));
+ lines.extend_from_slice(&self.c.cl_bot.render(w));
while lines.len() + 1 < h {
lines.extend_from_slice(&BlankLine::render_static());
}
- if self.el_display_name.is_editing()
- || self.el_default_language.is_editing()
+ if self.c.el_display_name.is_editing()
+ || self.c.el_default_language.is_editing()
{
lines.extend_from_slice(&self.edit_status.render(w));
} else {
client: &mut Client,
) -> LogicalAction {
// Let editable menu lines have first crack at the keypress
- if self.el_display_name.handle_keypress(key)
- || self.el_default_language.handle_keypress(key)
+ if self.c.el_display_name.handle_keypress(key)
+ || self.c.el_default_language.handle_keypress(key)
{
- self.fix_widths();
+ self.c.fix_widths();
return LogicalAction::Nothing;
}
match key {
Space => self.submit(client),
Pr('q') | Pr('Q') | Return => LogicalAction::Pop,
- Pr('n') | Pr('N') => self.el_display_name.start_editing(),
- Pr('v') | Pr('V') => self.cl_default_vis.cycle(),
- Pr('l') | Pr('L') => self.el_default_language.start_editing(),
- Pr('s') | Pr('S') => self.cl_default_sensitive.cycle(),
- Ctrl('K') => self.cl_locked.cycle(),
- Ctrl('F') => self.cl_hide_collections.cycle(),
- Ctrl('D') => self.cl_discoverable.cycle(),
- Ctrl('X') => self.cl_indexable.cycle(),
- Ctrl('B') => self.cl_bot.cycle(),
+ Pr('n') | Pr('N') => self.c.el_display_name.start_editing(),
+ Pr('v') | Pr('V') => self.c.cl_default_vis.cycle(),
+ Pr('l') | Pr('L') => self.c.el_default_language.start_editing(),
+ Pr('s') | Pr('S') => self.c.cl_default_sensitive.cycle(),
+ Ctrl('K') => self.c.cl_locked.cycle(),
+ Ctrl('F') => self.c.cl_hide_collections.cycle(),
+ Ctrl('D') => self.c.cl_discoverable.cycle(),
+ Ctrl('X') => self.c.cl_indexable.cycle(),
+ Ctrl('B') => self.c.cl_bot.cycle(),
_ => LogicalAction::Nothing,
}
}
fn resize(&mut self, w: usize, _h: usize) {
- self.el_display_name.resize(w);
- self.el_default_language.resize(w);
+ self.c.el_display_name.resize(w);
+ self.c.el_default_language.resize(w);
}
}