diff options
author | Tim Jenssen <tim.jenssen@qt.io> | 2020-06-10 20:47:45 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2020-06-11 15:26:39 +0000 |
commit | f652167768f105ad349833f18ee85a6dd81ae559 (patch) | |
tree | 3715d771cafc465d5b480137b188575223f3d2b5 | |
parent | ad4c5e02589dbe8f0c2adcebbc24d7242cb0de4f (diff) | |
download | qt-creator-f652167768f105ad349833f18ee85a6dd81ae559.tar.gz |
qmldesigner: add language to create scene command
and also save the last used language to settings
Task-number: QDS-2218
Change-Id: Ib82f7bc755755661183452b32829be3d048d9947
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
8 files changed, 64 insertions, 34 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/commands/createscenecommand.cpp b/share/qtcreator/qml/qmlpuppet/commands/createscenecommand.cpp index 0c69dc0aa4..1ee34ff447 100644 --- a/share/qtcreator/qml/qmlpuppet/commands/createscenecommand.cpp +++ b/share/qtcreator/qml/qmlpuppet/commands/createscenecommand.cpp @@ -40,7 +40,8 @@ CreateSceneCommand::CreateSceneCommand(const QVector<InstanceContainer> &instanc const QVector<AddImportContainer> &importVector, const QVector<MockupTypeContainer> &mockupTypeVector, const QUrl &fileUrl, - const QHash<QString, QVariantMap> &edit3dToolStates) + const QHash<QString, QVariantMap> &edit3dToolStates, + const QString &language) : m_instanceVector(instanceContainer), m_reparentInstanceVector(reparentContainer), m_idVector(idVector), @@ -50,7 +51,8 @@ CreateSceneCommand::CreateSceneCommand(const QVector<InstanceContainer> &instanc m_importVector(importVector), m_mockupTypeVector(mockupTypeVector), m_fileUrl(fileUrl), - m_edit3dToolStates(edit3dToolStates) + m_edit3dToolStates(edit3dToolStates), + m_language(language) { } @@ -104,6 +106,11 @@ QHash<QString, QVariantMap> CreateSceneCommand::edit3dToolStates() const return m_edit3dToolStates; } +QString CreateSceneCommand::language() const +{ + return m_language; +} + QDataStream &operator<<(QDataStream &out, const CreateSceneCommand &command) { out << command.instances(); @@ -116,6 +123,7 @@ QDataStream &operator<<(QDataStream &out, const CreateSceneCommand &command) out << command.mockupTypes(); out << command.fileUrl(); out << command.edit3dToolStates(); + out << command.language(); return out; } @@ -132,6 +140,7 @@ QDataStream &operator>>(QDataStream &in, CreateSceneCommand &command) in >> command.m_mockupTypeVector; in >> command.m_fileUrl; in >> command.m_edit3dToolStates; + in >> command.m_language; return in; } @@ -148,7 +157,8 @@ QDebug operator <<(QDebug debug, const CreateSceneCommand &command) << "imports: " << command.imports() << ", " << "mockupTypes: " << command.mockupTypes() << ", " << "fileUrl: " << command.fileUrl() << ", " - << "edit3dToolStates: " << command.edit3dToolStates() << ")"; + << "edit3dToolStates: " << command.edit3dToolStates() << ", " + << "language: " << command.language() << ")"; } } diff --git a/share/qtcreator/qml/qmlpuppet/commands/createscenecommand.h b/share/qtcreator/qml/qmlpuppet/commands/createscenecommand.h index fbfd2d2d5f..aee8fe0d47 100644 --- a/share/qtcreator/qml/qmlpuppet/commands/createscenecommand.h +++ b/share/qtcreator/qml/qmlpuppet/commands/createscenecommand.h @@ -45,16 +45,18 @@ class CreateSceneCommand public: CreateSceneCommand(); - explicit CreateSceneCommand(const QVector<InstanceContainer> &instanceContainer, - const QVector<ReparentContainer> &reparentContainer, - const QVector<IdContainer> &idVector, - const QVector<PropertyValueContainer> &valueChangeVector, - const QVector<PropertyBindingContainer> &bindingChangeVector, - const QVector<PropertyValueContainer> &auxiliaryChangeVector, - const QVector<AddImportContainer> &importVector, - const QVector<MockupTypeContainer> &mockupTypeVector, - const QUrl &fileUrl, - const QHash<QString, QVariantMap> &edit3dToolStates); + explicit CreateSceneCommand( + const QVector<InstanceContainer> &instanceContainer, + const QVector<ReparentContainer> &reparentContainer, + const QVector<IdContainer> &idVector, + const QVector<PropertyValueContainer> &valueChangeVector, + const QVector<PropertyBindingContainer> &bindingChangeVector, + const QVector<PropertyValueContainer> &auxiliaryChangeVector, + const QVector<AddImportContainer> &importVector, + const QVector<MockupTypeContainer> &mockupTypeVector, + const QUrl &fileUrl, + const QHash<QString, QVariantMap> &edit3dToolStates, + const QString &language); QVector<InstanceContainer> instances() const; QVector<ReparentContainer> reparentInstances() const; @@ -66,6 +68,7 @@ public: QVector<MockupTypeContainer> mockupTypes() const; QUrl fileUrl() const; QHash<QString, QVariantMap> edit3dToolStates() const; + QString language() const; private: QVector<InstanceContainer> m_instanceVector; @@ -78,6 +81,7 @@ private: QVector<MockupTypeContainer> m_mockupTypeVector; QUrl m_fileUrl; QHash<QString, QVariantMap> m_edit3dToolStates; + QString m_language; }; QDataStream &operator<<(QDataStream &out, const CreateSceneCommand &command); diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp index 561076d080..9b0b59d58b 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp @@ -314,6 +314,7 @@ void NodeInstanceServer::stopRenderTimer() void NodeInstanceServer::createScene(const CreateSceneCommand &command) { + setTranslationLanguage(command.language()); initializeView(); Internal::QmlPrivateGate::stopUnifiedTimer(); @@ -1329,6 +1330,20 @@ void NodeInstanceServer::loadDummyContextObjectFile(const QFileInfo& qmlFileInfo refreshBindings(); } +void NodeInstanceServer::setTranslationLanguage(const QString &language) +{ + 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(language); + } +} + void NodeInstanceServer::loadDummyDataFiles(const QString& directory) { QDir dir(directory, "*.qml"); @@ -1400,16 +1415,7 @@ void NodeInstanceServer::view3DAction(const View3DActionCommand &command) 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); - } + setTranslationLanguage(command.language); QEvent ev(QEvent::LanguageChange); QCoreApplication::sendEvent(QCoreApplication::instance(), &ev); engine()->retranslate(); diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h index 973edd4f1f..87eb5a1b7e 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h @@ -236,6 +236,7 @@ protected: virtual void initializeView() = 0; virtual void setupScene(const CreateSceneCommand &command) = 0; + void setTranslationLanguage(const QString &language); void loadDummyDataFiles(const QString& directory); void loadDummyDataContext(const QString& directory); void loadDummyDataFile(const QFileInfo& fileInfo); diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp index a54dfbb82b..6e50012063 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp @@ -46,6 +46,7 @@ Qt5PreviewNodeInstanceServer::Qt5PreviewNodeInstanceServer(NodeInstanceClientInt void Qt5PreviewNodeInstanceServer::createScene(const CreateSceneCommand &command) { + setTranslationLanguage(command.language()); initializeView(); setupScene(command); startRenderTimer(); diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index 678bb1ea94..96dd127f28 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -69,6 +69,7 @@ #include "variantproperty.h" #include "view3dactioncommand.h" +#include <designersettings.h> #include <metainfo.h> #include <model.h> #include <modelnode.h> @@ -540,7 +541,9 @@ void NodeInstanceView::auxiliaryDataChanged(const ModelNode &node, } } } else if (node.isRootNode() && name == "language@Internal") { - nodeInstanceServer()->changeLanguage({value.toString()}); + const QString languageAsString = value.toString(); + DesignerSettings::setValue(DesignerSettingsKey::LAST_USED_TRANSLATION_LANGUAGE, languageAsString); + nodeInstanceServer()->changeLanguage({languageAsString}); } else if (node.isRootNode() && name == "previewSize@Internal") { nodeInstanceServer()->changePreviewImageSize(value.toSize()); } @@ -982,16 +985,19 @@ CreateSceneCommand NodeInstanceView::createCreateSceneCommand() } - return CreateSceneCommand(instanceContainerList, - reparentContainerList, - idContainerList, - valueContainerList, - bindingContainerList, - auxiliaryContainerVector, - importVector, - mockupTypesVector, - model()->fileUrl(), - m_edit3DToolStates[model()->fileUrl()]); + return CreateSceneCommand( + instanceContainerList, + reparentContainerList, + idContainerList, + valueContainerList, + bindingContainerList, + auxiliaryContainerVector, + importVector, + mockupTypesVector, + model()->fileUrl(), + m_edit3DToolStates[model()->fileUrl()], + DesignerSettings::getValue(DesignerSettingsKey::LAST_USED_TRANSLATION_LANGUAGE).toString() + ); } ClearSceneCommand NodeInstanceView::createClearSceneCommand() const diff --git a/src/plugins/qmldesigner/designersettings.cpp b/src/plugins/qmldesigner/designersettings.cpp index 91091c53d6..96504f3a1c 100644 --- a/src/plugins/qmldesigner/designersettings.cpp +++ b/src/plugins/qmldesigner/designersettings.cpp @@ -85,6 +85,7 @@ void DesignerSettings::fromSettings(QSettings *settings) restoreValue(settings, DesignerSettingsKey::SIMPLE_COLOR_PALETTE_CONTENT, QStringList()); restoreValue(settings, DesignerSettingsKey::ALWAYS_DESIGN_MODE, true); restoreValue(settings, DesignerSettingsKey::DISABLE_ITEM_LIBRARY_UPDATE_TIMER, true); + restoreValue(settings, DesignerSettingsKey::LAST_USED_TRANSLATION_LANGUAGE, "en"); settings->endGroup(); settings->endGroup(); diff --git a/src/plugins/qmldesigner/designersettings.h b/src/plugins/qmldesigner/designersettings.h index 4d25edb8bc..a18bd20687 100644 --- a/src/plugins/qmldesigner/designersettings.h +++ b/src/plugins/qmldesigner/designersettings.h @@ -68,6 +68,7 @@ const char ENABLE_TIMELINEVIEW[] = "EnableTimelineView"; const char SIMPLE_COLOR_PALETTE_CONTENT[] = "SimpleColorPaletteContent"; const char ALWAYS_DESIGN_MODE[] = "AlwaysDesignMode"; const char DISABLE_ITEM_LIBRARY_UPDATE_TIMER[] = "DisableItemLibraryUpdateTimer"; +const char LAST_USED_TRANSLATION_LANGUAGE[] = "LastUsedTranslationLanguage"; } class DesignerSettings : public QHash<QByteArray, QVariant> |