summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/settings.cpp
diff options
context:
space:
mode:
authorkh <karsten.heimrich@theqtcompany.com>2014-11-25 12:21:33 +0100
committerKarsten Heimrich <karsten.heimrich@theqtcompany.com>2014-11-26 14:48:53 +0100
commitd18b9696e573aa7b3f38784f6c5764b9fe6fd81b (patch)
treeb322cefe545a6425a0d87c7ef191fcda973fbb98 /src/libs/installer/settings.cpp
parentd81176d2dd3b03cc6a2f9d69e1fd1e90832a0374 (diff)
Implement server authentication and updating repository credentials.
Task-number: QTIFW-570 Change-Id: I7b6b1fab8279331e5cb4b4da86726322b44a1109 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Diffstat (limited to 'src/libs/installer/settings.cpp')
-rw-r--r--src/libs/installer/settings.cpp61
1 files changed, 41 insertions, 20 deletions
diff --git a/src/libs/installer/settings.cpp b/src/libs/installer/settings.cpp
index 6006e6349..d38a39eb6 100644
--- a/src/libs/installer/settings.cpp
+++ b/src/libs/installer/settings.cpp
@@ -496,50 +496,54 @@ void Settings::addDefaultRepositories(const QSet<Repository> &repositories)
d->m_data.insertMulti(scRepositories, QVariant().fromValue(repository));
}
-Settings::Update
-Settings::updateDefaultRepositories(const QHash<QString, QPair<Repository, Repository> > &updates)
+static bool apply(const RepoHash &updates, QHash<QUrl, Repository> *reposToUpdate)
{
- if (updates.isEmpty())
- return Settings::NoUpdatesApplied;
-
- QHash <QUrl, Repository> defaultRepos;
- foreach (const QVariant &variant, d->m_data.values(scRepositories)) {
- const Repository repository = variant.value<Repository>();
- defaultRepos.insert(repository.url(), repository);
- }
-
bool update = false;
QList<QPair<Repository, Repository> > values = updates.values(QLatin1String("replace"));
for (int a = 0; a < values.count(); ++a) {
const QPair<Repository, Repository> data = values.at(a);
- if (defaultRepos.contains(data.second.url())) {
+ if (reposToUpdate->contains(data.first.url())) {
update = true;
- defaultRepos.remove(data.second.url());
- defaultRepos.insert(data.first.url(), data.first);
+ reposToUpdate->remove(data.first.url());
+ reposToUpdate->insert(data.second.url(), data.second);
}
}
values = updates.values(QLatin1String("remove"));
for (int a = 0; a < values.count(); ++a) {
const QPair<Repository, Repository> data = values.at(a);
- if (defaultRepos.contains(data.first.url())) {
+ if (reposToUpdate->contains(data.first.url())) {
update = true;
- defaultRepos.remove(data.first.url());
+ reposToUpdate->remove(data.first.url());
}
}
values = updates.values(QLatin1String("add"));
for (int a = 0; a < values.count(); ++a) {
const QPair<Repository, Repository> data = values.at(a);
- if (!defaultRepos.contains(data.first.url())) {
+ if (!reposToUpdate->contains(data.first.url())) {
update = true;
- defaultRepos.insert(data.first.url(), data.first);
+ reposToUpdate->insert(data.first.url(), data.first);
}
}
+ return update;
+}
- if (update)
+Settings::Update Settings::updateDefaultRepositories(const RepoHash &updates)
+{
+ if (updates.isEmpty())
+ return Settings::NoUpdatesApplied;
+
+ QHash <QUrl, Repository> defaultRepos;
+ foreach (const QVariant &variant, d->m_data.values(scRepositories)) {
+ const Repository repository = variant.value<Repository>();
+ defaultRepos.insert(repository.url(), repository);
+ }
+
+ const bool updated = apply(updates, &defaultRepos);
+ if (updated)
setDefaultRepositories(defaultRepos.values().toSet());
- return update ? Settings::UpdatesApplied : Settings::NoUpdatesApplied;
+ return updated ? Settings::UpdatesApplied : Settings::NoUpdatesApplied;
}
QSet<Repository> Settings::temporaryRepositories() const
@@ -577,6 +581,23 @@ void Settings::addUserRepositories(const QSet<Repository> &repositories)
d->m_data.insertMulti(scUserRepositories, QVariant().fromValue(repository));
}
+Settings::Update Settings::updateUserRepositories(const RepoHash &updates)
+{
+ if (updates.isEmpty())
+ return Settings::NoUpdatesApplied;
+
+ QHash <QUrl, Repository> reposToUpdate;
+ foreach (const QVariant &variant, d->m_data.values(scUserRepositories)) {
+ const Repository repository = variant.value<Repository>();
+ reposToUpdate.insert(repository.url(), repository);
+ }
+
+ const bool updated = apply(updates, &reposToUpdate);
+ if (updated)
+ setUserRepositories(reposToUpdate.values().toSet());
+ return updated ? Settings::UpdatesApplied : Settings::NoUpdatesApplied;
+}
+
bool Settings::containsValue(const QString &key) const
{
return d->m_data.contains(key);