From ab8c38e0c2d5370d2ef5c54bd2f8c414d49deb92 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 31 Mar 2018 20:23:56 +0200 Subject: 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. --- fswidget.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'fswidget.cpp') diff --git a/fswidget.cpp b/fswidget.cpp index c096090..ce65574 100644 --- a/fswidget.cpp +++ b/fswidget.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -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() << backA << forwardA << Helper::createSeparator(this) << refreshA << deleteFilesA << Helper::createSeparator(this) << archiveMovieA); + addActions(QList() << 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(); + } + } +} -- cgit v1.2.3-70-g09d2