SpotifyPlaylistContainer* SpotifyUser::playlistContainer() { if(m_playlistContainer == nullptr) { sp_playlistcontainer* pc; if(SpotifySession::instance()->user() == this) { pc = sp_session_playlistcontainer(SpotifySession::instance()->native()); sp_playlistcontainer_add_ref(pc); } else { pc = sp_session_publishedcontainer_for_user_create(SpotifySession::instance()->native(), m_canonicalName.toUtf8().constData()); } m_playlistContainer = new SpotifyPlaylistContainer(pc); } return m_playlistContainer; }
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; }
static PyObject * Session_playlist_container(Session * self) { sp_playlistcontainer *pc; Py_BEGIN_ALLOW_THREADS; pc = sp_session_playlistcontainer(self->_session); Py_END_ALLOW_THREADS; PlaylistContainer *ppc = (PlaylistContainer *) PyObject_CallObject((PyObject *) &PlaylistContainerType, NULL); ppc->_playlistcontainer = pc; sp_playlistcontainer_add_ref(pc); return (PyObject *)ppc; }
/** loggedin callback from spotify also initilizes the playlistcontainer and callbacks **/ void SpotifySession::loggedIn(sp_session *session, sp_error error) { SpotifySession* _session = reinterpret_cast<SpotifySession*>(sp_session_userdata(session)); if (error == SP_ERROR_OK) { qDebug() << "Logged in successfully!!"; _session->setSession(session); _session->setLoggedIn(true); _session->setPlaylistContainer( sp_session_playlistcontainer(session) ); sp_playlistcontainer_add_ref( _session->PlaylistContainer() ); sp_playlistcontainer_add_callbacks(_session->PlaylistContainer(), &SpotifyCallbacks::containerCallbacks, _session); } qDebug() << Q_FUNC_INFO << "==== " << sp_error_message( error ) << " ===="; const QString msg = QString::fromUtf8( sp_error_message( error ) ); emit _session->loginResponse( error == SP_ERROR_OK, msg ); }
PHP_METHOD(Spotify, initPlaylistContainer) { int timeout = 0; spotify_object *p = (spotify_object*)zend_object_store_get_object(getThis() TSRMLS_CC); if (p->playlistcontainer != NULL) { RETURN_TRUE; } p->playlistcontainer = sp_session_playlistcontainer(p->session); sp_playlistcontainer_add_callbacks(p->playlistcontainer, &playlistcontainer_callbacks, p); while (!sp_playlistcontainer_is_loaded(p->playlistcontainer)) { sp_session_process_events(p->session, &timeout); } sp_playlistcontainer_add_ref(p->playlistcontainer); RETURN_TRUE; }