diff options
author | Arno <arno@disconnect.de> | 2020-07-25 06:45:25 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2020-07-25 06:45:25 +0200 |
commit | 87bc6db7e6102b6af5d2d1f0115ea434f251f25a (patch) | |
tree | 2e5004cf1f4d983f4f564603f7064051b06edcac | |
parent | 53c341418768575801fabdcdc1272a4bdac18162 (diff) | |
download | SheMov-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.cpp | 23 | ||||
-rw-r--r-- | searchdialog.h | 2 |
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; |