1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-05 21:57:41 +02:00

Merge pull request #182 from xhochy/feature/select-existing-spotify-playlist-instead-of-double-adding

Do not double add existing spotify playlists
This commit is contained in:
Hugo Lindström
2013-04-01 15:17:03 -07:00
3 changed files with 44 additions and 21 deletions

View File

@@ -1396,6 +1396,18 @@ SpotifyAccount::sendMessage( const QVariantMap &m, QObject* obj, const QString&
return qid;
}
bool
SpotifyAccount::hasPlaylist(const QString& plId)
{
return m_updaters.contains( plId );
}
Tomahawk::playlist_ptr
SpotifyAccount::playlistForURI(const QString& plId)
{
return m_updaters[ plId ]->playlist();
}
void
SpotifyAccount::registerUpdaterForPlaylist( const QString& plId, SpotifyPlaylistUpdater* updater )

View File

@@ -103,7 +103,8 @@ public:
virtual SipPlugin* sipPlugin() { return 0; }
virtual bool preventEnabling() const { return m_preventEnabling; }
bool hasPlaylist( const QString& plId );
Tomahawk::playlist_ptr playlistForURI( const QString& plId );
void registerUpdaterForPlaylist( const QString& plId, SpotifyPlaylistUpdater* updater );
void registerPlaylistInfo( const QString& name, const QString& plid, const QString &revid, const bool sync, const bool subscribed , const bool owner = false);
void registerPlaylistInfo( SpotifyPlaylistInfo* info );

View File

@@ -401,13 +401,22 @@ SpotifyParser::checkBrowseFinished()
if ( m_createNewPlaylist && !m_tracks.isEmpty() )
{
QString spotifyUsername;
bool spotifyAccountLoggedIn = Accounts::SpotifyAccount::instance() && Accounts::SpotifyAccount::instance()->loggedIn();
if ( Accounts::SpotifyAccount::instance() && Accounts::SpotifyAccount::instance()->loggedIn() )
if ( spotifyAccountLoggedIn )
{
QVariantHash creds = Accounts::SpotifyAccount::instance()->credentials();
spotifyUsername = creds.value( "username" ).toString();
}
if ( spotifyAccountLoggedIn && Accounts::SpotifyAccount::instance()->hasPlaylist( m_browseUri ) )
{
// The playlist is already registered with Tomahawk, so just open it instead of adding another instance.
m_playlist = Accounts::SpotifyAccount::instance()->playlistForURI( m_browseUri );
playlistCreated();
}
else
{
m_playlist = Playlist::create( SourceList::instance()->getLocal(),
uuid(),
m_title,
@@ -418,7 +427,7 @@ SpotifyParser::checkBrowseFinished()
connect( m_playlist.data(), SIGNAL( revisionLoaded( Tomahawk::PlaylistRevision ) ), this, SLOT( playlistCreated() ) );
if ( Accounts::SpotifyAccount::instance() && Accounts::SpotifyAccount::instance()->loggedIn() )
if ( spotifyAccountLoggedIn )
{
SpotifyPlaylistUpdater* updater = new SpotifyPlaylistUpdater(
Accounts::SpotifyAccount::instance(), m_playlist->currentrevision(), m_browseUri, m_playlist );
@@ -440,6 +449,7 @@ SpotifyParser::checkBrowseFinished()
Accounts::SpotifyAccount::instance()->setSubscribedForPlaylist( m_playlist, true );
}
}
return;
}
else if ( m_single && !m_tracks.isEmpty() )