[gnome-music/wip/jfelder/volume-slider: 2/3] mute
- From: Jean Felder <jfelder src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music/wip/jfelder/volume-slider: 2/3] mute
- Date: Mon, 30 May 2022 19:31:21 +0000 (UTC)
commit 333eb2e106dc7a4c4adb958f40a4d1dd70c338fe
Author: Jean Felder <jfelder src gnome org>
Date: Fri Oct 1 15:40:37 2021 +0200
mute
gnomemusic/widgets/playertoolbar.py | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
---
diff --git a/gnomemusic/widgets/playertoolbar.py b/gnomemusic/widgets/playertoolbar.py
index e5c026b93..701a8bedd 100644
--- a/gnomemusic/widgets/playertoolbar.py
+++ b/gnomemusic/widgets/playertoolbar.py
@@ -24,6 +24,7 @@
from gettext import gettext as _
from math import isclose
+from typing import Optional
import gi
gi.require_version("GstAudio", "1.0")
@@ -67,6 +68,7 @@ class PlayerToolbar(Gtk.ActionBar):
super().__init__()
self._player = None
+ self._volume_button_id = 0
self._cover_image.set_size_request(
ArtSize.SMALL.width, ArtSize.SMALL.height)
@@ -129,8 +131,9 @@ class PlayerToolbar(Gtk.ActionBar):
self._sync_repeat_image()
self._player.connect("notify::volume", self._player_volume_changed)
- self._volume_button.connect(
+ self._volume_button_id = self._volume_button.connect(
"notify::value", self._volume_button_changed)
+ self._player.connect("notify::mute", self._player_mute_changed)
def _volume_button_changed(
self, widget: Gtk.VolumeButton,
@@ -145,12 +148,22 @@ class PlayerToolbar(Gtk.ActionBar):
self._player.props.volume = value_linear
def _player_volume_changed(
- self, player: Player, val: GObject.ParamSpecDouble) -> None:
+ self, player: Player,
+ val: Optional[GObject.ParamSpecDouble]) -> None:
volume_cubic = GstAudio.StreamVolume.convert_volume(
GstAudio.StreamVolumeFormat.LINEAR,
GstAudio.StreamVolumeFormat.CUBIC, self._player.props.volume)
self._volume_button.props.value = volume_cubic
+ def _player_mute_changed(
+ self, player: Player, val: GObject.ParamSpecBoolean) -> None:
+ muted = self._player.props.mute
+ if muted:
+ with self._volume_button.handler_block(self._volume_button_id):
+ self._volume_button.props.value = 0.0
+ else:
+ self._player_volume_changed(self._player, None)
+
def _repeat_menu_changed(
self, action: Gio.SimpleAction, new_state: GLib.Variant) -> None:
self._repeat_action.set_state(new_state)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]