diff options
author | Arno <arno@disconnect.de> | 2020-07-25 06:30:46 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2020-07-25 06:30:46 +0200 |
commit | 53c341418768575801fabdcdc1272a4bdac18162 (patch) | |
tree | d95063eb8144a773852361f9c8bfe2a0a8530ba7 | |
parent | 4b083defccae30fe7dc7f9eaaad96c051b8e4b59 (diff) | |
download | SheMov-53c341418768575801fabdcdc1272a4bdac18162.tar.gz SheMov-53c341418768575801fabdcdc1272a4bdac18162.tar.bz2 SheMov-53c341418768575801fabdcdc1272a4bdac18162.zip |
Implement actor search
-rw-r--r-- | searchdialog.cpp | 31 | ||||
-rw-r--r-- | searchdialog.h | 2 |
2 files changed, 33 insertions, 0 deletions
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) { diff --git a/searchdialog.h b/searchdialog.h index 3cbd3ae..4a387d4 100644 --- a/searchdialog.h +++ b/searchdialog.h @@ -45,12 +45,14 @@ class ActorsAndMore : public QWidget { Q_OBJECT public: enum SearchTypes { Actor, Title }; + enum CustomRoles { IdRole = Qt::UserRole + 1 }; ActorsAndMore(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::Widget); public slots: void doSearch(); private: + void searchActor(const QString &actor); QComboBox *mTypeSel; QLineEdit *mSearch; QStandardItemModel *mResultModel; |