diff options
author | Tim Jenssen <tim.jenssen@qt.io> | 2020-09-28 08:20:23 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2020-10-07 14:55:17 +0000 |
commit | 9dda8af0b06ca9d0818553681668d657acb6764d (patch) | |
tree | 1b13bf29629a271ce2f17388e5a0aa58b41f1f30 | |
parent | ac0ae2f1eb582c343aee00095e35779affddba99 (diff) |
qmlprieview: fix that init language is the chosen one
* removes language feature from preview service
* it is handled by an extra DebugTranslationService until now
* Qt versions without that extra service can not preview
languages anymore
* Introduce the use of QmlPreviewRunnerSetting. It makes it
easier to add more properties in the future
* Language needs an extra handling because it needs
the loadUrl to find existing languages. So we save
the language to a m_scheduledInitLanguage and emit
this after the loadFile call happend.
Change-Id: I7f4aec97f7b61d6b290f225282169da594eb9160
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
-rw-r--r-- | src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewactions.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qmlpreview/qmldebugtranslationclient.cpp | 16 | ||||
-rw-r--r-- | src/plugins/qmlpreview/qmldebugtranslationclient.h | 9 | ||||
-rw-r--r-- | src/plugins/qmlpreview/qmldebugtranslationwidget.cpp | 13 | ||||
-rw-r--r-- | src/plugins/qmlpreview/qmlpreviewclient.cpp | 7 | ||||
-rw-r--r-- | src/plugins/qmlpreview/qmlpreviewclient.h | 4 | ||||
-rw-r--r-- | src/plugins/qmlpreview/qmlpreviewconnectionmanager.cpp | 38 | ||||
-rw-r--r-- | src/plugins/qmlpreview/qmlpreviewconnectionmanager.h | 2 | ||||
-rw-r--r-- | src/plugins/qmlpreview/qmlpreviewplugin.cpp | 38 | ||||
-rw-r--r-- | src/plugins/qmlpreview/qmlpreviewplugin.h | 8 | ||||
-rw-r--r-- | src/plugins/qmlpreview/qmlpreviewruncontrol.cpp | 35 | ||||
-rw-r--r-- | src/plugins/qmlpreview/qmlpreviewruncontrol.h | 14 | ||||
-rw-r--r-- | src/plugins/qmlpreview/tests/qmlpreviewclient_test.cpp | 18 | ||||
-rw-r--r-- | src/plugins/qmlpreview/tests/qmlpreviewclient_test.h | 1 | ||||
-rw-r--r-- | src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp | 15 | ||||
-rw-r--r-- | src/plugins/qmlpreview/tests/qmlpreviewplugin_test.h | 1 |
16 files changed, 91 insertions, 130 deletions
diff --git a/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewactions.cpp b/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewactions.cpp index 616678d855..75d26a0215 100644 --- a/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewactions.cpp +++ b/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewactions.cpp @@ -217,6 +217,8 @@ SwitchLanguageComboboxAction::SwitchLanguageComboboxAction(QObject *parent) QWidget *SwitchLanguageComboboxAction::createWidget(QWidget *parent) { QPointer<QComboBox> comboBox = new QComboBox(parent); + // FIXME: this combobox does not work at the moment + comboBox->setDisabled(true); const QString toolTip(tr("Switch the language used by preview.")); comboBox->setToolTip(toolTip); comboBox->addItem(tr("Default")); diff --git a/src/plugins/qmlpreview/qmldebugtranslationclient.cpp b/src/plugins/qmlpreview/qmldebugtranslationclient.cpp index d62d3d0d20..6ebc13d8f8 100644 --- a/src/plugins/qmlpreview/qmldebugtranslationclient.cpp +++ b/src/plugins/qmlpreview/qmldebugtranslationclient.cpp @@ -36,24 +36,24 @@ QmlDebugTranslationClient::QmlDebugTranslationClient(QmlDebug::QmlDebugConnectio { } -void QmlDebugTranslationClient::changeLanguage(const QUrl &url, const QString &locale) +void QmlDebugTranslationClient::changeLanguage(const QUrl &url, const QString &localeIsoCode) { QmlDebug::QPacket packet(dataStreamVersion()); - packet << static_cast<qint8>(ChangeLanguage) << url << locale; + packet << static_cast<qint8>(Command::ChangeLanguage) << url << localeIsoCode; sendMessage(packet.data()); } void QmlDebugTranslationClient::changeWarningColor(const QColor &warningColor) { QmlDebug::QPacket packet(dataStreamVersion()); - packet << static_cast<qint8>(ChangeWarningColor) << warningColor; + packet << static_cast<qint8>(Command::ChangeWarningColor) << warningColor; sendMessage(packet.data()); } void QmlDebugTranslationClient::changeElidedTextWarningString(const QString &warningString) { QmlDebug::QPacket packet(dataStreamVersion()); - packet << static_cast<qint8>(ChangeElidedTextWarningString) << warningString; + packet << static_cast<qint8>(Command::ChangeElidedTextWarningString) << warningString; sendMessage(packet.data()); } @@ -68,21 +68,21 @@ void QmlDebugTranslationClient::changeElideWarning(bool elideWarning) void QmlDebugTranslationClient::setDebugTranslationServiceLogFile(const QString &logFilePath) { QmlDebug::QPacket packet(dataStreamVersion()); - packet << static_cast<qint8>(SetDebugTranslationServiceLogFile) << logFilePath; + packet << static_cast<qint8>(Command::SetDebugTranslationServiceLogFile) << logFilePath; sendMessage(packet.data()); } void QmlDebugTranslationClient::enableElidedTextWarning() { QmlDebug::QPacket packet(dataStreamVersion()); - packet << static_cast<qint8>(EnableElidedTextWarning); + packet << static_cast<qint8>(Command::EnableElidedTextWarning); sendMessage(packet.data()); } void QmlDebugTranslationClient::disableElidedTextWarning() { QmlDebug::QPacket packet(dataStreamVersion()); - packet << static_cast<qint8>(DisableElidedTextWarning); + packet << static_cast<qint8>(Command::DisableElidedTextWarning); sendMessage(packet.data()); } @@ -91,7 +91,7 @@ void QmlDebugTranslationClient::messageReceived(const QByteArray &data) QmlDebug::QPacket packet(dataStreamVersion(), data); qint8 command; packet >> command; - qDebug() << "invalid command" << command; + qDebug() << Q_FUNC_INFO << "invalid command" << command; } void QmlDebugTranslationClient::stateChanged(QmlDebug::QmlDebugClient::State state) diff --git a/src/plugins/qmlpreview/qmldebugtranslationclient.h b/src/plugins/qmlpreview/qmldebugtranslationclient.h index 2b69e99b0a..db00b6f005 100644 --- a/src/plugins/qmlpreview/qmldebugtranslationclient.h +++ b/src/plugins/qmlpreview/qmldebugtranslationclient.h @@ -35,19 +35,20 @@ class QMLPREVIEW_EXPORT QmlDebugTranslationClient : public QmlDebug::QmlDebugCli Q_OBJECT public: //needs to be in sync with QQmlDebugTranslationClient in qtdeclarative/src/plugins/qmltooling/qmldbg_preview/qqmldebugtranslationservice.h - enum Command { + enum class Command { ChangeLanguage, + MissingTranslationsChecked, + EnableElidedTextWarning, + DisableElidedTextWarning, ChangeWarningColor, ChangeElidedTextWarningString, SetDebugTranslationServiceLogFile, - EnableElidedTextWarning, - DisableElidedTextWarning, TestAllLanguages }; explicit QmlDebugTranslationClient(QmlDebug::QmlDebugConnection *connection); - void changeLanguage(const QUrl &url, const QString &locale); + void changeLanguage(const QUrl &url, const QString &localeIsoCode); void changeWarningColor(const QColor &warningColor); void changeElidedTextWarningString(const QString &warningString); //is QByteArray better here? void changeElideWarning(bool elideWarning); diff --git a/src/plugins/qmlpreview/qmldebugtranslationwidget.cpp b/src/plugins/qmlpreview/qmldebugtranslationwidget.cpp index 20a35a280b..7dc2feed74 100644 --- a/src/plugins/qmlpreview/qmldebugtranslationwidget.cpp +++ b/src/plugins/qmlpreview/qmldebugtranslationwidget.cpp @@ -124,6 +124,7 @@ QmlDebugTranslationWidget::QmlDebugTranslationWidget(QWidget *parent) layout()->addWidget(elideWarningCheckBox); connect(elideWarningCheckBox, &QCheckBox::stateChanged, [this] (int state) { m_elideWarning = (state == Qt::Checked); + }); auto controlLayout = new QHBoxLayout; @@ -298,14 +299,16 @@ void QmlDebugTranslationWidget::runTest() int timerCounter = 1; const auto testLanguageList = m_testLanguages; + if (m_elideWarning) + previewPlugin->changeElideWarning(true); + auto testLanguages = [previewPlugin, runControl, testLanguageList](int timerCounter, const QString &previewedFile) { - qDebug() << "testLanguages" << previewedFile; for (auto language : testLanguageList) { QTimer::singleShot(timerCounter * 1000, previewPlugin, [previewPlugin, runControl, language, previewedFile]() { if (runControl && runControl->isRunning()) { if (!previewedFile.isEmpty()) previewPlugin->setPreviewedFile(previewedFile); - previewPlugin->setLocale(language); + previewPlugin->setLocaleIsoCode(language); } }); } @@ -319,7 +322,7 @@ void QmlDebugTranslationWidget::runTest() //delete m_currentRunControl; // who deletes the runcontrol? m_currentRunControl = nullptr; if (auto previewPlugin = qobject_cast<Internal::QmlPreviewPlugin*>(getPreviewPlugin())) - previewPlugin->setLocale(m_lastUsedLanguageBeforeTest); + previewPlugin->setLocaleIsoCode(m_lastUsedLanguageBeforeTest); }); connect(runControl, &ProjectExplorer::RunControl::appendMessage, @@ -332,7 +335,7 @@ void QmlDebugTranslationWidget::runTest() if (auto runConfiguration = target->activeRunConfiguration()) { runControl->setRunConfiguration(runConfiguration); if (runControl->createMainWorker()) { - previewPlugin->setLocale(QString()); + previewPlugin->setLocaleIsoCode(QString()); runControl->initiateStart(); } } @@ -399,7 +402,7 @@ void QmlDebugTranslationWidget::appendMessage(const QString &message, Utils::Out return; } const QString serviceSeperator = ": QQmlDebugTranslationService: "; - if (!message.contains(serviceSeperator) || message.contains("DebugTranslation service - language changed")) + if (!message.contains(serviceSeperator)) return; QString locationString = message; locationString = locationString.split(serviceSeperator).first(); diff --git a/src/plugins/qmlpreview/qmlpreviewclient.cpp b/src/plugins/qmlpreview/qmlpreviewclient.cpp index ae89d75d4a..6580833810 100644 --- a/src/plugins/qmlpreview/qmlpreviewclient.cpp +++ b/src/plugins/qmlpreview/qmlpreviewclient.cpp @@ -56,13 +56,6 @@ void QmlPreviewClient::zoom(float zoomFactor) sendMessage(packet.data()); } -void QmlPreviewClient::language(const QUrl &context, const QString &locale) -{ - QmlDebug::QPacket packet(dataStreamVersion()); - packet << static_cast<qint8>(Language) << context << locale; - sendMessage(packet.data()); -} - void QmlPreviewClient::announceFile(const QString &path, const QByteArray &contents) { QmlDebug::QPacket packet(dataStreamVersion()); diff --git a/src/plugins/qmlpreview/qmlpreviewclient.h b/src/plugins/qmlpreview/qmlpreviewclient.h index 4e84f6b3ee..fdb7e3cd63 100644 --- a/src/plugins/qmlpreview/qmlpreviewclient.h +++ b/src/plugins/qmlpreview/qmlpreviewclient.h @@ -43,8 +43,7 @@ public: Directory, ClearCache, Zoom, - Fps, - Language + Fps }; struct FpsInfo { @@ -64,7 +63,6 @@ public: void loadUrl(const QUrl &url); void rerun(); void zoom(float zoomFactor); - void language(const QUrl &context, const QString &locale); void announceFile(const QString &path, const QByteArray &contents); void announceDirectory(const QString &path, const QStringList &entries); void announceError(const QString &path); diff --git a/src/plugins/qmlpreview/qmlpreviewconnectionmanager.cpp b/src/plugins/qmlpreview/qmlpreviewconnectionmanager.cpp index 7da4bdea13..ca125908ad 100644 --- a/src/plugins/qmlpreview/qmlpreviewconnectionmanager.cpp +++ b/src/plugins/qmlpreview/qmlpreviewconnectionmanager.cpp @@ -36,16 +36,14 @@ namespace QmlPreview { namespace Internal { -QmlPreviewConnectionManager::~QmlPreviewConnectionManager() -{ -} - QmlPreviewConnectionManager::QmlPreviewConnectionManager(QObject *parent) : QmlDebug::QmlDebugConnectionManager(parent) { setTarget(nullptr); } +QmlPreviewConnectionManager::~QmlPreviewConnectionManager() = default; + void QmlPreviewConnectionManager::setTarget(ProjectExplorer::Target *target) { QtSupport::BaseQtVersion::populateQmlFileFinder(&m_projectFileFinder, target); @@ -117,13 +115,11 @@ void QmlPreviewConnectionManager::createDebugTranslationClient() { m_qmlDebugTranslationClient = new QmlDebugTranslationClient(connection()); connect(this, &QmlPreviewConnectionManager::language, - m_qmlDebugTranslationClient.data(), [this](const QString &locale) { - - if (m_lastLoadedUrl.isEmpty()) { - // findValidI18nDirectoryAsUrl does not work if we didn't load any file - m_initLocale = locale; - } else { - // service expects a context URL. + m_qmlDebugTranslationClient, [this](const QString &locale) { + m_lastUsedLanguage = locale; + // findValidI18nDirectoryAsUrl does not work if we didn't load any file + // service expects a context URL. + if (!m_lastLoadedUrl.isEmpty()) { // Search the parent directories of the last loaded URL for i18n files. m_qmlDebugTranslationClient->changeLanguage(findValidI18nDirectoryAsUrl(locale), locale); } @@ -159,10 +155,9 @@ void QmlPreviewConnectionManager::createPreviewClient() m_lastLoadedUrl = m_targetFileFinder.findUrl(filename); m_qmlPreviewClient->loadUrl(m_lastLoadedUrl); - if (!m_initLocale.isEmpty()) { - emit language(m_initLocale); - m_initLocale.clear(); - } + // emit language after a file was loaded and do it every time, + // because this also triggers the check for missing translations + emit language(m_lastUsedLanguage); }); connect(this, &QmlPreviewConnectionManager::rerun, @@ -171,19 +166,6 @@ void QmlPreviewConnectionManager::createPreviewClient() connect(this, &QmlPreviewConnectionManager::zoom, m_qmlPreviewClient.data(), &QmlPreviewClient::zoom); - connect(this, &QmlPreviewConnectionManager::language, - m_qmlPreviewClient.data(), [this](const QString &locale) { - - if (m_lastLoadedUrl.isEmpty()) { - // findValidI18nDirectoryAsUrl does not work if we didn't load any file - m_initLocale = locale; - } else { - // service expects a context URL. - // Search the parent directories of the last loaded URL for i18n files. - m_qmlPreviewClient->language(findValidI18nDirectoryAsUrl(locale), locale); - } - }); - connect(m_qmlPreviewClient.data(), &QmlPreviewClient::pathRequested, this, [this](const QString &path) { const bool found = m_projectFileFinder.findFileOrDirectory( diff --git a/src/plugins/qmlpreview/qmlpreviewconnectionmanager.h b/src/plugins/qmlpreview/qmlpreviewconnectionmanager.h index 7693eda695..c63db57343 100644 --- a/src/plugins/qmlpreview/qmlpreviewconnectionmanager.h +++ b/src/plugins/qmlpreview/qmlpreviewconnectionmanager.h @@ -76,10 +76,10 @@ private: QPointer<QmlDebugTranslationClient> m_qmlDebugTranslationClient; Utils::FileSystemWatcher m_fileSystemWatcher; QUrl m_lastLoadedUrl; + QString m_lastUsedLanguage; QmlPreviewFileLoader m_fileLoader = nullptr; QmlPreviewFileClassifier m_fileClassifier = nullptr; QmlPreviewFpsHandler m_fpsHandler = nullptr; - QString m_initLocale; }; } // namespace Internal diff --git a/src/plugins/qmlpreview/qmlpreviewplugin.cpp b/src/plugins/qmlpreview/qmlpreviewplugin.cpp index ffae9a1815..f331d96b50 100644 --- a/src/plugins/qmlpreview/qmlpreviewplugin.cpp +++ b/src/plugins/qmlpreview/qmlpreviewplugin.cpp @@ -150,8 +150,8 @@ public: QmlPreview::QmlPreviewFileClassifier m_fileClassifer = nullptr; float m_zoomFactor = -1.0; QmlPreview::QmlPreviewFpsHandler m_fpsHandler = nullptr; - QString m_locale; - bool elideWarning = false; + QString m_localeIsoCode; + bool m_translationElideWarning = false; QPointer<QmlDebugTranslationWidget> m_qmlDebugTranslationWidget; RunWorkerFactory localRunWorkerFactory{ @@ -163,8 +163,15 @@ public: RunWorkerFactory runWorkerFactory{ [this](RunControl *runControl) { - QmlPreviewRunner *runner = new QmlPreviewRunner(runControl, m_fileLoader, m_fileClassifer, - m_fpsHandler, m_zoomFactor); + QmlPreviewRunner *runner = new QmlPreviewRunner(QmlPreviewRunnerSetting{ + runControl, + m_fileLoader, + m_fileClassifer, + m_fpsHandler, + m_zoomFactor, + m_localeIsoCode, + m_translationElideWarning + }); connect(q, &QmlPreviewPlugin::updatePreviews, runner, &QmlPreviewRunner::loadFile); connect(q, &QmlPreviewPlugin::rerunPreviews, @@ -173,7 +180,7 @@ public: this, &QmlPreviewPluginPrivate::previewCurrentFile); connect(q, &QmlPreviewPlugin::zoomFactorChanged, runner, &QmlPreviewRunner::zoom); - connect(q, &QmlPreviewPlugin::localeChanged, + connect(q, &QmlPreviewPlugin::localeIsoCodeChanged, runner, &QmlPreviewRunner::language); connect(q, &QmlPreviewPlugin::elideWarningChanged, runner, &QmlPreviewRunner::changeElideWarning); @@ -207,7 +214,7 @@ QmlPreviewPluginPrivate::QmlPreviewPluginPrivate(QmlPreviewPlugin *parent) &QAction::setEnabled); connect(action, &QAction::triggered, this, [this]() { if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current()) - m_locale = multiLanguageAspect->currentLocale(); + m_localeIsoCode = multiLanguageAspect->currentLocale(); ProjectExplorerPlugin::runStartupProject(Constants::QML_PREVIEW_RUN_MODE); }); @@ -387,30 +394,31 @@ void QmlPreviewPlugin::setFpsHandler(QmlPreviewFpsHandler fpsHandler) emit fpsHandlerChanged(d->m_fpsHandler); } -QString QmlPreviewPlugin::locale() const +QString QmlPreviewPlugin::localeIsoCode() const { - return d->m_locale; + return d->m_localeIsoCode; } -void QmlPreviewPlugin::setLocale(const QString &locale) +void QmlPreviewPlugin::setLocaleIsoCode(const QString &localeIsoCode) { if (auto multiLanguageAspect = QmlProjectManager::QmlMultiLanguageAspect::current()) - multiLanguageAspect->setCurrentLocale(locale); - if (d->m_locale == locale) + multiLanguageAspect->setCurrentLocale(localeIsoCode); + if (d->m_localeIsoCode == localeIsoCode) return; - d->m_locale = locale; - emit localeChanged(d->m_locale); + d->m_localeIsoCode = localeIsoCode; + emit localeIsoCodeChanged(d->m_localeIsoCode); } bool QmlPreviewPlugin::elideWarning() const { - return d->elideWarning; + return d->m_translationElideWarning; } void QmlPreviewPlugin::changeElideWarning(bool elideWarning) { - d->elideWarning = elideWarning; + d->m_translationElideWarning = elideWarning; + emit elideWarningChanged(elideWarning); } void QmlPreviewPlugin::setFileLoader(QmlPreviewFileLoader fileLoader) diff --git a/src/plugins/qmlpreview/qmlpreviewplugin.h b/src/plugins/qmlpreview/qmlpreviewplugin.h index 13146105ac..b2455b1077 100644 --- a/src/plugins/qmlpreview/qmlpreviewplugin.h +++ b/src/plugins/qmlpreview/qmlpreviewplugin.h @@ -58,7 +58,7 @@ class QmlPreviewPlugin : public ExtensionSystem::IPlugin Q_PROPERTY(QmlPreview::QmlPreviewFpsHandler fpsHandler READ fpsHandler WRITE setFpsHandler NOTIFY fpsHandlerChanged) Q_PROPERTY(float zoomFactor READ zoomFactor WRITE setZoomFactor NOTIFY zoomFactorChanged) - Q_PROPERTY(QString locale READ locale WRITE setLocale NOTIFY localeChanged) + Q_PROPERTY(QString localeIsoCode READ localeIsoCode WRITE setLocaleIsoCode NOTIFY localeIsoCodeChanged) Q_PROPERTY(bool elideWarning READ elideWarning WRITE changeElideWarning NOTIFY elideWarningChanged) public: @@ -84,8 +84,8 @@ public: QmlPreview::QmlPreviewFpsHandler fpsHandler() const; void setFpsHandler(QmlPreview::QmlPreviewFpsHandler fpsHandler); - QString locale() const; - void setLocale(const QString &locale); + QString localeIsoCode() const; + void setLocaleIsoCode(const QString &localeIsoCode); bool elideWarning() const; void changeElideWarning(bool elideWarning); @@ -103,7 +103,7 @@ signals: void fpsHandlerChanged(QmlPreview::QmlPreviewFpsHandler fpsHandler); void zoomFactorChanged(float zoomFactor); - void localeChanged(const QString &locale); + void localeIsoCodeChanged(const QString &localeIsoCode); void elideWarningChanged(bool elideWarning); private: diff --git a/src/plugins/qmlpreview/qmlpreviewruncontrol.cpp b/src/plugins/qmlpreview/qmlpreviewruncontrol.cpp index 518e33794f..a1b667b78b 100644 --- a/src/plugins/qmlpreview/qmlpreviewruncontrol.cpp +++ b/src/plugins/qmlpreview/qmlpreviewruncontrol.cpp @@ -45,17 +45,13 @@ namespace QmlPreview { static const QString QmlServerUrl = "QmlServerUrl"; -QmlPreviewRunner::QmlPreviewRunner(ProjectExplorer::RunControl *runControl, - QmlPreviewFileLoader fileLoader, - QmlPreviewFileClassifier fileClassifier, - QmlPreviewFpsHandler fpsHandler, - float initialZoom) - : RunWorker(runControl) +QmlPreviewRunner::QmlPreviewRunner(const QmlPreviewRunnerSetting &settings) + : RunWorker(settings.runControl) { setId("QmlPreviewRunner"); - m_connectionManager.setFileLoader(fileLoader); - m_connectionManager.setFileClassifier(fileClassifier); - m_connectionManager.setFpsHandler(fpsHandler); + m_connectionManager.setFileLoader(settings.fileLoader); + m_connectionManager.setFileClassifier(settings.fileClassifier); + m_connectionManager.setFpsHandler(settings.fpsHandler); connect(this, &QmlPreviewRunner::loadFile, &m_connectionManager, &Internal::QmlPreviewConnectionManager::loadFile); @@ -70,24 +66,29 @@ QmlPreviewRunner::QmlPreviewRunner(ProjectExplorer::RunControl *runControl, &m_connectionManager, &Internal::QmlPreviewConnectionManager::changeElideWarning); connect(&m_connectionManager, &Internal::QmlPreviewConnectionManager::connectionOpened, - this, [this, initialZoom]() { - if (initialZoom > 0) - emit zoom(initialZoom); + this, [this, settings]() { + if (settings.zoom > 0) + emit zoom(settings.zoom); + if (!settings.language.isEmpty()) + emit language(settings.language); + if (settings.translationElideWarning) + emit changeElideWarning(true); + emit ready(); }); connect(&m_connectionManager, &Internal::QmlPreviewConnectionManager::restart, - runControl, [this, runControl]() { - if (!runControl->isRunning()) + runControl(), [this]() { + if (!runControl()->isRunning()) return; - this->connect(runControl, &ProjectExplorer::RunControl::stopped, runControl, [runControl]() { + this->connect(runControl(), &ProjectExplorer::RunControl::stopped, [this]() { ProjectExplorer::ProjectExplorerPlugin::runRunConfiguration( - runControl->runConfiguration(), + runControl()->runConfiguration(), ProjectExplorer::Constants::QML_PREVIEW_RUN_MODE, true); }); - runControl->initiateStop(); + runControl()->initiateStop(); }); } diff --git a/src/plugins/qmlpreview/qmlpreviewruncontrol.h b/src/plugins/qmlpreview/qmlpreviewruncontrol.h index 38740b31a3..c5171e2248 100644 --- a/src/plugins/qmlpreview/qmlpreviewruncontrol.h +++ b/src/plugins/qmlpreview/qmlpreviewruncontrol.h @@ -32,14 +32,22 @@ namespace QmlPreview { +struct QmlPreviewRunnerSetting { + ProjectExplorer::RunControl *runControl = nullptr; + QmlPreviewFileLoader fileLoader; + QmlPreviewFileClassifier fileClassifier; + QmlPreviewFpsHandler fpsHandler; + float zoom = 1.0; + QString language; + bool translationElideWarning = false; +}; + class QmlPreviewRunner : public ProjectExplorer::RunWorker { Q_OBJECT public: - QmlPreviewRunner(ProjectExplorer::RunControl *runControl, QmlPreviewFileLoader fileLoader, - QmlPreviewFileClassifier fileClassifier, QmlPreviewFpsHandler fpsHandler, - float initialZoom); + QmlPreviewRunner(const QmlPreviewRunnerSetting &settings); void setServerUrl(const QUrl &serverUrl); QUrl serverUrl() const; diff --git a/src/plugins/qmlpreview/tests/qmlpreviewclient_test.cpp b/src/plugins/qmlpreview/tests/qmlpreviewclient_test.cpp index 1194702e6b..5067b1bc0c 100644 --- a/src/plugins/qmlpreview/tests/qmlpreviewclient_test.cpp +++ b/src/plugins/qmlpreview/tests/qmlpreviewclient_test.cpp @@ -91,24 +91,6 @@ void QmlPreviewClientTest::testZoom() QVERIFY(packet.atEnd()); } -void QmlPreviewClientTest::testLanguate() -{ - TestableQmlPreviewClient client; - QUrl url("file:///some/file.qml"); - QString locale("qt_QT"); - client.language(url, locale); - QCOMPARE(client.messages.count(), 1); - QmlDebug::QPacket packet(client.dataStreamVersion(), client.messages.takeFirst()); - qint8 command; - QUrl resultUrl; - QString resultLocale; - packet >> command >> resultUrl >> resultLocale; - QCOMPARE(static_cast<QmlPreviewClient::Command>(command), QmlPreviewClient::Language); - QCOMPARE(resultUrl, url); - QCOMPARE(resultLocale, locale); - QVERIFY(packet.atEnd()); -} - void QmlPreviewClientTest::testMessageReceived() { TestableQmlPreviewClient client; diff --git a/src/plugins/qmlpreview/tests/qmlpreviewclient_test.h b/src/plugins/qmlpreview/tests/qmlpreviewclient_test.h index e5e1ad089e..43ae003003 100644 --- a/src/plugins/qmlpreview/tests/qmlpreviewclient_test.h +++ b/src/plugins/qmlpreview/tests/qmlpreviewclient_test.h @@ -36,7 +36,6 @@ private slots: void testLoadFile(); void testAnnounceFile(); void testZoom(); - void testLanguate(); void testMessageReceived(); }; diff --git a/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp b/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp index 9ca2f38b08..0e3306f15d 100644 --- a/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp +++ b/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp @@ -78,21 +78,6 @@ void QmlPreviewPluginTest::testZoomFactorProperty() QCOMPARE(spy.count(), 2); } -void QmlPreviewPluginTest::testLocaleProperty() -{ - ExtensionSystem::IPlugin *plugin = getPlugin(); - QVERIFY(plugin); - - QSignalSpy spy(plugin, SIGNAL(localeChanged(QString))); - - QCOMPARE(plugin->property("locale").toString(), QString()); - plugin->setProperty("locale", "de_DE"); - QCOMPARE(plugin->property("locale").toString(), QString("de_DE")); - plugin->setProperty("locale", "qt_QT"); - QCOMPARE(plugin->property("locale").toString(), QString("qt_QT")); - QCOMPARE(spy.count(), 2); -} - void QmlPreviewPluginTest::testFpsHandlerProperty() { ExtensionSystem::IPlugin *plugin = getPlugin(); diff --git a/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.h b/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.h index ce3cef1dfc..8ceeb6669c 100644 --- a/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.h +++ b/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.h @@ -42,7 +42,6 @@ public: private slots: void testFileLoaderProperty(); void testZoomFactorProperty(); - void testLocaleProperty(); void testFpsHandlerProperty(); }; |