summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2014-06-07 13:49:49 +0200
committerArno <am@disconnect.de>2014-06-07 13:49:49 +0200
commit0dd1011617225036a51219125c8f3442b2a0aac3 (patch)
treea34536f9ccf1072c76f08c8d4a464f7302a8e39e
parentef640ea25b74cb06ab4d11eb414bc4e96ecb8d65 (diff)
downloadSheMov-0dd1011617225036a51219125c8f3442b2a0aac3.tar.gz
SheMov-0dd1011617225036a51219125c8f3442b2a0aac3.tar.bz2
SheMov-0dd1011617225036a51219125c8f3442b2a0aac3.zip
Unpack
Added entry for unpacking archives. For now zip and rar are recognized.
-rw-r--r--filesystemwidget.cpp23
-rw-r--r--filesystemwidget.h1
-rw-r--r--shemov.cpp4
-rw-r--r--shemov.h1
4 files changed, 29 insertions, 0 deletions
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;