summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-03-31 20:23:56 +0200
committerArno <arno@disconnect.de>2018-03-31 20:23:56 +0200
commitab8c38e0c2d5370d2ef5c54bd2f8c414d49deb92 (patch)
tree088eaeded70bb19e0f67e14cdc01c644f0fd60be
parent2957e52dbe165c8a1f869bf5e690a0cac359c016 (diff)
downloadSheMov-ab8c38e0c2d5370d2ef5c54bd2f8c414d49deb92.tar.gz
SheMov-ab8c38e0c2d5370d2ef5c54bd2f8c414d49deb92.tar.bz2
SheMov-ab8c38e0c2d5370d2ef5c54bd2f8c414d49deb92.zip
Implement unpack for FSWidget
Unconditionally try to extract all selected files with 7z to the current directory. Don't try to figure out if 7z is available or if the file is an archive.
-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);