Add shortcut to reload database and/or library #116

Merged
wojtek merged 14 commits from 105---add-shortcut-to-reload-database-and/or-library into main 2024-02-03 14:32:13 +01:00
Showing only changes of commit 00f8c4477e - Show all commits

View File

@ -306,28 +306,33 @@ impl<'a, 'b> TrackState<'a, 'b> {
pub struct Ui;
impl Ui {
fn style(_active: bool) -> Style {
Style::default().fg(Color::White).bg(Color::Black)
fn style(_active: bool, error: bool) -> Style {
let style = Style::default().bg(Color::Black);
if error {
style.fg(Color::Red)
} else {
style.fg(Color::White)
}
}
fn block_style(active: bool) -> Style {
Self::style(active)
fn block_style(active: bool, error: bool) -> Style {
Self::style(active, error)
}
fn highlight_style(active: bool) -> Style {
if active {
Style::default().fg(Color::White).bg(Color::DarkGray)
} else {
Self::style(false)
Self::style(false, false)
}
}
fn block<'a>(title: &str, active: bool) -> Block<'a> {
fn block<'a>(title: &str, active: bool, error: bool) -> Block<'a> {
Block::default()
.title_alignment(Alignment::Center)
.borders(Borders::ALL)
.border_type(BorderType::Rounded)
.style(Self::block_style(active))
.style(Self::block_style(active, error))
.title(format!(" {title} "))
}
@ -342,8 +347,8 @@ impl Ui {
frame.render_stateful_widget(
list.highlight_style(Self::highlight_style(active))
.highlight_symbol(">> ")
.style(Self::style(active))
.block(Self::block(title, active)),
.style(Self::style(active, false))
.block(Self::block(title, active, false)),
area,
list_state,
);
@ -358,8 +363,8 @@ impl Ui {
) {
frame.render_widget(
paragraph
.style(Self::style(active))
.block(Self::block(title, active)),
.style(Self::style(active, false))
.block(Self::block(title, active, false)),
area,
);
}
@ -368,13 +373,14 @@ impl Ui {
title: &str,
paragraph: Paragraph,
area: Rect,
error: bool,
frame: &mut Frame<'_, B>,
) {
frame.render_widget(Clear, area);
frame.render_widget(
paragraph
.style(Self::style(true))
.block(Self::block(title, true)),
.style(Self::style(true, error))
.block(Self::block(title, true, error)),
area,
);
}
@ -451,7 +457,7 @@ impl Ui {
let artist_selection = &mut selection.artist;
let artist_overlay = ArtistOverlay::new(artists, &artist_selection.state);
Self::render_overlay_widget("Artist", artist_overlay.properties, area, frame);
Self::render_overlay_widget("Artist", artist_overlay.properties, area, false, frame);
}
fn render_reload_overlay<B: Backend>(frame: &mut Frame<'_, B>) {
@ -466,7 +472,7 @@ impl Ui {
)
.alignment(Alignment::Center);
Self::render_overlay_widget("Reload", reload_text, area, frame);
Self::render_overlay_widget("Reload", reload_text, area, false, frame);
}
fn render_error_overlay<S: AsRef<str>, B: Backend>(msg: S, frame: &mut Frame<'_, B>) {
@ -478,8 +484,7 @@ impl Ui {
.alignment(Alignment::Center)
.wrap(Wrap { trim: true });
// FIXME: highlight with red
Self::render_overlay_widget("Error", error_text, area, frame);
Self::render_overlay_widget("Error", error_text, area, true, frame);
}
}