From c3c5d07e70e884d68caca4a42424dba839a8ddb5 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Thu, 2 Feb 2023 13:43:47 -0330 Subject: refactor ui --- src/ui.rs | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/src/ui.rs b/src/ui.rs index bb5057d..36ce949 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -15,24 +15,8 @@ use crate::Calculator; impl Calculator { pub fn draw(&self, f: &mut Frame) { - let chunks = Layout::default() - .direction(Direction::Vertical) - .constraints( - [ - Constraint::Max(u16::MAX), - Constraint::Length(self.stack.len() as u16), - Constraint::Length(1), - ] - .as_ref(), - ) - .split(f.size()); - - let items: Vec = (self.stack) - .iter() - .map(|f| ListItem::new(format!("{}", f))) - .collect(); - f.render_widget(List::new(items), chunks[1]); - + let chunks = layout(self.stack.len()).split(f.size()); + f.render_widget(stack_list(&self.stack), chunks[1]); f.render_widget(Paragraph::new(self.input_buffer.as_str()), chunks[2]); } } @@ -58,3 +42,25 @@ where terminal.show_cursor()?; Ok(()) } + +fn layout(stack_size: usize) -> Layout { + Layout::default() + .direction(Direction::Vertical) + .constraints( + [ + Constraint::Max(u16::MAX), + Constraint::Length(stack_size as u16), + Constraint::Length(1), + ] + .as_ref(), + ) +} + +fn stack_list(stack: &Vec) -> List { + List::new( + stack + .iter() + .map(|f| ListItem::new(format!("{}", f))) + .collect::>(), + ) +} -- cgit v1.2.3