aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/info-notification.vala21
-rw-r--r--src/notification.vala50
-rw-r--r--src/volume-warning-pulse.vala116
-rw-r--r--src/volume-warning.vala4
-rw-r--r--src/warn-notification.vala12
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;
}