diff options
author | Arno <arno@disconnect.de> | 2017-02-11 09:00:50 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2017-02-11 09:00:50 +0100 |
commit | 990adf31400b2742903ae6dc3b96cbd9facb771d (patch) | |
tree | 249a9b9bab71ddd46481f42be68865cbfaf2fac5 | |
parent | 38987609c5acd7e47c45ee4b856e233ded17612c (diff) | |
download | ShemovCleaner-990adf31400b2742903ae6dc3b96cbd9facb771d.tar.gz ShemovCleaner-990adf31400b2742903ae6dc3b96cbd9facb771d.tar.bz2 ShemovCleaner-990adf31400b2742903ae6dc3b96cbd9facb771d.zip |
Implement search
Yippie! It finally does something!
-rw-r--r-- | searchwidget.cpp | 55 | ||||
-rw-r--r-- | searchwidget.h | 4 | ||||
-rw-r--r-- | shemovcleaner.cpp | 1 |
3 files changed, 57 insertions, 3 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(){ diff --git a/searchwidget.h b/searchwidget.h index f82fd0f..b1811ac 100644 --- a/searchwidget.h +++ b/searchwidget.h @@ -13,8 +13,8 @@ class QToolBar; class SearchWidget : public QWidget { Q_OBJECT public: - enum { NumColumns = 5 }; - enum Columns { IconColumn = 0, NameColumn = 1, SizeColumn = 2, BitrateColumn = 3, DurationColumn = 4 }; + enum { NumColumns = 4 }; + enum Columns { IconColumn = 0, NameColumn = 1, SizeColumn = 2, DurationColumn = 3 }; enum SearchMode { File = 0, Origin = 1, Title = 2, Subtitle = 3 }; explicit SearchWidget(QWidget *parent = 0); ~SearchWidget(); diff --git a/shemovcleaner.cpp b/shemovcleaner.cpp index 18e1428..3e70087 100644 --- a/shemovcleaner.cpp +++ b/shemovcleaner.cpp @@ -51,6 +51,7 @@ ShemovCleaner::ShemovCleaner(QWidget *parent, Qt::WindowFlags f) : QMainWindow(p qApp->processEvents(); mSearchTab = new SearchWidget; mSearchTab->readSettings(); + mSearchTab->search(); mTab->addTab(mTorrentTab, tr("&Torrents")); mTab->addTab(mFileTab, tr("Fi&les")); |