summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Jenssen <tim.jenssen@qt.io>2020-06-10 20:47:45 +0200
committerTim Jenssen <tim.jenssen@qt.io>2020-06-11 15:26:39 +0000
commitf652167768f105ad349833f18ee85a6dd81ae559 (patch)
tree3715d771cafc465d5b480137b188575223f3d2b5
parentad4c5e02589dbe8f0c2adcebbc24d7242cb0de4f (diff)
downloadqt-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>
-rw-r--r--share/qtcreator/qml/qmlpuppet/commands/createscenecommand.cpp16
-rw-r--r--share/qtcreator/qml/qmlpuppet/commands/createscenecommand.h24
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp26
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h1
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp1
-rw-r--r--src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp28
-rw-r--r--src/plugins/qmldesigner/designersettings.cpp1
-rw-r--r--src/plugins/qmldesigner/designersettings.h1
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>