diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2019-02-19 15:45:30 +0100 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2019-03-01 10:12:13 +0000 |
commit | 6b80ce68860f01a035e78391c81757dad4d612d8 (patch) | |
tree | 32d946c76139c0b6cd65d3b8ce095dd16a6c2a52 | |
parent | 36a7262f8ab56c7790afd0eb43f3b07413c8bc08 (diff) | |
download | qttools-6b80ce68860f01a035e78391c81757dad4d612d8.tar.gz |
Make no option and invalid option texts customizable
This influences the preferences dialog, as now there will
be "No version" and "No component" text displayed
instead of one general "No option".
Change-Id: I62da44fbb78f5f11c82d59dd5acf55868a8ec443
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
-rw-r--r-- | src/assistant/assistant/optionswidget.cpp | 46 | ||||
-rw-r--r-- | src/assistant/assistant/optionswidget.h | 6 | ||||
-rw-r--r-- | src/assistant/assistant/preferencesdialog.cpp | 5 |
3 files changed, 51 insertions, 6 deletions
diff --git a/src/assistant/assistant/optionswidget.cpp b/src/assistant/assistant/optionswidget.cpp index c2deb46f1..bc089c5bf 100644 --- a/src/assistant/assistant/optionswidget.cpp +++ b/src/assistant/assistant/optionswidget.cpp @@ -91,6 +91,8 @@ static QStringList subtract(const QStringList &minuend, const QStringList &subtr OptionsWidget::OptionsWidget(QWidget *parent) : QWidget(parent) + , m_noOptionText(tr("No Option")) + , m_invalidOptionText(tr("Invalid Option")) { m_listWidget = new QListWidget(this); m_listWidget->setItemDelegate(new ListWidgetDelegate(m_listWidget)); @@ -137,7 +139,6 @@ void OptionsWidget::setOptions(const QStringList &validOptions, } for (const QString &option : validUnselectedOptions) { - // TODO: make No Option text customizable appendItem(option, true, false); if (option.isEmpty() && validUnselectedOptions.count() > 1) // special No Option item appendSeparator(); @@ -154,14 +155,47 @@ QStringList OptionsWidget::selectedOptions() const return m_selectedOptions; } -QListWidgetItem *OptionsWidget::appendItem(const QString &optionName, bool valid, bool selected) +void OptionsWidget::setNoOptionText(const QString &text) +{ + if (m_noOptionText == text) + return; + + m_noOptionText = text; + + // update GUI + const auto itEnd = m_optionToItem.constEnd(); + for (auto it = m_optionToItem.constBegin(); it != itEnd; ++it) { + const QString optionName = it.key(); + if (optionName.isEmpty()) + it.value()->setText(optionText(optionName, m_validOptions.contains(optionName))); + } +} + +void OptionsWidget::setInvalidOptionText(const QString &text) { - QString optionText = optionName; + if (m_invalidOptionText == text) + return; + + m_invalidOptionText = text; + + // update GUI + for (const QString &option : m_invalidOptions) + m_optionToItem.value(option)->setText(optionText(option, false)); +} + +QString OptionsWidget::optionText(const QString &optionName, bool valid) const +{ + QString text = optionName; if (optionName.isEmpty()) - optionText = QLatin1Char('[') + tr("No Option") + QLatin1Char(']'); + text = QLatin1Char('[') + m_noOptionText + QLatin1Char(']'); if (!valid) - optionText += QLatin1String("\t[") + tr("Invalid Option") + QLatin1Char(']'); - QListWidgetItem *optionItem = new QListWidgetItem(optionText, m_listWidget); + text += QLatin1String("\t[") + m_invalidOptionText + QLatin1Char(']'); + return text; +} + +QListWidgetItem *OptionsWidget::appendItem(const QString &optionName, bool valid, bool selected) +{ + QListWidgetItem *optionItem = new QListWidgetItem(optionText(optionName, valid), m_listWidget); optionItem->setCheckState(selected ? Qt::Checked : Qt::Unchecked); m_listWidget->insertItem(m_listWidget->count(), optionItem); m_optionToItem[optionName] = optionItem; diff --git a/src/assistant/assistant/optionswidget.h b/src/assistant/assistant/optionswidget.h index e726836f6..52c876bad 100644 --- a/src/assistant/assistant/optionswidget.h +++ b/src/assistant/assistant/optionswidget.h @@ -49,15 +49,21 @@ public: QStringList validOptions() const; QStringList selectedOptions() const; + void setNoOptionText(const QString &text); + void setInvalidOptionText(const QString &text); + signals: void optionSelectionChanged(const QStringList &options); private: + QString optionText(const QString &optionName, bool valid) const; QListWidgetItem *appendItem(const QString &optionName, bool valid, bool selected); void appendSeparator(); void itemChanged(QListWidgetItem *item); QListWidget *m_listWidget = nullptr; + QString m_noOptionText; + QString m_invalidOptionText; QStringList m_validOptions; QStringList m_invalidOptions; QStringList m_selectedOptions; diff --git a/src/assistant/assistant/preferencesdialog.cpp b/src/assistant/assistant/preferencesdialog.cpp index 8d587eac2..369abb002 100644 --- a/src/assistant/assistant/preferencesdialog.cpp +++ b/src/assistant/assistant/preferencesdialog.cpp @@ -110,6 +110,11 @@ PreferencesDialog::PreferencesDialog(QWidget *parent) connect(m_ui.filterRemoveButton, &QAbstractButton::clicked, this, &PreferencesDialog::removeFilterClicked); + m_ui.componentWidget->setNoOptionText(tr("No Component")); + m_ui.componentWidget->setInvalidOptionText(tr("Invalid Component")); + m_ui.versionWidget->setNoOptionText(tr("No Version")); + m_ui.versionWidget->setInvalidOptionText(tr("Invalid Version")); + updateFilterPage(); } |