обновление
This commit is contained in:
@@ -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)),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 },
|
||||||
}
|
}
|
||||||
|
|||||||
43
src/ui.rs
43
src/ui.rs
@@ -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),
|
||||||
)),
|
)),
|
||||||
];
|
];
|
||||||
|
|||||||
Reference in New Issue
Block a user