обновление

This commit is contained in:
2026-10-15 20:08:57 +02:00
parent 1211165228
commit 9cdd4b099d
3 changed files with 19 additions and 32 deletions

View File

@@ -91,7 +91,7 @@ impl App {
fn default_status(&self) -> String { fn default_status(&self) -> String {
match self.playing_index.and_then(|i| self.library.track(i)) { match self.playing_index.and_then(|i| self.library.track(i)) {
Some(t) => format!("▶ {} — {}", t.artist, t.title), Some(t) => format!("{} — {}", t.artist, t.title),
None => "F1 — помощь".into(), None => "F1 — помощь".into(),
} }
} }
@@ -328,7 +328,7 @@ impl App {
match self.player.play(&track.path, None) { match self.player.play(&track.path, None) {
Ok(_) => { Ok(_) => {
self.playing_index = Some(index_in_library); self.playing_index = Some(index_in_library);
self.set_status(format!("▶ {} — {}", track.artist, track.title)); self.set_status(format!("{} — {}", track.artist, track.title));
} }
Err(e) => self.set_status(format!("Ошибка: {}", e)), Err(e) => self.set_status(format!("Ошибка: {}", e)),
} }

View File

@@ -5,8 +5,8 @@ use crate::track::Track;
#[derive(Clone)] #[derive(Clone)]
pub enum RightRow { pub enum RightRow {
/// Заголовок группы: в режиме ByArtist — название альбома, /// Заголовок группы: в режиме ByArtist - название альбома,
/// в режиме ByAlbum — имя исполнителя. /// в режиме ByAlbum - имя исполнителя.
AlbumHeader { name: String }, AlbumHeader { name: String },
Track { index_in_library: usize }, Track { index_in_library: usize },
} }

View File

@@ -155,6 +155,7 @@ fn draw_right_panel(f: &mut Frame, app: &mut App, area: Rect) {
Span::raw(marker), Span::raw(marker),
Span::styled(format!("{}{}", num, title), style), Span::styled(format!("{}{}", num, title), style),
Span::raw(" "), Span::raw(" "),
// цвет таймера
Span::styled(dur, Style::default().fg(Color::DarkGray)), Span::styled(dur, Style::default().fg(Color::DarkGray)),
])) ]))
} }
@@ -171,20 +172,20 @@ fn draw_right_panel(f: &mut Frame, app: &mut App, area: Rect) {
let title = match app.library.sort_mode { let title = match app.library.sort_mode {
SortMode::ByArtist => { SortMode::ByArtist => {
if app.library.filter.is_empty() { if app.library.filter.is_empty() {
format!(" Альбомы и треки — {} ", selected_name) format!(" Альбомы и треки - {} ", selected_name)
} else { } else {
format!( format!(
" Альбомы и треки — {} [{}] ", " Альбомы и треки - {} [{}] ",
selected_name, app.library.filter selected_name, app.library.filter
) )
} }
} }
SortMode::ByAlbum => { SortMode::ByAlbum => {
if app.library.filter.is_empty() { if app.library.filter.is_empty() {
format!(" Исполнители и треки — {} ", selected_name) format!(" Исполнители и треки - {} ", selected_name)
} else { } else {
format!( format!(
" Исполнители и треки — {} [{}] ", " Исполнители и треки - {} [{}] ",
selected_name, app.library.filter selected_name, app.library.filter
) )
} }
@@ -246,27 +247,13 @@ fn draw_equalizer(f: &mut Frame, app: &App, area: Rect) {
} }
let bars: Vec<Bar> = display let bars: Vec<Bar> = display
.iter() .iter()
.enumerate() .map(|&v| {
.map(|(i, &v)| { Bar::default()
let ratio = i as f64 / (num_bars - 1).max(1) as f64; .value((v * 100.0) as u64)
let color = if ratio < 0.2 { .style(Style::default().fg(Color::Rgb(100, 149, 237)))
Color::Rgb(0, 100, 255) })
} else if ratio < 0.4 { .collect();
Color::Rgb(0, 200, 255)
} else if ratio < 0.6 {
Color::Rgb(0, 255, 100)
} else if ratio < 0.8 {
Color::Rgb(255, 200, 0)
} else {
Color::Rgb(255, 50, 50)
};
Bar::default()
.value((v * 100.0) as u64)
.style(Style::default().fg(color))
})
.collect();
let chart = BarChart::default() let chart = BarChart::default()
.data(BarGroup::default().bars(&bars)) .data(BarGroup::default().bars(&bars))
@@ -298,7 +285,7 @@ fn draw_status(f: &mut Frame, app: &App, area: Rect) {
let (status_text, status_title) = if app.input_mode == InputMode::Search { let (status_text, status_title) = if app.input_mode == InputMode::Search {
(format!("> {}", app.search_buffer), " Поиск ") (format!("> {}", app.search_buffer), " Поиск ")
} else { } else {
let prefix = if app.player.is_paused() { "⏸ " } else { "" }; let prefix = if app.player.is_paused() { "|| " } else { " " };
(format!("{}{}", prefix, app.status), " Статус ") (format!("{}{}", prefix, app.status), " Статус ")
}; };
@@ -332,7 +319,7 @@ fn draw_status(f: &mut Frame, app: &App, area: Rect) {
.block(Block::default().borders(Borders::ALL).title(" Mode ")); .block(Block::default().borders(Borders::ALL).title(" Mode "));
f.render_widget(mode, inner[2]); f.render_widget(mode, inner[2]);
let vol_text = format!("vol: {}%", (app.player.volume() * 100.0) as u32); let vol_text = format!("Vol: {}%", (app.player.volume() * 100.0) as u32);
let vol = Paragraph::new(vol_text) let vol = Paragraph::new(vol_text)
.alignment(Alignment::Center) .alignment(Alignment::Center)
.block(Block::default().borders(Borders::ALL).title(" ")); .block(Block::default().borders(Borders::ALL).title(" "));
@@ -389,7 +376,7 @@ fn draw_help(f: &mut Frame, screen: Rect) {
Line::from(" q / Esc выход"), Line::from(" q / Esc выход"),
Line::from(""), Line::from(""),
Line::from(Span::styled( Line::from(Span::styled(
" F1 или Esc — закрыть ", " F1 или Esc - закрыть ",
Style::default().fg(Color::DarkGray), Style::default().fg(Color::DarkGray),
)), )),
]; ];