diff options
author | Arno <arno@disconnect.de> | 2018-02-17 06:42:52 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2018-02-17 06:42:52 +0100 |
commit | 691bbc7b764f38c31c82bfa9527a8bfd35713942 (patch) | |
tree | 326e79b2280f92660462791f4c8555cc406dc531 /collectionalbumsview.cpp | |
parent | 4df6ecda7306baae1b2c2252c8f1818762436504 (diff) | |
download | BeetPlayer-691bbc7b764f38c31c82bfa9527a8bfd35713942.tar.gz BeetPlayer-691bbc7b764f38c31c82bfa9527a8bfd35713942.tar.bz2 BeetPlayer-691bbc7b764f38c31c82bfa9527a8bfd35713942.zip |
New class: CollectionAlbumsView
Basically the same as populateByAlbum, just wrapped in a shiny, new
CollectionWidget.
Diffstat (limited to 'collectionalbumsview.cpp')
-rw-r--r-- | collectionalbumsview.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/collectionalbumsview.cpp b/collectionalbumsview.cpp new file mode 100644 index 0000000..af71166 --- /dev/null +++ b/collectionalbumsview.cpp @@ -0,0 +1,58 @@ +#include <QSqlDatabase> +#include <QSqlQuery> +#include <QStandardItem> + +#include "collectionalbumsview.h" + +CollectionAlbumsView::CollectionAlbumsView(QWidget *parent) : CollectionWidget(parent) { +} + +void CollectionAlbumsView::populate(){ + 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<QString, int> 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); + 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); + } +} |