00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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
00043
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
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
00066 gboolean mpris_root_identity(MprisRoot *obj, gchar **identity,
00067 GError **error);
00068 gboolean mpris_root_quit(MprisPlayer *obj, GError **error);
00069
00070
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
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
00123
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
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
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
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);
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
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
00234 gboolean audacious_rc_get_active_playlist_name(RemoteObject *obj, gchar **title, GError **error);
00235
00236
00237 gboolean audacious_rc_stop_after (RemoteObject * obj, gboolean * is_stopping, GError * * error);
00238 gboolean audacious_rc_toggle_stop_after (RemoteObject * obj, GError * * error);
00239
00240 #endif