summaryrefslogtreecommitdiffstats
path: root/searchdialog.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-02-02 01:46:36 +0100
committerArno <arno@disconnect.de>2018-02-02 01:46:36 +0100
commit9dd407fe739e1ba469b17d2977feabe3130d4e57 (patch)
tree7d3229966c980ba3a7bace2d1af1bf643967a7ce /searchdialog.cpp
parent2a14c0ebca1d781b7279e1ed8d657364d70df46d (diff)
downloadShemovCleaner-9dd407fe739e1ba469b17d2977feabe3130d4e57.tar.gz
ShemovCleaner-9dd407fe739e1ba469b17d2977feabe3130d4e57.tar.bz2
ShemovCleaner-9dd407fe739e1ba469b17d2977feabe3130d4e57.zip
Implement Filename search in SearchDialog
Diffstat (limited to 'searchdialog.cpp')
-rw-r--r--searchdialog.cpp58
1 files changed, 50 insertions, 8 deletions
diff --git a/searchdialog.cpp b/searchdialog.cpp
index dfefd79..cd329c9 100644
--- a/searchdialog.cpp
+++ b/searchdialog.cpp
@@ -36,7 +36,7 @@ SearchDialog::SearchDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent,
resMProxy->setSourceModel(mResM);
mResV = new QTreeView;
mResV->setModel(resMProxy);
- connect(mResV->selectionModel(), &QItemSelectionModel::currentChanged, this, &SearchDialog::doResultTitle);
+ connect(mResV->selectionModel(), &QItemSelectionModel::currentChanged, this, &SearchDialog::doResult);
QHBoxLayout *resGBL = new QHBoxLayout;
resGBL->addWidget(mResV);
resGB->setLayout(resGBL);
@@ -74,14 +74,16 @@ void SearchDialog::doSearch(){
int type = mTypeSel->currentData().toInt();
if(type == Title){
doSearchTitle();
+ }else if(type == Filename){
+ doSearchFilename();
}
}
void SearchDialog::doResult(const QModelIndex &cur, const QModelIndex &prev){
Q_UNUSED(prev)
int type = mTypeSel->currentData().toInt();
- if(type == Title){
- doResultTitle(cur);
+ if(type == Title || type == Filename){
+ doResultName(cur, type);
}
}
@@ -102,20 +104,60 @@ void SearchDialog::doSearchTitle(){
while(tQ.next()){
QStandardItem *cur = new QStandardItem(tQ.value(1).toString());
cur->setIcon(QIcon(":/huge_bra.png"));
- cur->setData(tQ.value(0), SeriesIdRole);
+ cur->setData(tQ.value(0), IdRole);
cur->setEditable(false);
root->appendRow(cur);
}
mResV->setSortingEnabled(true);
}
-void SearchDialog::doResultTitle(const QModelIndex &sel){
- int seriesId = sel.data(SeriesIdRole).toInt();
+void SearchDialog::doSearchFilename(){
+ if(mSearch->text().isEmpty()){
+ return;
+ }
+ mResV->setSortingEnabled(false);
+ mResM->clear();
+ mResM->setColumnCount(1);
+ mResM->setHeaderData(0, Qt::Horizontal, tr("Filename"));
+ QStandardItem *root = mResM->invisibleRootItem();
+ QSqlDatabase db = QSqlDatabase::database("shemovdb");
+ QSqlQuery fnQ(db);
+ fnQ.prepare("SELECT tfilename, iseriespart_id FROM files WHERE tfilename ~ :fn ORDER BY tfilename");
+ fnQ.bindValue(":fn", mSearch->text());
+ fnQ.exec();
+ while(fnQ.next()){
+ QStandardItem *cur = new QStandardItem(fnQ.value(0).toString());
+ cur->setIcon(QIcon(":/gaping_ass.png"));
+ cur->setData(fnQ.value(1), IdRole);
+ cur->setEditable(false);
+ root->appendRow(cur);
+ }
+ QSqlQuery oQ(db);
+ oQ.prepare("SELECT tname, iseriespart_id FROM files, files_origin WHERE tname ~ :fn AND files_origin.ifiles_id = files.ifiles_id ORDER BY tname");
+ oQ.bindValue(":fn", mSearch->text());
+ oQ.exec();
+ while(oQ.next()){
+ QStandardItem *cur = new QStandardItem(oQ.value(0).toString());
+ cur->setIcon(QIcon(":/french_maid_dress.png"));
+ cur->setData(oQ.value(1), IdRole);
+ cur->setEditable(false);
+ root->appendRow(cur);
+ }
+ mResV->setSortingEnabled(true);
+ mResV->sortByColumn(0);
+}
+
+void SearchDialog::doResultName(const QModelIndex &sel, int resType){
+ int seriesId = sel.data(IdRole).toInt();
QSqlDatabase db = QSqlDatabase::database("shemovdb");
QSqlQuery rQ(db);
QStringList items;
- rQ.prepare("SELECT series.tseries_name, seriesparts.iseriespart, seriesparts.tsubtitle FROM series, seriesparts WHERE series.iseries_id = :sid AND seriesparts.iseries_id = series.iseries_id");
- rQ.bindValue(":sid", seriesId);
+ if(resType == Title){
+ rQ.prepare("SELECT series.tseries_name, seriesparts.iseriespart, seriesparts.tsubtitle FROM series, seriesparts WHERE series.iseries_id = :id AND seriesparts.iseries_id = series.iseries_id");
+ }else if(resType == Filename){
+ rQ.prepare("SELECT series.tseries_name, seriesparts.iseriespart, seriesparts.tsubtitle FROM series, seriesparts WHERE seriesparts.iseriesparts_id = :id AND seriesparts.iseries_id = series.iseries_id");
+ }
+ rQ.bindValue(":id", seriesId);
rQ.exec();
while(rQ.next()){
int sPart = rQ.value(1).toInt();