, m_bOverwriteAllFiles(false)
, m_bOverwriteAllDirs(false)
, m_conflictError(0)
+ , m_dirsFailedError(0)
, m_reportTimer(0)
{
}
bool m_bOverwriteAllFiles;
bool m_bOverwriteAllDirs;
int m_conflictError;
+ int m_dirsFailedError;
+ QString m_dirsFailedErrorText;
QTimer *m_reportTimer;
--m_processedFiles; // undo the "start at 1" hack
slotReport(); // display final numbers, important if progress dialog stays up
+ if (m_dirsFailedError) {
+ q->setError(m_dirsFailedError);
+ q->setErrorText(m_dirsFailedErrorText);
+ }
q->emitResult();
}
}
void CopyJobPrivate::slotResultDeletingDirs(KJob *job)
{
Q_Q(CopyJob);
+ const QUrl url = static_cast<KIO::SimpleJob *>(job)->url();
if (job->error()) {
- // Couldn't remove directory. Well, perhaps it's not empty
- // because the user pressed Skip for a given file in it.
- // Let's not display "Could not remove dir ..." for each of those dir !
+ m_dirsFailedError = job->error();
+ m_dirsFailedErrorText = job->errorText();
+ // Remove the parents
+ skip(url, true);
} else {
- m_successSrcList.append(static_cast<KIO::SimpleJob *>(job)->url());
+ m_successSrcList.append(url);
}
q->removeSubjob(job);
assert(!q->hasSubjobs());