diff options
Diffstat (limited to 'filesystemwidget.cpp')
-rw-r--r-- | filesystemwidget.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp index a03b6f0..33491bb 100644 --- a/filesystemwidget.cpp +++ b/filesystemwidget.cpp @@ -583,15 +583,26 @@ void FilesystemWidget::unpack(){ foreach(QModelIndex idx, selectedIdxs){ QString mimeType = idx.data(SmDirModel::TypeRole).toString(); if(mimeType == "application/zip" || mimeType == "application/x-rar"){ - QStringList args = QStringList() << "-o/home/am/movs/pics/7z" << "-y" << "e" << idx.data(SmDirModel::FullPathRole).toString(); - mUnpackDlg->appendCommand(args); + QSettings s; + QString outputDir = s.value("paths/unpackpath").toString(); + QFileInfo fi(outputDir); + if(fi.isDir() && fi.isWritable()){ + QString outOption = QString("-o%1").arg(outputDir); + QStringList args = QStringList() << outOption << "-y" << "e" << idx.data(SmDirModel::FullPathRole).toString(); + mUnpackDlg->appendCommand(args); + }else{ + QMessageBox::critical(this, tr("Error"), tr("Unpack directory invalid.\nEither it doesn't exist or it's not writable!")); + return; + } } } mUnpackDlg->doIt(); } void FilesystemWidget::selectUnpackDir(){ - QModelIndex unpackDirIdx = mModel->index("/home/am/movs/pics/7z"); + QSettings s; + QString unpackDir = s.value("paths/unpackpath").toString(); + QModelIndex unpackDirIdx = mModel->index(unpackDir); if(unpackDirIdx.isValid()){ mDirView->selectionModel()->setCurrentIndex(mDirProxy->mapFromSource(unpackDirIdx), QItemSelectionModel::ClearAndSelect); } |