diff options
-rw-r--r-- | fswidget.cpp | 24 | ||||
-rw-r--r-- | fswidget.h | 1 |
2 files changed, 24 insertions, 1 deletions
diff --git a/fswidget.cpp b/fswidget.cpp index c096090..ce65574 100644 --- a/fswidget.cpp +++ b/fswidget.cpp @@ -15,6 +15,7 @@ #include <QElapsedTimer> #include <QMenu> #include <QMessageBox> +#include <QProcess> #include <QSettings> #include <QApplication> @@ -56,6 +57,9 @@ void FSWidget::setupWidget(){ connect(archiveMovieA, &QAction::triggered, this, &FSWidget::archiveMovie); connect(mMovieWizard, &NewMovieWizard::accepted, this, &FSWidget::refresh); toolbar->addAction(archiveMovieA); + QAction *unpackA = new QAction(QIcon(":/clitoris.png"), tr("Unpack"), this); + connect(unpackA, &QAction::triggered, this, &FSWidget::unpack); + toolbar->addAction(unpackA); QIcon plusIcon = Helper::icon(QColor(255,85,255), '+'); QIcon minusIcon = Helper::icon(QColor(255,85,255), '-'); @@ -119,7 +123,7 @@ void FSWidget::setupWidget(){ mFileView->setModel(mProxy); mFileView->sortByColumn(0, Qt::AscendingOrder); - addActions(QList<QAction*>() << backA << forwardA << Helper::createSeparator(this) << refreshA << deleteFilesA << Helper::createSeparator(this) << archiveMovieA); + addActions(QList<QAction*>() << backA << forwardA << Helper::createSeparator(this) << refreshA << deleteFilesA << Helper::createSeparator(this) << archiveMovieA << unpackA); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(topWL); @@ -395,3 +399,21 @@ void FSWidget::filterMime(const QString &mime){ mProxy->setFilterRegExp(filter); mProxy->setFilterCaseSensitivity(Qt::CaseInsensitive); } + +void FSWidget::unpack(){ + QModelIndexList selected = mFileView->selectionModel()->selectedRows(); + if(selected.isEmpty()){ + return; + } + for(const QModelIndex &idx : selected){ + QString file = idx.data(FullPathRole).toString(); + QFileInfo fi(file); + QString outDir = QString("-o%1").arg(fi.absolutePath()); + QStringList args = QStringList() << "x" << outDir << file; + int retval = QProcess::execute("7z", args); + if(retval == 0){ + QFile::remove(file); + refresh(); + } + } +} @@ -36,6 +36,7 @@ class FSWidget : public QWidget { void advanceDir(int by); int queryCount(QSqlQuery &q, const QString &arg); void filterMime(const QString &mime); + void unpack(); signals: void message(QString msg); |