File indexing completed on 2024-06-23 05:19:21
0001 /* 0002 SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 0006 */ 0007 0008 #include "attachmenttemporaryfilesdirs.h" 0009 0010 #include <QDir> 0011 #include <QFile> 0012 #include <QTimer> 0013 0014 using namespace MimeTreeParser; 0015 0016 class MimeTreeParser::AttachmentTemporaryFilesDirsPrivate 0017 { 0018 public: 0019 AttachmentTemporaryFilesDirsPrivate() = default; 0020 0021 QStringList mTempFiles; 0022 QStringList mTempDirs; 0023 int mDelayRemoveAll = 10000; 0024 }; 0025 0026 AttachmentTemporaryFilesDirs::AttachmentTemporaryFilesDirs(QObject *parent) 0027 : QObject(parent) 0028 , d(new AttachmentTemporaryFilesDirsPrivate) 0029 { 0030 } 0031 0032 AttachmentTemporaryFilesDirs::~AttachmentTemporaryFilesDirs() = default; 0033 0034 void AttachmentTemporaryFilesDirs::setDelayRemoveAllInMs(int ms) 0035 { 0036 d->mDelayRemoveAll = (ms < 0) ? 0 : ms; 0037 } 0038 0039 void AttachmentTemporaryFilesDirs::removeTempFiles() 0040 { 0041 QTimer::singleShot(d->mDelayRemoveAll, this, &AttachmentTemporaryFilesDirs::slotRemoveTempFiles); 0042 } 0043 0044 void AttachmentTemporaryFilesDirs::forceCleanTempFiles() 0045 { 0046 QStringList::ConstIterator end = d->mTempFiles.constEnd(); 0047 for (QStringList::ConstIterator it = d->mTempFiles.constBegin(); it != end; ++it) { 0048 QFile::remove(*it); 0049 } 0050 d->mTempFiles.clear(); 0051 end = d->mTempDirs.constEnd(); 0052 for (QStringList::ConstIterator it = d->mTempDirs.constBegin(); it != end; ++it) { 0053 QDir(*it).rmdir(*it); 0054 } 0055 d->mTempDirs.clear(); 0056 } 0057 0058 void AttachmentTemporaryFilesDirs::slotRemoveTempFiles() 0059 { 0060 forceCleanTempFiles(); 0061 // Delete it after cleaning 0062 deleteLater(); 0063 } 0064 0065 void AttachmentTemporaryFilesDirs::addTempFile(const QString &file) 0066 { 0067 if (!d->mTempFiles.contains(file)) { 0068 d->mTempFiles.append(file); 0069 } 0070 } 0071 0072 void AttachmentTemporaryFilesDirs::addTempDir(const QString &dir) 0073 { 0074 if (!d->mTempDirs.contains(dir)) { 0075 d->mTempDirs.append(dir); 0076 } 0077 } 0078 0079 QStringList AttachmentTemporaryFilesDirs::temporaryFiles() const 0080 { 0081 return d->mTempFiles; 0082 } 0083 0084 QStringList AttachmentTemporaryFilesDirs::temporaryDirs() const 0085 { 0086 return d->mTempDirs; 0087 } 0088 0089 #include "moc_attachmenttemporaryfilesdirs.cpp"