diff options
author | Arno <arno@disconnect.de> | 2018-02-02 03:43:45 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2018-02-02 03:43:45 +0100 |
commit | fd217e0513d450fc78345d6b040eda7893d815a8 (patch) | |
tree | 45504ac927ad58b9a43251426aec84a8bad9058f /searchdialog.cpp | |
parent | 9dd407fe739e1ba469b17d2977feabe3130d4e57 (diff) | |
download | ShemovCleaner-fd217e0513d450fc78345d6b040eda7893d815a8.tar.gz ShemovCleaner-fd217e0513d450fc78345d6b040eda7893d815a8.tar.bz2 ShemovCleaner-fd217e0513d450fc78345d6b040eda7893d815a8.zip |
Show actors in SearchDialog
This should have been two commits, really. One for the actors, and
another one for the icon helper.
Helper::icon returns an QIcon with a circle in bg color and the char c.
Diffstat (limited to 'searchdialog.cpp')
-rw-r--r-- | searchdialog.cpp | 61 |
1 files changed, 44 insertions, 17 deletions
diff --git a/searchdialog.cpp b/searchdialog.cpp index cd329c9..38ae39a 100644 --- a/searchdialog.cpp +++ b/searchdialog.cpp @@ -12,6 +12,7 @@ #include <QSqlQuery> #include "searchdialog.h" +#include "helper.h" SearchDialog::SearchDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f){ //search bar @@ -151,36 +152,62 @@ void SearchDialog::doResultName(const QModelIndex &sel, int resType){ int seriesId = sel.data(IdRole).toInt(); QSqlDatabase db = QSqlDatabase::database("shemovdb"); QSqlQuery rQ(db); - QStringList items; + mDataM->clear(); + mDataM->setColumnCount(1); + QStandardItem *root = mDataM->invisibleRootItem(); if(resType == Title){ - rQ.prepare("SELECT series.tseries_name, seriesparts.iseriespart, seriesparts.tsubtitle FROM series, seriesparts WHERE series.iseries_id = :id AND seriesparts.iseries_id = series.iseries_id"); + rQ.prepare("SELECT series.tseries_name, seriesparts.iseriespart, seriesparts.iseriesparts_id, seriesparts.tsubtitle FROM series, seriesparts WHERE series.iseries_id = :id AND seriesparts.iseries_id = series.iseries_id"); + mDataM->setHeaderData(0, Qt::Horizontal, tr("Parts")); }else if(resType == Filename){ - rQ.prepare("SELECT series.tseries_name, seriesparts.iseriespart, seriesparts.tsubtitle FROM series, seriesparts WHERE seriesparts.iseriesparts_id = :id AND seriesparts.iseries_id = series.iseries_id"); + rQ.prepare("SELECT series.tseries_name, seriesparts.iseriespart, seriesparts.iseriesparts_id, seriesparts.tsubtitle FROM series, seriesparts WHERE seriesparts.iseriesparts_id = :id AND seriesparts.iseries_id = series.iseries_id"); + mDataM->setHeaderData(0, Qt::Horizontal, tr("Series")); } rQ.bindValue(":id", seriesId); rQ.exec(); while(rQ.next()){ int sPart = rQ.value(1).toInt(); - QString sub = rQ.value(2).toString(); - QString cur; + QString curDisp; if(sPart > 0){ - cur = QString("%1 - %2").arg(rQ.value(0).toString()).arg(sPart, 3, 10, QChar('0')); + curDisp = QString("%1 %2").arg(rQ.value(0).toString()).arg(sPart, 3, 10, QChar('0')); }else{ - cur = QString("%1 - %2").arg(rQ.value(0).toString()).arg(sub); + QString sub = rQ.value(3).toString(); + if(sub.isEmpty()){ + curDisp = QString("%1 - <no sub/part>").arg(rQ.value(0).toString()); + }else{ + curDisp = QString("%1 - %2").arg(rQ.value(0).toString()).arg(sub); + } } - items << cur; - } - std::sort(items.begin(), items.end()); - mDataV->setSortingEnabled(false); - mDataM->clear(); - mDataM->setColumnCount(1); - mDataM->setHeaderData(0, Qt::Horizontal, tr("Parts")); - QStandardItem *root = mDataM->invisibleRootItem(); - for(QString i : items){ - QStandardItem *cur = new QStandardItem(i); + QStandardItem *cur = new QStandardItem(curDisp); cur->setIcon(QIcon(":/butt_plug.png")); + cur->setData(rQ.value(2), IdRole); cur->setEditable(false); + doActors(cur); root->appendRow(cur); } mDataV->setSortingEnabled(true); + mResV->sortByColumn(0); +} + +void SearchDialog::doActors(QStandardItem *item){ + QStringList actors; + QIcon aIcon = Helper::icon(Qt::red, 'A'); + QSqlDatabase db = QSqlDatabase::database("shemovdb"); + QSqlQuery aQ(db); + aQ.prepare("SELECT actors.tactorname FROM seriesparts_actormap, actors WHERE seriesparts_actormap.iseriesparts_id = :id and seriesparts_actormap.iactors_id = actors.iactors_id ORDER by tactorname"); + aQ.bindValue(":id", item->data(IdRole)); + aQ.exec(); + while(aQ.next()){ + actors << aQ.value(0).toString(); + } + if(!actors.isEmpty()){ + QStandardItem *aItem = new QStandardItem(tr("actors")); + aItem->setEditable(false); + aItem->setIcon(aIcon); + for(QString a : actors){ + QStandardItem *curItem = new QStandardItem(a); + aItem->appendRow(curItem); + curItem->setEditable(false); + } + item->appendRow(aItem); + } } |