summaryrefslogtreecommitdiffstats
path: root/searchdialog.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-02-02 03:43:45 +0100
committerArno <arno@disconnect.de>2018-02-02 03:43:45 +0100
commitfd217e0513d450fc78345d6b040eda7893d815a8 (patch)
tree45504ac927ad58b9a43251426aec84a8bad9058f /searchdialog.cpp
parent9dd407fe739e1ba469b17d2977feabe3130d4e57 (diff)
downloadShemovCleaner-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.cpp61
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);
+ }
}