diff options
-rw-r--r-- | BeetPlayer.pro | 6 | ||||
-rw-r--r-- | collectionartistsview.cpp | 69 | ||||
-rw-r--r-- | collectionartistsview.h | 14 |
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 |