7 #include <mpd/client.h>
13 struct mpdclient_playlist playlist
;
15 struct mpd_connection
*connection
;
18 * If this object is non-NULL, it tracks idle events. It is
19 * automatically called by mpdclient_get_connection() and
20 * mpdclient_put_connection(). It is not created by the
21 * mpdclient library; the user of this library has to
22 * initialize it. However, it is freed when the MPD
23 * connection is closed.
25 struct mpd_glib_source
*source
;
28 * This attribute is true when the connection is currently in
29 * "idle" mode, and the #mpd_glib_source waits for an event.
33 struct mpd_status
*status
;
34 const struct mpd_song
*song
;
40 * A bit mask of idle events occurred since the last update.
47 * all idle events the version of libmpdclient, ncmpc is compiled
50 MPD_IDLE_ALL
= MPD_IDLE_DATABASE
51 | MPD_IDLE_STORED_PLAYLIST
58 #if LIBMPDCLIENT_CHECK_VERSION(2,5,0)
60 | MPD_IDLE_SUBSCRIPTION
65 /** functions ***************************************************************/
68 mpdclient_handle_error(struct mpdclient
*c
);
71 mpdclient_finish_command(struct mpdclient
*c
)
73 return mpd_response_finish(c
->connection
)
74 ? true : mpdclient_handle_error(c
);
80 void mpdclient_free(struct mpdclient
*c
);
83 mpdclient_is_connected(const struct mpdclient
*c
)
85 return c
->connection
!= NULL
;
90 mpdclient_is_playing(const struct mpdclient
*c
)
92 return c
->status
!= NULL
&&
93 (mpd_status_get_state(c
->status
) == MPD_STATE_PLAY
||
94 mpd_status_get_state(c
->status
) == MPD_STATE_PAUSE
);
97 static inline const struct mpd_song
*
98 mpdclient_get_current_song(const struct mpdclient
*c
)
100 return c
->song
!= NULL
&& mpdclient_is_playing(c
)
106 mpdclient_connect(struct mpdclient
*c
, const gchar
*host
, gint port
,
107 unsigned timeout_ms
, const gchar
*password
);
110 mpdclient_disconnect(struct mpdclient
*c
);
113 mpdclient_update(struct mpdclient
*c
);
115 struct mpd_connection
*
116 mpdclient_get_connection(struct mpdclient
*c
);
119 mpdclient_put_connection(struct mpdclient
*c
);
122 * To be implemented by the application: mpdclient.c calls this to
123 * display an error message.
126 mpdclient_ui_error(const char *message
);
128 /*** MPD Commands **********************************************************/
131 mpdclient_cmd_crop(struct mpdclient
*c
);
134 mpdclient_cmd_clear(struct mpdclient
*c
);
137 mpdclient_cmd_volume(struct mpdclient
*c
, gint value
);
140 mpdclient_cmd_volume_up(struct mpdclient
*c
);
143 mpdclient_cmd_volume_down(struct mpdclient
*c
);
146 mpdclient_cmd_add_path(struct mpdclient
*c
, const gchar
*path
);
149 mpdclient_cmd_add(struct mpdclient
*c
, const struct mpd_song
*song
);
152 mpdclient_cmd_delete(struct mpdclient
*c
, gint index
);
155 mpdclient_cmd_delete_range(struct mpdclient
*c
, unsigned start
, unsigned end
);
158 mpdclient_cmd_move(struct mpdclient
*c
, unsigned dest
, unsigned src
);
160 /*** playlist functions **************************************************/
162 /* update the complete playlist */
164 mpdclient_playlist_update(struct mpdclient
*c
);
166 /* get playlist changes */
168 mpdclient_playlist_update_changes(struct mpdclient
*c
);
170 /* add all songs in filelist to the playlist */
172 mpdclient_filelist_add_all(struct mpdclient
*c
, struct filelist
*fl
);
174 /* sort by list-format */
175 gint
compare_filelistentry_format(gconstpointer filelist_entry1
, gconstpointer filelist_entry2
);