diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp index 711b84c3798..5dd2b1dd5d6 100644 --- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp +++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp @@ -1525,8 +1525,11 @@ void mergeWithTemplate(const SelectionContext &selectionContext, ExternalDepende const QString templateFile = getTemplateDialog(projectPath); - if (QFileInfo::exists(templateFile)) - StylesheetMerger::styleMerge(selectionContext.view()->model(), templateFile, externalDependencies); + if (QFileInfo::exists(templateFile)) { + StylesheetMerger::styleMerge(Utils::FilePath::fromString(templateFile), + selectionContext.view()->model(), + externalDependencies); + } } void removeGroup(const SelectionContext &selectionContext) diff --git a/src/plugins/qmldesigner/designercore/include/stylesheetmerger.h b/src/plugins/qmldesigner/designercore/include/stylesheetmerger.h index f4e09cf6f5b..036cb9df659 100644 --- a/src/plugins/qmldesigner/designercore/include/stylesheetmerger.h +++ b/src/plugins/qmldesigner/designercore/include/stylesheetmerger.h @@ -5,6 +5,8 @@ #include "qmldesignercorelib_global.h" +#include "utils/filepath.h" + #include #include #include @@ -26,7 +28,12 @@ class QMLDESIGNERCORE_EXPORT StylesheetMerger public: StylesheetMerger(AbstractView*, AbstractView*); void merge(); - static void styleMerge(Model *model, const QString &templateFile, class ExternalDependenciesInterface &externalDependencies); + static void styleMerge(const Utils::FilePath &templateFile, + Model *model, + class ExternalDependenciesInterface &ed); + static void styleMerge(const QString &qmlTemplateString, + Model *model, + class ExternalDependenciesInterface &externalDependencies); private: void preprocessStyleSheet(); diff --git a/src/plugins/qmldesigner/designercore/model/stylesheetmerger.cpp b/src/plugins/qmldesigner/designercore/model/stylesheetmerger.cpp index dd377cc0180..6df3e58a1d1 100644 --- a/src/plugins/qmldesigner/designercore/model/stylesheetmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/stylesheetmerger.cpp @@ -515,11 +515,24 @@ void StylesheetMerger::merge() } } -void StylesheetMerger::styleMerge(Model *model, const QString &templateFile, ExternalDependenciesInterface &externalDependencies) +void StylesheetMerger::styleMerge(const Utils::FilePath &templateFile, + Model *model, + ExternalDependenciesInterface &externalDependencies) +{ + Utils::FileReader reader; + + QTC_ASSERT(reader.fetch(templateFile), return ); + const QString qmlTemplateString = QString::fromUtf8(reader.data()); + StylesheetMerger::styleMerge(qmlTemplateString, model, externalDependencies); +} + +void StylesheetMerger::styleMerge(const QString &qmlTemplateString, + Model *model, + ExternalDependenciesInterface &externalDependencies) { Model *parentModel = model; - QTC_ASSERT(parentModel, return); + QTC_ASSERT(parentModel, return ); auto templateModel(Model::create("QtQuick.Item", 2, 1, parentModel)); Q_ASSERT(templateModel.get()); @@ -527,10 +540,6 @@ void StylesheetMerger::styleMerge(Model *model, const QString &templateFile, Ext templateModel->setFileUrl(parentModel->fileUrl()); QPlainTextEdit textEditTemplate; - Utils::FileReader reader; - - QTC_ASSERT(reader.fetch(Utils::FilePath::fromString(templateFile)), return); - QString qmlTemplateString = QString::fromUtf8(reader.data()); QString imports; for (const Import &import : parentModel->imports()) { @@ -541,13 +550,14 @@ void StylesheetMerger::styleMerge(Model *model, const QString &templateFile, Ext textEditTemplate.setPlainText(imports + qmlTemplateString); NotIndentingTextEditModifier textModifierTemplate(&textEditTemplate); - QScopedPointer templateRewriterView(new RewriterView(externalDependencies, RewriterView::Amend)); + QScopedPointer templateRewriterView( + new RewriterView(externalDependencies, RewriterView::Amend)); templateRewriterView->setTextModifier(&textModifierTemplate); templateModel->attachView(templateRewriterView.data()); templateRewriterView->setCheckSemanticErrors(false); ModelNode templateRootNode = templateRewriterView->rootModelNode(); - QTC_ASSERT(templateRootNode.isValid(), return); + QTC_ASSERT(templateRootNode.isValid(), return ); auto styleModel(Model::create("QtQuick.Item", 2, 1, parentModel)); Q_ASSERT(styleModel.get()); @@ -556,11 +566,12 @@ void StylesheetMerger::styleMerge(Model *model, const QString &templateFile, Ext QPlainTextEdit textEditStyle; RewriterView *parentRewriterView = parentModel->rewriterView(); - QTC_ASSERT(parentRewriterView, return); + QTC_ASSERT(parentRewriterView, return ); textEditStyle.setPlainText(parentRewriterView->textModifierContent()); NotIndentingTextEditModifier textModifierStyle(&textEditStyle); - QScopedPointer styleRewriterView(new RewriterView(externalDependencies, RewriterView::Amend)); + QScopedPointer styleRewriterView( + new RewriterView(externalDependencies, RewriterView::Amend)); styleRewriterView->setTextModifier(&textModifierStyle); styleModel->attachView(styleRewriterView.data());