/** * Convenient function for adding a directory to the playlist, * It will dive down the URL you feed it and recursivly add * all files there. * * @param playlist the playlist to add it URL to. * @param plname the name of the playlist to modify. * @param nurl the URL of an directory you want to add * @param err an #xmms_error_t that should be defined upon error. */ static void xmms_playlist_client_radd (xmms_playlist_t *playlist, const gchar *plname, const gchar *path, xmms_error_t *err) { xmmsv_coll_t *idlist; xmmsv_list_iter_t *it; xmmsv_t *list; idlist = xmms_medialib_add_recursive (playlist->medialib, path, err); list = xmmsv_coll_idlist_get (idlist); xmmsv_get_list_iter (list, &it); while (xmmsv_list_iter_valid (it)) { xmms_medialib_entry_t entry; xmmsv_t *value; xmmsv_list_iter_entry (it, &value); xmmsv_get_int (value, &entry); xmms_playlist_add_entry (playlist, plname, entry, err); xmmsv_list_iter_next (it); } xmmsv_coll_unref (idlist); }
/** * Convenient function for adding a URL to the playlist, * Creates a #xmms_medialib_entry_t for you and adds it * to the list. * * @param playlist the playlist to add it URL to. * @param plname the name of the playlist to modify. * @param nurl the URL to add * @param err an #xmms_error_t that should be defined upon error. * @return TRUE on success and FALSE otherwise. */ void xmms_playlist_client_add_url (xmms_playlist_t *playlist, const gchar *plname, const gchar *nurl, xmms_error_t *err) { xmms_medialib_entry_t entry = 0; MEDIALIB_SESSION (playlist->medialib, entry = xmms_medialib_entry_new_encoded (session, nurl, err)); if (entry) { xmms_playlist_add_entry (playlist, plname, entry, err); } }
void xmms_playlist_client_add_id (xmms_playlist_t *playlist, const gchar *plname, xmms_medialib_entry_t file, xmms_error_t *err) { gboolean valid; MEDIALIB_SESSION (playlist->medialib, valid = xmms_medialib_check_id (session, file)); if (!valid) { xmms_error_set (err, XMMS_ERROR_NOENT, "That is not a valid medialib id!"); return; } xmms_playlist_add_entry (playlist, plname, file, err); }
void xmms_playlist_client_add_collection (xmms_playlist_t *playlist, const gchar *plname, xmmsv_coll_t *coll, xmms_error_t *err) { xmmsv_t *res; int32_t id; int i; res = xmms_collection_query_ids (playlist->colldag, coll, err); for (i = 0; xmmsv_list_get_int (res, i, &id); i++) { xmms_playlist_add_entry (playlist, plname, id, err); } xmmsv_unref (res); }
/** * Convenient function for adding a URL to the playlist, * Creates a #xmms_medialib_entry_t for you and adds it * to the list. * * @param playlist the playlist to add it URL to. * @param plname the name of the playlist to modify. * @param nurl the URL to add * @param err an #xmms_error_t that should be defined upon error. * @return TRUE on success and FALSE otherwise. */ void xmms_playlist_client_add_url (xmms_playlist_t *playlist, const gchar *plname, const gchar *nurl, xmms_error_t *err) { xmms_medialib_session_t *session; xmms_medialib_entry_t entry = 0; do { session = xmms_medialib_session_begin (playlist->medialib); entry = xmms_medialib_entry_new_encoded (session, nurl, err); } while (!xmms_medialib_session_commit (session)); if (entry) { xmms_playlist_add_entry (playlist, plname, entry, err); } }
void xmms_playlist_client_add_idlist (xmms_playlist_t *playlist, const gchar *plname, xmmsv_coll_t *coll, xmms_error_t *err) { xmms_medialib_entry_t entry; xmmsv_list_iter_t *it; gboolean valid; xmmsv_get_list_iter (xmmsv_coll_idlist_get (coll), &it); for (xmmsv_list_iter_first (it); xmmsv_list_iter_valid (it); xmmsv_list_iter_next (it)) { xmmsv_list_iter_entry_int (it, &entry); MEDIALIB_SESSION (playlist->medialib, valid = xmms_medialib_check_id (session, entry)); if (!valid) { xmms_error_set (err, XMMS_ERROR_NOENT, "Idlist contains invalid medialib id!"); xmmsv_list_iter_explicit_destroy (it); return; } } for (xmmsv_list_iter_first (it); xmmsv_list_iter_valid (it); xmmsv_list_iter_next (it)) { xmmsv_list_iter_entry_int (it, &entry); xmms_playlist_add_entry (playlist, plname, entry, err); } xmmsv_list_iter_explicit_destroy (it); }