Port QSettingsPrivate::get() to std::optional

... instead of a bool return and a QVariant out parameter.

Change-Id: I9d937668ede668075d1de5bb57f61e4c260aaddc
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Marc Mutz 2021-06-14 14:47:35 +02:00
parent 82063d9af1
commit c587ebf54c
5 changed files with 25 additions and 31 deletions

View File

@ -1202,7 +1202,7 @@ void QConfFileSettingsPrivate::set(const QString &key, const QVariant &value)
confFile->addedKeys.insert(theKey, value); confFile->addedKeys.insert(theKey, value);
} }
bool QConfFileSettingsPrivate::get(const QString &key, QVariant *value) const std::optional<QVariant> QConfFileSettingsPrivate::get(const QString &key) const
{ {
QSettingsKey theKey(key, caseSensitivity); QSettingsKey theKey(key, caseSensitivity);
ParsedSettingsMap::const_iterator j; ParsedSettingsMap::const_iterator j;
@ -1222,15 +1222,12 @@ bool QConfFileSettingsPrivate::get(const QString &key, QVariant *value) const
&& !confFile->removedKeys.contains(theKey)); && !confFile->removedKeys.contains(theKey));
} }
if (found && value)
*value = *j;
if (found) if (found)
return true; return *j;
if (!fallbacks) if (!fallbacks)
break; break;
} }
return false; return std::nullopt;
} }
QStringList QConfFileSettingsPrivate::children(const QString &prefix, ChildSpec spec) const QStringList QConfFileSettingsPrivate::children(const QString &prefix, ChildSpec spec) const
@ -3213,7 +3210,7 @@ void QSettings::remove(const QString &key)
bool QSettings::contains(const QString &key) const bool QSettings::contains(const QString &key) const
{ {
Q_D(const QSettings); Q_D(const QSettings);
return d->get(d->actualKey(key), nullptr); return d->get(d->actualKey(key)) != std::nullopt;
} }
/*! /*!
@ -3282,9 +3279,7 @@ QVariant QSettings::value(const QString &key, const QVariant &defaultValue) cons
qWarning("QSettings::value: Empty key passed"); qWarning("QSettings::value: Empty key passed");
return QVariant(); return QVariant();
} }
QVariant result = defaultValue; return d->get(d->actualKey(key)).value_or(defaultValue);
d->get(d->actualKey(key), &result);
return result;
} }
/*! /*!

View File

@ -332,7 +332,7 @@ public:
void remove(const QString &key) override; void remove(const QString &key) override;
void set(const QString &key, const QVariant &value) override; void set(const QString &key, const QVariant &value) override;
bool get(const QString &key, QVariant *value) const override; std::optional<QVariant> get(const QString &key) const override;
QStringList children(const QString &prefix, ChildSpec spec) const override; QStringList children(const QString &prefix, ChildSpec spec) const override;
void clear() override; void clear() override;
void sync() override; void sync() override;
@ -448,7 +448,7 @@ void QMacSettingsPrivate::set(const QString &key, const QVariant &value)
domains[0].userName, hostName); domains[0].userName, hostName);
} }
bool QMacSettingsPrivate::get(const QString &key, QVariant *value) const std::optional<QVariant> QMacSettingsPrivate::get(const QString &key) const
{ {
QCFString k = macKey(key); QCFString k = macKey(key);
for (int i = 0; i < numDomains; ++i) { for (int i = 0; i < numDomains; ++i) {
@ -456,17 +456,14 @@ bool QMacSettingsPrivate::get(const QString &key, QVariant *value) const
QCFType<CFPropertyListRef> ret = QCFType<CFPropertyListRef> ret =
CFPreferencesCopyValue(k, domains[i].applicationOrSuiteId, domains[i].userName, CFPreferencesCopyValue(k, domains[i].applicationOrSuiteId, domains[i].userName,
hostNames[j]); hostNames[j]);
if (ret) { if (ret)
if (value) return qtValue(ret);
*value = qtValue(ret);
return true;
}
} }
if (!fallbacks) if (!fallbacks)
break; break;
} }
return false; return std::nullopt;
} }
QStringList QMacSettingsPrivate::children(const QString &prefix, ChildSpec spec) const QStringList QMacSettingsPrivate::children(const QString &prefix, ChildSpec spec) const
@ -536,7 +533,7 @@ bool QMacSettingsPrivate::isWritable() const
that->set(impossibleKey, QVariant()); that->set(impossibleKey, QVariant());
that->sync(); that->sync();
bool writable = (status == QSettings::NoError) && that->get(impossibleKey, 0); bool writable = (status == QSettings::NoError) && that->get(impossibleKey).has_value();
that->remove(impossibleKey); that->remove(impossibleKey);
that->sync(); that->sync();

View File

@ -197,7 +197,7 @@ public:
virtual void remove(const QString &key) = 0; virtual void remove(const QString &key) = 0;
virtual void set(const QString &key, const QVariant &value) = 0; virtual void set(const QString &key, const QVariant &value) = 0;
virtual bool get(const QString &key, QVariant *value) const = 0; virtual std::optional<QVariant> get(const QString &key) const = 0;
enum ChildSpec { AllKeys, ChildKeys, ChildGroups }; enum ChildSpec { AllKeys, ChildKeys, ChildGroups };
virtual QStringList children(const QString &prefix, ChildSpec spec) const = 0; virtual QStringList children(const QString &prefix, ChildSpec spec) const = 0;
@ -264,7 +264,7 @@ public:
void remove(const QString &key) override; void remove(const QString &key) override;
void set(const QString &key, const QVariant &value) override; void set(const QString &key, const QVariant &value) override;
bool get(const QString &key, QVariant *value) const override; std::optional<QVariant> get(const QString &key) const override;
QStringList children(const QString &prefix, ChildSpec spec) const override; QStringList children(const QString &prefix, ChildSpec spec) const override;

View File

@ -62,7 +62,7 @@ public:
const QString &application); const QString &application);
~QWasmSettingsPrivate(); ~QWasmSettingsPrivate();
bool get(const QString &key, QVariant *value) const override; std::optional<QVariant> get(const QString &key) const override;
QStringList children(const QString &prefix, ChildSpec spec) const override; QStringList children(const QString &prefix, ChildSpec spec) const override;
void clear() override; void clear() override;
void sync() override; void sync() override;
@ -169,12 +169,12 @@ QWasmSettingsPrivate::~QWasmSettingsPrivate()
QConfFileSettingsPrivate::initAccess(); QConfFileSettingsPrivate::initAccess();
} }
bool QWasmSettingsPrivate::get(const QString &key, QVariant *value) const std::optional<QVariant> QWasmSettingsPrivate::get(const QString &key) const
{ {
if (isReadReady) if (isReadReady)
return QConfFileSettingsPrivate::get(key, value); return QConfFileSettingsPrivate::get(key);
return false; return std::nullopt;
} }
QStringList QWasmSettingsPrivate::children(const QString &prefix, ChildSpec spec) const QStringList QWasmSettingsPrivate::children(const QString &prefix, ChildSpec spec) const

View File

@ -387,7 +387,7 @@ public:
void remove(const QString &uKey) override; void remove(const QString &uKey) override;
void set(const QString &uKey, const QVariant &value) override; void set(const QString &uKey, const QVariant &value) override;
bool get(const QString &uKey, QVariant *value) const override; std::optional<QVariant> get(const QString &uKey) const override;
QStringList children(const QString &uKey, ChildSpec spec) const override; QStringList children(const QString &uKey, ChildSpec spec) const override;
void clear() override; void clear() override;
void sync() override; void sync() override;
@ -747,20 +747,22 @@ void QWinSettingsPrivate::set(const QString &uKey, const QVariant &value)
RegCloseKey(handle); RegCloseKey(handle);
} }
bool QWinSettingsPrivate::get(const QString &uKey, QVariant *value) const std::optional<QVariant> QWinSettingsPrivate::get(const QString &uKey) const
{ {
QString rKey = escapedKey(uKey); QString rKey = escapedKey(uKey);
QVariant value;
for (const RegistryKey &r : regList) { for (const RegistryKey &r : regList) {
HKEY handle = r.handle(); HKEY handle = r.handle();
if (handle != 0 && readKey(handle, rKey, value)) if (handle != 0 && readKey(handle, rKey, &value))
return true; return value;
if (!fallbacks) if (!fallbacks)
return false; return std::nullopt;
} }
return false; return std::nullopt;
} }
QStringList QWinSettingsPrivate::children(const QString &uKey, ChildSpec spec) const QStringList QWinSettingsPrivate::children(const QString &uKey, ChildSpec spec) const