Organize categories alphabetically to ComponentSelectionPage

Task-number: QTIFW-1264
Change-Id: I14a54082c30107d9242632a69d73a637803c6f2d
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
This commit is contained in:
Katja Marttila 2019-01-11 13:23:08 +02:00
parent 2f30ae55a1
commit 2f55dced31
4 changed files with 25 additions and 5 deletions

View File

@ -198,7 +198,7 @@ void ComponentSelectionPagePrivate::setupCategoryLayout()
connect(fetchCategoryButton, &QPushButton::clicked, this, connect(fetchCategoryButton, &QPushButton::clicked, this,
&ComponentSelectionPagePrivate::fetchRepositoryCategories); &ComponentSelectionPagePrivate::fetchRepositoryCategories);
foreach (RepositoryCategory repository, m_core->settings().repositoryCategories()) { foreach (RepositoryCategory repository, m_core->settings().organizedRepositoryCategories()) {
QCheckBox *checkBox = new QCheckBox; QCheckBox *checkBox = new QCheckBox;
checkBox->setObjectName(repository.displayname()); checkBox->setObjectName(repository.displayname());
connect(checkBox, &QCheckBox::stateChanged, this, connect(checkBox, &QCheckBox::stateChanged, this,
@ -324,8 +324,17 @@ void ComponentSelectionPagePrivate::checkboxStateChanged()
} }
} }
void ComponentSelectionPagePrivate::enableRepositoryCategory(int index, bool enable) { void ComponentSelectionPagePrivate::enableRepositoryCategory(const QString &repositoryName, bool enable)
RepositoryCategory repoCategory = m_core->settings().repositoryCategories().toList().at(index); {
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; RepositoryCategory replacement = repoCategory;
replacement.setEnabled(enable); replacement.setEnabled(enable);
QSet<RepositoryCategory> tmpRepoCategories = m_core->settings().repositoryCategories(); QSet<RepositoryCategory> tmpRepoCategories = m_core->settings().repositoryCategories();
@ -374,7 +383,7 @@ void ComponentSelectionPagePrivate::fetchRepositoryCategories()
QList<QCheckBox*> checkboxes = m_categoryGroupBox->findChildren<QCheckBox *>(); QList<QCheckBox*> checkboxes = m_categoryGroupBox->findChildren<QCheckBox *>();
for (int i = 0; i < checkboxes.count(); i++) { for (int i = 0; i < checkboxes.count(); i++) {
checkbox = checkboxes.at(i); checkbox = checkboxes.at(i);
enableRepositoryCategory(i, checkbox->isChecked()); enableRepositoryCategory(checkbox->objectName(), checkbox->isChecked());
} }
if (!m_core->fetchRemotePackagesTree()) { if (!m_core->fetchRemotePackagesTree()) {

View File

@ -72,7 +72,7 @@ public slots:
void selectAll(); void selectAll();
void deselectAll(); void deselectAll();
void checkboxStateChanged(); void checkboxStateChanged();
void enableRepositoryCategory(int index, bool enable); void enableRepositoryCategory(const QString &repositoryName, bool enable);
void updateWidgetVisibility(bool show); void updateWidgetVisibility(bool show);
void fetchRepositoryCategories(); void fetchRepositoryCategories();
void customButtonClicked(int which); void customButtonClicked(int which);

View File

@ -584,6 +584,16 @@ QSet<RepositoryCategory> Settings::repositoryCategories() const
return variantListToSet<RepositoryCategory>(d->m_data.values(scRepositoryCategories)); 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) void Settings::setDefaultRepositories(const QSet<Repository> &repositories)
{ {
d->m_data.remove(scRepositories); d->m_data.remove(scRepositories);

View File

@ -116,6 +116,7 @@ public:
QSet<Repository> defaultRepositories() const; QSet<Repository> defaultRepositories() const;
QSet<RepositoryCategory> repositoryCategories() const; QSet<RepositoryCategory> repositoryCategories() const;
QMap<QString, RepositoryCategory> organizedRepositoryCategories() const;
void setDefaultRepositories(const QSet<Repository> &repositories); void setDefaultRepositories(const QSet<Repository> &repositories);
void addDefaultRepositories(const QSet<Repository> &repositories); void addDefaultRepositories(const QSet<Repository> &repositories);
void addRepositoryCategories(const QSet<RepositoryCategory> &repositories); void addRepositoryCategories(const QSet<RepositoryCategory> &repositories);