summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-03-30 11:04:10 +0200
committerArno <arno@disconnect.de>2018-03-30 11:04:10 +0200
commite932aafaa203f70c9be29879fc17bde9d2ac53c2 (patch)
treedf9c410cbe048545a880da2db91a3923b2203e90
parent5df1e778010b5529e9ea37d901c2ce6063abccb3 (diff)
downloadSheMov-e932aafaa203f70c9be29879fc17bde9d2ac53c2.tar.gz
SheMov-e932aafaa203f70c9be29879fc17bde9d2ac53c2.tar.bz2
SheMov-e932aafaa203f70c9be29879fc17bde9d2ac53c2.zip
Add untar action
tries to tar xf selected files. If tar was successful, the archive is deleted. Should make archiving pics a bit easier.
-rw-r--r--filesystemwidget.cpp14
-rw-r--r--filesystemwidget.h1
-rw-r--r--shemov.cpp4
-rw-r--r--shemov.h1
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();
diff --git a/shemov.cpp b/shemov.cpp
index 205f671..0779a8f 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -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);
diff --git a/shemov.h b/shemov.h
index 14d807d..1b3b67b 100644
--- a/shemov.h
+++ b/shemov.h
@@ -116,6 +116,7 @@ class SheMov : public QMainWindow {
QAction *mFSPreviewA;
QAction *mFSResizeA;
QAction *mUnpackA;
+ QAction *mUntarA;
QAction *mSearchDialogA;
//Filesystem View Actions