summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-02-17 06:18:46 +0100
committerArno <arno@disconnect.de>2018-02-17 06:27:43 +0100
commit4df6ecda7306baae1b2c2252c8f1818762436504 (patch)
tree21e77c0a6c043a8e5740373340eafd427d9ec763
parentd3439845817beb78b6036762ee42b428069e0482 (diff)
downloadBeetPlayer-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.
-rw-r--r--BeetPlayer.pro6
-rw-r--r--collectionartistsview.cpp69
-rw-r--r--collectionartistsview.h14
3 files changed, 87 insertions, 2 deletions
diff --git a/BeetPlayer.pro b/BeetPlayer.pro
index 7b7da0d..920f499 100644
--- a/BeetPlayer.pro
+++ b/BeetPlayer.pro
@@ -35,7 +35,8 @@ SOURCES += main.cpp\
helper.cpp \
webdownloader.cpp \
webradiodialog.cpp \
- collectionwidget.cpp
+ collectionwidget.cpp \
+ collectionartistsview.cpp
HEADERS += beetplayer.h \
configurationdialog.h \
@@ -47,7 +48,8 @@ HEADERS += beetplayer.h \
helper.h \
webdownloader.h \
webradiodialog.h \
- collectionwidget.h
+ collectionwidget.h \
+ collectionartistsview.h
LIBS += -ltag
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);
+ }
+ }
+ }
+}
diff --git a/collectionartistsview.h b/collectionartistsview.h
new file mode 100644
index 0000000..dc4732a
--- /dev/null
+++ b/collectionartistsview.h
@@ -0,0 +1,14 @@
+#ifndef COLLECTIONARTISTSVIEW_H
+#define COLLECTIONARTISTSVIEW_H
+
+#include "collectionwidget.h"
+
+class CollectionArtistsView : public CollectionWidget {
+ public:
+ CollectionArtistsView(QWidget *parent = nullptr);
+
+ public slots:
+ virtual void populate();
+};
+
+#endif // COLLECTIONARTISTSVIEW_H