summaryrefslogtreecommitdiffstats
path: root/searchwidget.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2017-02-11 09:00:50 +0100
committerArno <arno@disconnect.de>2017-02-11 09:00:50 +0100
commit990adf31400b2742903ae6dc3b96cbd9facb771d (patch)
tree249a9b9bab71ddd46481f42be68865cbfaf2fac5 /searchwidget.cpp
parent38987609c5acd7e47c45ee4b856e233ded17612c (diff)
downloadShemovCleaner-990adf31400b2742903ae6dc3b96cbd9facb771d.tar.gz
ShemovCleaner-990adf31400b2742903ae6dc3b96cbd9facb771d.tar.bz2
ShemovCleaner-990adf31400b2742903ae6dc3b96cbd9facb771d.zip
Implement search
Yippie! It finally does something!
Diffstat (limited to 'searchwidget.cpp')
-rw-r--r--searchwidget.cpp55
1 files changed, 54 insertions, 1 deletions
diff --git a/searchwidget.cpp b/searchwidget.cpp
index 9d364cf..07ab1f4 100644
--- a/searchwidget.cpp
+++ b/searchwidget.cpp
@@ -10,9 +10,12 @@
#include <QMenuBar>
#include <QSettings>
#include <QHeaderView>
+#include <QSqlDatabase>
+#include <QSqlQuery>
#include "searchwidget.h"
#include "globals.h"
+#include "helper.h"
SearchWidget::SearchWidget(QWidget *parent) : QWidget(parent) {
setupGui();
@@ -104,7 +107,57 @@ void SearchWidget::createActions(){
}
void SearchWidget::search(){
-
+ mResultView->setSortingEnabled(false);
+ QString fn = mSearch->text();
+ if(fn.isEmpty()){
+ return;
+ }
+ QSqlDatabase db = QSqlDatabase::database("shemovdb");
+ if(!db.isOpen()){
+ db.open();
+ }
+ mResultModel->clear();
+ QStandardItem *root = mResultModel->invisibleRootItem();
+ mResultModel->setHorizontalHeaderLabels(QStringList() << QChar(0x26A7) << tr("Name") << tr("Size") << tr("Duration") << "");
+ QSqlQuery q(db);
+ if(mSearchMode == File){
+ q.prepare("SELECT tfilename, bisize, iduration FROM files WHERE tfilename ~ :fn");
+ }else if(mSearchMode == Origin){
+ q.prepare("SELECT files_origin.tname, files_origin.bisize, files.iduration FROM files, files_origin WHERE files_origin.tname ~ :fn AND files_origin.ifiles_id = files.ifiles_id");
+ }else if(mSearchMode == Title){
+ q.prepare("SELECT files.tfilename, files.bisize, files.iduration FROM files, seriesparts, series WHERE series.iseries_id = seriesparts.iseries_id AND seriesparts.iseriesparts_id = files.iseriespart_id AND series.tseries_name ~ :fn");
+ }else if(mSearchMode == Subtitle){
+ q.prepare("SELECT files.tfilename, files.bisize, files.iduration FROM files, seriesparts, series WHERE series.iseries_id = seriesparts.iseries_id AND seriesparts.iseriesparts_id = files.iseriespart_id AND seriesparts.tsubtitle ~ :fn");
+ }else{
+ return;
+ }
+ q.bindValue(":fn", fn);
+ q.exec();
+ while(q.next()){
+ QList<QStandardItem*> data;
+ for(int i = 0; i < NumColumns + 1; ++i){
+ QStandardItem *item = new QStandardItem;
+ item->setEditable(false);
+ data << item;
+ if(i == SizeColumn || i == DurationColumn){
+ item->setFont(QFont("courier new"));
+ item->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);
+ }
+ }
+ data[IconColumn]->setIcon(QIcon(":/diaper.png"));
+ data[NameColumn]->setText(q.value(0).toString());
+ qint64 sizemb = q.value(1).toLongLong();
+ QLocale l;
+ QString size = QString("%1").arg(l.toString(sizemb));
+ data[SizeColumn]->setText(size);
+ Helper::Duration dur(q.value(2).toLongLong());
+ data[DurationColumn]->setText(dur.toString());
+ root->appendRow(data);
+ }
+ for(int i = 0; i < NumColumns; ++i){
+ mResultView->resizeColumnToContents(i);
+ }
+ mResultView->setSortingEnabled(true);
}
void SearchWidget::clear(){