diff options
author | Lars Uebernickel <lars.uebernickel@canonical.com> | 2013-09-09 13:34:02 +0200 |
---|---|---|
committer | Lars Uebernickel <lars.uebernickel@canonical.com> | 2013-09-09 13:34:02 +0200 |
commit | 5d5353c5b761b0adc272e4826690d90984b9413f (patch) | |
tree | b50f47c6e84a8f3216f64d4a601790ea73c12ced /src | |
parent | 246d7c9daec13ed936f80097b69b3631874f7d4c (diff) | |
download | ayatana-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.
Diffstat (limited to 'src')
-rw-r--r-- | src/service.vala | 14 | ||||
-rw-r--r-- | src/sound-menu.vala | 1 |
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 (); |