summaryrefslogtreecommitdiffstats
path: root/fswidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fswidget.cpp')
-rw-r--r--fswidget.cpp36
1 files changed, 28 insertions, 8 deletions
diff --git a/fswidget.cpp b/fswidget.cpp
index 53df90f..8624902 100644
--- a/fswidget.cpp
+++ b/fswidget.cpp
@@ -24,6 +24,7 @@
#include "newmoviewizard.h"
#include "newpicsdialog.h"
#include "fsproxy.h"
+#include "fsview.h"
#include "viewer.h"
FSWidget::FSWidget(QWidget *parent) : QWidget(parent) {
@@ -82,6 +83,14 @@ void FSWidget::setupWidget(){
}
QAction *playRepeatMA = new QAction(tr("Play repeat"), this);
playRepeatMA->setMenu(repeatMenu);
+ QAction *selectFilterA = new QAction(tr("Select by filter..."), this);
+ connect(selectFilterA, &QAction::triggered, this, &FSWidget::selectFilter);
+ selectFilterA->setShortcut(tr("CTRL+j"));
+ selectFilterA->setData(FSView::InvisibleAction);
+ QAction *unselectAllA = new QAction(tr("unselect all..."), this);
+ connect(unselectAllA, &QAction::triggered, [=] { mFileView->selectionModel()->clear(); });
+ unselectAllA->setShortcut(tr("CTRL+k"));
+ unselectAllA->setData(FSView::InvisibleAction);
QIcon plusIcon = Helper::icon(QColor(255,85,255), '+');
QIcon minusIcon = Helper::icon(QColor(255,85,255), '-');
@@ -133,7 +142,7 @@ void FSWidget::setupWidget(){
topWL->addWidget(mFilterCB);
topWL->addWidget(filterTB);
- mFileView = new QTreeView;
+ mFileView = new FSView;
mFileView->setAlternatingRowColors(true);
mFileView->setSortingEnabled(true);
mFileView->setUniformRowHeights(true);
@@ -146,7 +155,7 @@ void FSWidget::setupWidget(){
mFileView->setModel(mProxy);
mFileView->sortByColumn(0, Qt::AscendingOrder);
- addActions(QList<QAction*>() << playSelectedA << playRepeatMA << Helper::createSeparator(this) << backA << forwardA << Helper::createSeparator(this) << refreshA << deleteFilesA << Helper::createSeparator(this) << archiveMovieA << archivePicsA << unpackA << previewA);
+ mFileView->addActions(QList<QAction*>() << playSelectedA << playRepeatMA << Helper::createSeparator(this) << backA << forwardA << Helper::createSeparator(this) << refreshA << deleteFilesA << Helper::createSeparator(this) << archiveMovieA << archivePicsA << unpackA << previewA << selectFilterA << unselectAllA);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addLayout(topWL);
@@ -160,12 +169,6 @@ FSWidget::~FSWidget(){
writeSettings();
}
-void FSWidget::contextMenuEvent(QContextMenuEvent *e){
- QMenu contextMenu(this);
- contextMenu.addActions(actions());
- contextMenu.exec(e->globalPos());
-}
-
void FSWidget::readSettings(){
QSettings s;
QStringList dirs = s.value("fs/dirs").toStringList();
@@ -522,3 +525,20 @@ void FSWidget::playSelected(int count){
}
QProcess::startDetached(playerData.first, args);
}
+
+void FSWidget::selectFilter(){
+ bool ok;
+ QString retval = QInputDialog::getText(this, tr("File selection by regex!"), tr("Select"), QLineEdit::Normal, "mkv$", &ok);
+ if(!ok){
+ return;
+ }
+ mFileView->selectionModel()->clearSelection();
+ QRegExp re(retval);
+ for(int i = 0; i < mProxy->rowCount(); ++i){
+ QModelIndex nameIdx = mProxy->index(i, 0);
+ if(re.indexIn(nameIdx.data().toString()) != -1){
+ mFileView->selectionModel()->select(nameIdx, QItemSelectionModel::Select | QItemSelectionModel::Rows);
+ }
+ }
+
+}