diff options
author | Arno <arno@disconnect.de> | 2017-02-25 05:16:57 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2017-02-25 05:16:57 +0100 |
commit | 0e883223783a0e3ee5bc83f4ffeb4acc0beed1aa (patch) | |
tree | dfa3c2371c7c3984bcf6aa68cb8f3410232ce59a /playerwidget.cpp | |
parent | f4c0a82668965016ccbaa3f928090814976aa438 (diff) | |
download | BeetPlayer-0e883223783a0e3ee5bc83f4ffeb4acc0beed1aa.tar.gz BeetPlayer-0e883223783a0e3ee5bc83f4ffeb4acc0beed1aa.tar.bz2 BeetPlayer-0e883223783a0e3ee5bc83f4ffeb4acc0beed1aa.zip |
Populate albums
Diffstat (limited to 'playerwidget.cpp')
-rw-r--r-- | playerwidget.cpp | 52 |
1 files changed, 50 insertions, 2 deletions
diff --git a/playerwidget.cpp b/playerwidget.cpp index 07ad1ba..b238f62 100644 --- a/playerwidget.cpp +++ b/playerwidget.cpp @@ -8,6 +8,7 @@ #include <QTreeView> #include <QSplitter> #include <QStandardItemModel> +#include <QStandardItem> #include <QSortFilterProxyModel> #include <QHBoxLayout> #include <QVBoxLayout> @@ -50,6 +51,7 @@ void PlayerWidget::setupGui(){ mViewModel = new QStandardItemModel; mViewProxy = new QSortFilterProxyModel; mViewProxy->setSourceModel(mViewModel); + mView->setModel(mViewProxy); //left widget QWidget *leftWidget = new QWidget; @@ -108,10 +110,11 @@ void PlayerWidget::setupGui(){ QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(splitter); setLayout(mainLayout); + refreshSort(); } void PlayerWidget::populateBy(QString selector){ - if(selector == tr("Artist")){ + if(selector == tr("Artists")){ populateByArtist(); } } @@ -121,5 +124,50 @@ void PlayerWidget::refreshSort(){ } void PlayerWidget::populateByArtist(){ - + //prepare Queries + QSqlDatabase db = QSqlDatabase::database("beetplayerdb"); + QSqlQuery artistsQ(db); + artistsQ.prepare("SELECT iartists_id, tartists_name FROM artists ORDER BY tartists_name ASC"); + QSqlQuery albumQ(db); + albumQ.prepare("SELECT ialbums_id, talbum_name, siyear FROM albums WHERE iartists_id = :aid ORDER BY talbum_name ASC"); + QSqlQuery songQ(db); + songQ.prepare("SELECT sipos, ttitle, tfullpath FROM songs WHERE ialbums_id = :alid ORDER BY sipos ASC"); + + //reset view+model + mView->setSortingEnabled(false); + mViewModel->clear(); + mViewModel->setHorizontalHeaderLabels(QStringList() << tr("Name")); + QStandardItem *root = mViewModel->invisibleRootItem(); + + //read data + artistsQ.exec(); + while(artistsQ.next()){ + QStandardItem *curArtist = new QStandardItem; + QString artistText = QString(tr("%1 - %2")).arg(QString("🅐")).arg(artistsQ.value(1).toString()); //I guess this will bite me! + curArtist->setText(artistText); + curArtist->setData(Artist, TypeRole); + curArtist->setData(artistsQ.value(0).toInt(), IdRole); + root->appendRow(curArtist); + albumQ.bindValue(":aid", artistsQ.value(0)); + albumQ.exec(); + while(albumQ.next()){ + QStandardItem *curAlbum = new QStandardItem; + QString albumText = QString(tr("%1 - %2 (%3)")).arg(QChar(0x29BE)).arg(albumQ.value(1).toString()).arg(QString::number(albumQ.value(2).toInt())); + curAlbum->setText(albumText); + curAlbum->setData(Album, TypeRole); + curAlbum->setData(albumQ.value(0), IdRole); + curArtist->appendRow(curAlbum); + songQ.bindValue(":alid", albumQ.value(0)); + songQ.exec(); + while(songQ.next()){ + QStandardItem *curSong = new QStandardItem; + QString songText = QString(tr("%1 %2 - %3")).arg(QChar(0x266C)).arg(songQ.value(0).toInt(), 3, 10, QChar('0')).arg(songQ.value(1).toString()); + curSong->setText(songText); + curSong->setData(Song, TypeRole); + curSong->setData(songQ.value(0), IdRole); + curSong->setData(songQ.value(2), FullPathRole); + curAlbum->appendRow(curSong); + } + } + } } |