[gnome-music/wip/merge: 320/343] mpris: Implement MediaPlayer2 Interface



commit 30c1a4e87e085f6cd8c3ad9a3275b69d875bcc0f
Author: Arnel A. Borja <arnelborja src gnome org>
Date:   Sun Jul 21 22:46:58 2013 +0800

    mpris: Implement MediaPlayer2 Interface

 gnomemusic/mpris.py |   43 ++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 38 insertions(+), 5 deletions(-)
---
diff --git a/gnomemusic/mpris.py b/gnomemusic/mpris.py
index 4fdf9da..0496900 100644
--- a/gnomemusic/mpris.py
+++ b/gnomemusic/mpris.py
@@ -4,12 +4,21 @@ from dbus.mainloop.glib import DBusGMainLoop
 
 
 class MediaPlayer2Service(dbus.service.Object):
+    MEDIA_PLAYER2_IFACE = 'org.mpris.MediaPlayer2'
     def __init__(self, app):
         DBusGMainLoop(set_as_default=True)
         name = dbus.service.BusName('org.mpris.MediaPlayer2.GnomeMusic', dbus.SessionBus())
         dbus.service.Object.__init__(self, name, '/org/mpris/MediaPlayer2')
         self.app = app
 
+    @dbus.service.method(dbus_interface=MEDIA_PLAYER2_IFACE)
+    def Raise(self):
+        self.app.do_activate()
+
+    @dbus.service.method(dbus_interface=MEDIA_PLAYER2_IFACE)
+    def Quit(self):
+        self.app.quit()
+
     @dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE,
                          in_signature='ss', out_signature='v')
     def Get(self, interface_name, property_name):
@@ -18,15 +27,39 @@ class MediaPlayer2Service(dbus.service.Object):
     @dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE,
                          in_signature='s', out_signature='a{sv}')
     def GetAll(self, interface_name):
-        raise dbus.exceptions.DBusException(
-            'org.mpris.MediaPlayer2.GnomeMusic',
-            'This object does not implement the %s interface'
-            % interface_name)
+        if interface_name == self.MEDIA_PLAYER2_IFACE:
+            return {
+                'CanQuit': True,
+                'CanRaise': True,
+                'HasTrackList': False,
+                'Identity': 'Music',
+                'DesktopEntry': 'gnome-music',
+                'SupportedUriSchemes': [
+                    'file'
+                ],
+                'SupportedMimeTypes': [
+                    'application/ogg',
+                    'audio/x-vorbis+ogg',
+                    'audio/x-flac',
+                    'audio/mpeg'
+                ],
+            }
+        else:
+            raise dbus.exceptions.DBusException(
+                'org.mpris.MediaPlayer2.GnomeMusic',
+                'This object does not implement the %s interface'
+                % interface_name)
 
     @dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE,
                          in_signature='ssv')
     def Set(self, interface_name, property_name, new_value):
-        pass
+        if interface_name == self.MEDIA_PLAYER2_IFACE:
+            pass
+        else:
+            raise dbus.exceptions.DBusException(
+                'org.mpris.MediaPlayer2.GnomeMusic',
+                'This object does not implement the %s interface'
+                % interface_name)
 
     @dbus.service.signal(dbus_interface=dbus.PROPERTIES_IFACE,
                          signature='sa{sv}as')


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]