From cd5168de39b0791bc2e62acc36aa6f77f75f3398 Mon Sep 17 00:00:00 2001 From: Katja Marttila Date: Wed, 16 Jan 2019 14:34:30 +0200 Subject: Add possibility to preselect categories in config.xml Change-Id: I280247cb5155622ade604074c5a71a276b0fb629 Reviewed-by: Jani Heikkinen --- doc/installerfw.qdoc | 6 ++++-- examples/repositorycategories/config/config.xml | 1 + src/libs/installer/componentselectionpage_p.cpp | 1 + src/libs/installer/settings.cpp | 10 +++++++--- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/doc/installerfw.qdoc b/doc/installerfw.qdoc index 0a0853cf6..6c2825154 100644 --- a/doc/installerfw.qdoc +++ b/doc/installerfw.qdoc @@ -1130,8 +1130,9 @@ The \c element in the installer configuration file (config.xml) can contain a list of several \c elements. Each \c - element within the \c element is considered a category, which has a \c and can - contain several \c elements. Repository categories are shown in the component selection page, + element within the \c element is considered a category. Each catecory can have + a \c , a \c element and several \c elements. + Repository categories are shown in the component selection page, on the left side of the component selection widget: \image ifw-repository-categories.png "Component selection Page" @@ -1146,6 +1147,7 @@ Category 1 + true http://www.example.com/packages 1 diff --git a/examples/repositorycategories/config/config.xml b/examples/repositorycategories/config/config.xml index c61e4893d..a85910b87 100644 --- a/examples/repositorycategories/config/config.xml +++ b/examples/repositorycategories/config/config.xml @@ -24,6 +24,7 @@ + true Category 2 http://localhost/repository3 diff --git a/src/libs/installer/componentselectionpage_p.cpp b/src/libs/installer/componentselectionpage_p.cpp index 1acc2ceb5..bfe196ca3 100644 --- a/src/libs/installer/componentselectionpage_p.cpp +++ b/src/libs/installer/componentselectionpage_p.cpp @@ -201,6 +201,7 @@ void ComponentSelectionPagePrivate::setupCategoryLayout() foreach (RepositoryCategory repository, m_core->settings().organizedRepositoryCategories()) { QCheckBox *checkBox = new QCheckBox; checkBox->setObjectName(repository.displayname()); + checkBox->setChecked(repository.isEnabled()); connect(checkBox, &QCheckBox::stateChanged, this, &ComponentSelectionPagePrivate::checkboxStateChanged); checkBox->setText(repository.displayname()); diff --git a/src/libs/installer/settings.cpp b/src/libs/installer/settings.cpp index 2a10d1a8b..96063455b 100644 --- a/src/libs/installer/settings.cpp +++ b/src/libs/installer/settings.cpp @@ -135,9 +135,9 @@ static QStringList readArgumentAttributes(QXmlStreamReader &reader, Settings::Pa return arguments; } -static QSet readRepositories(QXmlStreamReader &reader, bool isDefault, Settings::ParseMode parseMode, QString *displayName = nullptr) +static QSet readRepositories(QXmlStreamReader &reader, bool isDefault, Settings::ParseMode parseMode, + QString *displayName = nullptr, bool *preselected = false) { - qDebug()<<__FUNCTION__; QSet set; while (reader.readNextStartElement()) { if (reader.name() == QLatin1String("DisplayName")) { @@ -169,6 +169,8 @@ static QSet readRepositories(QXmlStreamReader &reader, bool isDefaul if (displayName && !displayName->isEmpty()) repo.setArchiveName(*displayName); set.insert(repo); + } else if (reader.name() == QLatin1String("Preselected")) { + *preselected = (reader.readElementText() == QLatin1String("true") ? true : false); } else { raiseError(reader, QString::fromLatin1("Unexpected element \"%1\".").arg(reader.name().toString()), parseMode); @@ -190,8 +192,10 @@ static QSet readRepositoryCategories(QXmlStreamReader &reade if (reader.name() == QLatin1String("RemoteRepositories")) { RepositoryCategory archiveRepo; QString displayName; - archiveRepo.setRepositories(readRepositories(reader, isDefault, parseMode, &displayName)); + bool preselected = false; + archiveRepo.setRepositories(readRepositories(reader, isDefault, parseMode, &displayName, &preselected)); archiveRepo.setDisplayName(displayName); + archiveRepo.setEnabled(preselected); archiveSet.insert(archiveRepo); } else if (reader.name() == QLatin1String("RepositoryCategoryDisplayname")) { *repositoryCategoryName = reader.readElementText(); -- cgit v1.2.3