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