virtual ~DConfigPrivate() override;
+ inline bool invalid() const
+ {
+ const bool valid = backend && backend->isValid();
+ if (!valid)
+ qCWarning(cfLog, "DConfig is invalid of appid=%s name=%s, subpath=%s",
+ qPrintable(appId), qPrintable(name), qPrintable(subpath));
+
+ return !valid;
+ }
+
DConfigBackend *getOrCreateBackend();
DConfigBackend *createBackendByEnv();
if (DBusBackend::isServiceRegistered() || DBusBackend::isServiceActivatable()) {
qCDebug(cfLog, "Fallback to DBus mode");
backend.reset(new DBusBackend(this));
- } else {
+ }
+ if (!backend) {
qCDebug(cfLog, "Can't use DBus config service, fallback to DConfigFile mode");
backend.reset(new FileBackend(this));
}
QString DConfig::backendName() const
{
D_DC(DConfig);
+ if (d->invalid())
+ return QString();
+
return d->backend->name();
}
QStringList DConfig::keyList() const
{
D_DC(DConfig);
+ if (d->invalid())
+ return QStringList();
+
return d->backend->keyList();
}
bool DConfig::isValid() const
{
D_DC(DConfig);
- return d->backend->isValid();
+ return !d->invalid();
}
/*!
QVariant DConfig::value(const QString &key, const QVariant &fallback) const
{
D_DC(DConfig);
+ if (d->invalid())
+ return fallback;
+
return d->backend->value(key, fallback);
}
void DConfig::setValue(const QString &key, const QVariant &value)
{
D_D(DConfig);
+ if (d->invalid())
+ return;
+
d->backend->setValue(key, value);
}
void DConfig::reset(const QString &key)
{
D_D(DConfig);
+ if (d->invalid())
+ return;
+
d->backend->reset(key);
}
INCLUDEPATH += $$PWD/../base
-DEFINES += PREFIX=\\\"$$PREFIX\\\"
+INSTALL_PREFIX=$$QT_INSTALL_PREFIX
+isEmpty(INSTALL_PREFIX): INSTALL_PREFIX=$$[QT_INSTALL_PREFIX]
+DEFINES += PREFIX=\\\"$$INSTALL_PREFIX\\\"
HEADERS += \
$$PWD/dbasefilewatcher.h \
metaGuard = new FileCopyGuard(":/data/dconf-example.meta.json", QString("%1" PREFIX"/share/dsg/configs/%2/%3.json").arg(fileBackendLocalPerfix.value(), APP_ID, FILE_NAME));
backendType.set("DSG_DCONFIG_BACKEND_TYPE", "FileBackend");
- dsgDataDir.set("DSG_DATA_DIRS", "/usr/share/dsg");
+ dsgDataDir.set("DSG_DATA_DIRS", PREFIX"/share/dsg");
}
static void TearDownTestCase() {
QDir(fileBackendLocalPerfix.value()).removeRecursively();