#include #include #include #include #include #include #include #include #include #include #include #include #include "searchwidget.h" #include "globals.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(); mIsRegexA = new QAction(QIcon(":/curlybrackets.png"), tr("Regex"), this); mIsRegexA->setCheckable(true); connect(mIsRegexA, SIGNAL(toggled(bool)), this, SLOT(setRegex(bool))); editMenu->addAction(mIsRegexA); editMenu->addSeparator(); mToolBar->addAction(mIsRegexA); 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(){ } void SearchWidget::clear(){ mSearch->clear(); mResultModel->clear(); } void SearchWidget::setRegex(bool toggled){ mIsRegex = toggled; } 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(); } mIsRegex = s.value("search/regex").toBool(); mIsRegexA->setChecked(mIsRegex); 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/regex", mIsRegex); s.setValue("search/string", mSearch->text()); s.setValue("search/header", mResultView->header()->saveState()); }