QmlDesigner: Refactor component handling

Change-Id: Iba591f255f3d9504b4613e5f712bb94b5ce7c19a
Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
This commit is contained in:
Marco Bubke
2014-06-16 15:30:03 +02:00
parent 5d1430ceab
commit fd7c110c04

View File

@@ -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();
//int width = 0;
//int height = 0;
QHash<PropertyName, QVariant> propertyHash;
if (node.metaInfo().isFileComponent()) {
//getWidthHeight(node, width, height);
getProperties(node, propertyHash);
Core::EditorManager::openEditor(node.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);
}
getProperties(modelNode, propertyHash);
Core::EditorManager::openEditor(modelNode.metaInfo().componentFileName(), Core::Id(), Core::EditorManager::DoNotMakeVisible);
ModelNode rootModelNode = currentDesignDocument()->rewriterView()->rootModelNode();
applyProperties(rootModelNode, propertyHash);
//rootModelNode.setAuxiliaryData("width", width);
//rootModelNode.setAuxiliaryData("height", height);
}
static void openFileComponentForDelegate(const ModelNode &modelNode)
{
openFileComponent(modelNode.nodeProperty("delegate").modelNode());
}
static void handleComponent(const ModelNode &modelNode)
{
@@ -162,20 +160,25 @@ static inline void openInlineComponent(const ModelNode &modelNode)
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()
&& node.metaInfo().isValid()
&& node.metaInfo().isFileComponent())
return true;
return false;
}
if (node.metaInfo().isFileComponent())
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;
if (node.metaInfo().isView() &&
node.hasNodeProperty("delegate")) {
if (node.nodeProperty("delegate").modelNode().metaInfo().isFileComponent())
return true;
}
return false;
}
@@ -226,7 +229,9 @@ void DocumentManager::goIntoComponent(const ModelNode &modelNode)
if (modelNode.isValid() && modelNode.isComponent()) {
QmlDesignerPlugin::instance()->viewManager().setComponentNode(modelNode);
if (isFileComponent(modelNode))
openFileForComponent(modelNode);
openFileComponent(modelNode);
else if (hasDelegateWithFileComponent(modelNode))
openFileComponentForDelegate(modelNode);
else
openInlineComponent(modelNode);
}