void QSpotifyPlaylistContainer::addPlaylist(sp_playlist *playlist, int pos) { if (playlist != sp_playlistcontainer_playlist(m_container, pos)) { int count = sp_playlistcontainer_num_playlists(m_container); for (int i = 0; i < count; ++i) { if (playlist == sp_playlistcontainer_playlist(m_container, i)) { pos = i; break; } } } sp_playlist_type type = sp_playlistcontainer_playlist_type(m_container, pos); QSpotifyPlaylist *pl = new QSpotifyPlaylist(QSpotifyPlaylist::Type(type), playlist); if (pos == -1) m_playlists.append(pl); else m_playlists.insert(pos, pl); if (type == SP_PLAYLIST_TYPE_START_FOLDER) { char buffer[200]; sp_playlistcontainer_playlist_folder_name(m_container, pos, buffer, 200); pl->m_name = QString::fromUtf8(buffer); } connect(pl, SIGNAL(nameChanged()), this, SIGNAL(playlistsNameChanged())); }
QSpotifyPlaylistContainer *QSpotifyUser::playlistContainer() const { if (!m_playlistContainer) { sp_playlistcontainer *pc; if (QSpotifySession::instance()->user() == this) { pc = sp_session_playlistcontainer(QSpotifySession::instance()->m_sp_session); sp_playlistcontainer_add_ref(pc); } else { pc = sp_session_publishedcontainer_for_user_create(QSpotifySession::instance()->m_sp_session, m_canonicalName.toUtf8().constData()); } m_playlistContainer = new QSpotifyPlaylistContainer(pc); m_playlistContainer->init(); connect(m_playlistContainer, SIGNAL(playlistContainerDataChanged()), this, SIGNAL(playlistsChanged())); connect(m_playlistContainer, SIGNAL(playlistsNameChanged()), this, SIGNAL(playlistsNameChanged())); } return m_playlistContainer; }