diff src/audacious/dbus.c @ 2733:cf080b11c3fa trunk

[svn] Implemented more of the stubs in audctrl; Added more methods to objects.xml with implementations in dbus.c. I'm still trying to get plugins working with libaudclient.
author magma
date Fri, 11 May 2007 11:52:56 -0700
parents 452a159dc619
children e4c08b7023a0
line wrap: on
line diff
--- a/src/audacious/dbus.c	Fri May 11 08:59:22 2007 -0700
+++ b/src/audacious/dbus.c	Fri May 11 11:52:56 2007 -0700
@@ -39,14 +39,13 @@
 #include "titlestring.h"
 #include "ui_jumptotrack.h"
 
-static DBusGProxy *dbproxy = NULL;
+G_DEFINE_TYPE(RemoteObject, audacious_rc, G_TYPE_OBJECT);
 
-G_DEFINE_TYPE(RemoteObject, audacious_remote, G_TYPE_OBJECT);
+void audacious_rc_class_init(RemoteObjectClass *klass) {}
 
-void audacious_remote_class_init(RemoteObjectClass *klass) {}
-
-void audacious_remote_init(RemoteObject *object) {
+void audacious_rc_init(RemoteObject *object) {
     GError *error = NULL;
+    DBusGProxy *driver_proxy;
     unsigned int request_ret;
 
     // Initialize the DBus connection
@@ -57,8 +56,8 @@
         return;
     }
     
-    dbus_g_object_type_install_info(audacious_remote_get_type(),
-                                    &dbus_glib_audacious_remote_object_info);
+    dbus_g_object_type_install_info(audacious_rc_get_type(),
+                                    &dbus_glib_audacious_rc_object_info);
     
     // Register DBUS path
     dbus_g_connection_register_g_object(object->connection,
@@ -66,41 +65,91 @@
 
     // Register the service name, the constants here are defined in
     // dbus-glib-bindings.h
-    dbproxy = dbus_g_proxy_new_for_name(object->connection,
+    driver_proxy = dbus_g_proxy_new_for_name(object->connection,
                                              DBUS_SERVICE_DBUS, DBUS_PATH_DBUS,
                                              DBUS_INTERFACE_DBUS);
 
-    if (!org_freedesktop_DBus_request_name(dbproxy,
+    if (!org_freedesktop_DBus_request_name(driver_proxy,
         AUDACIOUS_DBUS_SERVICE, 0, &request_ret, &error)) {
         g_warning("Unable to register service: %s", error->message);
         g_error_free(error);
     }
+
+    g_object_unref(driver_proxy);
 }
 
 void init_dbus() {
     g_type_init();
-    g_object_new(audacious_remote_get_type(), NULL);
+    g_object_new(audacious_rc_get_type(), NULL);
     g_message("D-Bus support has been activated");
 }
 
-void free_dbus() {
-    if (dbproxy != NULL)
-        g_object_unref(dbproxy);
-}
-
-DBusGProxy *audacious_get_dbus_proxy() {
-    return dbproxy;
-}
-
 // Audacious General Information
-gboolean audacious_remote_version(RemoteObject *obj, gchar **version,
+gboolean audacious_rc_version(RemoteObject *obj, gchar **version,
                                   GError **error) {
     *version = g_strdup(VERSION);
     return TRUE;
 }
 
+gboolean audacious_rc_quit(RemoteObject *obj, GError **error) {
+    mainwin_quit_cb();
+    return TRUE;
+}
+
+gboolean audacious_rc_eject(RemoteObject *obj, GError **error) {
+    if (has_x11_connection)
+        mainwin_eject_pushed();
+    return TRUE;
+}
+
+gboolean audacious_rc_main_win_visible(RemoteObject *obj,
+                                  gboolean *is_main_win, GError **error) {
+    *is_main_win = cfg.player_visible;
+    g_message("main win %s\n", (cfg.player_visible? "visible" : "hidden"));
+    return TRUE;
+}
+
+gboolean audacious_rc_show_main_win(RemoteObject *obj, gboolean show,
+                                        GError **error) {
+    g_message("%s main win\n", (show? "showing": "hiding"));
+    if (has_x11_connection)
+        mainwin_show(show);
+    return TRUE;
+}
+
+gboolean audacious_rc_equalizer_visible(RemoteObject *obj,
+                                  gboolean *is_eq_win, GError **error) {
+    *is_eq_win = cfg.playlist_visible;
+    return TRUE;
+}
+
+gboolean audacious_rc_show_equalizer(RemoteObject *obj, gboolean show,
+                                         GError **error) {
+    if (has_x11_connection)
+        equalizerwin_show(show);
+    return TRUE;
+}
+
+gboolean audacious_rc_playlist_visible(RemoteObject *obj,
+                                           gboolean *is_pl_win,
+                                           GError **error) {
+    *is_pl_win = cfg.equalizer_visible;
+    return TRUE;
+}
+
+gboolean audacious_rc_show_playlist(RemoteObject *obj, gboolean show,
+                                        GError **error) {
+    if (has_x11_connection) {
+        if (show)
+            playlistwin_show();
+        else
+            playlistwin_hide();
+    }
+    return TRUE;
+}
+
 // Playback Information/Manipulation
-gboolean audacious_remote_play(RemoteObject *obj, GError **error) {
+gboolean audacious_rc_play(RemoteObject *obj, GError **error) {
     if (playback_get_paused())
         playback_pause();
     else if (playlist_get_length(playlist_get_active()))
@@ -110,12 +159,12 @@
     return TRUE;
 }
 
-gboolean audacious_remote_pause(RemoteObject *obj, GError **error) {
+gboolean audacious_rc_pause(RemoteObject *obj, GError **error) {
     playback_pause();
     return TRUE;
 }
 
-gboolean audacious_remote_stop(RemoteObject *obj, GError **error) {
+gboolean audacious_rc_stop(RemoteObject *obj, GError **error) {
     ip_data.stop = TRUE;
     playback_stop();
     ip_data.stop = FALSE;
@@ -123,25 +172,25 @@
     return TRUE;
 }
 
-gboolean audacious_remote_playing(RemoteObject *obj, gboolean *is_playing,
+gboolean audacious_rc_playing(RemoteObject *obj, gboolean *is_playing,
                                   GError **error) {
     *is_playing = playback_get_playing();
     return TRUE;
 }
 
-gboolean audacious_remote_paused(RemoteObject *obj, gboolean *is_paused,
+gboolean audacious_rc_paused(RemoteObject *obj, gboolean *is_paused,
                                  GError **error) {
     *is_paused = playback_get_paused();
     return TRUE;
 }
 
-gboolean audacious_remote_stopped(RemoteObject *obj, gboolean *is_stopped,
+gboolean audacious_rc_stopped(RemoteObject *obj, gboolean *is_stopped,
                                   GError **error) {
     *is_stopped = !playback_get_playing();
     return TRUE;
 }
 
-gboolean audacious_remote_status(RemoteObject *obj, gchar **status,
+gboolean audacious_rc_status(RemoteObject *obj, gchar **status,
                                  GError **error) {
     if (playback_get_paused())
         *status = g_strdup("paused");
@@ -152,7 +201,7 @@
     return TRUE;
 }
 
-gboolean audacious_remote_time(RemoteObject *obj, gint *time, GError **error) {
+gboolean audacious_rc_time(RemoteObject *obj, gint *time, GError **error) {
     if (playback_get_playing())
         *time = playback_get_time();
     else
@@ -160,7 +209,7 @@
     return TRUE;
 }
 
-gboolean audacious_remote_seek(RemoteObject *obj, guint pos, GError **error) {
+gboolean audacious_rc_seek(RemoteObject *obj, guint pos, GError **error) {
     if (playlist_get_current_length(playlist_get_active()) > 0 &&
             pos < (guint)playlist_get_current_length(playlist_get_active()))
             playback_seek(pos / 1000);
@@ -168,13 +217,13 @@
     return TRUE;
 }
 
-gboolean audacious_remote_volume(RemoteObject *obj, gint *vl, gint *vr,
+gboolean audacious_rc_volume(RemoteObject *obj, gint *vl, gint *vr,
                                  GError **error) {
     input_get_volume(vl, vr);
     return TRUE;
 }
 
-gboolean audacious_remote_set_volume(RemoteObject *obj, gint vl, gint vr,
+gboolean audacious_rc_set_volume(RemoteObject *obj, gint vl, gint vr,
                                      GError **error) {
     if (vl > 100)
         vl = 100;
@@ -184,7 +233,7 @@
     return TRUE;
 }
 
-gboolean audacious_remote_balance(RemoteObject *obj, gint *balance,
+gboolean audacious_rc_balance(RemoteObject *obj, gint *balance,
                                   GError **error) {
     gint vl, vr;
     input_get_volume(&vl, &vr);
@@ -200,94 +249,94 @@
 }
 
 // Playlist Information/Manipulation
-gboolean audacious_remote_position(RemoteObject *obj, int *pos, GError **error)
+gboolean audacious_rc_position(RemoteObject *obj, int *pos, GError **error)
 {
     *pos = playlist_get_position(playlist_get_active());
     return TRUE;
 }
 
-gboolean audacious_remote_advance(RemoteObject *obj, GError **error) {
+gboolean audacious_rc_advance(RemoteObject *obj, GError **error) {
     playlist_next(playlist_get_active());
     return TRUE;
 }
 
-gboolean audacious_remote_reverse(RemoteObject *obj, GError **error) {
+gboolean audacious_rc_reverse(RemoteObject *obj, GError **error) {
     playlist_prev(playlist_get_active());
     return TRUE;
 }
 
-gboolean audacious_remote_length(RemoteObject *obj, int *length,
+gboolean audacious_rc_length(RemoteObject *obj, int *length,
                                  GError **error) {
     *length = playlist_get_length(playlist_get_active());
     return TRUE;
 }
 
-gboolean audacious_remote_song_title(RemoteObject *obj, int pos,
+gboolean audacious_rc_song_title(RemoteObject *obj, int pos,
                                      gchar **title, GError **error) {
     *title = playlist_get_songtitle(playlist_get_active(), pos);
     return TRUE;
 }
 
-gboolean audacious_remote_song_filename(RemoteObject *obj, int pos,
+gboolean audacious_rc_song_filename(RemoteObject *obj, int pos,
                                         gchar **filename, GError **error) {
     *filename = playlist_get_filename(playlist_get_active(), pos);
     return TRUE;
 }
 
-gboolean audacious_remote_song_length(RemoteObject *obj, int pos, int *length,
+gboolean audacious_rc_song_length(RemoteObject *obj, int pos, int *length,
                                       GError **error) {
     *length = playlist_get_songtime(playlist_get_active(), pos) / 1000;
     return TRUE;
 }
 
-gboolean audacious_remote_song_frames(RemoteObject *obj, int pos, int *length,
+gboolean audacious_rc_song_frames(RemoteObject *obj, int pos, int *length,
                                       GError **error) {
     *length = playlist_get_songtime(playlist_get_active(), pos);
     return TRUE;
 }
 
-gboolean audacious_remote_jump(RemoteObject *obj, int pos, GError **error) {
+gboolean audacious_rc_jump(RemoteObject *obj, int pos, GError **error) {
     if (pos < (guint)playlist_get_length(playlist_get_active()))
                 playlist_set_position(playlist_get_active(), pos);
     return TRUE;
 }
 
-gboolean audacious_remote_add_url(RemoteObject *obj, gchar *url,
+gboolean audacious_rc_add_url(RemoteObject *obj, gchar *url,
                                   GError **error) {
     playlist_add_url(playlist_get_active(), url);
     return TRUE;
 }
 
-gboolean audacious_remote_delete(RemoteObject *obj, int pos, GError **error) {
+gboolean audacious_rc_delete(RemoteObject *obj, int pos, GError **error) {
     playlist_delete_index(playlist_get_active(), pos);
     return TRUE;
 }
 
-gboolean audacious_remote_clear(RemoteObject *obj, GError **error) {
+gboolean audacious_rc_clear(RemoteObject *obj, GError **error) {
     playlist_clear(playlist_get_active());
     mainwin_clear_song_info();
     mainwin_set_info_text();
     return TRUE;
 }
 
-gboolean audacious_remote_repeating(RemoteObject *obj, gboolean *is_repeating,
+gboolean audacious_rc_repeating(RemoteObject *obj, gboolean *is_repeating,
                                     GError **error) {
     *is_repeating = cfg.repeat;
     return TRUE;
 }
 
-gboolean audacious_remote_repeat(RemoteObject *obj, GError **error) {
+gboolean audacious_rc_repeat(RemoteObject *obj, GError **error) {
     mainwin_repeat_pushed(!cfg.repeat);
     return TRUE;
 }
 
-gboolean audacious_remote_shuffling(RemoteObject *obj, gboolean *is_shuffling,
+gboolean audacious_rc_shuffling(RemoteObject *obj, gboolean *is_shuffling,
                                     GError **error) {
     *is_shuffling = cfg.shuffle;
     return TRUE;
 }
 
-gboolean audacious_remote_shuffle(RemoteObject *obj, GError **error) {
+gboolean audacious_rc_shuffle(RemoteObject *obj, GError **error) {
     mainwin_shuffle_pushed(!cfg.shuffle);
     return TRUE;
 }