summaryrefslogtreecommitdiffstats
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
parent2a14c0ebca1d781b7279e1ed8d657364d70df46d (diff)
downloadShemovCleaner-9dd407fe739e1ba469b17d2977feabe3130d4e57.tar.gz
ShemovCleaner-9dd407fe739e1ba469b17d2977feabe3130d4e57.tar.bz2
ShemovCleaner-9dd407fe739e1ba469b17d2977feabe3130d4e57.zip
Implement Filename search in SearchDialog
-rw-r--r--french_maid_dress.pngbin0 -> 849 bytes
-rw-r--r--searchdialog.cpp58
-rw-r--r--searchdialog.h6
-rw-r--r--shemovcleaner.qrc1
4 files changed, 54 insertions, 11 deletions
diff --git a/french_maid_dress.png b/french_maid_dress.png
new file mode 100644
index 0000000..190edf4
--- /dev/null
+++ b/french_maid_dress.png
Binary files differ
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();
diff --git a/searchdialog.h b/searchdialog.h
index bfa2443..ac4f73d 100644
--- a/searchdialog.h
+++ b/searchdialog.h
@@ -12,15 +12,15 @@ class SearchDialog : public QDialog {
Q_OBJECT
public:
enum SearchTypes { Filename, Title };
- enum CustomRoles { SeriesIdRole = Qt::UserRole + 1};
+ enum CustomRoles { IdRole = Qt::UserRole + 1 };
explicit SearchDialog(QWidget *parent, Qt::WindowFlags f = 0);
public slots:
void doSearch();
void doResult(const QModelIndex &cur, const QModelIndex &prev);
void doSearchTitle();
- void doResultTitle(const QModelIndex &sel);
-
+ void doSearchFilename();
+ void doResultName(const QModelIndex &sel, int resType);
private:
QLineEdit *mSearch;
diff --git a/shemovcleaner.qrc b/shemovcleaner.qrc
index c5017d8..7c1805d 100644
--- a/shemovcleaner.qrc
+++ b/shemovcleaner.qrc
@@ -23,5 +23,6 @@
<file>male_chastity_belt.png</file>
<file>web-browser.png</file>
<file>system-search.png</file>
+ <file>french_maid_dress.png</file>
</qresource>
</RCC>