summaryrefslogtreecommitdiffstats
path: root/collectionfavoritesview.cpp
blob: d57d0d2d19a5f6401ce66f4cb1d6e6440b93cf15 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QStandardItem>

#include "collectionfavoritesview.h"

CollectionFavoritesView::CollectionFavoritesView(QWidget *parent) : CollectionWidget(parent) {
}

void CollectionFavoritesView::populate(){
    model()->clear();
    model()->setHorizontalHeaderLabels(headers());
    QSqlDatabase db = QSqlDatabase::database("beetplayerdb");
    QStandardItem *root = model()->invisibleRootItem();
    QIcon songIcon(":/song.png");
    QSqlQuery favQ2(db);
    favQ2.prepare("SELECT sipos, tfullpath, igenres_id, artists.tartists_name, albums.talbum_name, ilength from songs, artists, albums WHERE songs.ttitle = :song AND albums.talbum_name = :album AND albums.ialbums_id = songs.ialbums_id AND artists.tartists_name = :artist AND artists.iartists_id = songs.iartists_id");
    QSqlQuery favQ1("SELECT tartist_name, talbum_name, ttitle FROM persistent_favorites", db);
    while(favQ1.next()){
        QStandardItem *curSong = new QStandardItem;
        curSong->setEditable(false);
        curSong->setFont(QFont("courier"));
        favQ2.bindValue(":song", favQ1.value(2));
        favQ2.bindValue(":album", favQ1.value(1));
        favQ2.bindValue(":artist", favQ1.value(0));
        favQ2.exec();
        favQ2.next();
        QFontMetrics fm(QFont("courier"));
        QString songTitle = fm.elidedText(favQ1.value(2).toString(), Qt::ElideRight, fm.width('X') * 28);
        QString songText = QString("%1 - %2 - %3").arg(favQ1.value(0).toString(), -25).arg(songTitle, -30).arg(favQ1.value(1).toString());
        curSong->setText(songText);
        curSong->setIcon(songIcon);
        curSong->setData(Song, TypeRole);
        curSong->setData(favQ2.value(0), IdRole);
        curSong->setData(favQ2.value(1), FullPathRole);
        curSong->setData(favQ2.value(2), GenreRole);
        curSong->setData(favQ1.value(0), ArtistRole);
        curSong->setData(favQ1.value(2), TitleRole);
        curSong->setData(favQ1.value(1), AlbumRole);
        curSong->setData(favQ2.value(5), LengthRole);
        root->appendRow(QList<QStandardItem*>() << curSong);
    }
}