void TreeProxyModel::setFilter( const QString& pattern ) { emit filteringStarted(); m_filter = pattern; m_albumsFilter.clear(); if ( m_artistsFilterCmd ) { disconnect( dynamic_cast< QObject* >( m_artistsFilterCmd ), SIGNAL( artists( QList<Tomahawk::artist_ptr> ) ), this, SLOT( onFilterArtists( QList<Tomahawk::artist_ptr> ) ) ); m_artistsFilterCmd = 0; } if ( m_filter.isEmpty() ) { filterFinished(); } else { Tomahawk::ArtistsRequest* cmd = m_model->collection()->requestArtists(); cmd->setFilter( pattern ); m_artistsFilterCmd = cmd; connect( dynamic_cast< QObject* >( cmd ), SIGNAL( artists( QList<Tomahawk::artist_ptr> ) ), SLOT( onFilterArtists( QList<Tomahawk::artist_ptr> ) ) ); cmd->enqueue(); } }
void TreeProxyModel::newFilterFromPlaylistInterface( const QString &pattern ) { emit filteringStarted(); m_filter = pattern; m_albumsFilter.clear(); if ( m_artistsFilterCmd ) { disconnect( m_artistsFilterCmd, SIGNAL( artists( QList<Tomahawk::artist_ptr> ) ), this, SLOT( onFilterArtists( QList<Tomahawk::artist_ptr> ) ) ); m_artistsFilterCmd = 0; } if ( m_filter.isEmpty() ) { filterFinished(); } else { DatabaseCommand_AllArtists* cmd = new DatabaseCommand_AllArtists( m_model->collection() ); cmd->setFilter( pattern ); m_artistsFilterCmd = cmd; connect( cmd, SIGNAL( artists( QList<Tomahawk::artist_ptr> ) ), SLOT( onFilterArtists( QList<Tomahawk::artist_ptr> ) ) ); Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( cmd ) ); } }
void QSpotifyAlbumBrowse::processData() { if (m_sp_albumbrowse) { if (sp_albumbrowse_error(m_sp_albumbrowse) != SP_ERROR_OK) return; m_albumTracks->clear(); int c = sp_albumbrowse_num_tracks(m_sp_albumbrowse); for (int i = 0; i < c; ++i) { if (auto track = sp_albumbrowse_track(m_sp_albumbrowse, i)) { auto qtrack = QSpotifyCacheManager::instance().getTrack(track); m_albumTracks->appendRow(qtrack); connect(qtrack.get(), SIGNAL(isStarredChanged()), this, SIGNAL(isStarredChanged())); connect(QSpotifySession::instance()->user()->starredList(), SIGNAL(tracksAdded(QVector<sp_track*>)), qtrack.get(), SLOT(onStarredListTracksAdded(QVector<sp_track*>))); connect(QSpotifySession::instance()->user()->starredList(), SIGNAL(tracksRemoved(QVector<sp_track*>)), qtrack.get(), SLOT(onStarredListTracksRemoved(QVector<sp_track*>))); if (qtrack->artists() != m_album->artist()) m_hasMultipleArtists = true; if (i == 0) { m_artistObject = qtrack->artistObject(); } } } m_review = QString::fromUtf8(sp_albumbrowse_review(m_sp_albumbrowse)).split(QLatin1Char('\n'), QString::SkipEmptyParts); if (m_review.isEmpty()) m_review << QLatin1String("No review available"); m_busy = false; emit busyChanged(); emit tracksChanged(); } }
void MainWindow::searchComplete() { qDebug() << "completed!"; std::vector< spotify::artist_ptr > artists(search_->artists()); for (size_t i = 0; i < artists.size(); ++i) { qDebug() << "name: " << artists[i]->name(); } }
int MediaLibrary::listAlbums( int listQuery, const medialibrary::QueryParameters* paramsPtr, const char* pattern, uint32_t nbItems, uint32_t offset, va_list args ) { auto album = m_ml->album( va_arg( args, int64_t ) ); if ( album == nullptr ) return VLC_EGENERIC; switch ( listQuery ) { case VLC_ML_LIST_ALBUM_TRACKS: case VLC_ML_COUNT_ALBUM_TRACKS: { medialibrary::Query<medialibrary::IMedia> query; if ( pattern != nullptr ) query = album->searchTracks( pattern, paramsPtr ); else query = album->tracks( paramsPtr ); if ( query == nullptr ) return VLC_EGENERIC; switch ( listQuery ) { case VLC_ML_LIST_ALBUM_TRACKS: *va_arg( args, vlc_ml_media_list_t**) = ml_convert_list<vlc_ml_media_list_t, vlc_ml_media_t>( query->items( nbItems, offset ) ); return VLC_SUCCESS; case VLC_ML_COUNT_ALBUM_TRACKS: *va_arg( args, size_t* ) = query->count(); return VLC_SUCCESS; default: vlc_assert_unreachable(); } } case VLC_ML_LIST_ALBUM_ARTISTS: case VLC_ML_COUNT_ALBUM_ARTISTS: { auto query = album->artists( paramsPtr ); if ( query == nullptr ) return VLC_EGENERIC; switch ( listQuery ) { case VLC_ML_LIST_ALBUM_ARTISTS: *va_arg( args, vlc_ml_artist_list_t**) = ml_convert_list<vlc_ml_artist_list_t, vlc_ml_artist_t>( query->items( nbItems, offset ) ); return VLC_SUCCESS; case VLC_ML_COUNT_ALBUM_ARTISTS: *va_arg( args, size_t* ) = query->count(); return VLC_SUCCESS; default: vlc_assert_unreachable(); } } default: vlc_assert_unreachable(); } }
void TreeProxyModel::setFilter( const QString& pattern ) { emit filteringStarted(); m_filter = pattern; beginResetModel(); m_albumsFilter.clear(); endResetModel(); if ( m_artistsFilterCmd ) { disconnect( dynamic_cast< QObject* >( m_artistsFilterCmd ), SIGNAL( artists( QList<Tomahawk::artist_ptr> ) ), this, SLOT( onFilterArtists( QList<Tomahawk::artist_ptr> ) ) ); delete m_artistsFilterCmd; m_artistsFilterCmd = 0; } if ( m_filter.isEmpty() ) { filterFinished(); } else { Tomahawk::ArtistsRequest* cmd = 0; if ( !m_model->collection().isNull() ) cmd = m_model->collection()->requestArtists(); else cmd = new Tomahawk::DatabaseCommand_AllArtists(); //for SuperCollection, TODO: replace with a proper proxy-ArtistsRequest cmd->setFilter( pattern ); m_artistsFilterCmd = cmd; connect( dynamic_cast< QObject* >( cmd ), SIGNAL( artists( QList<Tomahawk::artist_ptr> ) ), SLOT( onFilterArtists( QList<Tomahawk::artist_ptr> ) ) ); cmd->enqueue(); } }
void DatabaseResolver::resolve( const Tomahawk::query_ptr& query ) { Tomahawk::DatabaseCommand_Resolve* cmd = new Tomahawk::DatabaseCommand_Resolve( query ); connect( cmd, SIGNAL( results( Tomahawk::QID, QList< Tomahawk::result_ptr > ) ), SLOT( gotResults( Tomahawk::QID, QList< Tomahawk::result_ptr > ) ), Qt::QueuedConnection ); connect( cmd, SIGNAL( albums( Tomahawk::QID, QList< Tomahawk::album_ptr > ) ), SLOT( gotAlbums( Tomahawk::QID, QList< Tomahawk::album_ptr > ) ), Qt::QueuedConnection ); connect( cmd, SIGNAL( artists( Tomahawk::QID, QList< Tomahawk::artist_ptr > ) ), SLOT( gotArtists( Tomahawk::QID, QList< Tomahawk::artist_ptr > ) ), Qt::QueuedConnection ); Tomahawk::Database::instance()->enqueue( Tomahawk::dbcmd_ptr( cmd ) ); }
void TreeProxyModel::filterFinished() { if ( m_artistsFilterCmd ) { disconnect( dynamic_cast< QObject* >( m_artistsFilterCmd ), SIGNAL( artists( QList<Tomahawk::artist_ptr> ) ), this, SLOT( onFilterArtists( QList<Tomahawk::artist_ptr> ) ) ); delete m_artistsFilterCmd; m_artistsFilterCmd = 0; } setFilterRegExp( m_filter ); emit filterChanged( m_filter ); emit filteringFinished(); }
void AlbumCoverManager::Reset() { EnableCoversButtons(); ui_->artists->clear(); new QListWidgetItem(all_artists_icon_, tr("All artists"), ui_->artists, All_Artists); new QListWidgetItem(artist_icon_, tr("Various artists"), ui_->artists, Various_Artists); QStringList artists(library_backend_->GetAllArtistsWithAlbums()); qStableSort(artists.begin(), artists.end(), CompareNocase); for (const QString& artist : artists) { if (artist.isEmpty()) continue; new QListWidgetItem(artist_icon_, artist, ui_->artists, Specific_Artist); } }
void DatabaseCommand_AllArtists::exec( DatabaseImpl* dbi ) { TomahawkSqlQuery query = dbi->newquery(); QList<Tomahawk::artist_ptr> al; QString orderToken, sourceToken; switch ( m_sortOrder ) { case 0: break; case ModificationTime: orderToken = "file.mtime"; } if ( !m_collection.isNull() ) sourceToken = QString( "AND file.source %1 " ).arg( m_collection->source()->isLocal() ? "IS NULL" : QString( "= %1" ).arg( m_collection->source()->id() ) ); QString sql = QString( "SELECT DISTINCT artist.id, artist.name " "FROM artist, file, file_join " "WHERE file.id = file_join.file " "AND file_join.artist = artist.id " "%1 %2 %3 %4" ).arg( sourceToken ) .arg( m_sortOrder > 0 ? QString( "ORDER BY %1" ).arg( orderToken ) : QString() ) .arg( m_sortDescending ? "DESC" : QString() ) .arg( m_amount > 0 ? QString( "LIMIT 0, %1" ).arg( m_amount ) : QString() ); query.prepare( sql ); query.exec(); while( query.next() ) { Tomahawk::artist_ptr artist = Tomahawk::Artist::get( query.value( 0 ).toUInt(), query.value( 1 ).toString() ); al << artist; } if ( al.count() ) emit artists( al ); emit done(); }