bool TomahawkApp::loadUrl( const QString& url ) { #ifndef ENABLE_HEADLESS if ( url.startsWith( "tomahawk://" ) ) return GlobalActionManager::instance()->parseTomahawkLink( url ); else if ( url.contains( "open.spotify.com" ) || url.contains( "spotify:track" ) ) return GlobalActionManager::instance()->openSpotifyLink( url ); else if ( url.contains( "www.rdio.com" ) ) return GlobalActionManager::instance()->openRdioLink( url ); else { QFile f( url ); QFileInfo info( f ); if ( info.suffix() == "xspf" ) { XSPFLoader* l = new XSPFLoader( true, this ); tDebug( LOGINFO ) << "Loading spiff:" << url; l->load( QUrl::fromUserInput( url ) ); return true; } else if ( info.suffix() == "jspf" ) { JSPFLoader* l = new JSPFLoader( true, this ); tDebug( LOGINFO ) << "Loading j-spiff:" << url; l->load( QUrl::fromUserInput( url ) ); return true; } } #endif return false; }
void NewPlaylistWidget::updateSuggestions() { QUrl url( QString( "http://ws.audioscrobbler.com/1.0/tag/%1/toptracks.xspf" ).arg( m_tag ) ); XSPFLoader* loader = new XSPFLoader( false ); connect( loader, SIGNAL( ok( Tomahawk::playlist_ptr ) ), SLOT( suggestionsFound() ) ); loader->load( url ); }
bool TomahawkApp::loadUrl( const QString& url ) { if ( !url.startsWith( "tomahawk://" ) ) { QFile f( url ); QFileInfo info( f ); if ( info.suffix().toLower() == "xspf" ) { XSPFLoader* l = new XSPFLoader( true, true, this ); tDebug( LOGINFO ) << "Loading spiff:" << url; l->load( QUrl::fromUserInput( url ) ); return true; } else if ( info.suffix().toLower() == "jspf" ) { JSPFLoader* l = new JSPFLoader( true, this ); tDebug( LOGINFO ) << "Loading j-spiff:" << url; l->load( QUrl::fromUserInput( url ) ); return true; } else if ( info.suffix().toLower() == "axe" ) { QFileInfo fi( url ); if ( fi.exists() ) { tDebug( LOGINFO ) << "Loading AXE from file:" << url; GlobalActionManager::instance()->installResolverFromFile( fi.absoluteFilePath() ); return true; } } else if ( TomahawkUtils::supportedExtensions().contains( info.suffix().toLower() ) ) { if ( info.exists() ) { QString furl = url; if ( furl.startsWith( "file://" ) ) furl = furl.right( furl.length() - 7 ); AudioEngine::instance()->play( QUrl::fromLocalFile( furl ) ); return true; } tDebug() << Q_FUNC_INFO << "Unable to find:" << info.absoluteFilePath(); return false; } } return GlobalActionManager::instance()->openUrl( url ); }
bool GlobalActionManager::parseTomahawkLink( const QString& urlIn ) { QString url = urlIn; if ( urlIn.startsWith( "http://toma.hk" ) ) url.replace( "http://toma.hk/", "tomahawk://" ); if ( url.contains( "tomahawk://" ) ) { QString cmd = url.mid( 11 ); cmd.replace( "%2B", "%20" ); tLog() << "Parsing tomahawk link command" << cmd; QString cmdType = cmd.split( "/" ).first(); QUrl u = QUrl::fromEncoded( cmd.toUtf8() ); // for backwards compatibility if ( cmdType == "load" ) { if ( u.hasQueryItem( "xspf" ) ) { QUrl xspf = QUrl::fromUserInput( u.queryItemValue( "xspf" ) ); XSPFLoader* l = new XSPFLoader( true, this ); tDebug() << "Loading spiff:" << xspf.toString(); l->load( xspf ); connect( l, SIGNAL( ok( Tomahawk::playlist_ptr ) ), ViewManager::instance(), SLOT( show( Tomahawk::playlist_ptr ) ) ); return true; } else if ( u.hasQueryItem( "jspf" ) ) { QUrl jspf = QUrl::fromUserInput( u.queryItemValue( "jspf" ) ); JSPFLoader* l = new JSPFLoader( true, this ); tDebug() << "Loading jspiff:" << jspf.toString(); l->load( jspf ); connect( l, SIGNAL( ok( Tomahawk::playlist_ptr ) ), ViewManager::instance(), SLOT( show( Tomahawk::playlist_ptr ) ) ); return true; } } if ( cmdType == "playlist" ) { return handlePlaylistCommand( u ); } else if ( cmdType == "collection" ) { return handleCollectionCommand( u ); } else if ( cmdType == "queue" ) { return handleQueueCommand( u ); } else if ( cmdType == "station" ) { return handleStationCommand( u ); } else if ( cmdType == "autoplaylist" ) { return handleAutoPlaylistCommand( u ); } else if ( cmdType == "search" ) { return handleSearchCommand( u ); } else if ( cmdType == "play" ) { return handlePlayCommand( u ); } else if ( cmdType == "bookmark" ) { return handlePlayCommand( u ); } else if ( cmdType == "open" ) { return handleOpenCommand( u ); } else if ( cmdType == "view" ) { return handleViewCommand( u ); } else { tLog() << "Tomahawk link not supported, command not known!" << cmdType << u.path(); return false; } } else { tLog() << "Not a tomahawk:// link!"; return false; } }