diff options
author | Tim Jenssen <tim.jenssen@qt.io> | 2020-10-02 19:36:01 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2020-10-07 14:55:31 +0000 |
commit | bfc04ed53d137108f3ec75974420766dcda97283 (patch) | |
tree | fa2cc00ae6db06a4b746f509049b392a1d5e56e3 /src | |
parent | 9dda8af0b06ca9d0818553681668d657acb6764d (diff) |
qmlpreview: enable adding multiple testlanguages
Task-number: QDS-2531
Change-Id: I558f6d1040148ff4a392f5c5cfc6af4da54fef70
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/qmlpreview/qmldebugtranslationwidget.cpp | 50 | ||||
-rw-r--r-- | src/plugins/qmlpreview/qmldebugtranslationwidget.h | 6 |
2 files changed, 36 insertions, 20 deletions
diff --git a/src/plugins/qmlpreview/qmldebugtranslationwidget.cpp b/src/plugins/qmlpreview/qmldebugtranslationwidget.cpp index 7dc2feed74..7c0cd3861f 100644 --- a/src/plugins/qmlpreview/qmldebugtranslationwidget.cpp +++ b/src/plugins/qmlpreview/qmldebugtranslationwidget.cpp @@ -91,8 +91,9 @@ QObject *getPreviewPlugin() namespace QmlPreview { -QmlDebugTranslationWidget::QmlDebugTranslationWidget(QWidget *parent) +QmlDebugTranslationWidget::QmlDebugTranslationWidget(QWidget *parent, TestLanguageGetter languagesGetterMethod) : QWidget(parent) + , m_testLanguagesGetter(languagesGetterMethod) { auto mainLayout = new QVBoxLayout(this); @@ -233,6 +234,7 @@ void QmlDebugTranslationWidget::updateStartupProjectTranslations() void QmlDebugTranslationWidget::updateCurrentTranslations(ProjectExplorer::Project *project) { + m_testLanguages.clear(); for (int i = m_selectLanguageLayout->count()-1; i >= 0; --i) { auto layoutItem = m_selectLanguageLayout->takeAt(i); delete layoutItem->widget(); @@ -245,28 +247,23 @@ void QmlDebugTranslationWidget::updateCurrentTranslations(ProjectExplorer::Proje connect(multiLanguageAspect, &QmlProjectManager::QmlMultiLanguageAspect::changed, this, &QmlDebugTranslationWidget::updateStartupProjectTranslations, Qt::UniqueConnection); + auto languageLabel = new QLabel(); + languageLabel->setText(tr("Select which language should be tested:")); + m_selectLanguageLayout->addWidget(languageLabel); if (multiLanguageAspect->value()) { - m_selectLanguageLayout->addWidget(new QLabel( - tr("Current language is \'<b>%1</b>\' can be changed in the 'Translation' tab.") - .arg(multiLanguageAspect->currentLocale()))); - m_testLanguages.clear(); - m_testLanguages.append(multiLanguageAspect->currentLocale()); - } else { - m_selectLanguageLayout->addWidget(new QLabel(tr("Select which language should be tested:"))); - QString errorMessage; - for (auto language : project->availableQmlPreviewTranslations(&errorMessage)) { - auto languageCheckBox = new QCheckBox(language); - m_selectLanguageLayout->addWidget(languageCheckBox); - connect(languageCheckBox, &QCheckBox::stateChanged, [this, language] (int state) { - if (state == Qt::Checked) - m_testLanguages.append(language); - else - m_testLanguages.removeAll(language); + addLanguageCheckBoxes({multiLanguageAspect->currentLocale()}); + if (m_testLanguagesGetter) { + auto addTestLanguages = new QPushButton(tr("Add Test Languages")); + m_selectLanguageLayout->addWidget(addTestLanguages); + connect(addTestLanguages, &QPushButton::clicked, [this]() { + addLanguageCheckBoxes(m_testLanguagesGetter()); }); - languageCheckBox->setChecked(true); } - m_selectLanguageLayout->addItem(new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum)); + } else { + QString errorMessage; + addLanguageCheckBoxes(project->availableQmlPreviewTranslations(&errorMessage)); } + m_selectLanguageLayout->addItem(new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum)); } } @@ -452,4 +449,19 @@ QString QmlDebugTranslationWidget::runButtonText(bool isRunning) return tr("Run language tests"); } +void QmlDebugTranslationWidget::addLanguageCheckBoxes(const QStringList &languages) +{ + for (auto language : languages) { + auto languageCheckBox = new QCheckBox(language); + m_selectLanguageLayout->addWidget(languageCheckBox); + connect(languageCheckBox, &QCheckBox::stateChanged, [this, language] (int state) { + if (state == Qt::Checked) + m_testLanguages.append(language); + else + m_testLanguages.removeAll(language); + }); + languageCheckBox->setChecked(true); + } +} + } // namespace QmlPreview diff --git a/src/plugins/qmlpreview/qmldebugtranslationwidget.h b/src/plugins/qmlpreview/qmldebugtranslationwidget.h index 944c7a59b9..7ea0760ac0 100644 --- a/src/plugins/qmlpreview/qmldebugtranslationwidget.h +++ b/src/plugins/qmlpreview/qmldebugtranslationwidget.h @@ -51,11 +51,13 @@ namespace QmlPreview { class ProjectFileSelectionsWidget; + class QMLPREVIEW_EXPORT QmlDebugTranslationWidget : public QWidget { + using TestLanguageGetter = std::function<QStringList()>; Q_OBJECT public: - explicit QmlDebugTranslationWidget(QWidget *parent = nullptr); + explicit QmlDebugTranslationWidget(QWidget *parent = nullptr, TestLanguageGetter languagesGetterMethod = {}); ~QmlDebugTranslationWidget() override; void setCurrentFile(const Utils::FilePath &filepath); @@ -75,6 +77,7 @@ private: QString singleFileButtonText(const QString &filePath); QString runButtonText(bool isRunning = false); + void addLanguageCheckBoxes(const QStringList &languages); QStringList m_testLanguages; QString m_lastUsedLanguageBeforeTest; @@ -94,6 +97,7 @@ private: QString m_lastDir; QHBoxLayout *m_selectLanguageLayout; + TestLanguageGetter m_testLanguagesGetter; }; } // namespace QmlPreview |