Skip to content

Commit 8b7d9a0

Browse files
author
Bailey Kasin
committed
Add UI for mute
Signed-off-by: Bailey Kasin <[email protected]>
1 parent 1bfa73b commit 8b7d9a0

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

spotify_player/src/event/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,8 @@ fn handle_global_command(
240240
Command::Mute => {
241241
if let Some(ref playback) = state.player.read().buffered_playback {
242242
if let Some(volume) = state.player.read().mute_state {
243-
client_pub.send(ClientRequest::Player(PlayerRequest::ToggleMute(0)))?;
244243
client_pub.send(ClientRequest::Player(PlayerRequest::Volume(volume as u8)))?;
244+
client_pub.send(ClientRequest::Player(PlayerRequest::ToggleMute(0)))?;
245245
} else if let Some(volume) = playback.volume {
246246
client_pub.send(ClientRequest::Player(PlayerRequest::ToggleMute(volume)))?;
247247
client_pub.send(ClientRequest::Player(PlayerRequest::Volume(0)))?;

spotify_player/src/ui/playback.rs

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,15 @@ pub fn render_playback_window(
9191
};
9292

9393
if let Some(ref playback) = player.buffered_playback {
94-
render_playback_text(frame, state, ui, metadata_rect, track, playback);
94+
render_playback_text(
95+
frame,
96+
state,
97+
ui,
98+
metadata_rect,
99+
track,
100+
playback,
101+
player.mute_state,
102+
);
95103
}
96104

97105
let progress = std::cmp::min(
@@ -133,6 +141,7 @@ fn render_playback_text(
133141
rect: Rect,
134142
track: &rspotify_model::FullTrack,
135143
playback: &SimplifiedPlayback,
144+
mute_state: Option<u32>,
136145
) {
137146
// Construct a "styled" text (`playback_text`) from playback's data
138147
// based on a user-configurable format string (app_config.playback_format)
@@ -144,6 +153,12 @@ fn render_playback_text(
144153
// this regex is to handle a format argument or a newline
145154
let re = regex::Regex::new(r"\{.*?\}|\n").unwrap();
146155

156+
// build the volume string (vol% when unmuted, old_vol% (muted) if currently muted)
157+
let mut volume = format!("{}%", playback.volume.unwrap_or_default());
158+
if mute_state.is_some() {
159+
volume = format!("{}% (muted)", mute_state.unwrap_or_default());
160+
}
161+
147162
let mut ptr = 0;
148163
for m in re.find_iter(format_str) {
149164
let s = m.start();
@@ -180,10 +195,10 @@ fn render_playback_text(
180195
"{album}" => (track.album.name.to_owned(), ui.theme.playback_album()),
181196
"{metadata}" => (
182197
format!(
183-
"repeat: {} | shuffle: {} | volume: {}% | device: {}",
198+
"repeat: {} | shuffle: {} | volume: {} | device: {}",
184199
<&'static str>::from(playback.repeat_state),
185200
playback.shuffle_state,
186-
playback.volume.unwrap_or_default(),
201+
volume,
187202
playback.device_name,
188203
),
189204
ui.theme.playback_metadata(),

0 commit comments

Comments
 (0)