Audacious $Id:Doxyfile42802007-03-2104:39:00Znenolod$
|
00001 /* 00002 * Audacious: A cross-platform multimedia player 00003 * Copyright (c) 2007 Ben Tucker 00004 * 00005 * This program is free software; you can redistribute it and/or modify 00006 * it under the terms of the GNU General Public License as published by 00007 * the Free Software Foundation; under version 3 of the License. 00008 * 00009 * This program is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 * GNU General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU General Public License 00015 * along with this program. If not, see <http://www.gnu.org/licenses>. 00016 * 00017 * The Audacious team does not consider modular code linking to 00018 * Audacious or using our public API to be a derived work. 00019 */ 00020 00021 #ifndef AUDACIOUS_DBUS_SERVICE_H 00022 #define AUDACIOUS_DBUS_SERVICE_H 00023 00024 #include <glib.h> 00025 00026 #define DBUS_API_SUBJECT_TO_CHANGE 00027 #include <dbus/dbus-glib.h> 00028 00029 typedef struct { 00030 GObject parent; 00031 DBusGProxy *proxy; 00032 } RemoteObject, MprisRoot, MprisPlayer, MprisTrackList; 00033 00034 typedef struct { 00035 GObjectClass parent_class; 00036 } RemoteObjectClass, MprisRootClass, MprisPlayerClass, MprisTrackListClass; 00037 00038 void init_dbus(); 00039 void free_dbus(); 00040 DBusGProxy *audacious_get_dbus_proxy(); 00041 00042 /* MPRIS API */ 00043 // Capabilities 00044 enum { 00045 MPRIS_CAPS_NONE = 0, 00046 MPRIS_CAPS_CAN_GO_NEXT = 1 << 0, 00047 MPRIS_CAPS_CAN_GO_PREV = 1 << 1, 00048 MPRIS_CAPS_CAN_PAUSE = 1 << 2, 00049 MPRIS_CAPS_CAN_PLAY = 1 << 3, 00050 MPRIS_CAPS_CAN_SEEK = 1 << 4, 00051 MPRIS_CAPS_CAN_PROVIDE_METADATA = 1 << 5, 00052 MPRIS_CAPS_PROVIDES_TIMING = 1 << 6, 00053 }; 00054 00055 // Status 00056 typedef enum { 00057 MPRIS_STATUS_INVALID = -1, 00058 MPRIS_STATUS_PLAY = 0, 00059 MPRIS_STATUS_PAUSE = 1, 00060 MPRIS_STATUS_STOP = 2, 00061 } PlaybackStatus; 00062 00063 extern MprisPlayer * mpris; 00064 00065 // MPRIS / 00066 gboolean mpris_root_identity(MprisRoot *obj, gchar **identity, 00067 GError **error); 00068 gboolean mpris_root_quit(MprisPlayer *obj, GError **error); 00069 00070 // MPRIS /Player 00071 gboolean mpris_player_next(MprisPlayer *obj, GError **error); 00072 gboolean mpris_player_prev(MprisPlayer *obj, GError **error); 00073 gboolean mpris_player_pause(MprisPlayer *obj, GError **error); 00074 gboolean mpris_player_stop(MprisPlayer *obj, GError **error); 00075 gboolean mpris_player_play(MprisPlayer *obj, GError **error); 00076 gboolean mpris_player_repeat(MprisPlayer *obj, gboolean rpt, GError **error); 00077 gboolean mpris_player_get_status(MprisPlayer *obj, GValueArray **status, 00078 GError **error); 00079 gboolean mpris_player_get_metadata(MprisPlayer *obj, GHashTable **metadata, 00080 GError **error); 00081 gboolean mpris_player_get_caps(MprisPlayer *obj, gint *capabilities, 00082 GError **error); 00083 gboolean mpris_player_volume_set(MprisPlayer *obj, gint vol, GError **error); 00084 gboolean mpris_player_volume_get(MprisPlayer *obj, gint *vol, 00085 GError **error); 00086 gboolean mpris_player_position_set(MprisPlayer *obj, gint pos, GError **error); 00087 gboolean mpris_player_position_get(MprisPlayer *obj, gint *pos, 00088 GError **error); 00089 enum { 00090 TRACK_CHANGE_SIG, 00091 STATUS_CHANGE_SIG, 00092 CAPS_CHANGE_SIG, 00093 LAST_SIG 00094 }; 00095 00096 enum { 00097 TRACKLIST_CHANGE_SIG, 00098 LAST_TRACKLIST_SIG 00099 }; 00100 00101 gboolean mpris_emit_track_change(MprisPlayer *obj); 00102 gboolean mpris_emit_status_change(MprisPlayer *obj, PlaybackStatus status); 00103 gboolean mpris_emit_caps_change(MprisPlayer *obj); 00104 gboolean mpris_emit_tracklist_change(MprisTrackList *obj, gint playlist); 00105 00106 // MPRIS /TrackList 00107 gboolean mpris_tracklist_get_metadata(MprisTrackList *obj, gint pos, 00108 GHashTable **metadata, GError **error); 00109 gboolean mpris_tracklist_get_current_track(MprisTrackList *obj, gint *pos, 00110 GError **error); 00111 gboolean mpris_tracklist_get_length(MprisTrackList *obj, gint *length, 00112 GError **error); 00113 gboolean mpris_tracklist_add_track(MprisTrackList *obj, gchar *uri, 00114 gboolean play, GError **error); 00115 gboolean mpris_tracklist_del_track(MprisTrackList *obj, gint pos, 00116 GError **error); 00117 gboolean mpris_tracklist_loop(MprisTrackList *obj, gboolean loop, 00118 GError **error); 00119 gboolean mpris_tracklist_random(MprisTrackList *obj, gboolean random, 00120 GError **error); 00121 00122 /* Legacy API */ 00123 // Audacious General Information 00124 gboolean audacious_rc_version(RemoteObject *obj, gchar **version, GError **error); 00125 gboolean audacious_rc_quit(RemoteObject *obj, GError **error); 00126 gboolean audacious_rc_eject(RemoteObject *obj, GError **error); 00127 gboolean audacious_rc_main_win_visible(RemoteObject *obj, 00128 gboolean *is_main_win, GError **error); 00129 gboolean audacious_rc_show_main_win(RemoteObject *obj, gboolean show, 00130 GError **error); 00131 gboolean audacious_rc_equalizer_visible(RemoteObject *obj, gboolean *is_eq_win, 00132 GError **error); 00133 gboolean audacious_rc_show_equalizer(RemoteObject *obj, gboolean show, 00134 GError **error); 00135 gboolean audacious_rc_playlist_visible(RemoteObject *obj, 00136 gboolean *is_pl_win, 00137 GError **error); 00138 gboolean audacious_rc_show_playlist(RemoteObject *obj, gboolean show, 00139 GError **error); 00140 gboolean audacious_rc_get_tuple_fields(RemoteObject *obj, gchar ***fields, 00141 GError **error); 00142 00143 // Playback Information/Manipulation 00144 gboolean audacious_rc_play(RemoteObject *obj, GError **error); 00145 gboolean audacious_rc_pause(RemoteObject *obj, GError **error); 00146 gboolean audacious_rc_stop(RemoteObject *obj, GError **error); 00147 gboolean audacious_rc_playing(RemoteObject *obj, gboolean *is_playing, 00148 GError **error); 00149 gboolean audacious_rc_paused(RemoteObject *obj, gboolean *is_paused, 00150 GError **error); 00151 gboolean audacious_rc_stopped(RemoteObject *obj, gboolean *is_stopped, 00152 GError **error); 00153 gboolean audacious_rc_status(RemoteObject *obj, gchar **status, 00154 GError **error); 00155 gboolean audacious_rc_info(RemoteObject *obj, gint *rate, gint *freq, 00156 gint *nch, GError **error); 00157 gboolean audacious_rc_time(RemoteObject *obj, gint *time, GError **error); 00158 gboolean audacious_rc_seek(RemoteObject *obj, guint pos, GError **error); 00159 gboolean audacious_rc_volume(RemoteObject *obj, gint *vl, gint *vr, 00160 GError **error); 00161 gboolean audacious_rc_set_volume(RemoteObject *obj, gint vl, gint vr, 00162 GError **error); 00163 gboolean audacious_rc_balance(RemoteObject *obj, gint *balance, 00164 GError **error); 00165 00166 // Playlist Information/Manipulation 00167 gboolean audacious_rc_position(RemoteObject *obj, int *pos, GError **error); 00168 gboolean audacious_rc_advance(RemoteObject *obj, GError **error); 00169 gboolean audacious_rc_reverse(RemoteObject *obj, GError **error); 00170 gboolean audacious_rc_length(RemoteObject *obj, int *length, 00171 GError **error); 00172 gboolean audacious_rc_song_title(RemoteObject *obj, guint pos, 00173 gchar **title, GError **error); 00174 gboolean audacious_rc_song_filename(RemoteObject *obj, guint pos, 00175 gchar **filename, GError **error); 00176 gboolean audacious_rc_song_length(RemoteObject *obj, guint pos, int *length, 00177 GError **error); 00178 gboolean audacious_rc_song_frames(RemoteObject *obj, guint pos, int *length, 00179 GError **error); 00180 gboolean audacious_rc_song_tuple(RemoteObject *obj, guint pos, gchar *tuple, 00181 GValue *value, GError **error); 00182 gboolean audacious_rc_jump(RemoteObject *obj, guint pos, GError **error); 00183 gboolean audacious_rc_add(RemoteObject *obj, gchar *file, GError **error); 00184 gboolean audacious_rc_add_url(RemoteObject *obj, gchar *url, 00185 GError **error); 00186 gboolean audacious_rc_add_list (RemoteObject * obj, gchar * * filenames, 00187 GError * * error); 00188 gboolean audacious_rc_open_list (RemoteObject * obj, gchar * * filenames, 00189 GError * * error); 00190 gboolean audacious_rc_open_list_to_temp (RemoteObject * obj, gchar * * 00191 filenames, GError * * error); 00192 gboolean audacious_rc_delete(RemoteObject *obj, guint pos, GError **error); 00193 gboolean audacious_rc_clear(RemoteObject *obj, GError **error); 00194 gboolean audacious_rc_auto_advance(RemoteObject *obj, gboolean *is_advance, 00195 GError **error); 00196 gboolean audacious_rc_toggle_auto_advance(RemoteObject *obj, GError **error); 00197 gboolean audacious_rc_repeat(RemoteObject *obj, gboolean *is_repeat, 00198 GError **error); 00199 gboolean audacious_rc_toggle_repeat(RemoteObject *obj, GError **error); 00200 gboolean audacious_rc_shuffle(RemoteObject *obj, gboolean *is_shuffle, 00201 GError **error); 00202 gboolean audacious_rc_toggle_shuffle(RemoteObject *obj, GError **error); 00203 00204 /* new */ 00205 gboolean audacious_rc_show_prefs_box(RemoteObject *obj, gboolean show, GError **error); 00206 gboolean audacious_rc_show_about_box(RemoteObject *obj, gboolean show, GError **error); 00207 gboolean audacious_rc_show_jtf_box(RemoteObject *obj, gboolean show, GError **error); 00208 gboolean audacious_rc_show_filebrowser(RemoteObject *obj, gboolean show, GError **error); //new Nov 8 00209 gboolean audacious_rc_play_pause(RemoteObject *obj, GError **error); 00210 gboolean audacious_rc_activate(RemoteObject *obj, GError **error); 00211 gboolean audacious_rc_queue_get_list_pos(RemoteObject *obj, gint qpos, gint *pos, GError **error); 00212 gboolean audacious_rc_queue_get_queue_pos(RemoteObject *obj, gint pos, gint *qpos, GError **error); 00213 gboolean audacious_rc_get_info(RemoteObject *obj, gint *rate, gint *freq, gint *nch, GError **error); 00214 gboolean audacious_rc_toggle_aot(RemoteObject *obj, gboolean ontop, GError **error); 00215 gboolean audacious_rc_get_playqueue_length(RemoteObject *obj, gint *length, GError **error); 00216 gboolean audacious_rc_playqueue_add(RemoteObject *obj, gint pos, GError **error); 00217 gboolean audacious_rc_playqueue_remove(RemoteObject *obj, gint pos, GError **error); 00218 gboolean audacious_rc_playqueue_clear(RemoteObject *obj, GError **error); 00219 gboolean audacious_rc_playqueue_is_queued(RemoteObject *obj, gint pos, gboolean *is_queued, GError **error); 00220 gboolean audacious_rc_playlist_ins_url_string(RemoteObject *obj, gchar *url, gint pos, GError **error); 00221 gboolean audacious_rc_playlist_enqueue_to_temp(RemoteObject *obj, gchar *url, GError **error); 00222 gboolean audacious_rc_playlist_add(RemoteObject *obj, gpointer list, GError **error); 00223 00224 /* new on nov 7 */ 00225 gboolean audacious_rc_get_eq(RemoteObject *obj, gdouble *preamp, GArray **bands, GError **error); 00226 gboolean audacious_rc_get_eq_preamp(RemoteObject *obj, gdouble *preamp, GError **error); 00227 gboolean audacious_rc_get_eq_band(RemoteObject *obj, gint band, gdouble *value, GError **error); 00228 gboolean audacious_rc_set_eq(RemoteObject *obj, gdouble preamp, GArray *bands, GError **error); 00229 gboolean audacious_rc_set_eq_preamp(RemoteObject *obj, gdouble preamp, GError **error); 00230 gboolean audacious_rc_set_eq_band(RemoteObject *obj, gint band, gdouble value, GError **error); 00231 gboolean audacious_rc_equalizer_activate(RemoteObject *obj, gboolean active, GError **error); 00232 00233 /* new in 2.4 */ 00234 gboolean audacious_rc_get_active_playlist_name(RemoteObject *obj, gchar **title, GError **error); 00235 00236 #endif /* AUDACIOUS_DBUS_SERVICE_H */