aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTim Jenssen <tim.jenssen@qt.io>2020-10-02 19:36:01 +0200
committerTim Jenssen <tim.jenssen@qt.io>2020-10-07 14:55:31 +0000
commitbfc04ed53d137108f3ec75974420766dcda97283 (patch)
treefa2cc00ae6db06a4b746f509049b392a1d5e56e3 /src
parent9dda8af0b06ca9d0818553681668d657acb6764d (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.cpp50
-rw-r--r--src/plugins/qmlpreview/qmldebugtranslationwidget.h6
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