diff options
author | Arno <arno@disconnect.de> | 2017-09-22 13:54:18 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2017-09-22 13:54:18 +0200 |
commit | 3b6a0ff452485a501787c38f1716e4094902e5ea (patch) | |
tree | 2fc7fe18af32188a31a17a65818f821c2e9846da /playerwidget.cpp | |
parent | ff7e948a9494b82ac3daae00e2c35675a2bb7233 (diff) | |
download | BeetPlayer-3b6a0ff452485a501787c38f1716e4094902e5ea.tar.gz BeetPlayer-3b6a0ff452485a501787c38f1716e4094902e5ea.tar.bz2 BeetPlayer-3b6a0ff452485a501787c38f1716e4094902e5ea.zip |
Fix display of Favorites
Looks like one Query is not enough...
Diffstat (limited to 'playerwidget.cpp')
-rw-r--r-- | playerwidget.cpp | 49 |
1 files changed, 34 insertions, 15 deletions
diff --git a/playerwidget.cpp b/playerwidget.cpp index ff5633d..60cbe8b 100644 --- a/playerwidget.cpp +++ b/playerwidget.cpp @@ -811,7 +811,7 @@ void PlayerWidget::doPopulateByFavorites(){ mView->setModel(mViewModel); mCurrentModel = mViewModel; mViewModel->clear(); - mViewModel->setHorizontalHeaderLabels(QStringList() << tr("Favorites")); + mViewModel->setHorizontalHeaderLabels(QStringList() << tr("Song") << tr("Album") << tr("Artist")); QStandardItem *root = mViewModel->invisibleRootItem(); emit message(QString(tr("Populating by Favorites... Please wait!"))); qApp->processEvents(); @@ -827,26 +827,45 @@ void PlayerWidget::populateByFavorites(QStandardItem *parent){ QSqlDatabase db = QSqlDatabase::database("beetplayerdb"); QStandardItem *root = parent; QIcon songIcon(":/song.png"); - QSqlQuery favQ(db); - favQ.prepare("SELECT sipos, persistent_favorites.ttitle, tfullpath, igenres_id, artists.tartists_name, albums.talbum_name, ilength FROM songs, artists, albums, persistent_favorites WHERE persistent_favorites.tartist_name = artists.tartists_name AND persistent_favorites.talbum_name = albums.talbum_name AND persistent_favorites.ttitle = songs.ttitle ORDER BY tartists_name"); - favQ.exec(); - while(favQ.next()){ + QSqlQuery favQ1(db); + favQ1.prepare("SELECT tartist_name, talbum_name, ttitle FROM persistent_favorites"); + QSqlQuery favQ2(db); + favQ2.prepare("SELECT sipos, tfullpath, igenres_id, artists.tartists_name, albums.talbum_name, ilength from songs, artists, albums WHERE songs.ttitle = :song AND albums.talbum_name = :album AND albums.ialbums_id = songs.ialbums_id AND artists.tartists_name = :artist AND artists.iartists_id = songs.iartists_id"); + favQ1.exec(); + while(favQ1.next()){ QStandardItem *curSong = new QStandardItem; + QStandardItem *curAlbum = new QStandardItem; + QStandardItem *curArtist = new QStandardItem; curSong->setEditable(false); curSong->setFont(QFont("courier")); - QString songText = QString(tr("%1 - %2 (%3)")).arg(favQ.value(4).toString()).arg(favQ.value(1).toString()).arg(favQ.value(5).toString()); - curSong->setText(songText); + favQ2.bindValue(":song", favQ1.value(2)); + favQ2.bindValue(":album", favQ1.value(1)); + favQ2.bindValue(":artist", favQ1.value(0)); + favQ2.exec(); + favQ2.next(); + curSong->setText(favQ1.value(2).toString()); curSong->setIcon(songIcon); curSong->setData(Song, TypeRole); - curSong->setData(favQ.value(0), IdRole); - curSong->setData(favQ.value(2), FullPathRole); - curSong->setData(favQ.value(3), GenreRole); - curSong->setData(favQ.value(4), ArtistRole); - curSong->setData(favQ.value(1), TitleRole); - curSong->setData(favQ.value(5), AlbumRole); - curSong->setData(favQ.value(6), LengthRole); - root->appendRow(curSong); + curSong->setData(favQ2.value(0), IdRole); + curSong->setData(favQ2.value(1), FullPathRole); + curSong->setData(favQ2.value(2), GenreRole); + curSong->setData(favQ1.value(0), ArtistRole); + curSong->setData(favQ1.value(2), TitleRole); + curSong->setData(favQ1.value(1), AlbumRole); + curSong->setData(favQ2.value(5), LengthRole); + curAlbum->setText(favQ1.value(1).toString()); + curAlbum->setFont(QFont("courier")); + curAlbum->setEditable(false); + curArtist->setText(favQ1.value(0).toString()); + curArtist->setFont(QFont("courier")); + curArtist->setEditable(false); + root->appendRow(QList<QStandardItem*>() << curSong << curAlbum << curArtist); } + mView->resizeColumnToContents(2); + mView->resizeColumnToContents(1); + mView->resizeColumnToContents(0); + mView->setSortingEnabled(true); + mView->sortByColumn(0, Qt::AscendingOrder); } void PlayerWidget::doModelChanged(){ |