From d3ee0f57c526d7825eac40f416a72502793d6c05 Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Tue, 18 Jun 2013 18:07:58 -0400 Subject: Update indicator icon when volume changes --- src/service.vala | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/service.vala b/src/service.vala index 83d0d17..2196135 100644 --- a/src/service.vala +++ b/src/service.vala @@ -134,6 +134,24 @@ public class IndicatorSound.Service { } } + void update_root_icon () { + double volume = this.volume_control.get_volume (); + string icon; + if (this.volume_control.mute) + icon = "audio-volume-muted-panel"; + else if (volume <= 0.0) + icon = "audio-volume-low-zero-panel"; + else if (volume <= 0.3) + icon = "audio-volume-low-panel"; + else if (volume <= 0.7) + icon = "audio-volume-medium-panel"; + else + icon = "audio-volume-high-panel"; + + var root_action = this.actions.lookup ("root") as SimpleAction; + root_action.set_state (new Variant.parsed ("{ 'icon': <%s> }", icon)); + } + Action create_mute_action () { var mute_action = new SimpleAction.stateful ("mute", null, this.volume_control.mute); @@ -147,11 +165,19 @@ public class IndicatorSound.Service { this.volume_control.notify["mute"].connect ( () => { mute_action.set_state (this.volume_control.mute); + this.update_root_icon (); }); return mute_action; } + void volume_changed (double volume) { + var volume_action = this.actions.lookup ("volume") as SimpleAction; + volume_action.set_state (volume); + + this.update_root_icon (); + } + Action create_volume_action () { var volume_action = new SimpleAction.stateful ("volume", null, this.volume_control.get_volume ()); @@ -159,9 +185,7 @@ public class IndicatorSound.Service { volume_control.set_volume (val.get_double ()); }); - this.volume_control.volume_changed.connect ( (volume) => { - volume_action.set_state (volume); - }); + this.volume_control.volume_changed.connect (volume_changed); this.volume_control.bind_property ("ready", volume_action, "enabled", BindingFlags.SYNC_CREATE); -- cgit v1.2.3