forked from qt-creator/qt-creator
qmlpreview: enable adding multiple testlanguages
Task-number: QDS-2531 Change-Id: I558f6d1040148ff4a392f5c5cfc6af4da54fef70 Reviewed-by: Marco Bubke <marco.bubke@qt.io>
This commit is contained in:
@@ -91,8 +91,9 @@ QObject *getPreviewPlugin()
|
|||||||
|
|
||||||
namespace QmlPreview {
|
namespace QmlPreview {
|
||||||
|
|
||||||
QmlDebugTranslationWidget::QmlDebugTranslationWidget(QWidget *parent)
|
QmlDebugTranslationWidget::QmlDebugTranslationWidget(QWidget *parent, TestLanguageGetter languagesGetterMethod)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
|
, m_testLanguagesGetter(languagesGetterMethod)
|
||||||
{
|
{
|
||||||
auto mainLayout = new QVBoxLayout(this);
|
auto mainLayout = new QVBoxLayout(this);
|
||||||
|
|
||||||
@@ -233,6 +234,7 @@ void QmlDebugTranslationWidget::updateStartupProjectTranslations()
|
|||||||
|
|
||||||
void QmlDebugTranslationWidget::updateCurrentTranslations(ProjectExplorer::Project *project)
|
void QmlDebugTranslationWidget::updateCurrentTranslations(ProjectExplorer::Project *project)
|
||||||
{
|
{
|
||||||
|
m_testLanguages.clear();
|
||||||
for (int i = m_selectLanguageLayout->count()-1; i >= 0; --i) {
|
for (int i = m_selectLanguageLayout->count()-1; i >= 0; --i) {
|
||||||
auto layoutItem = m_selectLanguageLayout->takeAt(i);
|
auto layoutItem = m_selectLanguageLayout->takeAt(i);
|
||||||
delete layoutItem->widget();
|
delete layoutItem->widget();
|
||||||
@@ -245,28 +247,23 @@ void QmlDebugTranslationWidget::updateCurrentTranslations(ProjectExplorer::Proje
|
|||||||
connect(multiLanguageAspect, &QmlProjectManager::QmlMultiLanguageAspect::changed,
|
connect(multiLanguageAspect, &QmlProjectManager::QmlMultiLanguageAspect::changed,
|
||||||
this, &QmlDebugTranslationWidget::updateStartupProjectTranslations,
|
this, &QmlDebugTranslationWidget::updateStartupProjectTranslations,
|
||||||
Qt::UniqueConnection);
|
Qt::UniqueConnection);
|
||||||
|
auto languageLabel = new QLabel();
|
||||||
|
languageLabel->setText(tr("Select which language should be tested:"));
|
||||||
|
m_selectLanguageLayout->addWidget(languageLabel);
|
||||||
if (multiLanguageAspect->value()) {
|
if (multiLanguageAspect->value()) {
|
||||||
m_selectLanguageLayout->addWidget(new QLabel(
|
addLanguageCheckBoxes({multiLanguageAspect->currentLocale()});
|
||||||
tr("Current language is \'<b>%1</b>\' can be changed in the 'Translation' tab.")
|
if (m_testLanguagesGetter) {
|
||||||
.arg(multiLanguageAspect->currentLocale())));
|
auto addTestLanguages = new QPushButton(tr("Add Test Languages"));
|
||||||
m_testLanguages.clear();
|
m_selectLanguageLayout->addWidget(addTestLanguages);
|
||||||
m_testLanguages.append(multiLanguageAspect->currentLocale());
|
connect(addTestLanguages, &QPushButton::clicked, [this]() {
|
||||||
} else {
|
addLanguageCheckBoxes(m_testLanguagesGetter());
|
||||||
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);
|
|
||||||
});
|
});
|
||||||
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");
|
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
|
} // namespace QmlPreview
|
||||||
|
@@ -51,11 +51,13 @@ namespace QmlPreview {
|
|||||||
|
|
||||||
class ProjectFileSelectionsWidget;
|
class ProjectFileSelectionsWidget;
|
||||||
|
|
||||||
|
|
||||||
class QMLPREVIEW_EXPORT QmlDebugTranslationWidget : public QWidget
|
class QMLPREVIEW_EXPORT QmlDebugTranslationWidget : public QWidget
|
||||||
{
|
{
|
||||||
|
using TestLanguageGetter = std::function<QStringList()>;
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit QmlDebugTranslationWidget(QWidget *parent = nullptr);
|
explicit QmlDebugTranslationWidget(QWidget *parent = nullptr, TestLanguageGetter languagesGetterMethod = {});
|
||||||
~QmlDebugTranslationWidget() override;
|
~QmlDebugTranslationWidget() override;
|
||||||
|
|
||||||
void setCurrentFile(const Utils::FilePath &filepath);
|
void setCurrentFile(const Utils::FilePath &filepath);
|
||||||
@@ -75,6 +77,7 @@ private:
|
|||||||
|
|
||||||
QString singleFileButtonText(const QString &filePath);
|
QString singleFileButtonText(const QString &filePath);
|
||||||
QString runButtonText(bool isRunning = false);
|
QString runButtonText(bool isRunning = false);
|
||||||
|
void addLanguageCheckBoxes(const QStringList &languages);
|
||||||
|
|
||||||
QStringList m_testLanguages;
|
QStringList m_testLanguages;
|
||||||
QString m_lastUsedLanguageBeforeTest;
|
QString m_lastUsedLanguageBeforeTest;
|
||||||
@@ -94,6 +97,7 @@ private:
|
|||||||
QString m_lastDir;
|
QString m_lastDir;
|
||||||
|
|
||||||
QHBoxLayout *m_selectLanguageLayout;
|
QHBoxLayout *m_selectLanguageLayout;
|
||||||
|
TestLanguageGetter m_testLanguagesGetter;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QmlPreview
|
} // namespace QmlPreview
|
||||||
|
Reference in New Issue
Block a user