diff options
Diffstat (limited to 'fswidget.cpp')
-rw-r--r-- | fswidget.cpp | 36 |
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); + } + } + +} |