summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fswidget.cpp24
-rw-r--r--fswidget.h1
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();
+ }
+ }
+}
diff --git a/fswidget.h b/fswidget.h
index 8becd7a..e0a59c5 100644
--- a/fswidget.h
+++ b/fswidget.h
@@ -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);