Add tooltip for categories

Change-Id: I852a236bc2cff0d532a825581e3da4dcdcbbab90
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
This commit is contained in:
Katja Marttila 2019-02-04 10:39:56 +02:00
parent f229bc4343
commit 2a791f276d
6 changed files with 29 additions and 4 deletions

View File

@ -1131,7 +1131,7 @@
The \c <RepositoryCategory> element in the installer configuration file The \c <RepositoryCategory> element in the installer configuration file
(config.xml) can contain a list of several \c <RemoteRepositories> elements. Each \c <RemoteRepositories> (config.xml) can contain a list of several \c <RemoteRepositories> elements. Each \c <RemoteRepositories>
element within the \c <RepositoryCagetory> element is considered a category. Each catecory can have 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. a \c <DisplayName>, a \c <Tooltip>, a \c <Preselected> element and several \c <Repository> elements.
Repository categories are shown in the component selection page, Repository categories are shown in the component selection page,
on the left side of the component selection widget: on the left side of the component selection widget:
@ -1152,6 +1152,7 @@
<RemoteRepositories> <RemoteRepositories>
<Displayname>Category 1</Displayname> <Displayname>Category 1</Displayname>
<Preselected>true</Preselected> <Preselected>true</Preselected>
<Tooltip>Tooltip for category 1</Tooltip>
<Repository> <Repository>
<Url>http://www.example.com/packages</Url> <Url>http://www.example.com/packages</Url>
<Enabled>1</Enabled> <Enabled>1</Enabled>

View File

@ -16,6 +16,7 @@
<RepositoryCategoryDisplayname>Releases</RepositoryCategoryDisplayname> <RepositoryCategoryDisplayname>Releases</RepositoryCategoryDisplayname>
<RemoteRepositories> <RemoteRepositories>
<DisplayName>Category 1</DisplayName> <DisplayName>Category 1</DisplayName>
<Tooltip>Contains repository1 and repository2</Tooltip>
<Repository> <Repository>
<Url>http://localhost/repository1</Url> <Url>http://localhost/repository1</Url>
</Repository> </Repository>
@ -26,6 +27,7 @@
<RemoteRepositories> <RemoteRepositories>
<Preselected>true</Preselected> <Preselected>true</Preselected>
<DisplayName>Category 2</DisplayName> <DisplayName>Category 2</DisplayName>
<Tooltip>Contains repository3</Tooltip>
<Repository> <Repository>
<Url>http://localhost/repository3</Url> <Url>http://localhost/repository3</Url>
</Repository> </Repository>

View File

@ -205,6 +205,7 @@ void ComponentSelectionPagePrivate::setupCategoryLayout()
connect(checkBox, &QCheckBox::stateChanged, this, connect(checkBox, &QCheckBox::stateChanged, this,
&ComponentSelectionPagePrivate::checkboxStateChanged); &ComponentSelectionPagePrivate::checkboxStateChanged);
checkBox->setText(repository.displayname()); checkBox->setText(repository.displayname());
checkBox->setToolTip(repository.tooltip());
categoryLayout->addWidget(checkBox); categoryLayout->addWidget(checkBox);
} }

View File

@ -58,7 +58,8 @@ RepositoryCategory::RepositoryCategory()
Constructs a new category by using all fields of the given category \a other. Constructs a new category by using all fields of the given category \a other.
*/ */
RepositoryCategory::RepositoryCategory(const RepositoryCategory &other) RepositoryCategory::RepositoryCategory(const RepositoryCategory &other)
: m_displayname(other.m_displayname), m_data(other.m_data), m_enabled(other.m_enabled) : m_displayname(other.m_displayname), m_data(other.m_data), m_enabled(other.m_enabled),
m_tooltip(other.m_tooltip)
{ {
registerMetaType(); registerMetaType();
} }
@ -86,6 +87,16 @@ void RepositoryCategory::setDisplayName(const QString &displayname)
m_displayname = displayname; m_displayname = displayname;
} }
QString RepositoryCategory::tooltip() const
{
return m_tooltip;
}
void RepositoryCategory::setTooltip(const QString &tooltip)
{
m_tooltip = tooltip;
}
/*! /*!
Returns the list of repositories the category has. Returns the list of repositories the category has.
*/ */

View File

@ -50,6 +50,9 @@ public:
QString displayname() const; QString displayname() const;
void setDisplayName(const QString &displayname); void setDisplayName(const QString &displayname);
QString tooltip() const;
void setTooltip(const QString &tooltip);
QSet<Repository> repositories() const; QSet<Repository> repositories() const;
void setRepositories(const QSet<Repository> repositories); void setRepositories(const QSet<Repository> repositories);
void addRepository(const Repository repository); void addRepository(const Repository repository);
@ -68,6 +71,7 @@ public:
private: private:
QVariantHash m_data; QVariantHash m_data;
QString m_displayname; QString m_displayname;
QString m_tooltip;
bool m_enabled; bool m_enabled;
}; };

View File

@ -136,7 +136,8 @@ static QStringList readArgumentAttributes(QXmlStreamReader &reader, Settings::Pa
} }
static QSet<Repository> readRepositories(QXmlStreamReader &reader, bool isDefault, Settings::ParseMode parseMode, static QSet<Repository> readRepositories(QXmlStreamReader &reader, bool isDefault, Settings::ParseMode parseMode,
QString *displayName = nullptr, bool *preselected = nullptr) QString *displayName = nullptr, bool *preselected = nullptr,
QString *tooltip = nullptr)
{ {
QSet<Repository> set; QSet<Repository> set;
while (reader.readNextStartElement()) { while (reader.readNextStartElement()) {
@ -169,6 +170,8 @@ static QSet<Repository> readRepositories(QXmlStreamReader &reader, bool isDefaul
if (displayName && !displayName->isEmpty()) if (displayName && !displayName->isEmpty())
repo.setArchiveName(*displayName); repo.setArchiveName(*displayName);
set.insert(repo); set.insert(repo);
} else if (reader.name() == QLatin1String("Tooltip")) {
*tooltip = reader.readElementText();
} else if (reader.name() == QLatin1String("Preselected")) { } else if (reader.name() == QLatin1String("Preselected")) {
*preselected = (reader.readElementText() == QLatin1String("true") ? true : false); *preselected = (reader.readElementText() == QLatin1String("true") ? true : false);
} else { } else {
@ -192,9 +195,12 @@ static QSet<RepositoryCategory> readRepositoryCategories(QXmlStreamReader &reade
if (reader.name() == QLatin1String("RemoteRepositories")) { if (reader.name() == QLatin1String("RemoteRepositories")) {
RepositoryCategory archiveRepo; RepositoryCategory archiveRepo;
QString displayName; QString displayName;
QString tooltip;
bool preselected = false; bool preselected = false;
archiveRepo.setRepositories(readRepositories(reader, isDefault, parseMode, &displayName, &preselected)); archiveRepo.setRepositories(readRepositories(reader, isDefault, parseMode,
&displayName, &preselected, &tooltip));
archiveRepo.setDisplayName(displayName); archiveRepo.setDisplayName(displayName);
archiveRepo.setTooltip(tooltip);
archiveRepo.setEnabled(preselected); archiveRepo.setEnabled(preselected);
archiveSet.insert(archiveRepo); archiveSet.insert(archiveRepo);
} else if (reader.name() == QLatin1String("RepositoryCategoryDisplayname")) { } else if (reader.name() == QLatin1String("RepositoryCategoryDisplayname")) {