QmlDesigner.PropertyEditorView: moving code in extra function

Adding setupQmlBackend()

Change-Id: Ie7446ad8ef8153f3ff70a2f22466ac3ed24e3f92
Reviewed-by: Marco Bubke <marco.bubke@digia.com>
This commit is contained in:
Thomas Hartmann
2013-08-09 13:39:42 +02:00
parent 2b0f93c8d8
commit 9385c9f9e8
2 changed files with 35 additions and 28 deletions

View File

@@ -360,6 +360,19 @@ void PropertyEditorView::resetView()
if (m_selectedNode.isValid() && model() != m_selectedNode.model()) if (m_selectedNode.isValid() && model() != m_selectedNode.model())
m_selectedNode = ModelNode(); m_selectedNode = ModelNode();
setupQmlBackend();
m_locked = false;
if (m_timerId)
m_timerId = 0;
updateSize();
}
void PropertyEditorView::setupQmlBackend()
{
TypeName specificsClassName; TypeName specificsClassName;
QUrl qmlFile(PropertyEditorQmlBackend::getQmlUrlForModelNode(m_selectedNode, specificsClassName)); QUrl qmlFile(PropertyEditorQmlBackend::getQmlUrlForModelNode(m_selectedNode, specificsClassName));
QUrl qmlSpecificsFile; QUrl qmlSpecificsFile;
@@ -385,61 +398,54 @@ void PropertyEditorView::resetView()
QString specificQmlData; QString specificQmlData;
if (m_selectedNode.isValid() && m_selectedNode.metaInfo().isValid() && diffClassName != m_selectedNode.type()) { if (m_selectedNode.isValid() && m_selectedNode.metaInfo().isValid() && diffClassName != m_selectedNode.type()) {
//do magic !!
specificQmlData = PropertyEditorQmlBackend::templateGeneration(m_selectedNode.metaInfo(), model()->metaInfo(diffClassName), m_selectedNode); specificQmlData = PropertyEditorQmlBackend::templateGeneration(m_selectedNode.metaInfo(), model()->metaInfo(diffClassName), m_selectedNode);
} }
PropertyEditorQmlBackend *qmlBackend = m_qmlBackendHash.value(qmlFile.toString()); PropertyEditorQmlBackend *currentQmlBackend = m_qmlBackendHash.value(qmlFile.toString());
QString currentStateName = currentState().isBaseState() ? currentState().name() : QLatin1String("invalid state"); QString currentStateName = currentState().isBaseState() ? currentState().name() : QLatin1String("invalid state");
if (!qmlBackend) { if (!currentQmlBackend) {
qmlBackend = new PropertyEditorQmlBackend(this); currentQmlBackend = new PropertyEditorQmlBackend(this);
m_stackedWidget->addWidget(qmlBackend->widget()); m_stackedWidget->addWidget(currentQmlBackend->widget());
m_qmlBackendHash.insert(qmlFile.toString(), qmlBackend); m_qmlBackendHash.insert(qmlFile.toString(), currentQmlBackend);
QmlObjectNode qmlObjectNode; QmlObjectNode qmlObjectNode;
if (m_selectedNode.isValid()) { if (m_selectedNode.isValid()) {
qmlObjectNode = QmlObjectNode(m_selectedNode); qmlObjectNode = QmlObjectNode(m_selectedNode);
Q_ASSERT(qmlObjectNode.isValid()); Q_ASSERT(qmlObjectNode.isValid());
} }
qmlBackend->setup(qmlObjectNode, currentStateName, qmlSpecificsFile, this); currentQmlBackend->setup(qmlObjectNode, currentStateName, qmlSpecificsFile, this);
qmlBackend->context()->setContextProperty("finishedNotify", QVariant(false)); currentQmlBackend->context()->setContextProperty("finishedNotify", QVariant(false));
if (specificQmlData.isEmpty()) if (specificQmlData.isEmpty())
qmlBackend->contextObject()->setSpecificQmlData(specificQmlData); currentQmlBackend->contextObject()->setSpecificQmlData(specificQmlData);
qmlBackend->contextObject()->setGlobalBaseUrl(qmlFile); currentQmlBackend->contextObject()->setGlobalBaseUrl(qmlFile);
qmlBackend->contextObject()->setSpecificQmlData(specificQmlData); currentQmlBackend->contextObject()->setSpecificQmlData(specificQmlData);
qmlBackend->setSource(qmlFile); currentQmlBackend->setSource(qmlFile);
qmlBackend->context()->setContextProperty("finishedNotify", QVariant(true)); currentQmlBackend->context()->setContextProperty("finishedNotify", QVariant(true));
} else { } else {
QmlObjectNode qmlObjectNode; QmlObjectNode qmlObjectNode;
if (m_selectedNode.isValid()) if (m_selectedNode.isValid())
qmlObjectNode = QmlObjectNode(m_selectedNode); qmlObjectNode = QmlObjectNode(m_selectedNode);
qmlBackend->context()->setContextProperty("finishedNotify", QVariant(false)); currentQmlBackend->context()->setContextProperty("finishedNotify", QVariant(false));
if (specificQmlData.isEmpty()) if (specificQmlData.isEmpty())
qmlBackend->contextObject()->setSpecificQmlData(specificQmlData); currentQmlBackend->contextObject()->setSpecificQmlData(specificQmlData);
qmlBackend->setup(qmlObjectNode, currentStateName, qmlSpecificsFile, this); currentQmlBackend->setup(qmlObjectNode, currentStateName, qmlSpecificsFile, this);
qmlBackend->contextObject()->setGlobalBaseUrl(qmlFile); currentQmlBackend->contextObject()->setGlobalBaseUrl(qmlFile);
qmlBackend->contextObject()->setSpecificQmlData(specificQmlData); currentQmlBackend->contextObject()->setSpecificQmlData(specificQmlData);
} }
m_stackedWidget->setCurrentWidget(qmlBackend->widget()); m_stackedWidget->setCurrentWidget(currentQmlBackend->widget());
qmlBackend->context()->setContextProperty("finishedNotify", QVariant(true)); currentQmlBackend->context()->setContextProperty("finishedNotify", QVariant(true));
qmlBackend->contextObject()->triggerSelectionChanged(); currentQmlBackend->contextObject()->triggerSelectionChanged();
m_qmlBackEndForCurrentType = qmlBackend; m_qmlBackEndForCurrentType = currentQmlBackend;
m_locked = false;
if (m_timerId)
m_timerId = 0;
updateSize();
} }
void PropertyEditorView::selectedNodesChanged(const QList<ModelNode> &selectedNodeList, void PropertyEditorView::selectedNodesChanged(const QList<ModelNode> &selectedNodeList,

View File

@@ -122,6 +122,7 @@ private: //functions
void select(const ModelNode& node); void select(const ModelNode& node);
void delayedResetView(); void delayedResetView();
void setupQmlBackend();
private: //variables private: //variables
ModelNode m_selectedNode; ModelNode m_selectedNode;