From 0dd1011617225036a51219125c8f3442b2a0aac3 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 7 Jun 2014 13:49:49 +0200 Subject: Unpack Added entry for unpacking archives. For now zip and rar are recognized. --- filesystemwidget.cpp | 23 +++++++++++++++++++++++ filesystemwidget.h | 1 + shemov.cpp | 4 ++++ shemov.h | 1 + 4 files changed, 29 insertions(+) diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp index 6fbe552..b8c2168 100644 --- a/filesystemwidget.cpp +++ b/filesystemwidget.cpp @@ -477,6 +477,29 @@ void FilesystemWidget::preview(){ } } +void FilesystemWidget::unpack(){ + QModelIndexList selectedIdxs = mFileView->selectionModel()->selectedIndexes(); + foreach(QModelIndex idx, selectedIdxs){ + if(!idx.column() == SmDirModel::NameRole){ + return; + } + QString mimeType = idx.data(SmDirModel::TypeRole).toString(); + if(mimeType == "application/zip" || mimeType == "application/x-rar"){ + QString prg = "/usr/bin/7z"; + QString archive = idx.data(SmDirModel::NameRole).toString(); + QStringList args = QStringList() << "-o/home/am/movs/pics/7z" << "-y" << "e" << idx.data(SmDirModel::FullPathRole).toString(); + QString msg = QString(tr("Unpacking %1")).arg(archive); + emit statusbarMessage(msg); + int retval = QProcess::execute(prg, args); + if(retval == 0){ + emit statusbarMessage(tr("Unpacking: success!")); + }else{ + emit statusbarMessage(tr("Unpacking: failed!")); + } + } + } +} + void FilesystemWidget::deleteRecursive(const QFileInfo &start){ if(start.isDir()){ QDir curDir = QDir(start.absoluteFilePath());; diff --git a/filesystemwidget.h b/filesystemwidget.h index 5547d4a..e4b26e8 100644 --- a/filesystemwidget.h +++ b/filesystemwidget.h @@ -63,6 +63,7 @@ class FilesystemWidget : public QWidget { void selectAllPV(); void setWindowTitle(); void preview(); + void unpack(); private slots: void dirExpanded(const QModelIndex &idx); diff --git a/shemov.cpp b/shemov.cpp index d939c72..b616f4c 100644 --- a/shemov.cpp +++ b/shemov.cpp @@ -394,6 +394,8 @@ void SheMov::createActions(){ connect(mConsistencyA, SIGNAL(triggered()), this, SLOT(checkConsistency())); mNewPicsA = new QAction(tr("Archive pics...."), this); connect(mNewPicsA, SIGNAL(triggered()), this, SLOT(newPicsDialog())); + mUnpackA = new QAction(tr("Unpack..."), this); + connect(mUnpackA, SIGNAL(triggered()), mFSWidget, SLOT(unpack())); //connnect mQuitA = new QAction(tr("Quit"), this); @@ -738,6 +740,7 @@ void SheMov::createMenus(){ mEditFSMenu->addAction(mPasteA); mEditFSMenu->addSeparator(); mEditFSMenu->addAction(mMountDvdA); + mEditFSMenu->addAction(mUnpackA); mEditFSMenu->addSeparator(); mEditFSMenu->addAction(mMoveToArchiveA); mEditFSMenu->addSeparator(); @@ -846,6 +849,7 @@ void SheMov::createMenus(){ mFSWidget->fileView()->addAction(mArchiveSelectedPicsA); mFSWidget->fileView()->addAction(mArchiveSelectedMovsA); mFSWidget->fileView()->addAction(createSeparator()); + mFSWidget->fileView()->addAction(mUnpackA); mFSWidget->fileView()->addAction(mFSPreviewA); mFSWidget->fileView()->addAction(mFSViewPropertiesA); diff --git a/shemov.h b/shemov.h index 196401e..f302c59 100644 --- a/shemov.h +++ b/shemov.h @@ -108,6 +108,7 @@ class SheMov : public QMainWindow { QAction *mFSViewPropertiesA; QAction *mFSPreviewA; QAction *mFSResizeA; + QAction *mUnpackA; //Filesystem View Actions QActionGroup *mOpenWithGroupFS; -- cgit v1.2.3-70-g09d2