forked from qt-creator/qt-creator
QmlDesigner: cleanup DocumentManager
- move get origin properties out of the static methods to reduce the code hopefully no behavior change Change-Id: Icf903f5bcaf48ab35a9db1a779c6d9e5abcf0f80 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
This commit is contained in:
@@ -670,8 +670,9 @@ void addSignalHandlerOrGotoImplementation(const SelectionContext &selectionState
|
|||||||
|
|
||||||
QString itemId = modelNode.id();
|
QString itemId = modelNode.id();
|
||||||
|
|
||||||
const QString fileName = QmlDesignerPlugin::instance()->documentManager().currentDesignDocument()->fileName().toString();
|
const Utils::FileName currentDesignDocument = QmlDesignerPlugin::instance()->documentManager().currentDesignDocument()->fileName();
|
||||||
const QString typeName = QmlDesignerPlugin::instance()->documentManager().currentDesignDocument()->fileName().toFileInfo().baseName();
|
const QString fileName = currentDesignDocument.toString();
|
||||||
|
const QString typeName = currentDesignDocument.toFileInfo().baseName();
|
||||||
|
|
||||||
QStringList signalNames = cleanSignalNames(getSortedSignalNameList(selectionState.selectedModelNodes().first()));
|
QStringList signalNames = cleanSignalNames(getSortedSignalNameList(selectionState.selectedModelNodes().first()));
|
||||||
|
|
||||||
|
@@ -53,13 +53,14 @@ namespace QmlDesigner {
|
|||||||
|
|
||||||
Q_LOGGING_CATEGORY(documentManagerLog, "qtc.qtquickdesigner.documentmanager")
|
Q_LOGGING_CATEGORY(documentManagerLog, "qtc.qtquickdesigner.documentmanager")
|
||||||
|
|
||||||
static inline DesignDocument* currentDesignDocument()
|
static inline QmlDesigner::DesignDocument* designDocument()
|
||||||
{
|
{
|
||||||
return QmlDesignerPlugin::instance()->documentManager().currentDesignDocument();
|
return QmlDesigner::QmlDesignerPlugin::instance()->documentManager().currentDesignDocument();
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void getProperties(const ModelNode &node, QHash<PropertyName, QVariant> &propertyHash)
|
static inline QHash<PropertyName, QVariant> getProperties(const ModelNode &node)
|
||||||
{
|
{
|
||||||
|
QHash<PropertyName, QVariant> propertyHash;
|
||||||
if (QmlObjectNode::isValidQmlObjectNode(node)) {
|
if (QmlObjectNode::isValidQmlObjectNode(node)) {
|
||||||
foreach (const AbstractProperty &abstractProperty, node.properties()) {
|
foreach (const AbstractProperty &abstractProperty, node.properties()) {
|
||||||
if (abstractProperty.isVariantProperty()
|
if (abstractProperty.isVariantProperty()
|
||||||
@@ -79,6 +80,7 @@ static inline void getProperties(const ModelNode &node, QHash<PropertyName, QVar
|
|||||||
propertyHash.remove("opacity");
|
propertyHash.remove("opacity");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return propertyHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void applyProperties(ModelNode &node, const QHash<PropertyName, QVariant> &propertyHash)
|
static inline void applyProperties(ModelNode &node, const QHash<PropertyName, QVariant> &propertyHash)
|
||||||
@@ -111,14 +113,8 @@ static inline void applyProperties(ModelNode &node, const QHash<PropertyName, QV
|
|||||||
static void openFileComponent(const ModelNode &modelNode)
|
static void openFileComponent(const ModelNode &modelNode)
|
||||||
{
|
{
|
||||||
QmlDesignerPlugin::instance()->viewManager().nextFileIsCalledInternally();
|
QmlDesignerPlugin::instance()->viewManager().nextFileIsCalledInternally();
|
||||||
|
Core::EditorManager::openEditor(modelNode.metaInfo().componentFileName(),
|
||||||
QHash<PropertyName, QVariant> propertyHash;
|
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void openFileComponentForDelegate(const ModelNode &modelNode)
|
static void openFileComponentForDelegate(const ModelNode &modelNode)
|
||||||
@@ -130,10 +126,6 @@ static void openComponentSourcePropertyOfLoader(const ModelNode &modelNode)
|
|||||||
{
|
{
|
||||||
QmlDesignerPlugin::instance()->viewManager().nextFileIsCalledInternally();
|
QmlDesignerPlugin::instance()->viewManager().nextFileIsCalledInternally();
|
||||||
|
|
||||||
QHash<PropertyName, QVariant> propertyHash;
|
|
||||||
|
|
||||||
getProperties(modelNode, propertyHash);
|
|
||||||
|
|
||||||
ModelNode componentModelNode;
|
ModelNode componentModelNode;
|
||||||
|
|
||||||
if (modelNode.hasNodeProperty("sourceComponent")) {
|
if (modelNode.hasNodeProperty("sourceComponent")) {
|
||||||
@@ -149,32 +141,23 @@ static void openComponentSourcePropertyOfLoader(const ModelNode &modelNode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
Core::EditorManager::openEditor(componentModelNode.metaInfo().componentFileName(), Core::Id(), Core::EditorManager::DoNotMakeVisible);
|
Core::EditorManager::openEditor(componentModelNode.metaInfo().componentFileName(), Core::Id(), Core::EditorManager::DoNotMakeVisible);
|
||||||
|
|
||||||
ModelNode rootModelNode = currentDesignDocument()->rewriterView()->rootModelNode();
|
|
||||||
applyProperties(rootModelNode, propertyHash);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void openSourcePropertyOfLoader(const ModelNode &modelNode)
|
static void openSourcePropertyOfLoader(const ModelNode &modelNode)
|
||||||
{
|
{
|
||||||
QmlDesignerPlugin::instance()->viewManager().nextFileIsCalledInternally();
|
QmlDesignerPlugin::instance()->viewManager().nextFileIsCalledInternally();
|
||||||
|
|
||||||
QHash<PropertyName, QVariant> propertyHash;
|
|
||||||
|
|
||||||
QString componentFileName = modelNode.variantProperty("source").value().toString();
|
QString componentFileName = modelNode.variantProperty("source").value().toString();
|
||||||
QString componentFilePath = modelNode.model()->fileUrl().resolved(QUrl::fromLocalFile(componentFileName)).toLocalFile();
|
QString componentFilePath = modelNode.model()->fileUrl().resolved(QUrl::fromLocalFile(componentFileName)).toLocalFile();
|
||||||
|
|
||||||
getProperties(modelNode, propertyHash);
|
|
||||||
Core::EditorManager::openEditor(componentFilePath, Core::Id(), Core::EditorManager::DoNotMakeVisible);
|
Core::EditorManager::openEditor(componentFilePath, Core::Id(), Core::EditorManager::DoNotMakeVisible);
|
||||||
|
|
||||||
ModelNode rootModelNode = currentDesignDocument()->rewriterView()->rootModelNode();
|
|
||||||
applyProperties(rootModelNode, propertyHash);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void handleComponent(const ModelNode &modelNode)
|
static void handleComponent(const ModelNode &modelNode)
|
||||||
{
|
{
|
||||||
if (modelNode.nodeSourceType() == ModelNode::NodeWithComponentSource)
|
if (modelNode.nodeSourceType() == ModelNode::NodeWithComponentSource)
|
||||||
currentDesignDocument()->changeToSubComponent(modelNode);
|
designDocument()->changeToSubComponent(modelNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handleDelegate(const ModelNode &modelNode)
|
static void handleDelegate(const ModelNode &modelNode)
|
||||||
@@ -182,36 +165,25 @@ static void handleDelegate(const ModelNode &modelNode)
|
|||||||
if (modelNode.metaInfo().isView()
|
if (modelNode.metaInfo().isView()
|
||||||
&& modelNode.hasNodeProperty("delegate")
|
&& modelNode.hasNodeProperty("delegate")
|
||||||
&& modelNode.nodeProperty("delegate").modelNode().nodeSourceType() == ModelNode::NodeWithComponentSource)
|
&& modelNode.nodeProperty("delegate").modelNode().nodeSourceType() == ModelNode::NodeWithComponentSource)
|
||||||
currentDesignDocument()->changeToSubComponent(modelNode.nodeProperty("delegate").modelNode());
|
designDocument()->changeToSubComponent(modelNode.nodeProperty("delegate").modelNode());
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handleTabComponent(const ModelNode &modelNode)
|
static void handleTabComponent(const ModelNode &modelNode)
|
||||||
{
|
{
|
||||||
if (modelNode.hasNodeProperty("component")
|
if (modelNode.hasNodeProperty("component")
|
||||||
&& modelNode.nodeProperty("component").modelNode().nodeSourceType() == ModelNode::NodeWithComponentSource) {
|
&& modelNode.nodeProperty("component").modelNode().nodeSourceType() == ModelNode::NodeWithComponentSource) {
|
||||||
currentDesignDocument()->changeToSubComponent(modelNode.nodeProperty("component").modelNode());
|
designDocument()->changeToSubComponent(modelNode.nodeProperty("component").modelNode());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void openInlineComponent(const ModelNode &modelNode)
|
static inline void openInlineComponent(const ModelNode &modelNode)
|
||||||
{
|
{
|
||||||
|
if (!modelNode.metaInfo().isValid())
|
||||||
if (!modelNode.isValid() || !modelNode.metaInfo().isValid())
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!currentDesignDocument())
|
|
||||||
return;
|
|
||||||
|
|
||||||
QHash<PropertyName, QVariant> propertyHash;
|
|
||||||
|
|
||||||
getProperties(modelNode, propertyHash);
|
|
||||||
|
|
||||||
handleComponent(modelNode);
|
handleComponent(modelNode);
|
||||||
handleDelegate(modelNode);
|
handleDelegate(modelNode);
|
||||||
handleTabComponent(modelNode);
|
handleTabComponent(modelNode);
|
||||||
|
|
||||||
ModelNode rootModelNode = currentDesignDocument()->rewriterView()->rootModelNode();
|
|
||||||
applyProperties(rootModelNode, propertyHash);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool isFileComponent(const ModelNode &node)
|
static bool isFileComponent(const ModelNode &node)
|
||||||
@@ -249,7 +221,6 @@ static bool isLoaderWithSourceComponent(const ModelNode &modelNode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool hasSourceWithFileComponent(const ModelNode &modelNode)
|
static bool hasSourceWithFileComponent(const ModelNode &modelNode)
|
||||||
@@ -295,7 +266,7 @@ DesignDocument *DocumentManager::currentDesignDocument() const
|
|||||||
|
|
||||||
bool DocumentManager::hasCurrentDesignDocument() const
|
bool DocumentManager::hasCurrentDesignDocument() const
|
||||||
{
|
{
|
||||||
return m_currentDesignDocument.data();
|
return !m_currentDesignDocument.isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DocumentManager::removeEditors(const QList<Core::IEditor *> &editors)
|
void DocumentManager::removeEditors(const QList<Core::IEditor *> &editors)
|
||||||
@@ -306,8 +277,9 @@ void DocumentManager::removeEditors(const QList<Core::IEditor *> &editors)
|
|||||||
|
|
||||||
void DocumentManager::goIntoComponent(const ModelNode &modelNode)
|
void DocumentManager::goIntoComponent(const ModelNode &modelNode)
|
||||||
{
|
{
|
||||||
if (modelNode.isValid() && modelNode.isComponent()) {
|
if (modelNode.isValid() && modelNode.isComponent() && designDocument()) {
|
||||||
QmlDesignerPlugin::instance()->viewManager().setComponentNode(modelNode);
|
QmlDesignerPlugin::instance()->viewManager().setComponentNode(modelNode);
|
||||||
|
QHash<PropertyName, QVariant> oldProperties = getProperties(modelNode);
|
||||||
if (isFileComponent(modelNode))
|
if (isFileComponent(modelNode))
|
||||||
openFileComponent(modelNode);
|
openFileComponent(modelNode);
|
||||||
else if (hasDelegateWithFileComponent(modelNode))
|
else if (hasDelegateWithFileComponent(modelNode))
|
||||||
@@ -318,6 +290,8 @@ void DocumentManager::goIntoComponent(const ModelNode &modelNode)
|
|||||||
openComponentSourcePropertyOfLoader(modelNode);
|
openComponentSourcePropertyOfLoader(modelNode);
|
||||||
else
|
else
|
||||||
openInlineComponent(modelNode);
|
openInlineComponent(modelNode);
|
||||||
|
ModelNode rootModelNode = designDocument()->rewriterView()->rootModelNode();
|
||||||
|
applyProperties(rootModelNode, oldProperties);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user