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 | |
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.
-rw-r--r-- | helper.cpp | 19 | ||||
-rw-r--r-- | helper.h | 2 | ||||
-rw-r--r-- | searchdialog.cpp | 61 | ||||
-rw-r--r-- | searchdialog.h | 2 |
4 files changed, 67 insertions, 17 deletions
@@ -136,6 +136,25 @@ namespace Helper { return retval; } + const QIcon icon(const QColor &bg, const QChar c){ + QImage img(32, 32, QImage::Format_ARGB32); + img.fill(QColor(0, 0, 0, 0)); + QPainter *p = new QPainter(&img); + p->setBrush(bg); + p->setRenderHint(QPainter::Antialiasing); + p->setRenderHint(QPainter::TextAntialiasing); + p->setRenderHint(QPainter::SmoothPixmapTransform); + QFont f("courier new"); + f.setPixelSize(32); + f.setBold(true); + p->setPen(Qt::white); + p->drawEllipse(img.rect()); + p->setFont(f); + p->drawText(img.rect(), Qt::AlignCenter, c); + delete p; + return QIcon(QPixmap::fromImage(img)); + } + Duration::Duration() : mHours(0), mMinutes(0), mSeconds(0) {} Duration::Duration(qint64 seconds){ @@ -4,6 +4,7 @@ #include <QString> #include <QJsonDocument> #include <QPixmap> +#include <QIcon> namespace Helper { const QString md5Sum(const QString &path); @@ -11,6 +12,7 @@ namespace Helper { const QPixmap preview(const QString &file); const QImage snapshot(const QString &file, int offset); const QString appDataDir(); + const QIcon icon(const QColor &bg, const QChar c); class Duration { public: Duration(); 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); + } } diff --git a/searchdialog.h b/searchdialog.h index ac4f73d..6cb9212 100644 --- a/searchdialog.h +++ b/searchdialog.h @@ -7,6 +7,7 @@ class QLineEdit; class QComboBox; class QTreeView; class QStandardItemModel; +class QStandardItem; class SearchDialog : public QDialog { Q_OBJECT @@ -23,6 +24,7 @@ class SearchDialog : public QDialog { void doResultName(const QModelIndex &sel, int resType); private: + void doActors(QStandardItem *item); QLineEdit *mSearch; QComboBox *mTypeSel; QTreeView *mResV; |