Add index tracking to App

This commit is contained in:
2Shirt 2025-01-15 20:49:08 -08:00
parent 353f2d5570
commit 86b1f34330
Signed by: 2Shirt
GPG key ID: 152FAC923B0E132C

View file

@ -61,7 +61,9 @@ pub struct App {
tick_rate: f64,
// App
clone: CloneSettings,
cur_index: usize,
cur_mode: Mode,
list_size: usize,
prev_mode: Mode,
selections: Vec<Option<usize>>,
tasks: Tasks,
@ -93,7 +95,9 @@ impl App {
tick_rate,
// App
clone: CloneSettings::new(disk_list_arc),
cur_index: 0,
cur_mode: Mode::ScanDisks,
list_size: 0,
prev_mode: Mode::ScanDisks,
selections: vec![None, None],
tasks,
@ -346,6 +350,25 @@ impl App {
Action::Suspend => self.should_suspend = true,
Action::Resume => self.should_suspend = false,
Action::ClearScreen => tui.terminal.clear()?,
Action::KeyUp => {
self.cur_index = match self.cur_index {
0 => {
if self.list_size > 0 {
self.list_size - 1
} else {
0
}
}
_ => self.cur_index - 1,
};
}
Action::KeyDown => {
self.cur_index = if self.cur_index == self.list_size - 1 {
0
} else {
self.cur_index + 1
};
}
Action::Error(ref msg) => {
self.action_tx
.send(Action::DisplayPopup(popup::Type::Error, msg.clone()))?;