use ratatui::widgets::{List, ListItem, ListState};
use ratatui::Frame;
use crate::tui::theme::RommStyles;
pub struct MainMenuScreen {
pub selected: usize,
}
impl Default for MainMenuScreen {
fn default() -> Self {
Self::new()
}
}
impl MainMenuScreen {
pub fn new() -> Self {
Self { selected: 0 }
}
pub fn next(&mut self) {
self.selected = (self.selected + 1) % 5;
}
pub fn previous(&mut self) {
self.selected = if self.selected == 0 {
4
} else {
self.selected - 1
};
}
pub fn render(&self, f: &mut Frame, area: ratatui::layout::Rect, styles: &RommStyles) {
let items = vec![
ListItem::new("Browse Games").style(styles.text()),
ListItem::new("Search").style(styles.text()),
ListItem::new("Downloads").style(styles.text()),
ListItem::new("Settings").style(styles.text()),
ListItem::new("Exit").style(styles.text()),
];
let list = List::new(items)
.block(styles.panel_block("Game Library"))
.highlight_symbol(">> ")
.highlight_style(styles.selection());
let mut state = ListState::default();
state.select(Some(self.selected));
f.render_stateful_widget(list, area, &mut state);
}
}