diff options
Diffstat (limited to 'searchwidget.cpp')
-rw-r--r-- | searchwidget.cpp | 200 |
1 files changed, 0 insertions, 200 deletions
diff --git a/searchwidget.cpp b/searchwidget.cpp deleted file mode 100644 index c303e37..0000000 --- a/searchwidget.cpp +++ /dev/null @@ -1,200 +0,0 @@ -#include <QLineEdit> -#include <QLabel> -#include <QPushButton> -#include <QHBoxLayout> -#include <QVBoxLayout> -#include <QTreeView> -#include <QStandardItemModel> -#include <QSortFilterProxyModel> -#include <QToolBar> -#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(); -} - -SearchWidget::~SearchWidget(){ - writeSettings(); -} - -void SearchWidget::setupGui(){ - mSearch = new QLineEdit; - connect(mSearch, SIGNAL(returnPressed()), this, SLOT(search())); - QLabel *searchL = new QLabel(tr("&Search")); - searchL->setBuddy(mSearch); - QPushButton *doSearch = new QPushButton(tr("Go!")); - connect(doSearch, SIGNAL(clicked()), this, SLOT(search())); - QHBoxLayout *searchLayout = new QHBoxLayout; - searchLayout->addWidget(searchL); - searchLayout->addWidget(mSearch); - searchLayout->addWidget(doSearch); - - mResultView = new QTreeView; - mResultView->setSortingEnabled(false); - mResultView->setSelectionBehavior(QAbstractItemView::SelectRows); - mResultView->setSelectionMode(QAbstractItemView::SingleSelection); - mResultModel = new QStandardItemModel; - mProxy = new QSortFilterProxyModel; - mProxy->setSourceModel(mResultModel); - mResultView->setModel(mProxy); - - mMenuBar = new QMenuBar; - mToolBar = new QToolBar; - mToolBar->setIconSize(QSize(16, 16)); - createActions(); - - QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->addWidget(mMenuBar); - mainLayout->addWidget(mToolBar); - mainLayout->addLayout(searchLayout); - mainLayout->addWidget(mResultView); - setLayout(mainLayout); -} - -void SearchWidget::createActions(){ - QMenu *fileMenu = new QMenu(tr("&File"), this); - fileMenu->addAction(Globals::instance()->action(Globals::QuitAction)); - - QMenu *editMenu = new QMenu(tr("&Edit"), this); - QAction *clearA = new QAction(QIcon(":/delete.png"), tr("Clear"), this); - connect(clearA, SIGNAL(triggered()), this, SLOT(clear())); - editMenu->addAction(clearA); - editMenu->addSeparator(); - mToolBar->addAction(clearA); - mToolBar->addSeparator(); - - QActionGroup *searchModeAG = new QActionGroup(this); - mSearchFileA = new QAction(QIcon(":/huge_bra.png"), tr("Filename"), this); - mSearchFileA->setCheckable(true); - searchModeAG->addAction(mSearchFileA); - mSearchOriginA = new QAction(QIcon(":/higheels.png"), tr("Origin"), this); - mSearchOriginA->setCheckable(true); - searchModeAG->addAction(mSearchOriginA); - mSearchTitleA = new QAction(QIcon(":/hourglass_figure.png"), tr("Title"), this); - mSearchTitleA->setCheckable(true); - searchModeAG->addAction(mSearchTitleA); - mSearchSubtitleA = new QAction(QIcon(":/gaping_ass.png"), tr("Subtitle"), this); - mSearchSubtitleA->setCheckable(true); - searchModeAG->addAction(mSearchSubtitleA); - editMenu->addActions(searchModeAG->actions()); - editMenu->addSeparator(); - mToolBar->addActions(searchModeAG->actions()); - mToolBar->addSeparator(); - connect(searchModeAG, SIGNAL(triggered(QAction*)), this, SLOT(setSearchMode(QAction*))); - - editMenu->addAction(Globals::instance()->action(Globals::ConfigAction)); - mToolBar->addAction(Globals::instance()->action(Globals::ConfigAction)); - - mMenuBar->addMenu(fileMenu); - mMenuBar->addMenu(editMenu); - -} - -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(){ - mSearch->clear(); - mResultModel->clear(); -} - -void SearchWidget::setSearchMode(QAction *action){ - if(action == mSearchFileA){ - mSearchMode = File; - }else if(action == mSearchOriginA){ - mSearchMode = Origin; - }else if(action == mSearchTitleA){ - mSearchMode = Title; - }else if(action == mSearchSubtitleA){ - mSearchMode = Subtitle; - } -} - -QString SearchWidget::currentSearch(){ - if(!mSearch->text().isEmpty()){ - return mSearch->text(); - } - return tr("nothing!"); -} - -void SearchWidget::readSettings(){ - QSettings s; - mSearchMode = s.value("search/mode").toInt(); - if(mSearchMode == File){ - mSearchFileA->toggle(); - }else if(mSearchMode == Origin){ - mSearchOriginA->toggle(); - }else if(mSearchMode == Title){ - mSearchTitleA->toggle(); - }else if(mSearchMode == Subtitle){ - mSearchSubtitleA->toggle(); - } - mSearch->setText(s.value("search/string").toString()); - mResultView->header()->restoreState(s.value("search/header").toByteArray()); -} - -void SearchWidget::writeSettings(){ - QSettings s; - s.setValue("search/mode", mSearchMode); - s.setValue("search/string", mSearch->text()); - s.setValue("search/header", mResultView->header()->saveState()); -} |