From 88eb3c616d6e9eb49158f4b33d7e856742e536be Mon Sep 17 00:00:00 2001 From: Alexander Lenhardt Date: Wed, 16 May 2012 11:22:47 +0200 Subject: let value() also query the Settings object if a value can not be found in the m_vars hash, value() will query the Settings object first before returning the default value. This allows to specify arbitrary tags to be defined in e.g. config.xml which can later be accessed by installationscripts. Change-Id: I881ff961e3647fa32a0219bbfc8bbb89935ff3d4 Reviewed-by: Karsten Heimrich --- src/libs/installer/packagemanagercore.cpp | 7 +++++-- src/libs/installer/settings.cpp | 5 +++++ src/libs/installer/settings.h | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) (limited to 'src/libs/installer') diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 81537814c..fa7e88a04 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -1369,7 +1369,10 @@ QString PackageManagerCore::value(const QString &key, const QString &defaultValu return dir; } #endif - return d->m_vars.value(key, defaultValue); + if (d->m_vars.contains(key)) + return d->m_vars.value(key); + + return d->m_settings.value(key, defaultValue).toString(); } /*! @@ -1389,7 +1392,7 @@ void PackageManagerCore::setValue(const QString &key, const QString &value) */ bool PackageManagerCore::containsValue(const QString &key) const { - return d->m_vars.contains(key); + return d->m_vars.contains(key) || d->m_settings.containsValue(key); } void PackageManagerCore::setSharedFlag(const QString &key, bool value) diff --git a/src/libs/installer/settings.cpp b/src/libs/installer/settings.cpp index 151c412eb..181152646 100644 --- a/src/libs/installer/settings.cpp +++ b/src/libs/installer/settings.cpp @@ -465,6 +465,11 @@ void Settings::addUserRepositories(const QSet &repositories) d->m_data.insertMulti(scUserRepositories, QVariant().fromValue(repository)); } +bool Settings::containsValue(const QString &key) const +{ + return d->m_data.contains(key); +} + QVariant Settings::value(const QString &key, const QVariant &defaultValue) const { return d->m_data.value(key, defaultValue); diff --git a/src/libs/installer/settings.h b/src/libs/installer/settings.h index d8864b8ce..ad7ad9e1f 100644 --- a/src/libs/installer/settings.h +++ b/src/libs/installer/settings.h @@ -115,6 +115,7 @@ public: QStringList certificateFiles() const; bool allowNonAsciiCharacters() const; + bool containsValue(const QString &key) const; QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const; QVariantList values(const QString &key, const QVariantList &defaultValue = QVariantList()) const; -- cgit v1.2.3