summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2019-01-16 14:34:30 +0200
committerKatja Marttila <katja.marttila@qt.io>2019-01-17 08:07:50 +0000
commitcd5168de39b0791bc2e62acc36aa6f77f75f3398 (patch)
tree755816952d6a554d051e0d5449a9e08f3f3face5
parent4ca310dc295e310df67ddb46437315179017d714 (diff)
Add possibility to preselect categories in config.xml
Change-Id: I280247cb5155622ade604074c5a71a276b0fb629 Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
-rw-r--r--doc/installerfw.qdoc6
-rw-r--r--examples/repositorycategories/config/config.xml1
-rw-r--r--src/libs/installer/componentselectionpage_p.cpp1
-rw-r--r--src/libs/installer/settings.cpp10
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 <RepositoryCategory> element in the installer configuration file
(config.xml) can contain a list of several \c <RemoteRepositories> elements. Each \c <RemoteRepositories>
- element within the \c <RepositoryCagetory> element is considered a category, which has a \c <DisplayName> and can
- contain several \c <Repository> elements. Repository categories are shown in the component selection page,
+ element within the \c <RepositoryCagetory> element is considered a category. Each catecory can have
+ a \c <DisplayName>, a \c <Preselected> element and several \c <Repository> 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 @@
<RepositoryCategories>
<RemoteRepositories>
<Displayname>Category 1</Displayname>
+ <Preselected>true</Preselected>
<Repository>
<Url>http://www.example.com/packages</Url>
<Enabled>1</Enabled>
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 @@
</Repository>
</RemoteRepositories>
<RemoteRepositories>
+ <Preselected>true</Preselected>
<DisplayName>Category 2</DisplayName>
<Repository>
<Url>http://localhost/repository3</Url>
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<Repository> readRepositories(QXmlStreamReader &reader, bool isDefault, Settings::ParseMode parseMode, QString *displayName = nullptr)
+static QSet<Repository> readRepositories(QXmlStreamReader &reader, bool isDefault, Settings::ParseMode parseMode,
+ QString *displayName = nullptr, bool *preselected = false)
{
- qDebug()<<__FUNCTION__;
QSet<Repository> set;
while (reader.readNextStartElement()) {
if (reader.name() == QLatin1String("DisplayName")) {
@@ -169,6 +169,8 @@ static QSet<Repository> 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<RepositoryCategory> 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();