diff options
-rw-r--r-- | filesystemwidget.cpp | 14 | ||||
-rw-r--r-- | filesystemwidget.h | 1 | ||||
-rw-r--r-- | shemov.cpp | 4 | ||||
-rw-r--r-- | shemov.h | 1 |
4 files changed, 20 insertions, 0 deletions
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp index 5141c01..94455f3 100644 --- a/filesystemwidget.cpp +++ b/filesystemwidget.cpp @@ -613,6 +613,20 @@ void FilesystemWidget::unpack(){ mUnpackDlg->doIt(); } +void FilesystemWidget::untar(){ + QModelIndexList selectedIdxs = mFileView->selectionModel()->selectedRows(); + for(const QModelIndex &idx : selectedIdxs){ + QFileInfo fi(idx.data(SmDirModel::FullPathRole).toString()); + QString cmdStr = QString("/usr/bin/tar -C %1 -xf %2").arg(fi.absolutePath()).arg(idx.data(SmDirModel::FullPathRole).toString()); + int retval = QProcess::execute(cmdStr); + if(retval == 0){ + QFile::remove(idx.data(SmDirModel::FullPathRole).toString()); + } + QString msg = QString(tr("Executed %1: %2")).arg(cmdStr).arg(QString::number(retval)); + emit statusbarMessage(msg); + } +} + void FilesystemWidget::selectUnpackDir(){ QSettings s; QString unpackDir = s.value("paths/unpackpath").toString(); diff --git a/filesystemwidget.h b/filesystemwidget.h index 27c366f..0b34874 100644 --- a/filesystemwidget.h +++ b/filesystemwidget.h @@ -74,6 +74,7 @@ class FilesystemWidget : public QWidget { void setWindowTitle(); void preview(); void unpack(); + void untar(); void selectUnpackDir(); void centerCurrent(); void resizeFileView(); @@ -410,6 +410,8 @@ void SheMov::createActions(){ connect(mNewPicsA, &QAction::triggered, this, &SheMov::newPicsDialog); mUnpackA = new QAction(QIcon(":/dog_hood.png"), tr("Unpack..."), this); connect(mUnpackA, &QAction::triggered, mFSWidget, &FilesystemWidget::unpack); + mUntarA = new QAction(QIcon(":/clean_tampon.png"), tr("Untar"), this); + connect(mUntarA, &QAction::triggered, mFSWidget, &FilesystemWidget::untar); mSearchDialogA = new QAction(tr("Search..."), this); mSearchDialogA->setShortcut(tr("CTRL+f")); connect(mSearchDialogA, &QAction::triggered, mSearchDialog, &SearchDialog::show); @@ -748,6 +750,7 @@ void SheMov::createMenus(){ mEditFSMenu->addSeparator(); mEditFSMenu->addAction(mMountDvdA); mEditFSMenu->addAction(mUnpackA); + mEditFSMenu->addAction(mUntarA); mEditFSMenu->addSeparator(); mEditFSMenu->addAction(mMoveToArchiveA); mEditFSMenu->addSeparator(); @@ -867,6 +870,7 @@ void SheMov::createMenus(){ mFSWidget->fileView()->addAction(mArchiveSelectedMovsA); mFSWidget->fileView()->addAction(createSeparator()); mFSWidget->fileView()->addAction(mUnpackA); + mFSWidget->fileView()->addAction(mUntarA); mFSWidget->fileView()->addAction(createSeparator()); mFSWidget->fileView()->addAction(mFSPreviewA); mFSWidget->fileView()->addAction(mFSViewPropertiesA); @@ -116,6 +116,7 @@ class SheMov : public QMainWindow { QAction *mFSPreviewA; QAction *mFSResizeA; QAction *mUnpackA; + QAction *mUntarA; QAction *mSearchDialogA; //Filesystem View Actions |