aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/volume-control.vala42
1 files changed, 31 insertions, 11 deletions
diff --git a/src/volume-control.vala b/src/volume-control.vala
index f9db556..0e5abbb 100644
--- a/src/volume-control.vala
+++ b/src/volume-control.vala
@@ -580,22 +580,42 @@ public class VolumeControl : Object
{
/* Using this to detect whether we're on the phone or not */
if (_pulse_use_stream_restore) {
- if (volume == 0.0)
- _notification.update (_("Volume"), "", "audio-volume-muted");
+ /* Watch for extreme */
+ bool extreme_volume = false;
+ if (volume > 0.75) /* TODO: Also if headphones */
+ extreme_volume = true;
+
+ /* Determine Label */
+ string volume_label = _("Volume");
+ if (extreme_volume)
+ volume_label = _("High volume");
+
+ /* Choose an icon */
+ string icon = "audio-volume-muted";
if (volume > 0.0 && volume <= 0.33)
- _notification.update (_("Volume"), "", "audio-volume-low");
+ icon = "audio-volume-low";
if (volume > 0.33 && volume <= 0.66)
- _notification.update (_("Volume"), "", "audio-volume-medium");
+ icon = "audio-volume-medium";
if (volume > 0.66 && volume <= 1.0)
- _notification.update (_("Volume"), "", "audio-volume-high");
+ icon = "audio-volume-high";
+
+ /* Choose a sound */
+ string? sound = null;
+ if (_active_sink_input == -1 || _valid_roles[_active_sink_input] != "multimedia")
+ sound = "/usr/share/sounds/ubuntu/stereo/message.ogg";
+
+ /* Check tint */
+ string tint = "false";
+ if (extreme_volume)
+ tint = "true";
+
+ /* Put it all into the notification */
+ _notification.update (volume_label, "", icon);
_notification.set_hint ("value", (int32)(volume * 100.0));
- if (_active_sink_input == -1 || _valid_roles[_active_sink_input] != "multimedia") {
- /* No audio ping if we're playing multimedia */
- _notification.set_hint ("sound-file", "/usr/share/sounds/ubuntu/stereo/message.ogg");
- } else {
- _notification.set_hint ("sound-file", null);
- }
+ _notification.set_hint ("sound-file", sound);
+ _notification.set_hint ("x-canonical-value-bar-tint", tint);
+ /* Show it */
try {
_notification.show ();
} catch (GLib.Error e) {