summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2019-01-11 13:23:08 +0200
committerKatja Marttila <katja.marttila@qt.io>2019-01-16 05:33:50 +0000
commit2f55dced317e7cb3cb7d69d8431bb277d51cbc62 (patch)
tree95d0207a64ad65b6dd07cb77d773cbd2640598d1
parent2f30ae55a13cfe9aec894c5781d5f611e7872480 (diff)
Organize categories alphabetically to ComponentSelectionPage
Task-number: QTIFW-1264 Change-Id: I14a54082c30107d9242632a69d73a637803c6f2d Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
-rw-r--r--src/libs/installer/componentselectionpage_p.cpp17
-rw-r--r--src/libs/installer/componentselectionpage_p.h2
-rw-r--r--src/libs/installer/settings.cpp10
-rw-r--r--src/libs/installer/settings.h1
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);