void PlaylistFeature::buildPlaylistList() { m_playlistList.clear(); QString queryString = QString( "CREATE TEMPORARY VIEW IF NOT EXISTS PlaylistsCountsDurations " "AS SELECT " " Playlists.id as id, " " Playlists.name as name, " " COUNT(library.id) as count, " " SUM(library.duration) as durationSeconds " "FROM Playlists " "LEFT JOIN PlaylistTracks ON PlaylistTracks.playlist_id = Playlists.id " "LEFT JOIN library ON PlaylistTracks.track_id = library.id " "WHERE Playlists.hidden = 0 " "GROUP BY Playlists.id;"); QSqlQuery query(m_pTrackCollection->getDatabase()); if (!query.exec(queryString)) { LOG_FAILED_QUERY(query); } // Setup the sidebar playlist model QSqlTableModel playlistTableModel(this, m_pTrackCollection->getDatabase()); playlistTableModel.setTable("PlaylistsCountsDurations"); playlistTableModel.setSort(playlistTableModel.fieldIndex("name"), Qt::AscendingOrder); playlistTableModel.select(); while (playlistTableModel.canFetchMore()) { playlistTableModel.fetchMore(); } QSqlRecord record = playlistTableModel.record(); int nameColumn = record.indexOf("name"); int idColumn = record.indexOf("id"); int countColumn = record.indexOf("count"); int durationColumn = record.indexOf("durationSeconds"); for (int row = 0; row < playlistTableModel.rowCount(); ++row) { int id = playlistTableModel.data( playlistTableModel.index(row, idColumn)).toInt(); QString name = playlistTableModel.data( playlistTableModel.index(row, nameColumn)).toString(); int count = playlistTableModel.data( playlistTableModel.index(row, countColumn)).toInt(); int duration = playlistTableModel.data( playlistTableModel.index(row, durationColumn)).toInt(); m_playlistList.append(qMakePair(id, QString("%1 (%2) %3") .arg(name, QString::number(count), Time::formatSeconds(duration, false)))); } }
void SetlogFeature::buildPlaylistList() { m_playlistList.clear(); // Setup the sidebar playlist model QSqlTableModel playlistTableModel(this, m_pTrackCollection->getDatabase()); playlistTableModel.setTable("Playlists"); playlistTableModel.setFilter("hidden=2"); // PLHT_SET_LOG playlistTableModel.setSort(playlistTableModel.fieldIndex("id"), Qt::AscendingOrder); playlistTableModel.select(); while (playlistTableModel.canFetchMore()) { playlistTableModel.fetchMore(); } QSqlRecord record = playlistTableModel.record(); int nameColumn = record.indexOf("name"); int idColumn = record.indexOf("id"); for (int row = 0; row < playlistTableModel.rowCount(); ++row) { int id = playlistTableModel.data( playlistTableModel.index(row, idColumn)).toInt(); QString name = playlistTableModel.data( playlistTableModel.index(row, nameColumn)).toString(); m_playlistList.append(qMakePair(id, name)); } }