обновление

This commit is contained in:
2026-10-15 23:02:17 +02:00
parent 9cdd4b099d
commit 16a82fd936
4 changed files with 370 additions and 56 deletions

View File

@@ -149,14 +149,20 @@ fn draw_right_panel(f: &mut Frame, app: &mut App, area: Rect) {
} else {
Style::default()
};
let left = format!(" {}{}{}", marker, num, title);
let inner_width = area.width.saturating_sub(4) as usize;
let left_len = left.chars().count();
let dur_len = dur.chars().count();
let pad = inner_width
.saturating_sub(left_len + dur_len)
.max(1);
ListItem::new(Line::from(vec![
Span::raw(" "),
Span::raw(marker),
Span::styled(format!("{}{}", num, title), style),
Span::raw(" "),
// цвет таймера
Span::styled(dur, Style::default().fg(Color::DarkGray)),
Span::styled(left, style),
Span::raw(" ".repeat(pad)),
Span::styled(dur, style),
]))
}
})
@@ -247,13 +253,13 @@ fn draw_equalizer(f: &mut Frame, app: &App, area: Rect) {
}
let bars: Vec<Bar> = display
.iter()
.map(|&v| {
Bar::default()
.value((v * 100.0) as u64)
.style(Style::default().fg(Color::Rgb(100, 149, 237)))
})
.collect();
.iter()
.map(|&v| {
Bar::default()
.value((v * 100.0) as u64)
.style(Style::default().fg(Color::Rgb(100, 149, 237)))
})
.collect();
let chart = BarChart::default()
.data(BarGroup::default().bars(&bars))
@@ -282,11 +288,13 @@ fn draw_status(f: &mut Frame, app: &App, area: Rect) {
])
.split(area);
let (status_text, status_title) = if app.input_mode == InputMode::Search {
(format!("> {}", app.search_buffer), " Поиск ")
} else {
let prefix = if app.player.is_paused() { "|| " } else { " " };
(format!("{}{}", prefix, app.status), " Статус ")
let (status_text, status_title) = match app.input_mode {
InputMode::Search => (format!("> {}", app.search_buffer), " Поиск "),
InputMode::Command => (format!(":{}", app.command_buffer), " Команда "),
InputMode::Normal => {
let prefix = if app.player.is_paused() { "|| " } else { " " };
(format!("{}{}", prefix, app.status), " Статус ")
}
};
let status = Paragraph::new(status_text)
@@ -327,8 +335,8 @@ fn draw_status(f: &mut Frame, app: &App, area: Rect) {
}
fn draw_help(f: &mut Frame, screen: Rect) {
let width = 60u16.min(screen.width.saturating_sub(4));
let height = 34u16.min(screen.height.saturating_sub(4));
let width = 62u16.min(screen.width.saturating_sub(4));
let height = 40u16.min(screen.height.saturating_sub(4));
let x = (screen.width.saturating_sub(width)) / 2;
let y = (screen.height.saturating_sub(height)) / 2;
@@ -368,9 +376,17 @@ fn draw_help(f: &mut Frame, screen: Rect) {
Line::from(" d / → +5 секунд"),
Line::from(" 1..9 перейти к 10%..90% трека"),
Line::from(""),
Line::from(Span::styled(" Команды", header)),
Line::from(" :add <путь> добавить директорию"),
Line::from(" :reload пересканировать всё"),
Line::from(" :save сохранить библиотеку"),
Line::from(" :help эта справка"),
Line::from(" :q выход"),
Line::from(""),
Line::from(Span::styled(" Звук и прочее", header)),
Line::from(" + / - громкость"),
Line::from(" / поиск"),
Line::from(" Del удалить из списка"),
Line::from(" t сортировка: артист → альбом → файл"),
Line::from(" F1 эта справка"),
Line::from(" q / Esc выход"),