forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -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() << ")";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -46,6 +46,7 @@ Qt5PreviewNodeInstanceServer::Qt5PreviewNodeInstanceServer(NodeInstanceClientInt
|
||||
|
||||
void Qt5PreviewNodeInstanceServer::createScene(const CreateSceneCommand &command)
|
||||
{
|
||||
setTranslationLanguage(command.language());
|
||||
initializeView();
|
||||
setupScene(command);
|
||||
startRenderTimer();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user