From 5c3110c7843773e617c224e16f150b25884d3fb6 Mon Sep 17 00:00:00 2001 From: salmonik Date: Fri, 8 May 2026 01:20:43 +0200 Subject: Pad queue display numbers with leading zeros display_string now takes a total parameter to compute the zero-padding width. Queue positions are formatted as 01, 02, ..., 10 instead of 1, 2, ..., 10, keeping columns aligned. --- src/daemon.rs | 4 ++-- src/queue.rs | 7 ++++--- tests/queue.rs | 8 ++++---- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/daemon.rs b/src/daemon.rs index 00bf35f..e88669a 100644 --- a/src/daemon.rs +++ b/src/daemon.rs @@ -254,7 +254,7 @@ fn process_command( if audio.is_playing() { if let Some(track_path) = audio.current_track() { let track = Track::from_path(track_path); - let track_str = track.display_string(0); + let track_str = track.display_string(0, 1); format!("Playing\nTrack: {}\n", track_str) } else { "Playing\n".to_string() @@ -511,7 +511,7 @@ fn process_command( let is_playing = audio.is_playing(); for (display_idx, &track_idx) in indices.iter().enumerate() { if let Some(track) = q.track_at(track_idx) { - let track_str = track.display_string(display_idx); + let track_str = track.display_string(display_idx, q.len()); if track_idx == playing_track_idx && is_playing { output.push_str(&format!("> {} (playing)\n", track_str)); } else { diff --git a/src/queue.rs b/src/queue.rs index dca8e3d..9e8e1af 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -96,7 +96,7 @@ impl Track { } } - pub fn display_string(&self, index: usize) -> String { + pub fn display_string(&self, index: usize, total: usize) -> String { let album_artist = self .artist .clone() @@ -109,11 +109,12 @@ impl Track { .unwrap_or("Unknown") .to_string() }); + let width = total.to_string().len(); if album_artist.is_empty() { - format!("{}. {}", index + 1, title) + format!("{:0width$}. {}", index + 1, title) } else { - format!("{}. {} - {}", index + 1, album_artist, title) + format!("{:0width$}. {} - {}", index + 1, album_artist, title) } } } diff --git a/tests/queue.rs b/tests/queue.rs index d3e923e..bff83ca 100644 --- a/tests/queue.rs +++ b/tests/queue.rs @@ -214,7 +214,7 @@ fn test_track_display_with_metadata() { Some("Test Artist"), Some("Test Album"), ); - let display = t.display_string(0); + let display = t.display_string(0, 1); assert_eq!(display, "1. Test Artist - Test Title"); } @@ -226,14 +226,14 @@ fn test_track_display_artist_fallback_to_album() { None, Some("Test Album"), ); - let display = t.display_string(0); + let display = t.display_string(0, 1); assert_eq!(display, "1. Test Album - Test Title"); } #[test] fn test_track_display_no_metadata() { let t = track_no_meta("/music/song.mp3"); - let display = t.display_string(0); + let display = t.display_string(0, 1); assert_eq!(display, "1. song.mp3"); } @@ -245,7 +245,7 @@ fn test_track_display_index_offset() { Some("Artist"), Some("Album"), ); - assert_eq!(t.display_string(4), "5. Artist - Title"); + assert_eq!(t.display_string(4, 10), "05. Artist - Title"); } // ---------- Shuffle ---------- -- cgit v1.2.3