From 53c341418768575801fabdcdc1272a4bdac18162 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 25 Jul 2020 06:30:46 +0200 Subject: Implement actor search --- searchdialog.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'searchdialog.cpp') diff --git a/searchdialog.cpp b/searchdialog.cpp index 65ade63..d14a61a 100644 --- a/searchdialog.cpp +++ b/searchdialog.cpp @@ -28,6 +28,7 @@ #include "smtreeitem.h" #include "smtreemodel.h" #include "searchdialog.h" +#include "smglobals.h" #include "helper.h" FilenamesAndMetadata::FilenamesAndMetadata(QWidget *parent, Qt::WindowFlags flags) : QWidget(parent, flags){ @@ -171,7 +172,37 @@ ActorsAndMore::ActorsAndMore(QWidget *parent, Qt::WindowFlags flags) : QWidget(p } void ActorsAndMore::doSearch(){ + QString input = mSearch->text(); + if(input.isEmpty()){ + return; + } + int searchType = mTypeSel->currentData().toInt(); + if(searchType == Actor){ + searchActor(input); + } +} +void ActorsAndMore::searchActor(const QString &actor){ + mResultView->setSortingEnabled(false); + mResultModel->clear(); + mResultModel->setColumnCount(1); + mResultModel->setHeaderData(0, Qt::Horizontal, tr("Actor")); + QIcon icon = SmGlobals::instance()->iconFor("actor"); + QStandardItem *root = mResultModel->invisibleRootItem(); + QSqlDatabase db = QSqlDatabase::database("treedb"); + QSqlQuery actorQ(db); + actorQ.prepare("SELECT tactorname, iactors_id FROM actors WHERE tactorname ~ :name"); + actorQ.bindValue(":name", actor); + actorQ.exec(); + while(actorQ.next()){ + QStandardItem *cur = new QStandardItem(actorQ.value(0).toString()); + cur->setIcon(icon); + cur->setData(actorQ.value(1), IdRole); + cur->setEditable(false); + root->appendRow(cur); + } + mResultView->setSortingEnabled(true); + mResultView->sortByColumn(0, Qt::AscendingOrder); } SearchDialog::SearchDialog(QWidget *parent, Qt::WindowFlags flags) : QDialog(parent, flags) { -- cgit v1.2.3-70-g09d2