diff options
author | Arno <arno@disconnect.de> | 2018-02-17 06:18:46 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2018-02-17 06:27:43 +0100 |
commit | 4df6ecda7306baae1b2c2252c8f1818762436504 (patch) | |
tree | 21e77c0a6c043a8e5740373340eafd427d9ec763 /collectionartistsview.cpp | |
parent | d3439845817beb78b6036762ee42b428069e0482 (diff) | |
download | BeetPlayer-4df6ecda7306baae1b2c2252c8f1818762436504.tar.gz BeetPlayer-4df6ecda7306baae1b2c2252c8f1818762436504.tar.bz2 BeetPlayer-4df6ecda7306baae1b2c2252c8f1818762436504.zip |
New class: CollectionArtistsView
Basically the same as populateByArtist, just wrapped in a shiny, new
CollectionWidget.
Diffstat (limited to 'collectionartistsview.cpp')
-rw-r--r-- | collectionartistsview.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/collectionartistsview.cpp b/collectionartistsview.cpp new file mode 100644 index 0000000..13b98b1 --- /dev/null +++ b/collectionartistsview.cpp @@ -0,0 +1,69 @@ +#include <QSqlDatabase> +#include <QSqlQuery> +#include <QStandardItem> + +#include "collectionartistsview.h" + +CollectionArtistsView::CollectionArtistsView(QWidget *parent) : CollectionWidget(parent) { +} + +void CollectionArtistsView::populate(){ + model()->clear(); + model()->setHorizontalHeaderLabels(headers()); + QSqlDatabase db = QSqlDatabase::database("beetplayerdb"); + QStandardItem *root = model()->invisibleRootItem(); + QSqlQuery albumQ(db); + albumQ.prepare("SELECT DISTINCT(songs.ialbums_id), talbum_name, siyear FROM songs, albums WHERE songs.iartists_id = :artistid AND songs.ialbums_id = albums.ialbums_id ORDER BY siyear ASC"); + QSqlQuery songQ(db); + songQ.prepare("SELECT sipos, ttitle, tfullpath, igenres_id, ilength FROM songs WHERE ialbums_id = :alid AND iartists_id = :arid ORDER BY sipos ASC"); + QIcon songIcon(":/song.png"); + QIcon albumIcon(":/album.png"); + QIcon artistIcon(":/artist.png"); + QSqlQuery artistsQ("SELECT iartists_id, tartists_name FROM artists ORDER BY tartists_name ASC", db); + while(artistsQ.next()){ + QStandardItem *curArtist = new QStandardItem; + curArtist->setEditable(false); + curArtist->setFont(QFont("courier")); + curArtist->setText(artistsQ.value(1).toString()); + curArtist->setIcon(artistIcon); + curArtist->setData(Artist, TypeRole); + curArtist->setData(artistsQ.value(0).toInt(), IdRole); + curArtist->setData(artistsQ.value(1), ArtistRole); + root->appendRow(curArtist); + albumQ.bindValue(":artistid", artistsQ.value(0)); + albumQ.exec(); + while(albumQ.next()){ + QStandardItem *curAlbum = new QStandardItem; + curAlbum->setEditable(false); + curAlbum->setFont(QFont("courier")); + QString albumText = QString(tr("%1 - %2")).arg(QString::number(albumQ.value(2).toInt())).arg(albumQ.value(1).toString()); + curAlbum->setText(albumText); + curAlbum->setIcon(albumIcon); + curAlbum->setData(Album, TypeRole); + curAlbum->setData(albumQ.value(0), IdRole); + curAlbum->setData(artistsQ.value(1), ArtistRole); + curAlbum->setData(albumQ.value(1), AlbumRole); + curArtist->appendRow(curAlbum); + songQ.bindValue(":alid", albumQ.value(0)); + songQ.bindValue(":arid", artistsQ.value(0)); + songQ.exec(); + while(songQ.next()){ + QStandardItem *curSong = new QStandardItem; + curSong->setEditable(false); + curSong->setFont(QFont("courier")); + QString songText = QString(tr("%1 - %2")).arg(songQ.value(0).toInt(), 3, 10, QChar('0')).arg(songQ.value(1).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(artistsQ.value(1), ArtistRole); + curSong->setData(songQ.value(1), TitleRole); + curSong->setData(songQ.value(4), LengthRole); + curSong->setData(albumQ.value(1), AlbumRole); + curAlbum->appendRow(curSong); + } + } + } +} |