diff options
Diffstat (limited to 'copydialog.cpp')
-rw-r--r-- | copydialog.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/copydialog.cpp b/copydialog.cpp index 0ae2f73..957dfe5 100644 --- a/copydialog.cpp +++ b/copydialog.cpp @@ -7,6 +7,8 @@ #include <QSettings> #include <QCloseEvent> #include <QFileDialog> +#include <QProgressDialog> +#include <QMessageBox> #include "copydialog.h" @@ -45,6 +47,7 @@ CopyDialog::CopyDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f) resultGB->setLayout(resultL); QHBoxLayout *buttonL = new QHBoxLayout; QPushButton *copyB = new QPushButton(tr("Copy!")); + connect(copyB, &QPushButton::clicked, this, &CopyDialog::copy); buttonL->addStretch(); buttonL->addWidget(copyB); QPushButton *closeB = new QPushButton(tr("Close")); @@ -96,6 +99,26 @@ void CopyDialog::refresh(){ mResultTE->setText(res); } +void CopyDialog::copy(){ + QString destDir = QString("%1/%2").arg(mDstE->text()).arg(mFolderE->text()); + QFile destF(destDir); + if(destF.exists()){ + QMessageBox::critical(this, tr("Error"), tr("Destination directory already exists!")); + return; + } + QDir ddir(mDstE->text()); + ddir.mkdir(mFolderE->text()); + QProgressDialog progress(tr("Copying files..."), tr("Cancel"), 0, mSources.count(), this); + progress.setWindowModality(Qt::WindowModal); + for(int i = 0; i < mSources.count(); ++i){ + progress.setValue(i); + QString dest = getDestinationFile(mSources.at(i)); + QFile::copy(mSources.at(i), dest); + } + progress.setValue(mSources.count()); + close(); +} + QString CopyDialog::getDestinationFile(const QString &srcFn){ QFileInfo fi(srcFn); if(fi.exists()){ |