diff --git a/src/common/davitemslistjob.cpp b/src/common/davitemslistjob.cpp --- a/src/common/davitemslistjob.cpp +++ b/src/common/davitemslistjob.cpp @@ -30,6 +30,8 @@ #include #include +#include + using namespace KDAV; namespace KDAV { diff --git a/src/common/etagcache.h b/src/common/etagcache.h --- a/src/common/etagcache.h +++ b/src/common/etagcache.h @@ -21,12 +21,14 @@ #include "kpimkdav_export.h" -#include #include -#include #include +#include + namespace KDAV { +class EtagCachePrivate; + /** * @short A helper class to cache etags. * @@ -45,6 +47,7 @@ * of items found in @p collection. */ explicit EtagCache(QObject *parent = nullptr); + ~EtagCache(); /** * Sets the ETag for the remote ID. If the remote ID is marked as @@ -97,8 +100,7 @@ void setEtagInternal(const QString &remoteId, const QString &etag); private: - QMap mCache; - QSet mChangedRemoteIds; + const std::unique_ptr d; }; } diff --git a/src/common/etagcache.cpp b/src/common/etagcache.cpp --- a/src/common/etagcache.cpp +++ b/src/common/etagcache.cpp @@ -18,62 +18,77 @@ #include "etagcache.h" +#include +#include + using namespace KDAV; +namespace KDAV { +class EtagCachePrivate +{ +public: + QMap mCache; + QSet mChangedRemoteIds; +}; +} + EtagCache::EtagCache(QObject *parent) : QObject(parent) + , d(new EtagCachePrivate) { } +EtagCache::~EtagCache() = default; + void EtagCache::setEtag(const QString &remoteId, const QString &etag) { setEtagInternal(remoteId, etag); - if (mChangedRemoteIds.contains(remoteId)) { - mChangedRemoteIds.remove(remoteId); + if (d->mChangedRemoteIds.contains(remoteId)) { + d->mChangedRemoteIds.remove(remoteId); } } void EtagCache::setEtagInternal(const QString &remoteId, const QString &etag) { - mCache[ remoteId ] = etag; + d->mCache[ remoteId ] = etag; } bool EtagCache::contains(const QString &remoteId) const { - return mCache.contains(remoteId); + return d->mCache.contains(remoteId); } bool EtagCache::etagChanged(const QString &remoteId, const QString &refEtag) const { if (!contains(remoteId)) { return true; } - return mCache.value(remoteId) != refEtag; + return d->mCache.value(remoteId) != refEtag; } void EtagCache::markAsChanged(const QString &remoteId) { - mChangedRemoteIds.insert(remoteId); + d->mChangedRemoteIds.insert(remoteId); } bool EtagCache::isOutOfDate(const QString &remoteId) const { - return mChangedRemoteIds.contains(remoteId); + return d->mChangedRemoteIds.contains(remoteId); } void EtagCache::removeEtag(const QString &remoteId) { - mChangedRemoteIds.remove(remoteId); - mCache.remove(remoteId); + d->mChangedRemoteIds.remove(remoteId); + d->mCache.remove(remoteId); } QStringList EtagCache::urls() const { - return mCache.keys(); + return d->mCache.keys(); } QStringList EtagCache::changedRemoteIds() const { - return mChangedRemoteIds.toList(); + return d->mChangedRemoteIds.toList(); }