diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/info-notification.vala | 21 | ||||
-rw-r--r-- | src/notification.vala | 50 | ||||
-rw-r--r-- | src/volume-warning-pulse.vala | 116 | ||||
-rw-r--r-- | src/volume-warning.vala | 4 | ||||
-rw-r--r-- | src/warn-notification.vala | 12 |
5 files changed, 84 insertions, 119 deletions
diff --git a/src/info-notification.vala b/src/info-notification.vala index 986c9ce..36be8a1 100644 --- a/src/info-notification.vala +++ b/src/info-notification.vala @@ -21,15 +21,13 @@ using Notify; public class IndicatorSound.InfoNotification: Notification { - protected override Notify.Notification create_notification() - { + protected override Notify.Notification create_notification () { return new Notify.Notification(_("Volume"), "", "audio-volume-muted"); } - public void show(VolumeControl.ActiveOutput active_output, - double volume, - bool is_high_volume) - { + public void show (VolumeControl.ActiveOutput active_output, + double volume, + bool is_high_volume) { if (!notify_server_supports("x-canonical-private-synchronous")) return; @@ -47,15 +45,13 @@ public class IndicatorSound.InfoNotification: Notification n.set_hint ("x-canonical-private-synchronous", "true"); n.set_hint ("x-canonical-value-bar-tint", is_high_volume ? "true" : "false"); n.set_hint ("value", (int32)(volume * 100.0)); - show_(); + show_notification(); } - private static string get_notification_label (VolumeControl.ActiveOutput active_output) - { + private static string get_notification_label (VolumeControl.ActiveOutput active_output) { string volume_label = ""; - switch (active_output) - { + switch (active_output) { case VolumeControl.ActiveOutput.SPEAKERS: volume_label = _("Speakers"); break; @@ -87,8 +83,7 @@ public class IndicatorSound.InfoNotification: Notification private static string get_volume_notification_icon (VolumeControl.ActiveOutput active_output, double volume, - bool is_high_volume) - { + bool is_high_volume) { string icon = ""; if (is_high_volume) { diff --git a/src/notification.vala b/src/notification.vala index 0c9e5b8..a652536 100644 --- a/src/notification.vala +++ b/src/notification.vala @@ -21,60 +21,52 @@ public abstract class IndicatorSound.Notification: Object { public bool visible { get; protected set; default = false; } - public Notification() { + public Notification () { BusWatcher.watch_namespace (GLib.BusType.SESSION, "org.freedesktop.Notifications", () => { debug("Notifications name appeared"); }, () => { debug("Notifications name vanshed"); _server_caps = null; }); - _notification = create_notification(); + _notification = create_notification (); _notification.closed.connect((n) => { visible = false; }); } - protected abstract Notify.Notification create_notification(); - - ~Notification() { - close(); - } - - protected async void show_() { - try { - GLib.message("calling _notification.show"); - _notification.show (); - GLib.message("after calling show, n.id is %d", (int)_notification.id); - visible = true; - } catch (GLib.Error e) { - warning ("Unable to show notification: %s", e.message); - } - } - public void close() { var n = _notification; return_if_fail (n != null); - message("closing id %d", n.id); if (n.id != 0) { try { n.close(); } catch (GLib.Error e) { - warning("Unable to close notification: %s", e.message); + GLib.warning("Unable to close notification: %s", e.message); } } } - protected bool notify_server_supports(string cap) { - if (_server_caps == null) { - GLib.message("getting server caps"); - _server_caps = Notify.get_server_caps(); - GLib.message("got server caps"); + ~Notification () { + close (); + } + + protected abstract Notify.Notification create_notification (); + + protected void show_notification () { + try { + _notification.show (); + visible = true; + } catch (GLib.Error e) { + GLib.warning ("Unable to show notification: %s", e.message); } + } + + protected bool notify_server_supports (string cap) { + if (_server_caps == null) + _server_caps = Notify.get_server_caps(); - var ret = _server_caps.find_custom(cap, strcmp) != null; - message("%s --> %d", cap, (int)ret); - return ret; + return _server_caps.find_custom(cap, strcmp) != null; } protected Notify.Notification _notification = null; diff --git a/src/volume-warning-pulse.vala b/src/volume-warning-pulse.vala index 9be2359..335c8bf 100644 --- a/src/volume-warning-pulse.vala +++ b/src/volume-warning-pulse.vala @@ -26,16 +26,17 @@ public class VolumeWarningPulse : VolumeWarning public VolumeWarningPulse (IndicatorSound.Options options, PulseAudio.GLibMainLoop pgloop) { base(options); + _pgloop = pgloop; - pulse_start(); + pulse_reconnect(); } - ~VolumeWarningPulse () - { - pulse_stop(); + ~VolumeWarningPulse () { + pulse_reconnect_soon_cancel(); + pulse_disconnect(); } - protected override void sound_system_set_multimedia_volume(PulseAudio.Volume volume) { + protected override void sound_system_set_multimedia_volume (PulseAudio.Volume volume) { pulse_set_sink_volume(volume); } @@ -53,8 +54,8 @@ public class VolumeWarningPulse : VolumeWarning private unowned PulseAudio.CVolume _multimedia_cvolume; - private bool is_active_multimedia (SinkInputInfo i) - { + private bool is_active_multimedia (SinkInputInfo i) { + if (i.corked != 0) return false; @@ -66,61 +67,55 @@ public class VolumeWarningPulse : VolumeWarning return true; } - private void update_multimedia_volume() - { + private void update_multimedia_volume () { + GLib.return_if_fail(_pulse_context != null); GLib.return_if_fail(_multimedia_sink_index != PulseAudio.INVALID_INDEX); - GLib.message("updating multimedia volume"); - _pulse_context.get_sink_info_by_index(_multimedia_sink_index, (c,i) => { GLib.return_if_fail(i != null); + GLib.message("setting multimedia_volume to %s", i.volume.to_string()); _multimedia_cvolume = i.volume; multimedia_volume = i.volume.max(); }); } - private void set_multimedia_sink_index(uint32 index) - { - if (index == PulseAudio.INVALID_INDEX) - { + private void set_multimedia_sink_index(uint32 index) { + + if (index == PulseAudio.INVALID_INDEX) { _multimedia_sink_index = PulseAudio.INVALID_INDEX; multimedia_volume = PulseAudio.Volume.INVALID; - } - else if (_multimedia_sink_index != index) - { + } else if (_multimedia_sink_index != index) { _multimedia_sink_index = index; multimedia_volume = PulseAudio.Volume.INVALID; update_multimedia_volume(); } } - private void on_sink_input_info (Context c, SinkInputInfo? i, int eol) - { + private void on_sink_input_info (Context c, SinkInputInfo? i, int eol) { + if (i == null) return; - if (is_active_multimedia(i)) { - GLib.message("on_sink_input_info() setting multimedia sink input index to %d, sink index to %d", (int)i.index, (int)i.sink); + if (is_active_multimedia (i)) { + GLib.message ("on_sink_input_info() setting multimedia sink input index to %d, sink index to %d", (int)i.index, (int)i.sink); _multimedia_sink_input_index = i.index; - set_multimedia_sink_index(i.sink); + set_multimedia_sink_index (i.sink); multimedia_active = true; } else if (i.index == _multimedia_sink_input_index) { _multimedia_sink_input_index = PulseAudio.INVALID_INDEX; - set_multimedia_sink_index(PulseAudio.INVALID_INDEX); + set_multimedia_sink_index (PulseAudio.INVALID_INDEX); multimedia_active = false; } } - private void pulse_update_sink_inputs() - { + private void pulse_update_sink_inputs () { _pulse_context.get_sink_input_info_list (on_sink_input_info); } - private void context_events_cb (Context c, Context.SubscriptionEventType t, uint32 index) - { + private void context_events_cb (Context c, Context.SubscriptionEventType t, uint32 index) { switch (t & Context.SubscriptionEventType.FACILITY_MASK) { case Context.SubscriptionEventType.SINK: @@ -133,15 +128,15 @@ public class VolumeWarningPulse : VolumeWarning { case Context.SubscriptionEventType.NEW: case Context.SubscriptionEventType.CHANGE: - GLib.message("-> Context.SubscriptionEventType.CHANGE or NEW"); - c.get_sink_input_info(index, on_sink_input_info); + GLib.message ("-> Context.SubscriptionEventType.CHANGE or NEW"); + c.get_sink_input_info (index, on_sink_input_info); break; case Context.SubscriptionEventType.REMOVE: - GLib.message("-> Context.SubscriptionEventType.REMOVE"); - pulse_update_sink_inputs(); + GLib.message ("-> Context.SubscriptionEventType.REMOVE"); + pulse_update_sink_inputs (); break; default: - GLib.debug("Sink input event not known."); + GLib.debug ("Sink input event not known."); break; } break; @@ -151,19 +146,18 @@ public class VolumeWarningPulse : VolumeWarning } } - private void pulse_context_state_callback (Context c) - { + private void pulse_context_state_callback (Context c) { switch (c.get_state ()) { case Context.State.READY: c.set_subscribe_callback (context_events_cb); c.subscribe (PulseAudio.Context.SubscriptionMask.SINK | PulseAudio.Context.SubscriptionMask.SINK_INPUT); - pulse_update_sink_inputs(); + pulse_update_sink_inputs (); break; case Context.State.FAILED: case Context.State.TERMINATED: - pulse_reconnect_soon(); + pulse_reconnect_soon (); break; default: @@ -171,37 +165,32 @@ public class VolumeWarningPulse : VolumeWarning } } - private void pulse_disconnect() - { + private void pulse_disconnect () { if (_pulse_context != null) { _pulse_context.disconnect (); _pulse_context = null; } } - private void pulse_reconnect_soon () - { + private void pulse_reconnect_soon () { if (_pulse_reconnect_timer == 0) _pulse_reconnect_timer = Timeout.add_seconds (2, pulse_reconnect_timeout); } - private void pulse_reconnect_soon_cancel() - { + private void pulse_reconnect_soon_cancel () { if (_pulse_reconnect_timer != 0) { - Source.remove(_pulse_reconnect_timer); + Source.remove (_pulse_reconnect_timer); _pulse_reconnect_timer = 0; } } - private bool pulse_reconnect_timeout () - { + private bool pulse_reconnect_timeout () { _pulse_reconnect_timer = 0; pulse_reconnect (); return Source.REMOVE; } - void pulse_reconnect () - { + void pulse_reconnect () { pulse_disconnect(); var props = new Proplist (); @@ -213,38 +202,25 @@ public class VolumeWarningPulse : VolumeWarning _pulse_context = new PulseAudio.Context (_pgloop.get_api(), null, props); _pulse_context.set_state_callback (pulse_context_state_callback); - var server_string = Environment.get_variable("PULSE_SERVER"); - if (_pulse_context.connect(server_string, Context.Flags.NOFAIL, null) < 0) - warning( "pa_context_connect() failed: %s\n", PulseAudio.strerror(_pulse_context.errno())); + var server_string = Environment.get_variable ("PULSE_SERVER"); + if (_pulse_context.connect (server_string, Context.Flags.NOFAIL, null) < 0) + GLib.warning ("pa_context_connect() failed: %s\n", PulseAudio.strerror(_pulse_context.errno())); } - void pulse_set_sink_volume(PulseAudio.Volume volume) - { + void pulse_set_sink_volume (PulseAudio.Volume volume) { var index = _warning_sink_index; GLib.return_if_fail(_pulse_context != null); GLib.return_if_fail(index != PulseAudio.INVALID_INDEX); GLib.return_if_fail(volume != PulseAudio.Volume.INVALID); - unowned CVolume cvol = CVolume(); - cvol.set(_multimedia_cvolume.channels, volume); - GLib.message("setting multimedia volume to %s", cvol.to_string()); - _pulse_context.set_sink_volume_by_index(index, cvol); - } - - private void pulse_start() - { - pulse_reconnect(); - } - - private void pulse_stop() - { - pulse_reconnect_soon_cancel(); - pulse_disconnect(); + unowned CVolume cvol = CVolume (); + cvol.set (_multimedia_cvolume.channels, volume); + GLib.message ("setting multimedia volume to %s", cvol.to_string()); + _pulse_context.set_sink_volume_by_index (index, cvol); } - protected override void preshow() - { + protected override void preshow () { _warning_sink_index = _multimedia_sink_index; } } diff --git a/src/volume-warning.vala b/src/volume-warning.vala index 3ce49bd..86ceb85 100644 --- a/src/volume-warning.vala +++ b/src/volume-warning.vala @@ -111,7 +111,7 @@ public abstract class VolumeWarning : Object } set { } } - private void init_high_volume() { + private void init_high_volume () { _options.loud_changed.connect(() => update_high_volume()); this.notify["multimedia-volume"].connect(() => update_high_volume()); this.notify["multimedia-active"].connect(() => update_high_volume()); @@ -120,7 +120,7 @@ public abstract class VolumeWarning : Object update_high_volume(); } - private void update_high_volume() { + private void update_high_volume () { PulseAudio.Volume mm_vol = multimedia_volume; var approved = high_volume_approved; var hp_active = headphones_active; diff --git a/src/warn-notification.vala b/src/warn-notification.vala index 53f5140..4e66e02 100644 --- a/src/warn-notification.vala +++ b/src/warn-notification.vala @@ -24,10 +24,12 @@ public class IndicatorSound.WarnNotification: Notification OK } - public signal void user_responded(WarnNotification.Response response); + public signal void user_responded (WarnNotification.Response response); - protected override Notify.Notification create_notification() { - var n = new Notify.Notification(_("Volume"), _("High volume can damage your hearing."), "audio-volume-high"); + protected override Notify.Notification create_notification () { + var n = new Notify.Notification(_("Volume"), + _("High volume can damage your hearing."), + "audio-volume-high"); n.set_hint ("x-canonical-non-shaped-icon", "true"); n.set_hint ("x-canonical-snap-decisions", "true"); n.set_hint ("x-canonical-private-affirmative-tint", "true"); @@ -37,7 +39,7 @@ public class IndicatorSound.WarnNotification: Notification return n; } - public bool show() { + public bool show () { if (!notify_server_supports("actions")) return false; @@ -50,7 +52,7 @@ public class IndicatorSound.WarnNotification: Notification user_responded(Response.CANCEL); }); GLib.message("showing warning dialog"); - show_.begin(); + show_notification(); return true; } |