Audacious  $Id:Doxyfile42802007-03-2104:39:00Znenolod$
dbus-service.h
Go to the documentation of this file.
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 */