summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2017-02-11 06:43:49 +0100
committerArno <arno@disconnect.de>2017-02-11 06:43:49 +0100
commit274e54474010876cb7753924c4116360aa73b906 (patch)
treec088d9a1881d6f78f7b15efb3629627422f7ce95
parent6786163a0c81b71435cf6070db90e0c4d4b59757 (diff)
downloadShemovCleaner-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.pro6
-rw-r--r--curlybrackets.pngbin0 -> 1186 bytes
-rw-r--r--searchwidget.cpp130
-rw-r--r--searchwidget.h46
-rw-r--r--shemovcleaner.cpp7
-rw-r--r--shemovcleaner.h4
-rw-r--r--shemovcleaner.qrc1
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
new file mode 100644
index 0000000..06020db
--- /dev/null
+++ b/curlybrackets.png
Binary files differ
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>