From 6bb916c4510e55bdc9c29b13e27fcf28b5080ca4 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 22 Feb 2016 12:14:39 +0100 Subject: [PATCH] QmlDesigner: Add alias export to node Change-Id: Ifa7ae959f6aa4622549e5c32a5df14893124c1b6 Reviewed-by: Tim Jenssen --- .../componentcore/modelnodeoperations.cpp | 27 ++++++++++++++++++- .../navigator/navigatortreemodel.cpp | 5 ++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp index e55c23f4ef5..1c6d0285b1f 100644 --- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp +++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp @@ -624,8 +624,33 @@ static QStringList getSortedSignalNameList(const ModelNode &modelNode) void gotoImplementation(const SelectionContext &selectionState) { QString itemId; - if (selectionState.singleNodeIsSelected()) + ModelNode modelNode; + if (selectionState.singleNodeIsSelected()) { itemId = selectionState.selectedModelNodes().first().id(); + modelNode = selectionState.selectedModelNodes().first(); + } + + QmlObjectNode qmlObjectNode(modelNode); + + if (!qmlObjectNode.isValid()) { + QString title = QCoreApplication::translate("ModelNodeOperations", "Go to Implementation"); + QString description = QCoreApplication::translate("ModelNodeOperations", "Invalid item."); + Core::AsynchronousMessageBox::warning(title, description); + return; + } + + if (!qmlObjectNode.isRootModelNode()) { + try { + RewriterTransaction transaction = + qmlObjectNode.view()->beginRewriterTransaction(QByteArrayLiteral("NavigatorTreeModel:exportItem")); + + QmlObjectNode qmlObjectNode(modelNode); + qmlObjectNode.ensureAliasExport(); + } catch (RewritingException &exception) { //better safe than sorry! There always might be cases where we fail + exception.showException(); + } + } + const QString fileName = QmlDesignerPlugin::instance()->documentManager().currentDesignDocument()->fileName().toString(); const QString typeName = QmlDesignerPlugin::instance()->documentManager().currentDesignDocument()->fileName().toFileInfo().baseName(); diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp index 4aabeea5b97..3446eeed82a 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp @@ -425,9 +425,8 @@ void NavigatorTreeModel::handleChangedExportItem(QStandardItem *exportItem, Mode RewriterTransaction transaction = m_view->beginRewriterTransaction(QByteArrayLiteral("NavigatorTreeModel:exportItem")); - modelNode.validId(); - modelNodeId = modelNode.id().toUtf8(); - rootModelNode.bindingProperty(modelNodeId).setDynamicTypeNameAndExpression("alias", modelNodeId); + QmlObjectNode qmlObjectNode(modelNode); + qmlObjectNode.ensureAliasExport(); } catch (RewritingException &exception) { //better safe than sorry! There always might be cases where we fail exception.showException(); }