Cleanup selection code
This commit is contained in:
parent
9095be7026
commit
fe53d4577a
|
@ -52,55 +52,42 @@ impl MenuSelection {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct ListSelection {
|
pub struct ListSelection {
|
||||||
pub selection: Option<usize>
|
pub id: usize
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ListSelection {
|
impl ListSelection {
|
||||||
pub fn increment(&mut self, max: usize) {
|
pub fn increment(&mut self, max: usize) {
|
||||||
if let Some(cur_selection) = self.selection {
|
let new_selection = self.id + 1;
|
||||||
self.selection = Some({
|
|
||||||
if cur_selection + 1 >= max {
|
|
||||||
0
|
|
||||||
}
|
|
||||||
|
|
||||||
else {
|
self.id = {
|
||||||
cur_selection + 1
|
if new_selection >= max {
|
||||||
}
|
0
|
||||||
});
|
}
|
||||||
}
|
|
||||||
|
else {
|
||||||
|
new_selection
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn decrement(&mut self, max: usize) {
|
pub fn decrement(&mut self, max: usize) {
|
||||||
if let Some(mut cur_selection) = self.selection {
|
let new_selection = self.id - 1;
|
||||||
self.selection = Some({
|
|
||||||
cur_selection = cur_selection - 1;
|
|
||||||
if cur_selection > max - 1 {
|
|
||||||
max - 1
|
|
||||||
}
|
|
||||||
|
|
||||||
else {
|
self.id = {
|
||||||
cur_selection
|
if new_selection >= max {
|
||||||
}
|
max - 1
|
||||||
});
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
new_selection
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn activate(&mut self) {
|
|
||||||
self.selection = Some(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn deactivate(&mut self) {
|
|
||||||
self.selection = None;
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn is_active(&self) -> bool {
|
|
||||||
self.selection.is_some()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for ListSelection {
|
impl Default for ListSelection {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self{selection: None}
|
Self{id: 0}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,16 +109,8 @@ impl ConsoleUI {
|
||||||
|
|
||||||
pub fn update_data(&mut self, memory_map: &MemoryMap) -> Result<(), Error> {
|
pub fn update_data(&mut self, memory_map: &MemoryMap) -> Result<(), Error> {
|
||||||
self.data = ConsoleUIData::from(memory_map)?;
|
self.data = ConsoleUIData::from(memory_map)?;
|
||||||
|
self.section_selection = ListSelection::default();
|
||||||
|
|
||||||
if self.data.section_info.len() > 0 {
|
|
||||||
if !self.section_selection.is_active() {
|
|
||||||
self.section_selection.activate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
else {
|
|
||||||
self.section_selection.deactivate();
|
|
||||||
}
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -199,16 +178,7 @@ impl ConsoleUI {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
self.first_section_id = {
|
self.first_section_id = self.section_selection.id;
|
||||||
if let Some(selection) = self.section_selection.selection {
|
|
||||||
selection
|
|
||||||
}
|
|
||||||
|
|
||||||
else {
|
|
||||||
0
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
input_result
|
input_result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,8 +215,7 @@ impl ConsoleUI {
|
||||||
frame.render_widget(menu_bar, main_layout[0]);
|
frame.render_widget(menu_bar, main_layout[0]);
|
||||||
match self.menu_selection {
|
match self.menu_selection {
|
||||||
MenuSelection::Stats => {
|
MenuSelection::Stats => {
|
||||||
// ToDo: v This is the same and we always have elements now
|
Self::render_stats(frame, main_layout[1], &self.section_selection, &mut self.data);
|
||||||
Self::render_stats(frame, main_layout[1], (&self.section_selection, self.first_section_id), &mut self.data);
|
|
||||||
},
|
},
|
||||||
MenuSelection::Quit => {
|
MenuSelection::Quit => {
|
||||||
frame.render_widget(Self::create_exit_message(), main_layout[1]);
|
frame.render_widget(Self::create_exit_message(), main_layout[1]);
|
||||||
|
@ -264,7 +233,7 @@ impl ConsoleUI {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn render_stats(frame: &mut ConsoleFrame, layout: Rect, content_selection: (&ListSelection, usize), data: &mut ConsoleUIData) {
|
fn render_stats(frame: &mut ConsoleFrame, layout: Rect, content_selection: &ListSelection, data: &mut ConsoleUIData) {
|
||||||
let layout = Layout::default().direction(Direction::Vertical).constraints([
|
let layout = Layout::default().direction(Direction::Vertical).constraints([
|
||||||
Constraint::Length(3),
|
Constraint::Length(3),
|
||||||
Constraint::Max(3),
|
Constraint::Max(3),
|
||||||
|
@ -285,11 +254,11 @@ impl ConsoleUI {
|
||||||
)
|
)
|
||||||
.highlight_style(Style::default().bg(Color::Cyan));
|
.highlight_style(Style::default().bg(Color::Cyan));
|
||||||
|
|
||||||
let first_mem_gauge = Self::create_mem_gauge_from(&data.section_info[content_selection.1], Color::Cyan);
|
let first_mem_gauge = Self::create_mem_gauge_from(&data.section_info[content_selection.id], Color::Cyan);
|
||||||
let second_mem_gauge = Self::create_mem_gauge_from(&data.section_info[0], Color::Red);
|
let second_mem_gauge = Self::create_mem_gauge_from(&data.section_info[0], Color::Red);
|
||||||
let mut list_state = ListState::default();
|
let mut list_state = ListState::default();
|
||||||
|
|
||||||
list_state.select(content_selection.0.selection);
|
list_state.select(Some(content_selection.id));
|
||||||
|
|
||||||
frame.render_stateful_widget(content_list, layout[0], &mut list_state);
|
frame.render_stateful_widget(content_list, layout[0], &mut list_state);
|
||||||
frame.render_widget(first_mem_gauge, layout[1]);
|
frame.render_widget(first_mem_gauge, layout[1]);
|
||||||
|
|
Loading…
Reference in New Issue