#include #include #include #include #include "collectionalbumsview.h" CollectionAlbumsView::CollectionAlbumsView(QWidget *parent) : CollectionWidget(parent) { } void CollectionAlbumsView::populate(){ disableSorting(); model()->clear(); model()->setHorizontalHeaderLabels(headers()); QSqlDatabase db = QSqlDatabase::database("beetplayerdb"); QStandardItem *root = model()->invisibleRootItem(); QIcon albumIcon(":/album.png"); QIcon songIcon(":/song.png"); QSqlQuery albumQ("SELECT DISTINCT(ialbums_id), talbum_name, siyear FROM albums ORDER BY talbum_name", db); while(albumQ.next()){ QHash artistcount; QStandardItem *curAlbum = new QStandardItem; curAlbum->setEditable(false); curAlbum->setFont(QFont("courier")); curAlbum->setIcon(albumIcon); curAlbum->setData(Album, TypeRole); curAlbum->setData(albumQ.value(0), IdRole); curAlbum->setData(albumQ.value(1), AlbumRole); root->appendRow(curAlbum); QSqlQuery songQ = QSqlQuery(db); songQ.prepare("SELECT sipos, ttitle, tfullpath, igenres_id, artists.tartists_name, albums.talbum_name, ilength FROM songs, artists, albums WHERE albums.ialbums_id = :id AND songs.iartists_id = artists.iartists_id and songs.ialbums_id = albums.ialbums_id ORDER BY sipos"); songQ.bindValue(":id", albumQ.value(0)); songQ.exec(); while(songQ.next()){ QStandardItem *curSong = new QStandardItem; curSong->setEditable(false); curSong->setFont(QFont("courier")); QString songText = QString(tr("%1 - %2 - %3")).arg(songQ.value(0).toInt(), 3, 10, QChar('0')).arg(songQ.value(1).toString()).arg(songQ.value(4).toString()); curSong->setText(songText); curSong->setIcon(songIcon); curSong->setData(Song, TypeRole); curSong->setData(songQ.value(0), IdRole); curSong->setData(songQ.value(2), FullPathRole); curSong->setData(songQ.value(3), GenreRole); curSong->setData(songQ.value(4), ArtistRole); ++artistcount[songQ.value(4).toString()]; curSong->setData(songQ.value(1), TitleRole); curSong->setData(songQ.value(5), AlbumRole); curSong->setData(songQ.value(6), LengthRole); curAlbum->appendRow(curSong); } QString albumText; if(artistcount.keys().count() > 1){ albumText = QString(tr("%1 - VA - (%2)")).arg(albumQ.value(1).toString()).arg(QString::number(albumQ.value(2).toInt())); }else{ albumText = QString(tr("%1 - %2 - (%3)")).arg(albumQ.value(1).toString()).arg(artistcount.keys().first()). arg(QString::number(albumQ.value(2).toInt())); } curAlbum->setText(albumText); } enableSorting(); }