From d48cb97ba1b1179ce314d6ab190a7379f802465a Mon Sep 17 00:00:00 2001 From: kh1 Date: Tue, 15 Nov 2011 12:37:01 +0100 Subject: Use QSet throughout the whole code, saves us QList conversions. Remove default parameter from Repo ctor, lead already to confusion. Also add some more specific {get/set} repo functions, to be able to distinguish between the different kind of repositories (needed for setting dialog). Change-Id: I2c1e4d5377799f54e408a89785bdc5f01619f846 Reviewed-by: Tim Jenssen Reviewed-by: Alexander Lenhardt --- installerbuilder/libinstaller/settings.cpp | 59 +++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 17 deletions(-) (limited to 'installerbuilder/libinstaller/settings.cpp') diff --git a/installerbuilder/libinstaller/settings.cpp b/installerbuilder/libinstaller/settings.cpp index 956ac2482..2f6caeae7 100644 --- a/installerbuilder/libinstaller/settings.cpp +++ b/installerbuilder/libinstaller/settings.cpp @@ -56,6 +56,7 @@ static const QLatin1String scBackground("Background"); static const QLatin1String scAdminTargetDir("AdminTargetDir"); static const QLatin1String scUninstallerName("UninstallerName"); static const QLatin1String scUserRepositories("UserRepositories"); +static const QLatin1String scTmpRepositories("TemporaryRepositories"); static const QLatin1String scUninstallerIniFile("UninstallerIniFile"); static const QLatin1String scRemoteRepositories("RemoteRepositories"); static const QLatin1String scSigningCertificate("SigningCertificate"); @@ -84,7 +85,7 @@ static QString splitTrimmed(const QString &string) return result.join(QLatin1String("\n")); } -static QList readRepositories(QXmlStreamReader &reader, bool isDefault) +static QSet readRepositories(QXmlStreamReader &reader, bool isDefault) { QSet set; while (reader.readNextStartElement()) { @@ -107,7 +108,7 @@ static QList readRepositories(QXmlStreamReader &reader, bool isDefau reader.skipCurrentElement(); } } - return set.toList(); + return set; } static QVariantHash readTitles(QXmlStreamReader &reader) @@ -145,7 +146,12 @@ static QHash readPages(QXmlStreamReader &reader) class Settings::Private : public QSharedData { public: + Private() + : m_replacementRepos(false) + {} + QVariantHash m_data; + bool m_replacementRepos; QString makeAbsolutePath(const QString &path) const { @@ -211,11 +217,8 @@ Settings Settings::fromFileAndPrefix(const QString &path, const QString &prefix) if (name == scSigningCertificate) s.d->m_data.insertMulti(name, s.d->makeAbsolutePath(reader.readElementText())); - if (name == scRemoteRepositories) { - QList repositories = readRepositories(reader, true); - foreach (const Repository &repository, repositories) - s.d->m_data.insertMulti(scRepositories, QVariant().fromValue(repository)); - } + if (name == scRemoteRepositories) + s.addDefaultRepositories(readRepositories(reader, true)); if (name == scPages) { QHash pages = readPages(reader); @@ -369,29 +372,51 @@ QByteArray Settings::publicKey() const return d->m_data.value(scPublicKey).toByteArray(); } -QList Settings::repositories() const +bool Settings::hasReplacementRepos() const +{ + return d->m_replacementRepos; +} + +QSet Settings::repositories() const { + if (d->m_replacementRepos) + return variantListToSet(d->m_data.values(scTmpRepositories)); + return variantListToSet(d->m_data.values(scRepositories) - + d->m_data.values(scUserRepositories)).toList(); + + d->m_data.values(scUserRepositories) + d->m_data.values(scTmpRepositories)); } -void Settings::setTemporaryRepositories(const QList &repositories, bool replace) +QSet Settings::defaultRepositories() const { - if (replace) - d->m_data.remove(scRepositories); + return variantListToSet(d->m_data.values(scRepositories)); +} - foreach (const Repository &repository, repositories.toSet()) +void Settings::addDefaultRepositories(const QSet &repositories) +{ + foreach (const Repository &repository, repositories) d->m_data.insertMulti(scRepositories, QVariant().fromValue(repository)); } -QList Settings::userRepositories() const +QSet Settings::temporaryRepositories() const +{ + return variantListToSet(d->m_data.values(scTmpRepositories)); +} + +void Settings::setTemporaryRepositories(const QSet &repositories, bool replace) +{ + d->m_replacementRepos = replace; + foreach (const Repository &repository, repositories) + d->m_data.insertMulti(scTmpRepositories, QVariant().fromValue(repository)); +} + +QSet Settings::userRepositories() const { - return variantListToSet(d->m_data.values(scUserRepositories)).toList(); + return variantListToSet(d->m_data.values(scUserRepositories)); } -void Settings::addUserRepositories(const QList &repositories) +void Settings::addUserRepositories(const QSet &repositories) { - foreach (const Repository &repository, repositories.toSet()) + foreach (const Repository &repository, repositories) d->m_data.insertMulti(scUserRepositories, QVariant().fromValue(repository)); } -- cgit v1.2.3