forked from qt-creator/qt-creator
QmlDesigner: Refactor component handling
Change-Id: Iba591f255f3d9504b4613e5f712bb94b5ce7c19a Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
This commit is contained in:
@@ -93,31 +93,29 @@ static inline void applyProperties(ModelNode &node, const QHash<PropertyName, QV
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void openFileForComponent(const ModelNode &node)
|
static void openFileComponent(const ModelNode &modelNode)
|
||||||
{
|
{
|
||||||
QmlDesignerPlugin::instance()->viewManager().nextFileIsCalledInternally();
|
QmlDesignerPlugin::instance()->viewManager().nextFileIsCalledInternally();
|
||||||
|
|
||||||
//int width = 0;
|
//int width = 0;
|
||||||
//int height = 0;
|
//int height = 0;
|
||||||
QHash<PropertyName, QVariant> propertyHash;
|
QHash<PropertyName, QVariant> propertyHash;
|
||||||
if (node.metaInfo().isFileComponent()) {
|
|
||||||
//getWidthHeight(node, width, height);
|
//getWidthHeight(node, width, height);
|
||||||
getProperties(node, propertyHash);
|
getProperties(modelNode, propertyHash);
|
||||||
Core::EditorManager::openEditor(node.metaInfo().componentFileName(), Core::Id(), Core::EditorManager::DoNotMakeVisible);
|
Core::EditorManager::openEditor(modelNode.metaInfo().componentFileName(), Core::Id(), Core::EditorManager::DoNotMakeVisible);
|
||||||
} else if (node.metaInfo().isView() &&
|
|
||||||
node.hasNodeProperty("delegate") &&
|
|
||||||
node.nodeProperty("delegate").modelNode().metaInfo().isFileComponent()) {
|
|
||||||
//getWidthHeight(node, width, height);
|
|
||||||
getProperties(node, propertyHash);
|
|
||||||
Core::EditorManager::openEditor(node.nodeProperty("delegate").modelNode().metaInfo().componentFileName(),
|
|
||||||
Core::Id(), Core::EditorManager::DoNotMakeVisible);
|
|
||||||
}
|
|
||||||
ModelNode rootModelNode = currentDesignDocument()->rewriterView()->rootModelNode();
|
ModelNode rootModelNode = currentDesignDocument()->rewriterView()->rootModelNode();
|
||||||
applyProperties(rootModelNode, propertyHash);
|
applyProperties(rootModelNode, propertyHash);
|
||||||
//rootModelNode.setAuxiliaryData("width", width);
|
//rootModelNode.setAuxiliaryData("width", width);
|
||||||
//rootModelNode.setAuxiliaryData("height", height);
|
//rootModelNode.setAuxiliaryData("height", height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void openFileComponentForDelegate(const ModelNode &modelNode)
|
||||||
|
{
|
||||||
|
openFileComponent(modelNode.nodeProperty("delegate").modelNode());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void handleComponent(const ModelNode &modelNode)
|
static void handleComponent(const ModelNode &modelNode)
|
||||||
{
|
{
|
||||||
@@ -162,19 +160,24 @@ static inline void openInlineComponent(const ModelNode &modelNode)
|
|||||||
applyProperties(rootModelNode, propertyHash);
|
applyProperties(rootModelNode, propertyHash);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool isFileComponent(const ModelNode &node)
|
static bool isFileComponent(const ModelNode &node)
|
||||||
{
|
{
|
||||||
if (!node.isValid() || !node.metaInfo().isValid())
|
if (node.isValid()
|
||||||
return false;
|
&& node.metaInfo().isValid()
|
||||||
|
&& node.metaInfo().isFileComponent())
|
||||||
if (node.metaInfo().isFileComponent())
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (node.metaInfo().isView() &&
|
return false;
|
||||||
node.hasNodeProperty("delegate")) {
|
}
|
||||||
if (node.nodeProperty("delegate").modelNode().metaInfo().isFileComponent())
|
|
||||||
return true;
|
static bool hasDelegateWithFileComponent(const ModelNode &node)
|
||||||
}
|
{
|
||||||
|
if (node.isValid()
|
||||||
|
&& node.metaInfo().isValid()
|
||||||
|
&& node.metaInfo().isView()
|
||||||
|
&& node.hasNodeProperty("delegate")
|
||||||
|
&& node.nodeProperty("delegate").modelNode().metaInfo().isFileComponent())
|
||||||
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -226,7 +229,9 @@ void DocumentManager::goIntoComponent(const ModelNode &modelNode)
|
|||||||
if (modelNode.isValid() && modelNode.isComponent()) {
|
if (modelNode.isValid() && modelNode.isComponent()) {
|
||||||
QmlDesignerPlugin::instance()->viewManager().setComponentNode(modelNode);
|
QmlDesignerPlugin::instance()->viewManager().setComponentNode(modelNode);
|
||||||
if (isFileComponent(modelNode))
|
if (isFileComponent(modelNode))
|
||||||
openFileForComponent(modelNode);
|
openFileComponent(modelNode);
|
||||||
|
else if (hasDelegateWithFileComponent(modelNode))
|
||||||
|
openFileComponentForDelegate(modelNode);
|
||||||
else
|
else
|
||||||
openInlineComponent(modelNode);
|
openInlineComponent(modelNode);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user