refactor: get_horizotal/vertical contraints into single method

This commit is contained in:
Jack Wills
2023-02-27 14:50:04 +00:00
parent 074cb957f2
commit e8f5cf9c6f
2 changed files with 29 additions and 17 deletions
+2 -4
View File
@@ -651,12 +651,10 @@ fn popup(text_lines: usize, text_width: usize, r: Rect, box_location: BoxLocatio
1 1
}; };
let v_constraints = box_location.get_vertical_constraints( let (h_constraints, v_constraints) = box_location.get_constraints(
blank_horizontal.try_into().unwrap_or_default(),
blank_vertical.try_into().unwrap_or_default(), blank_vertical.try_into().unwrap_or_default(),
text_lines.try_into().unwrap_or_default(), text_lines.try_into().unwrap_or_default(),
);
let h_constraints = box_location.get_horizontal_constraints(
blank_horizontal.try_into().unwrap_or_default(),
text_width.try_into().unwrap_or_default(), text_width.try_into().unwrap_or_default(),
); );
+27 -13
View File
@@ -75,31 +75,45 @@ impl BoxLocation {
} }
} }
// Should combine with get_vertical_constraints and just return a tuple of (vc, hc)? /// Get both the vertical and hoziztonal constrains
pub const fn get_horizontal_constraints( pub const fn get_constraints(
self, self,
blank_horizontal: u16,
blank_vertical: u16, blank_vertical: u16,
text_lines: u16,
text_width: u16,
) -> ([Constraint; 3], [Constraint; 3]) {
(
Self::get_horizontal_constraints(self, blank_horizontal, text_width),
Self::get_vertical_constraints(self, blank_vertical, text_lines),
)
}
const fn get_horizontal_constraints(
self,
blank_horizontal: u16,
text_width: u16, text_width: u16,
) -> [Constraint; 3] { ) -> [Constraint; 3] {
match self { match self {
Self::TopLeft | Self::MiddleLeft | Self::BottomLeft => [ Self::TopLeft | Self::MiddleLeft | Self::BottomLeft => [
Constraint::Max(text_width), Constraint::Max(text_width),
Constraint::Max(blank_vertical), Constraint::Max(blank_horizontal),
Constraint::Max(blank_vertical), Constraint::Max(blank_horizontal),
], ],
Self::TopCentre | Self::MiddleCentre | Self::BottomCentre => [ Self::TopCentre | Self::MiddleCentre | Self::BottomCentre => [
Constraint::Max(blank_vertical), Constraint::Max(blank_horizontal),
Constraint::Max(text_width), Constraint::Max(text_width),
Constraint::Max(blank_vertical), Constraint::Max(blank_horizontal),
], ],
Self::TopRight | Self::MiddleRight | Self::BottomRight => [ Self::TopRight | Self::MiddleRight | Self::BottomRight => [
Constraint::Max(blank_vertical), Constraint::Max(blank_horizontal),
Constraint::Max(blank_vertical), Constraint::Max(blank_horizontal),
Constraint::Max(text_width), Constraint::Max(text_width),
], ],
} }
} }
pub const fn get_vertical_constraints(
const fn get_vertical_constraints(
self, self,
blank_vertical: u16, blank_vertical: u16,
number_lines: u16, number_lines: u16,
@@ -188,13 +202,13 @@ pub enum Status {
/// Global gui_state, stored in an Arc<Mutex> /// Global gui_state, stored in an Arc<Mutex>
#[derive(Debug, Default, Clone)] #[derive(Debug, Default, Clone)]
pub struct GuiState { pub struct GuiState {
panel_map: HashMap<SelectablePanel, Rect>,
heading_map: HashMap<Header, Rect>, heading_map: HashMap<Header, Rect>,
loading_icon: Loading,
is_loading: HashSet<Uuid>, is_loading: HashSet<Uuid>,
loading_icon: Loading,
panel_map: HashMap<SelectablePanel, Rect>,
status: HashSet<Status>, status: HashSet<Status>,
pub selected_panel: SelectablePanel,
pub info_box_text: Option<String>, pub info_box_text: Option<String>,
pub selected_panel: SelectablePanel,
} }
impl GuiState { impl GuiState {
/// Clear panels hash map, so on resize can fix the sizes for mouse clicks /// Clear panels hash map, so on resize can fix the sizes for mouse clicks
@@ -273,7 +287,7 @@ impl GuiState {
self.is_loading.insert(uuid); self.is_loading.insert(uuid);
} }
/// If is_loading has any entries, return the current loading_icon, else an empty string /// If is_loading has any entries, return the current loading_icon, else an empty string, which needs to take up the same space, hence ' '
pub fn get_loading(&mut self) -> String { pub fn get_loading(&mut self) -> String {
if self.is_loading.is_empty() { if self.is_loading.is_empty() {
String::from(" ") String::from(" ")