selection ui change
This commit is contained in:
19
src/main.rs
19
src/main.rs
@@ -12,6 +12,7 @@ use ratatui::{
|
||||
layout::{Constraint, Layout, Rect, Spacing},
|
||||
symbols::merge::MergeStrategy,
|
||||
widgets::{Block, List, ListItem, ListState, Paragraph},
|
||||
style::{Modifier, Style},
|
||||
Frame, Terminal,
|
||||
};
|
||||
use ratatui::backend::CrosstermBackend;
|
||||
@@ -84,7 +85,7 @@ fn run_app(terminal: &mut Terminal<CrosstermBackend<io::Stdout>>) -> io::Result<
|
||||
// tick-based updates go here later (smooth nav, download polling, etc.)
|
||||
last_tick = Instant::now();
|
||||
}
|
||||
};
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -93,19 +94,24 @@ fn handle_key(app: &mut App, code: KeyCode) {
|
||||
KeyCode::Char('q') => app.should_exit = true,
|
||||
|
||||
KeyCode::Up | KeyCode::Char('k') => {
|
||||
if app.selected > 0 {
|
||||
if app.items.is_empty() {
|
||||
return;
|
||||
}
|
||||
if app.selected == 0 {
|
||||
app.selected = app.items.len() - 1;
|
||||
} else {
|
||||
app.selected -= 1;
|
||||
}
|
||||
app.status = format!("Selected: {}", app.items[app.selected]);
|
||||
}
|
||||
|
||||
KeyCode::Down | KeyCode::Char('j') => {
|
||||
if app.selected + 1 < app.items.len() {
|
||||
app.selected += 1;
|
||||
if app.items.is_empty() {
|
||||
return;
|
||||
}
|
||||
app.selected = (app.selected + 1) % app.items.len();
|
||||
app.status = format!("Selected: {}", app.items[app.selected]);
|
||||
}
|
||||
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
@@ -126,7 +132,8 @@ fn ui(frame: &mut Frame, app: &App) {
|
||||
|
||||
let list = List::new(items)
|
||||
.block(Block::bordered().title("List").merge_borders(MergeStrategy::Exact))
|
||||
.highlight_symbol("> ");
|
||||
.highlight_symbol("> ")
|
||||
.highlight_style(Style::default().add_modifier(Modifier::REVERSED));
|
||||
|
||||
let mut state = ListState::default();
|
||||
state.select(Some(app.selected));
|
||||
|
||||
Reference in New Issue
Block a user