diff options
author | Arno <arno@disconnect.de> | 2017-02-11 06:43:49 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2017-02-11 06:43:49 +0100 |
commit | 274e54474010876cb7753924c4116360aa73b906 (patch) | |
tree | c088d9a1881d6f78f7b15efb3629627422f7ce95 | |
parent | 6786163a0c81b71435cf6070db90e0c4d4b59757 (diff) | |
download | ShemovCleaner-274e54474010876cb7753924c4116360aa73b906.tar.gz ShemovCleaner-274e54474010876cb7753924c4116360aa73b906.tar.bz2 ShemovCleaner-274e54474010876cb7753924c4116360aa73b906.zip |
Create GUI for search widget
Does nothing yet, just the GUI, connections and actions...
-rw-r--r-- | ShemovCleaner.pro | 6 | ||||
-rw-r--r-- | curlybrackets.png | bin | 0 -> 1186 bytes | |||
-rw-r--r-- | searchwidget.cpp | 130 | ||||
-rw-r--r-- | searchwidget.h | 46 | ||||
-rw-r--r-- | shemovcleaner.cpp | 7 | ||||
-rw-r--r-- | shemovcleaner.h | 4 | ||||
-rw-r--r-- | shemovcleaner.qrc | 1 |
7 files changed, 191 insertions, 3 deletions
diff --git a/ShemovCleaner.pro b/ShemovCleaner.pro index acf5065..598f40d 100644 --- a/ShemovCleaner.pro +++ b/ShemovCleaner.pro @@ -29,7 +29,8 @@ SOURCES += main.cpp\ origindialog.cpp \ viewer.cpp \ filecopier.cpp \ - progressdialog.cpp + progressdialog.cpp \ + searchwidget.cpp HEADERS += \ filesorter.h \ @@ -46,7 +47,8 @@ HEADERS += \ origindialog.h \ viewer.h \ filecopier.h \ - progressdialog.h + progressdialog.h \ + searchwidget.h DISTFILES += diff --git a/curlybrackets.png b/curlybrackets.png Binary files differnew file mode 100644 index 0000000..06020db --- /dev/null +++ b/curlybrackets.png diff --git a/searchwidget.cpp b/searchwidget.cpp new file mode 100644 index 0000000..5d945e1 --- /dev/null +++ b/searchwidget.cpp @@ -0,0 +1,130 @@ +#include <QLineEdit> +#include <QLabel> +#include <QPushButton> +#include <QHBoxLayout> +#include <QVBoxLayout> +#include <QTreeView> +#include <QStandardItemModel> +#include <QSortFilterProxyModel> +#include <QToolBar> +#include <QMenuBar> + +#include "searchwidget.h" +#include "globals.h" + +SearchWidget::SearchWidget(QWidget *parent) : QWidget(parent) { + setupGui(); +} + +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(); + + QAction *isRegexA = new QAction(QIcon(":/curlybrackets.png"), tr("Regex"), this); + isRegexA->setCheckable(true); + connect(isRegexA, SIGNAL(toggled(bool)), this, SLOT(setRegex(bool))); + editMenu->addAction(isRegexA); + editMenu->addSeparator(); + mToolBar->addAction(isRegexA); + 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!"); +} diff --git a/searchwidget.h b/searchwidget.h new file mode 100644 index 0000000..2e04af7 --- /dev/null +++ b/searchwidget.h @@ -0,0 +1,46 @@ +#ifndef FILESEARCHWIDGET_H +#define FILESEARCHWIDGET_H + +#include <QWidget> + +class QLineEdit; +class QTreeView; +class QStandardItemModel; +class QSortFilterProxyModel; +class QMenuBar; +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 SearchMode { File, Origin, Title, Subtitle }; + explicit SearchWidget(QWidget *parent = 0); + QMenuBar *menuBar() { return mMenuBar; } + QString currentSearch(); + + public slots: + void clear(); + void search(); + void setRegex(bool toggled); + void setSearchMode(QAction *action); + + private: + void setupGui(); + void createActions(); + QLineEdit *mSearch; + QTreeView *mResultView; + QStandardItemModel *mResultModel; + QSortFilterProxyModel *mProxy; + QMenuBar *mMenuBar; + QToolBar *mToolBar; + QAction *mSearchFileA; + QAction *mSearchOriginA; + QAction *mSearchTitleA; + QAction *mSearchSubtitleA; + int mSearchMode; + bool mIsRegex; +}; + +#endif // FILESEARCHWIDGET_H diff --git a/shemovcleaner.cpp b/shemovcleaner.cpp index 1e886a1..1b2e5cf 100644 --- a/shemovcleaner.cpp +++ b/shemovcleaner.cpp @@ -20,6 +20,7 @@ #include "torrentwidget.h" #include "filewidget.h" #include "actorwidget.h" +#include "searchwidget.h" #include "torrentdisplay.h" #include "configurationwidget.h" #include "globals.h" @@ -47,10 +48,13 @@ ShemovCleaner::ShemovCleaner(QWidget *parent, Qt::WindowFlags f) : QMainWindow(p qApp->processEvents(); mActorTab->gatherData(); mActorTab->readSettings(); + qApp->processEvents(); + mSearchTab = new SearchWidget; mTab->addTab(mTorrentTab, tr("&Torrents")); mTab->addTab(mFileTab, tr("Fi&les")); mTab->addTab(mActorTab, tr("&Actors")); + mTab->addTab(mSearchTab, tr("Searc&h")); setCentralWidget(mTab); connect(mTorrentTab, SIGNAL(statusMessage(QString)), this, SLOT(statusBarMessage(QString))); @@ -74,6 +78,7 @@ ShemovCleaner::ShemovCleaner(QWidget *parent, Qt::WindowFlags f) : QMainWindow(p mTorrentTab->menuBar()->addMenu(helpMenu); mFileTab->menuBar()->addMenu(helpMenu); mActorTab->menuBar()->addMenu(helpMenu); + mSearchTab->menuBar()->addMenu(helpMenu); QSettings s; restoreGeometry(s.value("geometry").toByteArray()); @@ -149,6 +154,8 @@ void ShemovCleaner::tabChanged(int idx){ mActorTab->actorView()->setFocus(); updateFreeSpace(mFileTab->currentDir()); winTitle = tr("%1 Actors").arg(qApp->applicationName()); + }else if(idx == Search){ + winTitle = QString(tr("%1 Search for %2")).arg(qApp->applicationName()).arg(mSearchTab->currentSearch()); } setWindowTitle(winTitle); } diff --git a/shemovcleaner.h b/shemovcleaner.h index 9cd7f76..c7d234f 100644 --- a/shemovcleaner.h +++ b/shemovcleaner.h @@ -9,11 +9,12 @@ class FileWidget; class QLabel; class QProgressBar; class ActorWidget; +class SearchWidget; class ShemovCleaner : public QMainWindow { Q_OBJECT public: - enum Tabs { Torrents = 0, Videos = 1, Actors = 2 }; + enum Tabs { Torrents = 0, Videos = 1, Actors = 2, Search = 3 }; ShemovCleaner(QWidget *parent = 0, Qt::WindowFlags f = 0); ~ShemovCleaner(); @@ -45,6 +46,7 @@ class ShemovCleaner : public QMainWindow { TorrentWidget *mTorrentTab; FileWidget *mFileTab; ActorWidget *mActorTab; + SearchWidget *mSearchTab; }; #endif // SHEMOVCLEANER_H diff --git a/shemovcleaner.qrc b/shemovcleaner.qrc index bb88bcb..88a463b 100644 --- a/shemovcleaner.qrc +++ b/shemovcleaner.qrc @@ -17,5 +17,6 @@ <file>higheels.png</file> <file>hourglass_figure.png</file> <file>snapshot.png</file> + <file>curlybrackets.png</file> </qresource> </RCC> |