diff options
author | Tim Jenssen <tim.jenssen@qt.io> | 2020-05-18 23:39:18 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2020-05-26 18:12:38 +0200 |
commit | cbd0649e3becd5712183d6a3d4f4f0629a12c80d (patch) | |
tree | 9c555ee9c7c8b96cebfc6ef846eaef31043b334b /share/qtcreator/qml/qmlpuppet/qml2puppet/instances | |
parent | 2e79e1715b0baf1ec1c07b914aa7959bdc4edfd3 (diff) |
qmlpuppet: enable the use of multilanguage database
Change-Id: I2277348ac1e6b5025e75c640da83da30294c9d10
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'share/qtcreator/qml/qmlpuppet/qml2puppet/instances')
-rw-r--r-- | share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp | 20 | ||||
-rw-r--r-- | share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h | 39 |
2 files changed, 57 insertions, 2 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp index 0bfa289769d..561076d080b 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp @@ -69,6 +69,7 @@ #include <changeselectioncommand.h> #include <inputeventcommand.h> #include <view3dactioncommand.h> +#include <changelanguagecommand.h> #include <QDebug> #include <QQmlEngine> @@ -1397,7 +1398,22 @@ void NodeInstanceServer::view3DAction(const View3DActionCommand &command) Q_UNUSED(command) } -void NodeInstanceServer::changeLanguage(const ChangeLanguageCommand &) {} +void NodeInstanceServer::changeLanguage(const ChangeLanguageCommand &command) +{ + static QPointer<MultiLanguage::Translator> multilanguageTranslator; + if (!MultiLanguage::databaseFilePath().isEmpty()) { + if (!multilanguageLink) { + multilanguageLink = std::make_unique<MultiLanguage::Link>(); + multilanguageTranslator = multilanguageLink->translator().release(); + QCoreApplication::installTranslator(multilanguageTranslator); + } + if (multilanguageTranslator) + multilanguageTranslator->setLanguage(command.language); + } + QEvent ev(QEvent::LanguageChange); + QCoreApplication::sendEvent(QCoreApplication::instance(), &ev); + engine()->retranslate(); +} -void NodeInstanceServer::changePreviewImageSize(const ChangePreviewImageSizeCommand &command) {} +void NodeInstanceServer::changePreviewImageSize(const ChangePreviewImageSizeCommand &) {} } // namespace QmlDesigner diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h index fe1d767c88a..cecef865412 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h @@ -31,6 +31,13 @@ #include <QStringList> #include <QPointer> +#ifdef MULTILANGUAGE_TRANSLATIONPROVIDER +#include <multilanguagelink.h> +#endif + +#include <QTranslator> +#include <memory> + #include <nodeinstanceserverinterface.h> #include "servernodeinstance.h" #include "debugoutputcommand.h" @@ -47,6 +54,37 @@ QList<T>toList(const QSet<T> &set) } } //QtHelpers +#ifndef MULTILANGUAGE_TRANSLATIONPROVIDER +namespace MultiLanguage { +static QByteArray databaseFilePath() +{ + return {}; +} + +class Translator : public QTranslator +{ +public: + void setLanguage(const QString&) {} +}; + +class Link +{ +public: + Link() + { + if (qEnvironmentVariableIsSet("QT_MULTILANGUAGE_DATABASE")) + qWarning() << "QT_MULTILANGUAGE_DATABASE is set but QQmlDebugTranslationService is without MULTILANGUAGE_TRANSLATIONPROVIDER support compiled."; + } + std::unique_ptr<MultiLanguage::Translator> translator() { + //should never be called + Q_ASSERT(false); + return std::make_unique<MultiLanguage::Translator>(); + } + const bool isActivated = false; +}; +} //namespace MultiLanguage +#endif + QT_BEGIN_NAMESPACE class QFileSystemWatcher; class QQmlView; @@ -250,6 +288,7 @@ private: QPointer<QObject> m_dummyContextObject; QPointer<QQmlComponent> m_importComponent; QPointer<QObject> m_importComponentObject; + std::unique_ptr<MultiLanguage::Link> multilanguageLink; }; } |