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 #include <libaudcore/core.h> 00026 00027 #define DBUS_API_SUBJECT_TO_CHANGE 00028 #include <dbus/dbus-glib.h> 00029 00030 typedef struct { 00031 GObject parent; 00032 DBusGProxy *proxy; 00033 } RemoteObject, MprisRoot, MprisPlayer, MprisTrackList; 00034 00035 typedef struct { 00036 GObjectClass parent_class; 00037 } RemoteObjectClass, MprisRootClass, MprisPlayerClass, MprisTrackListClass; 00038 00039 /* MPRIS API */ 00040 // Capabilities 00041 enum { 00042 MPRIS_CAPS_NONE = 0, 00043 MPRIS_CAPS_CAN_GO_NEXT = 1 << 0, 00044 MPRIS_CAPS_CAN_GO_PREV = 1 << 1, 00045 MPRIS_CAPS_CAN_PAUSE = 1 << 2, 00046 MPRIS_CAPS_CAN_PLAY = 1 << 3, 00047 MPRIS_CAPS_CAN_SEEK = 1 << 4, 00048 MPRIS_CAPS_CAN_PROVIDE_METADATA = 1 << 5, 00049 MPRIS_CAPS_PROVIDES_TIMING = 1 << 6, 00050 }; 00051 00052 // Status 00053 typedef enum { 00054 MPRIS_STATUS_INVALID = -1, 00055 MPRIS_STATUS_PLAY = 0, 00056 MPRIS_STATUS_PAUSE = 1, 00057 MPRIS_STATUS_STOP = 2, 00058 } PlaybackStatus; 00059 00060 extern MprisPlayer * mpris; 00061 00062 // MPRIS / 00063 bool_t mpris_root_identity(MprisRoot *obj, char **identity, 00064 GError **error); 00065 bool_t mpris_root_quit(MprisPlayer *obj, GError **error); 00066 00067 // MPRIS /Player 00068 bool_t mpris_player_next(MprisPlayer *obj, GError **error); 00069 bool_t mpris_player_prev(MprisPlayer *obj, GError **error); 00070 bool_t mpris_player_pause(MprisPlayer *obj, GError **error); 00071 bool_t mpris_player_stop(MprisPlayer *obj, GError **error); 00072 bool_t mpris_player_play(MprisPlayer *obj, GError **error); 00073 bool_t mpris_player_repeat(MprisPlayer *obj, bool_t rpt, GError **error); 00074 bool_t mpris_player_get_status(MprisPlayer *obj, GValueArray **status, 00075 GError **error); 00076 bool_t mpris_player_get_metadata(MprisPlayer *obj, GHashTable **metadata, 00077 GError **error); 00078 bool_t mpris_player_get_caps(MprisPlayer *obj, int *capabilities, 00079 GError **error); 00080 bool_t mpris_player_volume_set(MprisPlayer *obj, int vol, GError **error); 00081 bool_t mpris_player_volume_get(MprisPlayer *obj, int *vol, 00082 GError **error); 00083 bool_t mpris_player_position_set(MprisPlayer *obj, int pos, GError **error); 00084 bool_t mpris_player_position_get(MprisPlayer *obj, int *pos, 00085 GError **error); 00086 enum { 00087 TRACK_CHANGE_SIG, 00088 STATUS_CHANGE_SIG, 00089 CAPS_CHANGE_SIG, 00090 LAST_SIG 00091 }; 00092 00093 enum { 00094 TRACKLIST_CHANGE_SIG, 00095 LAST_TRACKLIST_SIG 00096 }; 00097 00098 bool_t mpris_emit_track_change(MprisPlayer *obj); 00099 bool_t mpris_emit_status_change(MprisPlayer *obj, PlaybackStatus status); 00100 bool_t mpris_emit_caps_change(MprisPlayer *obj); 00101 bool_t mpris_emit_tracklist_change(MprisTrackList *obj, int playlist); 00102 00103 // MPRIS /TrackList 00104 bool_t mpris_tracklist_get_metadata(MprisTrackList *obj, int pos, 00105 GHashTable **metadata, GError **error); 00106 bool_t mpris_tracklist_get_current_track(MprisTrackList *obj, int *pos, 00107 GError **error); 00108 bool_t mpris_tracklist_get_length(MprisTrackList *obj, int *length, 00109 GError **error); 00110 bool_t mpris_tracklist_add_track(MprisTrackList *obj, char *uri, 00111 bool_t play, GError **error); 00112 bool_t mpris_tracklist_del_track(MprisTrackList *obj, int pos, 00113 GError **error); 00114 bool_t mpris_tracklist_loop(MprisTrackList *obj, bool_t loop, 00115 GError **error); 00116 bool_t mpris_tracklist_random(MprisTrackList *obj, bool_t random, 00117 GError **error); 00118 00119 /* Legacy API */ 00120 // Audacious General Information 00121 bool_t audacious_rc_version(RemoteObject *obj, char **version, GError **error); 00122 bool_t audacious_rc_quit(RemoteObject *obj, GError **error); 00123 bool_t audacious_rc_eject(RemoteObject *obj, GError **error); 00124 bool_t audacious_rc_main_win_visible(RemoteObject *obj, 00125 bool_t *is_main_win, GError **error); 00126 bool_t audacious_rc_show_main_win(RemoteObject *obj, bool_t show, 00127 GError **error); 00128 bool_t audacious_rc_equalizer_visible(RemoteObject *obj, bool_t *is_eq_win, 00129 GError **error); 00130 bool_t audacious_rc_show_equalizer(RemoteObject *obj, bool_t show, 00131 GError **error); 00132 bool_t audacious_rc_playlist_visible(RemoteObject *obj, 00133 bool_t *is_pl_win, 00134 GError **error); 00135 bool_t audacious_rc_show_playlist(RemoteObject *obj, bool_t show, 00136 GError **error); 00137 bool_t audacious_rc_get_tuple_fields(RemoteObject *obj, char ***fields, 00138 GError **error); 00139 00140 // Playback Information/Manipulation 00141 bool_t audacious_rc_play(RemoteObject *obj, GError **error); 00142 bool_t audacious_rc_pause(RemoteObject *obj, GError **error); 00143 bool_t audacious_rc_stop(RemoteObject *obj, GError **error); 00144 bool_t audacious_rc_playing(RemoteObject *obj, bool_t *is_playing, 00145 GError **error); 00146 bool_t audacious_rc_paused(RemoteObject *obj, bool_t *is_paused, 00147 GError **error); 00148 bool_t audacious_rc_stopped(RemoteObject *obj, bool_t *is_stopped, 00149 GError **error); 00150 bool_t audacious_rc_status(RemoteObject *obj, char **status, 00151 GError **error); 00152 bool_t audacious_rc_info(RemoteObject *obj, int *rate, int *freq, 00153 int *nch, GError **error); 00154 bool_t audacious_rc_time(RemoteObject *obj, int *time, GError **error); 00155 bool_t audacious_rc_seek(RemoteObject *obj, unsigned int pos, GError **error); 00156 bool_t audacious_rc_volume(RemoteObject *obj, int *vl, int *vr, 00157 GError **error); 00158 bool_t audacious_rc_set_volume(RemoteObject *obj, int vl, int vr, 00159 GError **error); 00160 bool_t audacious_rc_balance(RemoteObject *obj, int *balance, 00161 GError **error); 00162 00163 // Playlist Information/Manipulation 00164 bool_t audacious_rc_position(RemoteObject *obj, int *pos, GError **error); 00165 bool_t audacious_rc_advance(RemoteObject *obj, GError **error); 00166 bool_t audacious_rc_reverse(RemoteObject *obj, GError **error); 00167 bool_t audacious_rc_length(RemoteObject *obj, int *length, 00168 GError **error); 00169 bool_t audacious_rc_song_title(RemoteObject *obj, unsigned int pos, 00170 char **title, GError **error); 00171 bool_t audacious_rc_song_filename(RemoteObject *obj, unsigned int pos, 00172 char **filename, GError **error); 00173 bool_t audacious_rc_song_length(RemoteObject *obj, unsigned int pos, int *length, 00174 GError **error); 00175 bool_t audacious_rc_song_frames(RemoteObject *obj, unsigned int pos, int *length, 00176 GError **error); 00177 bool_t audacious_rc_song_tuple(RemoteObject *obj, unsigned int pos, char *tuple, 00178 GValue *value, GError **error); 00179 bool_t audacious_rc_jump(RemoteObject *obj, unsigned int pos, GError **error); 00180 bool_t audacious_rc_add(RemoteObject *obj, char *file, GError **error); 00181 bool_t audacious_rc_add_url(RemoteObject *obj, char *url, 00182 GError **error); 00183 bool_t audacious_rc_add_list (RemoteObject * obj, char * * filenames, 00184 GError * * error); 00185 bool_t audacious_rc_open_list (RemoteObject * obj, char * * filenames, 00186 GError * * error); 00187 bool_t audacious_rc_open_list_to_temp (RemoteObject * obj, char * * 00188 filenames, GError * * error); 00189 bool_t audacious_rc_delete(RemoteObject *obj, unsigned int pos, GError **error); 00190 bool_t audacious_rc_clear(RemoteObject *obj, GError **error); 00191 bool_t audacious_rc_auto_advance(RemoteObject *obj, bool_t *is_advance, 00192 GError **error); 00193 bool_t audacious_rc_toggle_auto_advance(RemoteObject *obj, GError **error); 00194 bool_t audacious_rc_repeat(RemoteObject *obj, bool_t *is_repeat, 00195 GError **error); 00196 bool_t audacious_rc_toggle_repeat(RemoteObject *obj, GError **error); 00197 bool_t audacious_rc_shuffle(RemoteObject *obj, bool_t *is_shuffle, 00198 GError **error); 00199 bool_t audacious_rc_toggle_shuffle(RemoteObject *obj, GError **error); 00200 00201 /* new */ 00202 bool_t audacious_rc_show_prefs_box(RemoteObject *obj, bool_t show, GError **error); 00203 bool_t audacious_rc_show_about_box(RemoteObject *obj, bool_t show, GError **error); 00204 bool_t audacious_rc_show_jtf_box(RemoteObject *obj, bool_t show, GError **error); 00205 bool_t audacious_rc_show_filebrowser(RemoteObject *obj, bool_t show, GError **error); //new Nov 8 00206 bool_t audacious_rc_play_pause(RemoteObject *obj, GError **error); 00207 bool_t audacious_rc_activate(RemoteObject *obj, GError **error); 00208 bool_t audacious_rc_queue_get_list_pos(RemoteObject *obj, int qpos, int *pos, GError **error); 00209 bool_t audacious_rc_queue_get_queue_pos(RemoteObject *obj, int pos, int *qpos, GError **error); 00210 bool_t audacious_rc_get_info(RemoteObject *obj, int *rate, int *freq, int *nch, GError **error); 00211 bool_t audacious_rc_toggle_aot(RemoteObject *obj, bool_t ontop, GError **error); 00212 bool_t audacious_rc_get_playqueue_length(RemoteObject *obj, int *length, GError **error); 00213 bool_t audacious_rc_playqueue_add(RemoteObject *obj, int pos, GError **error); 00214 bool_t audacious_rc_playqueue_remove(RemoteObject *obj, int pos, GError **error); 00215 bool_t audacious_rc_playqueue_clear(RemoteObject *obj, GError **error); 00216 bool_t audacious_rc_playqueue_is_queued(RemoteObject *obj, int pos, bool_t *is_queued, GError **error); 00217 bool_t audacious_rc_playlist_ins_url_string(RemoteObject *obj, char *url, int pos, GError **error); 00218 bool_t audacious_rc_playlist_enqueue_to_temp(RemoteObject *obj, char *url, GError **error); 00219 bool_t audacious_rc_playlist_add(RemoteObject *obj, gpointer list, GError **error); 00220 00221 /* new on nov 7 */ 00222 bool_t audacious_rc_get_eq(RemoteObject *obj, double *preamp, GArray **bands, GError **error); 00223 bool_t audacious_rc_get_eq_preamp(RemoteObject *obj, double *preamp, GError **error); 00224 bool_t audacious_rc_get_eq_band(RemoteObject *obj, int band, double *value, GError **error); 00225 bool_t audacious_rc_set_eq(RemoteObject *obj, double preamp, GArray *bands, GError **error); 00226 bool_t audacious_rc_set_eq_preamp(RemoteObject *obj, double preamp, GError **error); 00227 bool_t audacious_rc_set_eq_band(RemoteObject *obj, int band, double value, GError **error); 00228 bool_t audacious_rc_equalizer_activate(RemoteObject *obj, bool_t active, GError **error); 00229 00230 /* new in 2.4 */ 00231 bool_t audacious_rc_get_active_playlist_name(RemoteObject *obj, char **title, GError **error); 00232 00233 /* new in 3.1 */ 00234 bool_t audacious_rc_stop_after (RemoteObject * obj, bool_t * is_stopping, GError * * error); 00235 bool_t audacious_rc_toggle_stop_after (RemoteObject * obj, GError * * error); 00236 00237 #endif /* AUDACIOUS_DBUS_SERVICE_H */