summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2020-07-25 06:45:25 +0200
committerArno <arno@disconnect.de>2020-07-25 06:45:25 +0200
commit87bc6db7e6102b6af5d2d1f0115ea434f251f25a (patch)
tree2e5004cf1f4d983f4f564603f7064051b06edcac
parent53c341418768575801fabdcdc1272a4bdac18162 (diff)
downloadSheMov-87bc6db7e6102b6af5d2d1f0115ea434f251f25a.tar.gz
SheMov-87bc6db7e6102b6af5d2d1f0115ea434f251f25a.tar.bz2
SheMov-87bc6db7e6102b6af5d2d1f0115ea434f251f25a.zip
Add genres to actor in enhanced search dialog
Get all genres for the current actor and add them as child.
-rw-r--r--searchdialog.cpp23
-rw-r--r--searchdialog.h2
2 files changed, 25 insertions, 0 deletions
diff --git a/searchdialog.cpp b/searchdialog.cpp
index d14a61a..8266622 100644
--- a/searchdialog.cpp
+++ b/searchdialog.cpp
@@ -199,12 +199,35 @@ void ActorsAndMore::searchActor(const QString &actor){
cur->setIcon(icon);
cur->setData(actorQ.value(1), IdRole);
cur->setEditable(false);
+ getGenresForActor(cur);
root->appendRow(cur);
}
mResultView->setSortingEnabled(true);
mResultView->sortByColumn(0, Qt::AscendingOrder);
}
+void ActorsAndMore::getGenresForActor(QStandardItem *actorItem){
+ QStringList res;
+ QIcon icon = SmGlobals::instance()->iconFor("genre");
+ QSqlDatabase db = QSqlDatabase::database("treedb");
+ QSqlQuery genreQ(db);
+ genreQ.prepare("SELECT DISTINCT(genres.tgenrename) FROM genres, seriesparts, seriesparts_actormap, seriesparts_genremap WHERE seriesparts_actormap.iseriesparts_id = seriesparts.iseriesparts_id AND seriesparts.iseriesparts_id = seriesparts_genremap.iseriesparts_id AND seriesparts_genremap.igenres_id = genres.igenres_id AND seriesparts_actormap.iactors_id = :id ORDER BY genres.tgenrename");
+ genreQ.bindValue(":id", actorItem->data(IdRole));
+ genreQ.exec();
+ while(genreQ.next()){
+ res << genreQ.value(0).toString();
+ }
+ if(!res.isEmpty()){
+ for(QString g : res){
+ QStandardItem *cur = new QStandardItem(g);
+ cur->setIcon(icon);
+ cur->setEditable(false);
+ cur->setData(actorItem->data(IdRole), IdRole);
+ actorItem->appendRow(cur);
+ }
+ }
+}
+
SearchDialog::SearchDialog(QWidget *parent, Qt::WindowFlags flags) : QDialog(parent, flags) {
QHBoxLayout *gbLayout = new QHBoxLayout;
QGroupBox *metaFnGb = new QGroupBox(tr("Metadata and Filenames"));
diff --git a/searchdialog.h b/searchdialog.h
index 4a387d4..9e2f869 100644
--- a/searchdialog.h
+++ b/searchdialog.h
@@ -20,6 +20,7 @@ class SmTreeItem;
class QTreeView;
class QSortFilterProxyModel;
class QStandardItemModel;
+class QStandardItem;
class FilenamesAndMetadata : public QWidget {
Q_OBJECT
@@ -53,6 +54,7 @@ class ActorsAndMore : public QWidget {
private:
void searchActor(const QString &actor);
+ void getGenresForActor(QStandardItem *actorItem);
QComboBox *mTypeSel;
QLineEdit *mSearch;
QStandardItemModel *mResultModel;