Skip to content

Commit f79418c

Browse files
JamesManningRtojamrok
authored andcommitted
feat: add currently playing lyrics highlight (aome510#733)
1 parent bc3423f commit f79418c

File tree

3 files changed

+19
-6
lines changed

3 files changed

+19
-6
lines changed

docs/config.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ To define application's component styles, the user can specify any of the below
245245
- `secondary_row`
246246
- `like`
247247
- `lyrics_played`
248+
- `lyrics_playing`
248249

249250
A field in `component_style` is a struct with three **optional** fields: `fg` (foreground), `bg` (background) and `modifiers` (terminal effects):
250251

@@ -278,6 +279,7 @@ table_header = { fg = "Blue" }
278279
secondary_row = {}
279280
like = {}
280281
lyrics_played = { modifiers = ["Dim"] }
282+
lyrics_playing = { fg = "Green", modifiers = ["Bold"] }
281283
```
282284

283285
## Keymaps

spotify_player/src/config/theme.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ struct ComponentStyle {
7979
secondary_row: Option<Style>,
8080
like: Option<Style>,
8181
lyrics_played: Option<Style>,
82+
lyrics_playing: Option<Style>,
8283
}
8384

8485
#[derive(Default, Clone, Debug, Deserialize)]
@@ -347,6 +348,18 @@ impl Theme {
347348
.unwrap_or(&Style::default().modifiers([StyleModifier::Dim]))
348349
.style(&self.palette)
349350
}
351+
352+
pub fn lyrics_playing(&self) -> style::Style {
353+
self.component_style
354+
.lyrics_playing
355+
.as_ref()
356+
.unwrap_or(
357+
&Style::default()
358+
.fg(StyleColor::Green)
359+
.modifiers([StyleModifier::Bold]),
360+
)
361+
.style(&self.palette)
362+
}
350363
}
351364

352365
impl Style {

spotify_player/src/ui/page.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -610,12 +610,10 @@ pub fn render_lyrics_page(
610610
.lines
611611
.iter()
612612
.enumerate()
613-
.map(|(id, (_, line))| {
614-
if id < last_played_line_id {
615-
Line::styled(line, ui.theme.lyrics_played())
616-
} else {
617-
Line::raw(line)
618-
}
613+
.map(|(id, (_, line))| match (id + 1).cmp(&last_played_line_id) {
614+
std::cmp::Ordering::Less => Line::styled(line, ui.theme.lyrics_played()),
615+
std::cmp::Ordering::Equal => Line::styled(line, ui.theme.lyrics_playing()),
616+
std::cmp::Ordering::Greater => Line::raw(line),
619617
})
620618
.collect::<Vec<_>>();
621619

0 commit comments

Comments
 (0)