summaryrefslogtreecommitdiffstats
path: root/installerbuilder/libinstaller/settings.cpp
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@nokia.com>2011-11-15 12:37:01 +0100
committerKarsten Heimrich <karsten.heimrich@nokia.com>2011-11-15 14:54:00 +0100
commitd48cb97ba1b1179ce314d6ab190a7379f802465a (patch)
tree21ed68e872ef7f1eef8fad1d276786af8ac50348 /installerbuilder/libinstaller/settings.cpp
parent2023eb987e50bdf751c444c3a86e36aad72efc5d (diff)
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 <tim.jenssen@nokia.com> Reviewed-by: Alexander Lenhardt <alexander.lenhardt@nokia.com>
Diffstat (limited to 'installerbuilder/libinstaller/settings.cpp')
-rw-r--r--installerbuilder/libinstaller/settings.cpp59
1 files changed, 42 insertions, 17 deletions
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<Repository> readRepositories(QXmlStreamReader &reader, bool isDefault)
+static QSet<Repository> readRepositories(QXmlStreamReader &reader, bool isDefault)
{
QSet<Repository> set;
while (reader.readNextStartElement()) {
@@ -107,7 +108,7 @@ static QList<Repository> readRepositories(QXmlStreamReader &reader, bool isDefau
reader.skipCurrentElement();
}
}
- return set.toList();
+ return set;
}
static QVariantHash readTitles(QXmlStreamReader &reader)
@@ -145,7 +146,12 @@ static QHash<QString, QVariantHash> 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<Repository> 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<QString, QVariantHash> pages = readPages(reader);
@@ -369,29 +372,51 @@ QByteArray Settings::publicKey() const
return d->m_data.value(scPublicKey).toByteArray();
}
-QList<Repository> Settings::repositories() const
+bool Settings::hasReplacementRepos() const
+{
+ return d->m_replacementRepos;
+}
+
+QSet<Repository> Settings::repositories() const
{
+ if (d->m_replacementRepos)
+ return variantListToSet<Repository>(d->m_data.values(scTmpRepositories));
+
return variantListToSet<Repository>(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<Repository> &repositories, bool replace)
+QSet<Repository> Settings::defaultRepositories() const
{
- if (replace)
- d->m_data.remove(scRepositories);
+ return variantListToSet<Repository>(d->m_data.values(scRepositories));
+}
- foreach (const Repository &repository, repositories.toSet())
+void Settings::addDefaultRepositories(const QSet<Repository> &repositories)
+{
+ foreach (const Repository &repository, repositories)
d->m_data.insertMulti(scRepositories, QVariant().fromValue(repository));
}
-QList<Repository> Settings::userRepositories() const
+QSet<Repository> Settings::temporaryRepositories() const
+{
+ return variantListToSet<Repository>(d->m_data.values(scTmpRepositories));
+}
+
+void Settings::setTemporaryRepositories(const QSet<Repository> &repositories, bool replace)
+{
+ d->m_replacementRepos = replace;
+ foreach (const Repository &repository, repositories)
+ d->m_data.insertMulti(scTmpRepositories, QVariant().fromValue(repository));
+}
+
+QSet<Repository> Settings::userRepositories() const
{
- return variantListToSet<Repository>(d->m_data.values(scUserRepositories)).toList();
+ return variantListToSet<Repository>(d->m_data.values(scUserRepositories));
}
-void Settings::addUserRepositories(const QList<Repository> &repositories)
+void Settings::addUserRepositories(const QSet<Repository> &repositories)
{
- foreach (const Repository &repository, repositories.toSet())
+ foreach (const Repository &repository, repositories)
d->m_data.insertMulti(scUserRepositories, QVariant().fromValue(repository));
}