summaryrefslogtreecommitdiffstats
path: root/fswidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fswidget.cpp')
-rw-r--r--fswidget.cpp24
1 files changed, 23 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();
+ }
+ }
+}