summaryrefslogtreecommitdiffstats
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
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.
-rw-r--r--helper.cpp19
-rw-r--r--helper.h2
-rw-r--r--searchdialog.cpp61
-rw-r--r--searchdialog.h2
4 files changed, 67 insertions, 17 deletions
diff --git a/helper.cpp b/helper.cpp
index 502bfac..2dafaa4 100644
--- a/helper.cpp
+++ b/helper.cpp
@@ -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){
diff --git a/helper.h b/helper.h
index 7c4eece..6798180 100644
--- a/helper.h
+++ b/helper.h
@@ -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;