обновление

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 {
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(),
}
}
@@ -328,7 +328,7 @@ impl App {
match self.player.play(&track.path, None) {
Ok(_) => {
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)),
}

View File

@@ -5,8 +5,8 @@ use crate::track::Track;
#[derive(Clone)]
pub enum RightRow {
/// Заголовок группы: в режиме ByArtist — название альбома,
/// в режиме ByAlbum — имя исполнителя.
/// Заголовок группы: в режиме ByArtist - название альбома,
/// в режиме ByAlbum - имя исполнителя.
AlbumHeader { name: String },
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::styled(format!("{}{}", num, title), style),
Span::raw(" "),
// цвет таймера
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 {
SortMode::ByArtist => {
if app.library.filter.is_empty() {
format!(" Альбомы и треки — {} ", selected_name)
format!(" Альбомы и треки - {} ", selected_name)
} else {
format!(
" Альбомы и треки — {} [{}] ",
" Альбомы и треки - {} [{}] ",
selected_name, app.library.filter
)
}
}
SortMode::ByAlbum => {
if app.library.filter.is_empty() {
format!(" Исполнители и треки — {} ", selected_name)
format!(" Исполнители и треки - {} ", selected_name)
} else {
format!(
" Исполнители и треки — {} [{}] ",
" Исполнители и треки - {} [{}] ",
selected_name, app.library.filter
)
}
@@ -246,27 +247,13 @@ fn draw_equalizer(f: &mut Frame, app: &App, area: Rect) {
}
let bars: Vec<Bar> = display
.iter()
.enumerate()
.map(|(i, &v)| {
let ratio = i as f64 / (num_bars - 1).max(1) as f64;
let color = if ratio < 0.2 {
Color::Rgb(0, 100, 255)
} else if ratio < 0.4 {
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();
.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))
@@ -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 {
(format!("> {}", app.search_buffer), " Поиск ")
} else {
let prefix = if app.player.is_paused() { "⏸ " } else { "" };
let prefix = if app.player.is_paused() { "|| " } else { " " };
(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 "));
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)
.alignment(Alignment::Center)
.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(""),
Line::from(Span::styled(
" F1 или Esc — закрыть ",
" F1 или Esc - закрыть ",
Style::default().fg(Color::DarkGray),
)),
];