diff options
author | Katja Marttila <katja.marttila@qt.io> | 2019-01-11 13:23:08 +0200 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2019-01-16 05:33:50 +0000 |
commit | 2f55dced317e7cb3cb7d69d8431bb277d51cbc62 (patch) | |
tree | 95d0207a64ad65b6dd07cb77d773cbd2640598d1 /src | |
parent | 2f30ae55a13cfe9aec894c5781d5f611e7872480 (diff) |
Organize categories alphabetically to ComponentSelectionPage
Task-number: QTIFW-1264
Change-Id: I14a54082c30107d9242632a69d73a637803c6f2d
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/installer/componentselectionpage_p.cpp | 17 | ||||
-rw-r--r-- | src/libs/installer/componentselectionpage_p.h | 2 | ||||
-rw-r--r-- | src/libs/installer/settings.cpp | 10 | ||||
-rw-r--r-- | src/libs/installer/settings.h | 1 |
4 files changed, 25 insertions, 5 deletions
diff --git a/src/libs/installer/componentselectionpage_p.cpp b/src/libs/installer/componentselectionpage_p.cpp index f77e0ae4b..0e60788cc 100644 --- a/src/libs/installer/componentselectionpage_p.cpp +++ b/src/libs/installer/componentselectionpage_p.cpp @@ -198,7 +198,7 @@ void ComponentSelectionPagePrivate::setupCategoryLayout() connect(fetchCategoryButton, &QPushButton::clicked, this, &ComponentSelectionPagePrivate::fetchRepositoryCategories); - foreach (RepositoryCategory repository, m_core->settings().repositoryCategories()) { + foreach (RepositoryCategory repository, m_core->settings().organizedRepositoryCategories()) { QCheckBox *checkBox = new QCheckBox; checkBox->setObjectName(repository.displayname()); connect(checkBox, &QCheckBox::stateChanged, this, @@ -324,8 +324,17 @@ void ComponentSelectionPagePrivate::checkboxStateChanged() } } -void ComponentSelectionPagePrivate::enableRepositoryCategory(int index, bool enable) { - RepositoryCategory repoCategory = m_core->settings().repositoryCategories().toList().at(index); +void ComponentSelectionPagePrivate::enableRepositoryCategory(const QString &repositoryName, bool enable) +{ + QMap<QString, RepositoryCategory> organizedRepositoryCategories = m_core->settings().organizedRepositoryCategories(); + + QMap<QString, RepositoryCategory>::iterator i = organizedRepositoryCategories.find(repositoryName); + RepositoryCategory repoCategory; + while (i != organizedRepositoryCategories.end() && i.key() == repositoryName) { + repoCategory = i.value(); + i++; + } + RepositoryCategory replacement = repoCategory; replacement.setEnabled(enable); QSet<RepositoryCategory> tmpRepoCategories = m_core->settings().repositoryCategories(); @@ -374,7 +383,7 @@ void ComponentSelectionPagePrivate::fetchRepositoryCategories() QList<QCheckBox*> checkboxes = m_categoryGroupBox->findChildren<QCheckBox *>(); for (int i = 0; i < checkboxes.count(); i++) { checkbox = checkboxes.at(i); - enableRepositoryCategory(i, checkbox->isChecked()); + enableRepositoryCategory(checkbox->objectName(), checkbox->isChecked()); } if (!m_core->fetchRemotePackagesTree()) { diff --git a/src/libs/installer/componentselectionpage_p.h b/src/libs/installer/componentselectionpage_p.h index ece8ef911..9ebec834a 100644 --- a/src/libs/installer/componentselectionpage_p.h +++ b/src/libs/installer/componentselectionpage_p.h @@ -72,7 +72,7 @@ public slots: void selectAll(); void deselectAll(); void checkboxStateChanged(); - void enableRepositoryCategory(int index, bool enable); + void enableRepositoryCategory(const QString &repositoryName, bool enable); void updateWidgetVisibility(bool show); void fetchRepositoryCategories(); void customButtonClicked(int which); diff --git a/src/libs/installer/settings.cpp b/src/libs/installer/settings.cpp index bc9024ac5..2a10d1a8b 100644 --- a/src/libs/installer/settings.cpp +++ b/src/libs/installer/settings.cpp @@ -584,6 +584,16 @@ QSet<RepositoryCategory> Settings::repositoryCategories() const return variantListToSet<RepositoryCategory>(d->m_data.values(scRepositoryCategories)); } +QMap<QString, RepositoryCategory> Settings::organizedRepositoryCategories() const +{ + QSet<RepositoryCategory> categories = repositoryCategories(); + QMap<QString, RepositoryCategory> map; + foreach (const RepositoryCategory &category, categories) { + map.insert(category.displayname(), category); + } + return map; +} + void Settings::setDefaultRepositories(const QSet<Repository> &repositories) { d->m_data.remove(scRepositories); diff --git a/src/libs/installer/settings.h b/src/libs/installer/settings.h index 0ee58639d..55b94d745 100644 --- a/src/libs/installer/settings.h +++ b/src/libs/installer/settings.h @@ -116,6 +116,7 @@ public: QSet<Repository> defaultRepositories() const; QSet<RepositoryCategory> repositoryCategories() const; + QMap<QString, RepositoryCategory> organizedRepositoryCategories() const; void setDefaultRepositories(const QSet<Repository> &repositories); void addDefaultRepositories(const QSet<Repository> &repositories); void addRepositoryCategories(const QSet<RepositoryCategory> &repositories); |