diff --git a/src/blackmisc/valuecache.cpp b/src/blackmisc/valuecache.cpp index a84772fc3..5d1713151 100644 --- a/src/blackmisc/valuecache.cpp +++ b/src/blackmisc/valuecache.cpp @@ -278,6 +278,14 @@ namespace BlackMisc return {}; } + void CValueCache::clearAllValues(const QString &keyPrefix) + { + QMutexLocker lock(&m_mutex); + auto values = getAllValues(keyPrefix); + for (auto it = values.begin(); it != values.end(); ++it) { it.value() = CVariant(); } + changeValues({ values, QDateTime::currentMSecsSinceEpoch() }); + } + CValueCache::BatchGuard CValueCache::batchChanges(QObject *owner) { Q_ASSERT(QThread::currentThread() == owner->thread()); @@ -464,7 +472,7 @@ namespace BlackMisc { if (! value.isValid()) { - return CStatusMessage(this, CStatusMessage::SeverityWarning, "Uninitialized value for " + element.m_key); + return CStatusMessage(this, CStatusMessage::SeverityDebug, "Uninitialized value for " + element.m_key); } else if (value.userType() != element.m_metaType) { diff --git a/src/blackmisc/valuecache.h b/src/blackmisc/valuecache.h index e068403fb..3a3317112 100644 --- a/src/blackmisc/valuecache.h +++ b/src/blackmisc/valuecache.h @@ -121,6 +121,10 @@ namespace BlackMisc //! \threadsafe CStatusMessage loadFromFiles(const QString &directory); + //! Clear all values from the cache. + //! \threadsafe + void clearAllValues(const QString &keyPrefix = {}); + //! Begins a batch of changes to be made through CCached instances owned by owner. //! \details All changes made through those CCached instances will be deferred until the returned RAII object is //! destroyed. If the destruction happens during stack unwinding due to an exception being thrown, the changes are