char *search_str_list() { size_t tracks = sp_search_num_tracks(search); size_t albums = sp_search_num_albums(search); size_t playlists = sp_search_num_playlists(search); size_t size = API_MESSAGE_LEN*(albums+tracks); char *ret = malloc(size); ret[0] = '\0'; int i; for(i=0; i<tracks; ++i) { num_pre(ret + strlen(ret), size, i, track_to_str, sp_search_track(search, i)); strncat(ret + strlen(ret), "\n", size); } for(; i<(tracks+albums); ++i) { num_pre(ret + strlen(ret), size, i, album_to_str, sp_search_album(search, i-tracks)); strncat(ret + strlen(ret), "\n", size); } for(; i<(tracks+albums+playlists); ++i) { num_pre(ret + strlen(ret), size, i, playlist_to_str, sp_search_playlist(search, i-tracks-albums)); strncat(ret + strlen(ret), "\n", size); } return ret; }
void search_for_tracks_at(sp_session *session, char *buf, size_t len, size_t i, bool (*f)(sp_track *)) { if(search == NULL) { return; } buf[0] = '\0'; if(search_is_track(i) && sp_track_is_loaded(sp_search_track(search, i))) { f(sp_search_track(search, i)); if(buf != NULL) { track_to_str(buf, len, sp_search_track(search, i)); } } if(search_is_album(i) && sp_album_is_loaded(sp_search_album(search, i-sp_search_num_tracks(search)))) { sp_albumbrowse_create(session, sp_search_album(search, i-sp_search_num_tracks(search)) ,on_albumbrowse_complete, f); if(buf != NULL) { album_to_str(buf, len, sp_search_album(search, i-sp_search_num_tracks(search))); } } if(search_is_playlist(i)) { sp_playlist *pl = sp_search_playlist(search, i-sp_search_num_tracks(search)-sp_search_num_albums(search)); if(sp_playlist_is_loaded(pl)) { int j; for(j = 0; j < sp_playlist_num_tracks(pl); ++j) { f(sp_playlist_track(pl, j)); } if(buf != NULL) { playlist_to_str(buf, len, pl); } } } }
void QSpotifySearch::populatePlaylists(sp_search *search) { m_playlistResults->clear(); if (m_enablePreview) m_playlistResultsPreview->clear(); if (search) { int c = sp_search_num_playlists(search); for (int i = 0; i < c; ++i) { auto playlist = std::shared_ptr<QSpotifyPlaylistSearchEntry>( new QSpotifyPlaylistSearchEntry(sp_search_playlist_name(search, i), sp_search_playlist(search, i)), [] (QSpotifyPlaylistSearchEntry *pl) {pl->deleteLater();}); playlist->init(); m_playlistResults->appendRow(playlist); if(m_enablePreview && i < m_numPreviewItems) m_playlistResultsPreview->appendRow(playlist); } } }
Playlist Search::playlistAt(int index) const { return isValid() ? Playlist(sp_search_playlist(handle(), index)) : Playlist(); }