summaryrefslogtreecommitdiffstats
path: root/filesystemwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filesystemwidget.cpp')
-rw-r--r--filesystemwidget.cpp23
1 files changed, 23 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());;