fixed volume button when MPD is not connected to output plugin

This commit is contained in:
Martin Wagner 2020-08-29 10:14:13 +02:00
parent 2165193490
commit 393d4516b8

View File

@ -783,7 +783,7 @@ class Client(MPDClient):
if "songid" in diff:
self.emitter.emit("current_song_changed")
if "volume" in diff:
self.emitter.emit("volume_changed", 0)
self.emitter.emit("volume_changed", -1)
if "updating_db" in diff:
self.emitter.emit("update")
self._last_status=status
@ -3172,6 +3172,7 @@ class PlaybackOptions(Gtk.Box):
self._consume_button=Gtk.ToggleButton(image=self._icons["edit-cut-symbolic"])
self._consume_button.set_tooltip_text(_("Consume mode"))
self._volume_button=Gtk.VolumeButton()
self._volume_button.set_sensitive(False) # do not allow volume change by user when MPD has not yet reported volume
self._volume_button.set_property("use-symbolic", True)
self._volume_button.set_property("size", self._settings.get_gtk_icon_size("icon-size"))
adj=self._volume_button.get_adjustment()
@ -3234,7 +3235,12 @@ class PlaybackOptions(Gtk.Box):
def _volume_refresh(self, emitter, volume):
self._volume_button.handler_block(self._volume_button_changed)
self._volume_button.set_value(volume/100)
if volume < 0:
self._volume_button.set_sensitive(False)
self._volume_button.set_value(0)
else:
self._volume_button.set_value(volume/100)
self._volume_button.set_sensitive(True)
self._volume_button.handler_unblock(self._volume_button_changed)
def _on_icon_size_changed(self, *args):
@ -3244,15 +3250,21 @@ class PlaybackOptions(Gtk.Box):
self._volume_button.set_property("size", self._settings.get_gtk_icon_size("icon-size"))
def _on_reconnected(self, *args):
self.set_sensitive(True)
self._repeat_button.set_sensitive(True)
self._random_button.set_sensitive(True)
self._single_button.set_sensitive(True)
self._consume_button.set_sensitive(True)
def _on_disconnected(self, *args):
self.set_sensitive(False)
self._repeat_button.set_sensitive(False)
self._random_button.set_sensitive(False)
self._single_button.set_sensitive(False)
self._consume_button.set_sensitive(False)
self._repeat_refresh(None, False)
self._random_refresh(None, False)
self._single_refresh(None, False)
self._consume_refresh(None, False)
self._volume_refresh(None, 0)
self._volume_refresh(None, -1)
#################
# other dialogs #