summaryrefslogtreecommitdiffstats
path: root/collectionalbumsview.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-02-17 06:42:52 +0100
committerArno <arno@disconnect.de>2018-02-17 06:42:52 +0100
commit691bbc7b764f38c31c82bfa9527a8bfd35713942 (patch)
tree326e79b2280f92660462791f4c8555cc406dc531 /collectionalbumsview.cpp
parent4df6ecda7306baae1b2c2252c8f1818762436504 (diff)
downloadBeetPlayer-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.cpp58
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);
+ }
+}