6 #include <QStandardPaths>
12 CSettingsCache::CSettingsCache() : CValueCache(0) {}
17 static auto dummy = (connect(qApp, &QObject::destroyed, cache.get(), [] { cache.reset(); }),
nullptr);
22 const QString &CSettingsCache::persistentStore()
24 static const QString dir = CFileUtils::appendFilePaths(getCacheRootDirectory(), relativeFilePath());
28 const QString &CSettingsCache::lockFileName()
30 static const QString file = CFileUtils::appendFilePaths(persistentStore(),
".lock");
34 CStatusMessage CSettingsCache::lockFile(QLockFile &lock)
36 Q_ASSERT(!lock.isLocked());
37 if (!QDir::root().mkpath(persistentStore()))
39 return CStatusMessage(
this).error(u
"Failed to create %1") << persistentStore();
43 return CStatusMessage(
this).error(u
"Failed to lock %1: %2")
44 << lockFileName() << CFileUtils::lockFileError(lock);
51 QLockFile lock(lockFileName());
53 if (lockStatus.
isFailure()) {
return lockStatus; }
55 return saveToFiles(persistentStore(), keyPrefix);
60 QLockFile lock(lockFileName());
62 if (lockStatus.
isFailure()) {
return lockStatus; }
64 return saveToFiles(persistentStore(), keys);
67 void CSettingsCache::enableLocalSave()
69 connect(CSettingsCache::instance(), &CSettingsCache::valuesSaveRequested, CSettingsCache::instance(),
70 &CSettingsCache::saveToStoreByPacket);
75 QLockFile lock(lockFileName());
79 CLogMessage::preformatted(lockStatus);
83 CStatusMessage status = saveToFiles(persistentStore(), values.
toVariantMap());
84 CLogMessage::preformatted(status);
89 QLockFile lock(lockFileName());
91 if (lockStatus.
isFailure()) {
return lockStatus; }
93 return loadFromFiles(persistentStore());
96 QString CSettingsCache::filenameForKey(
const QString &key)
98 return CFileUtils::appendFilePaths(persistentStore(), instance()->CValueCache::filenameForKey(key));
101 const QString &CSettingsCache::relativeFilePath()
103 static const QString p(
"/settings/core");
107 QStringList CSettingsCache::enumerateStore()
const {
return enumerateFiles(persistentStore()); }
Singleton derived class of CValueCache, for settings.
Streamable status message, e.g.
bool isFailure() const
Operation considered unsuccessful.
Value class used for signalling changed values in the cache.
CVariantMap toVariantMap() const
Discard timestamps and return as variant map.
Free functions in swift::misc.