aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Uebernickel <lars.uebernickel@canonical.com>2013-09-09 13:34:02 +0200
committerLars Uebernickel <lars.uebernickel@canonical.com>2013-09-09 13:34:02 +0200
commit5d5353c5b761b0adc272e4826690d90984b9413f (patch)
treeb50f47c6e84a8f3216f64d4a601790ea73c12ced
parent246d7c9daec13ed936f80097b69b3631874f7d4c (diff)
downloadayatana-indicator-sound-5d5353c5b761b0adc272e4826690d90984b9413f.tar.gz
ayatana-indicator-sound-5d5353c5b761b0adc272e4826690d90984b9413f.tar.bz2
ayatana-indicator-sound-5d5353c5b761b0adc272e4826690d90984b9413f.zip
Change volume when scrolling on the indicator
This depends on a new root menu property: x-canonical-scroll-action. It points to an action that gets activated whenever the user scrolls the mouse over the indicator. The parameter of that action signifies the magnitude and direction of the scroll.
-rw-r--r--src/service.vala14
-rw-r--r--src/sound-menu.vala1
2 files changed, 15 insertions, 0 deletions
diff --git a/src/service.vala b/src/service.vala
index 4d64502..0651c0e 100644
--- a/src/service.vala
+++ b/src/service.vala
@@ -64,6 +64,7 @@ public class IndicatorSound.Service {
const ActionEntry[] action_entries = {
{ "root", null, null, "@a{sv} {}", null },
+ { "scroll", activate_scroll_action, "i", null, null },
{ "desktop-settings", activate_desktop_settings, null, null, null },
{ "phone-settings", activate_phone_settings, null, null, null },
};
@@ -76,6 +77,19 @@ public class IndicatorSound.Service {
MediaPlayerList players;
uint player_action_update_id;
+ void activate_scroll_action (SimpleAction action, Variant? param) {
+ const double volume_step_percentage = 0.06;
+ int delta = param.get_int32(); /* positive for up, negative for down */
+
+ double v = this.volume_control.get_volume () + volume_step_percentage * delta;
+ if (v > 1.0)
+ v = 1.0;
+ else if (v < 0.0)
+ v = 0.0;
+
+ this.volume_control.set_volume (v);
+ }
+
void activate_desktop_settings (SimpleAction action, Variant? param) {
var env = Environment.get_variable ("DESKTOP_SESSION");
string cmd;
diff --git a/src/sound-menu.vala b/src/sound-menu.vala
index 415a5be..7ac8930 100644
--- a/src/sound-menu.vala
+++ b/src/sound-menu.vala
@@ -40,6 +40,7 @@ class SoundMenu: Object
var root_item = new MenuItem (null, "indicator.root");
root_item.set_attribute ("x-canonical-type", "s", "com.canonical.indicator.root");
+ root_item.set_attribute ("x-canonical-scroll-action", "s", "indicator.scroll");
root_item.set_submenu (this.menu);
this.root = new Menu ();