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 | |
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.
-rw-r--r-- | BeetPlayer.pro | 6 | ||||
-rw-r--r-- | collectionalbumsview.cpp | 58 | ||||
-rw-r--r-- | collectionalbumsview.h | 14 |
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 |