Initial import
[gmpc-mmkeys.git] / mmkeys.vala
blob06c0795c889e0d0b3a0e6059b36113df98b5eabe
1 using GLib;
2 using Gmpc;
3 using Gmpc.Plugin;
5 [DBus (name = "org.gnome.SettingsDaemon.MediaKeys")]
6 interface MediaKeys : GLib.Object {
7 public abstract void GrabMediaPlayerKeys (string application, uint32 time);
8 public abstract void ReleaseMediaPlayerKeys (string application);
9 public signal void MediaPlayerKeyPressed (string application, string keys);
12 public class MMKeys : Gmpc.Plugin.Base {
13 public const int[] pversion = {0,0,0};
14 private DBus.Connection conn;
15 private MediaKeys keys;
16 /* signals */
17 public signal void play ();
18 public signal void next ();
19 public signal void previous();
20 public signal void stop ();
21 public signal void pause();
23 /* Name */
24 public override weak string get_name() {
25 return "mmkey";
27 /* Version */
28 public override weak int[] get_version() {
29 return pversion;
31 private void callback (MediaKeys mkeys, string application, string keys) {
32 if(this.get_enabled() == false) return;
33 if(application != "gmpc") return;
34 if(keys == "Play") MPD.Player.play(server);
35 else if(keys == "Pause") MPD.Player.pause(server);
36 else if(keys == "Next") MPD.Player.next(server);
37 else if(keys == "Previous") MPD.Player.prev(server);
38 else if(keys == "Stop") MPD.Player.stop(server);
40 construct {
41 stdout.printf("Constructing plugin");
42 /* Set the plugin as an internal one and of type pl_browser */
43 this.plugin_type = 4;
44 conn = DBus.Bus.get (DBus.BusType.SESSION);
45 keys = (MediaKeys) conn.get_object ( "org.gnome.SettingsDaemon",
46 "/org/gnome/SettingsDaemon/MediaKeys");
48 keys.GrabMediaPlayerKeys("gmpc", (uint)0);
49 keys.MediaPlayerKeyPressed += callback;
51 ~MMKeys() {
52 keys.ReleaseMediaPlayerKeys("gmpc");
55 [ModuleInit]
56 public Type plugin_get_type () {
57 return typeof (MMKeys);