diff options
author | Arno <arno@disconnect.de> | 2018-03-31 20:23:56 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2018-03-31 20:23:56 +0200 |
commit | ab8c38e0c2d5370d2ef5c54bd2f8c414d49deb92 (patch) | |
tree | 088eaeded70bb19e0f67e14cdc01c644f0fd60be | |
parent | 2957e52dbe165c8a1f869bf5e690a0cac359c016 (diff) | |
download | SheMov-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.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); |