diff options
Diffstat (limited to 'searchdialog.cpp')
-rw-r--r-- | searchdialog.cpp | 119 |
1 files changed, 90 insertions, 29 deletions
diff --git a/searchdialog.cpp b/searchdialog.cpp index 642f02f..65ade63 100644 --- a/searchdialog.cpp +++ b/searchdialog.cpp @@ -19,6 +19,10 @@ #include <QApplication> #include <QHeaderView> #include <QSettings> +#include <QGroupBox> +#include <QComboBox> +#include <QStandardItemModel> +#include <QSplitter> #include "smtreeview.h" #include "smtreeitem.h" @@ -26,15 +30,15 @@ #include "searchdialog.h" #include "helper.h" -SearchDialog::SearchDialog(QWidget *parent, Qt::WindowFlags flags) : QDialog(parent, flags){ +FilenamesAndMetadata::FilenamesAndMetadata(QWidget *parent, Qt::WindowFlags flags) : QWidget(parent, flags){ // Define GUI items setWindowTitle(tr("Search...")); QLabel *l1 = new QLabel(tr("Search")); mSearch = new QLineEdit; - connect(mSearch, &QLineEdit::returnPressed, this, &SearchDialog::search); + connect(mSearch, &QLineEdit::returnPressed, this, &FilenamesAndMetadata::search); QToolBar *searchTB = new QToolBar; QAction *doSearchA = new QAction(Helper::icon(Qt::transparent, qApp->palette().color(QPalette::Text), QChar(0x2245), true, false), tr("Search"), this); - connect(doSearchA, &QAction::triggered, this, &SearchDialog::search); + connect(doSearchA, &QAction::triggered, this, &FilenamesAndMetadata::search); searchTB->addAction(doSearchA); QAction *clearSearchA= new QAction(Helper::icon(Qt::transparent, qApp->palette().color(QPalette::Text), QChar(0x2694), true, false), tr("Clear"), this); connect(clearSearchA, &QAction::triggered, [=] { mSearch->clear(); }); @@ -62,18 +66,9 @@ SearchDialog::SearchDialog(QWidget *parent, Qt::WindowFlags flags) : QDialog(par mainLayout->addLayout(topLayout); mainLayout->addLayout(bottomLayout); setLayout(mainLayout); - setMinimumSize(QSize(1024, 600)); - connect(this, &SearchDialog::rejected, this, &SearchDialog::writeSettings); - readSettings(); -} - -void SearchDialog::show(){ - mSearch->setFocus(); - mSearch->selectAll(); - QDialog::show(); } -void SearchDialog::search(){ +void FilenamesAndMetadata::search(){ if(mSearch->text().isEmpty()){ return; } @@ -115,21 +110,7 @@ void SearchDialog::search(){ mResult->expandAll(); } -void SearchDialog::writeSettings(){ - QHeaderView *h = mResult->header(); - QSettings s; - s.setValue("searchdlgheaders", h->saveState()); - s.setValue("searchdlgpos", pos()); -} - -void SearchDialog::readSettings(){ - QSettings s; - QByteArray headerState = s.value("searchdlgheaders").toByteArray(); - mResult->header()->restoreState(headerState); - move(s.value("searchdlgpos").toPoint()); -} - -void SearchDialog::appendChild(QVariant id, QVariant subject, QVariant name, QVariant sub, SmTreeItem *parent){ +void FilenamesAndMetadata::appendChild(QVariant id, QVariant subject, QVariant name, QVariant sub, SmTreeItem *parent){ QString match; if(!sub.toString().isEmpty()){ match = QString("%1 - %2").arg(name.toString()).arg(sub.toString()); @@ -141,7 +122,87 @@ void SearchDialog::appendChild(QVariant id, QVariant subject, QVariant name, QVa parent->appendChild(retval); } -void SearchDialog::appendEmpty(SmTreeItem *parent){ +void FilenamesAndMetadata::appendEmpty(SmTreeItem *parent){ SmTreeItem *emptyItem = new SmTreeItem(QVariantList() << tr("no match!") << QVariant() << QVariant(), parent); parent->appendChild(emptyItem); } + +ActorsAndMore::ActorsAndMore(QWidget *parent, Qt::WindowFlags flags) : QWidget(parent, flags) { + //search bar + QLabel *typeL = new QLabel(tr("Search by:")); + mTypeSel = new QComboBox; + mTypeSel->addItem(tr("Actor"), Actor); + mTypeSel->addItem(tr("Title"), Title); + mSearch = new QLineEdit; + connect(mSearch, &QLineEdit::returnPressed, this, &ActorsAndMore::doSearch); + QToolBar *searchTB = new QToolBar; + QAction *doSearchA = new QAction(Helper::icon(Qt::transparent, qApp->palette().color(QPalette::Text), QChar(0x2245), true, false), tr("Search"), this); + connect(doSearchA, &QAction::triggered, this, &ActorsAndMore::doSearch); + searchTB->addAction(doSearchA); + QAction *clearSearchA= new QAction(Helper::icon(Qt::transparent, qApp->palette().color(QPalette::Text), QChar(0x2694), true, false), tr("Clear"), this); + connect(clearSearchA, &QAction::triggered, [=] { mSearch->clear(); }); + searchTB->addAction(clearSearchA); + QHBoxLayout *topHBL = new QHBoxLayout; + topHBL->addWidget(typeL); + topHBL->addWidget(mSearch); + topHBL->addWidget(mTypeSel); + topHBL->addWidget(searchTB); + + // result view + mResultModel = new QStandardItemModel; + QSortFilterProxyModel *resultProxy = new QSortFilterProxyModel; + resultProxy->setSourceModel(mResultModel); + mResultView = new QTreeView; + mResultView->setModel(resultProxy); + mDataModel = new QStandardItemModel; + QSortFilterProxyModel *dataProxy = new QSortFilterProxyModel; + dataProxy->setSourceModel(mDataModel); + mDataView = new QTreeView; + mDataView->setModel(dataProxy); + QHBoxLayout *resultHBL = new QHBoxLayout; + resultHBL->addWidget(mResultView); + resultHBL->addWidget(mDataView); + + //main Layout + QVBoxLayout *mainLayout = new QVBoxLayout; + mainLayout->addLayout(topHBL); + mainLayout->addLayout(resultHBL); + setLayout(mainLayout); +} + +void ActorsAndMore::doSearch(){ + +} + +SearchDialog::SearchDialog(QWidget *parent, Qt::WindowFlags flags) : QDialog(parent, flags) { + QHBoxLayout *gbLayout = new QHBoxLayout; + QGroupBox *metaFnGb = new QGroupBox(tr("Metadata and Filenames")); + FilenamesAndMetadata *metaFnW = new FilenamesAndMetadata; + gbLayout->addWidget(metaFnW); + metaFnGb->setLayout(gbLayout); + QHBoxLayout *gbLayout2 = new QHBoxLayout; + QGroupBox *actorsAndMoreGb = new QGroupBox(tr("Actors and more...")); + ActorsAndMore *actorsAndMoreW = new ActorsAndMore; + gbLayout2->addWidget(actorsAndMoreW); + actorsAndMoreGb->setLayout(gbLayout2); + QSplitter *splitter = new QSplitter(Qt::Vertical); + splitter->addWidget(metaFnGb); + splitter->addWidget(actorsAndMoreGb); + QVBoxLayout *mainLayout = new QVBoxLayout; + mainLayout->addWidget(splitter); + setLayout(mainLayout); + setWindowTitle(tr("Search Dialog")); + readSettings(); +} + +void SearchDialog::writeSettings(){ + QSettings s; + s.setValue("searchdlgpos", pos()); + s.setValue("searchdlgsize", size()); +} + +void SearchDialog::readSettings(){ + QSettings s; + move(s.value("searchdlgpos").toPoint()); + resize(s.value("searchdlgsize").toSize()); +} |