summaryrefslogtreecommitdiffstats
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
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.
-rw-r--r--BeetPlayer.pro6
-rw-r--r--collectionalbumsview.cpp58
-rw-r--r--collectionalbumsview.h14
3 files changed, 76 insertions, 2 deletions
diff --git a/BeetPlayer.pro b/BeetPlayer.pro
index 920f499..4495107 100644
--- a/BeetPlayer.pro
+++ b/BeetPlayer.pro
@@ -36,7 +36,8 @@ SOURCES += main.cpp\
webdownloader.cpp \
webradiodialog.cpp \
collectionwidget.cpp \
- collectionartistsview.cpp
+ collectionartistsview.cpp \
+ collectionalbumsview.cpp
HEADERS += beetplayer.h \
configurationdialog.h \
@@ -49,7 +50,8 @@ HEADERS += beetplayer.h \
webdownloader.h \
webradiodialog.h \
collectionwidget.h \
- collectionartistsview.h
+ collectionartistsview.h \
+ collectionalbumsview.h
LIBS += -ltag
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);
+ }
+}
diff --git a/collectionalbumsview.h b/collectionalbumsview.h
new file mode 100644
index 0000000..1e8187e
--- /dev/null
+++ b/collectionalbumsview.h
@@ -0,0 +1,14 @@
+#ifndef COLLECTIONALBUMSVIEW_H
+#define COLLECTIONALBUMSVIEW_H
+
+#include "collectionwidget.h"
+
+class CollectionAlbumsView : public CollectionWidget {
+ public:
+ CollectionAlbumsView(QWidget *parent = nullptr);
+
+ public slots:
+ virtual void populate();
+};
+
+#endif // COLLECTIONALBUMSVIEW_H