use std::borrow::Cow;
use super::Component;
use crate::{action::Action, mode::Scene};
use color_eyre::eyre::Result;
use ratatui::{prelude::*, widgets::*};
#[derive(Default)]
pub struct Footer {
current_scene: Scene,
}
impl Component for Footer {
fn update(&mut self, action: Action) -> Result<Option<Action>> {
if let Action::SwitchScene(scene) = action {
self.current_scene = scene;
}
Ok(None)
}
fn draw(&mut self, f: &mut crate::tui::Frame<'_>, area: Rect) -> Result<()> {
let layer_zero = Layout::new(
Direction::Vertical,
[Constraint::Min(1), Constraint::Max(3)],
)
.split(area);
let text: Cow<_> = match self.current_scene {
Scene::Home => {
"[Ctrl+g] Start nodes, [Ctrl+x] Stop nodes, [O] Set Resources, [D]iscord Username, [Q]uit".into()
}
Scene::Options => "none".into(),
Scene::DiscordUsernameInputBox => "⏎ Accept, [Esc] Cancel".into(),
Scene::ResourceAllocationInputBox => "⏎ Accept, [Esc] Cancel.".into(),
};
f.render_widget(
Paragraph::new(text).block(
Block::default()
.title(" Key commands ")
.borders(Borders::ALL),
),
layer_zero[1],
);
Ok(())
}
}