diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 149f58a513f2aff6509b9d295f8e9244ce32d5f1..65406f4a747afa714b0ec0dae1bbfa41547e3bb9 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -740,6 +740,7 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH m_document = doc; QList<RewriterView::Error> errors; + QList<RewriterView::Error> warnings; foreach (const QmlJS::DiagnosticMessage &diagnosticMessage, ctxt.diagnosticLinkMessages()) { errors.append(RewriterView::Error(diagnosticMessage, QUrl::fromLocalFile(doc->fileName()))); @@ -766,9 +767,26 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH check.disableMessage(StaticAnalysis::ErrPrototypeCycle); check.disableMessage(StaticAnalysis::ErrCouldNotResolvePrototype); check.disableMessage(StaticAnalysis::ErrCouldNotResolvePrototypeOf); + + foreach (StaticAnalysis::Type type, StaticAnalysis::Message::allMessageTypes()) { + StaticAnalysis::Message message(type, AST::SourceLocation()); + if (message.severity == StaticAnalysis::MaybeWarning + || message.severity == StaticAnalysis::Warning) { + check.disableMessage(type); + } + } + + check.enableMessage(StaticAnalysis::WarnImperativeCodeNotEditableInVisualDesigner); + check.enableMessage(StaticAnalysis::WarnUnsupportedTypeInVisualDesigner); + check.enableMessage(StaticAnalysis::WarnReferenceToParentItemNotSupportedByVisualDesigner); + check.enableMessage(StaticAnalysis::WarnUndefinedValueForVisualDesigner); + check.enableMessage(StaticAnalysis::WarnStatesOnlyInRootItemForVisualDesigner); + foreach (const StaticAnalysis::Message &message, check()) { if (message.severity == StaticAnalysis::Error) errors.append(RewriterView::Error(message.toDiagnosticMessage(), QUrl::fromLocalFile(doc->fileName()))); + if (message.severity == StaticAnalysis::Warning) + warnings.append(RewriterView::Error(message.toDiagnosticMessage(), QUrl::fromLocalFile(doc->fileName()))); } if (!errors.isEmpty()) { @@ -776,6 +794,24 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH setActive(false); return false; } + + if (!warnings.isEmpty() && differenceHandler.isValidator()) { + + QString title = QCoreApplication::translate("QmlDesigner::TextToModelMerger warning message", "This .qml file contains features" + "which are not supported by Qt Quick Designer"); + + QString message; + + foreach (const RewriterView::Error &warning, warnings) { + message += QLatin1String("Line: ") + QString::number(warning.line()) + ": " + warning.description() + QLatin1String("\n"); + } + + if (QMessageBox::warning(0, title, message, QMessageBox::Ignore | QMessageBox::Cancel) == QMessageBox::Cancel) { + m_rewriterView->setErrors(warnings); + setActive(false); + return false; + } + } } UiObjectMember *astRootNode = 0;