diff options
author | kh <karsten.heimrich@theqtcompany.com> | 2014-11-25 12:21:33 +0100 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@theqtcompany.com> | 2014-11-26 14:48:53 +0100 |
commit | d18b9696e573aa7b3f38784f6c5764b9fe6fd81b (patch) | |
tree | b322cefe545a6425a0d87c7ef191fcda973fbb98 /src/libs/installer/settings.cpp | |
parent | d81176d2dd3b03cc6a2f9d69e1fd1e90832a0374 (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.cpp | 61 |
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); |