aboutsummaryrefslogtreecommitdiffstats
path: root/share/qtcreator/qml/qmlpuppet/qml2puppet/instances
diff options
context:
space:
mode:
authorTim Jenssen <tim.jenssen@qt.io>2020-05-18 23:39:18 +0200
committerTim Jenssen <tim.jenssen@qt.io>2020-05-26 18:12:38 +0200
commitcbd0649e3becd5712183d6a3d4f4f0629a12c80d (patch)
tree9c555ee9c7c8b96cebfc6ef846eaef31043b334b /share/qtcreator/qml/qmlpuppet/qml2puppet/instances
parent2e79e1715b0baf1ec1c07b914aa7959bdc4edfd3 (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.cpp20
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h39
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;
};
}