diff --git a/deja_vu/src/action.rs b/deja_vu/src/action.rs index 090d974..48257c4 100644 --- a/deja_vu/src/action.rs +++ b/deja_vu/src/action.rs @@ -28,6 +28,7 @@ pub enum Action { Select(Option, Option), // indicies for (source, dest) etc SelectRight(Option, Option), // indicies for right info pane UpdateDiskList(Vec), + UpdateFooter(String), UpdateLeft(String, Vec, Vec, bool), // (title, labels, items, select_one) UpdateRight(Vec>, usize, Vec>), // (labels, start_index, items) - items before start are always shown // Screens diff --git a/deja_vu/src/app.rs b/deja_vu/src/app.rs index 84844f8..70b0410 100644 --- a/deja_vu/src/app.rs +++ b/deja_vu/src/app.rs @@ -423,6 +423,8 @@ impl App { } Action::SetMode(new_mode) => { self.set_mode(new_mode)?; + self.action_tx + .send(Action::UpdateFooter(build_footer_string(self.cur_mode)))?; let (title, labels, items, select_one) = build_left_items(self, self.cur_mode); self.action_tx .send(Action::UpdateLeft(title, labels, items, select_one))?; @@ -550,6 +552,20 @@ fn get_chunks(r: Rect) -> Vec { chunks } +fn build_footer_string(cur_mode: Mode) -> String { + match cur_mode { + Mode::ScanDisks | Mode::PreClone | Mode::Clone | Mode::PostClone => { + String::from("(q) to quit") + } + Mode::SelectParts => String::from("(Enter) to select / (s) to start over / (q) to quit"), + Mode::SelectDisks => String::from( + "(Enter) to select / / (i) to install driver / (r) to rescan / (q) to quit", + ), + Mode::SelectTableType => String::from("(Enter) to select / (b) to go back / (q) to quit"), + Mode::Confirm => String::from("(Enter) to confirm / (b) to go back / (q) to quit"), + Mode::Done | Mode::Failed | Mode::InstallDrivers => String::from("(Enter) or (q) to quit"), + } +} fn build_left_items(app: &App, cur_mode: Mode) -> (String, Vec, Vec, bool) { let title: String; let mut items = Vec::new(); diff --git a/deja_vu/src/components/footer.rs b/deja_vu/src/components/footer.rs index a085cfe..3a45fb4 100644 --- a/deja_vu/src/components/footer.rs +++ b/deja_vu/src/components/footer.rs @@ -51,25 +51,9 @@ impl Component for Footer { } fn update(&mut self, action: Action) -> Result> { - if let Action::SetMode(new_mode) = action { - self.text = match new_mode { - Mode::ScanDisks | Mode::PreClone | Mode::Clone | Mode::PostClone => { - String::from("(q) to quit") - } - Mode::SelectParts => { - String::from("(Enter) to select / (s) to start over / (q) to quit") - } - Mode::SelectDisks => String::from( - "(Enter) to select / / (i) to install driver / (r) to rescan / (q) to quit", - ), - Mode::SelectTableType => { - String::from("(Enter) to select / (b) to go back / (q) to quit") - } - Mode::Confirm => String::from("(Enter) to confirm / (b) to go back / (q) to quit"), - Mode::Done | Mode::Failed | Mode::InstallDrivers => { - String::from("(Enter) or (q) to quit") - } - } + match action { + Action::UpdateFooter(text) => self.text = text, + _ => {} } Ok(None) }