summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2020-07-25 06:30:46 +0200
committerArno <arno@disconnect.de>2020-07-25 06:30:46 +0200
commit53c341418768575801fabdcdc1272a4bdac18162 (patch)
treed95063eb8144a773852361f9c8bfe2a0a8530ba7
parent4b083defccae30fe7dc7f9eaaad96c051b8e4b59 (diff)
downloadSheMov-53c341418768575801fabdcdc1272a4bdac18162.tar.gz
SheMov-53c341418768575801fabdcdc1272a4bdac18162.tar.bz2
SheMov-53c341418768575801fabdcdc1272a4bdac18162.zip
Implement actor search
-rw-r--r--searchdialog.cpp31
-rw-r--r--searchdialog.h2
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;