QmlDesigner: Make pimpl pointer private

For some weird reason the d pointer of the model has been public.
This is against all rules and therefore it is now private.
To avoid adding too many friends I added a protected getter to
AbstractProperty.

Change-Id: I3ee77475a85063574d0b0c7c3d43d28deaa7eae6
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Thomas Hartmann
2018-01-13 19:02:56 +01:00
parent 76d58e8303
commit 92d32c3a26
12 changed files with 29 additions and 27 deletions

View File

@@ -44,6 +44,7 @@ class CollapseButton;
class PropertyEditorWidget;
class PropertyEditorView;
class PropertyEditorQmlBackend;
class ModelNode;
class PropertyEditorView: public AbstractView
{
@@ -66,8 +67,6 @@ public:
void modelAboutToBeDetached(Model *model) override;
ModelState modelState() const;
void variantPropertiesChanged(const QList<VariantProperty>& propertyList, PropertyChangeFlags propertyChange) override;
void bindingPropertiesChanged(const QList<BindingProperty>& propertyList, PropertyChangeFlags propertyChange) override;

View File

@@ -35,8 +35,6 @@ QT_END_NAMESPACE
namespace QmlDesigner {
class Model;
class ModelState;
class StatesEditorModel;
class StatesEditorView;
class NodeInstanceView;

View File

@@ -108,6 +108,7 @@ protected:
AbstractProperty(const PropertyName &propertyName, const Internal::InternalNodePointer &internalNode, Model* model, AbstractView *view);
AbstractProperty(const Internal::InternalPropertyPointer &property, Model* model, AbstractView *view);
Internal::InternalNodePointer internalNode() const;
Internal::ModelPrivate *privateModel() const;
private:
PropertyName m_propertyName;

View File

@@ -40,7 +40,10 @@ QT_END_NAMESPACE
namespace QmlDesigner {
namespace Internal { class ModelPrivate; }
namespace Internal {
class ModelPrivate;
class WriteLocker;
} //Internal
class AnchorLine;
class ModelNode;
@@ -61,12 +64,10 @@ typedef QList<QPair<PropertyName, QVariant> > PropertyListType;
class QMLDESIGNERCORE_EXPORT Model : public QObject
{
friend class QmlDesigner::ModelNode;
friend class QmlDesigner::NodeState;
friend class QmlDesigner::ModelState;
friend class QmlDesigner::NodeAnchors;
friend class QmlDesigner::AbstractProperty;
friend class QmlDesigner::AbstractView;
friend class Internal::ModelPrivate;
friend class Internal::WriteLocker;
Q_OBJECT
@@ -116,7 +117,7 @@ public:
protected:
Model();
public:
private:
Internal::ModelPrivate *d;
};

View File

@@ -106,6 +106,11 @@ Internal::InternalNodePointer AbstractProperty::internalNode() const
return m_internalNode;
}
Internal::ModelPrivate *AbstractProperty::privateModel() const
{
return m_model ? m_model->d : nullptr;
}
Model *AbstractProperty::model() const
{
return m_model.data();

View File

@@ -84,9 +84,9 @@ void BindingProperty::setExpression(const QString &expression)
}
if (internalNode()->hasProperty(name()) && !internalNode()->property(name())->isBindingProperty())
model()->d->removeProperty(internalNode()->property(name()));
privateModel()->removeProperty(internalNode()->property(name()));
model()->d->setBindingProperty(internalNode(), name(), expression);
privateModel()->setBindingProperty(internalNode(), name(), expression);
}
QString BindingProperty::expression() const
@@ -239,9 +239,9 @@ void BindingProperty::setDynamicTypeNameAndExpression(const TypeName &typeName,
}
if (internalNode()->hasProperty(name()) && !internalNode()->property(name())->isBindingProperty())
model()->d->removeProperty(internalNode()->property(name()));
privateModel()->removeProperty(internalNode()->property(name()));
model()->d->setDynamicBindingProperty(internalNode(), name(), typeName, expression);
privateModel()->setDynamicBindingProperty(internalNode(), name(), typeName, expression);
}
QDebug operator<<(QDebug debug, const BindingProperty &property)

View File

@@ -40,8 +40,6 @@
namespace QmlDesigner {
class Model;
namespace Internal {
class InternalProperty;

View File

@@ -86,18 +86,18 @@ void NodeAbstractProperty::reparentHere(const ModelNode &modelNode, bool isNode
throw InvalidReparentingException(__LINE__, __FUNCTION__, __FILE__);
if (internalNode()->hasProperty(name()) && !internalNode()->property(name())->isNodeAbstractProperty())
model()->d->removeProperty(internalNode()->property(name()));
privateModel()->removeProperty(internalNode()->property(name()));
if (modelNode.hasParentProperty()) {
Internal::InternalNodeAbstractProperty::Pointer oldParentProperty = modelNode.internalNode()->parentProperty();
model()->d->reparentNode(internalNode(), name(), modelNode.internalNode(), isNodeList, dynamicTypeName);
privateModel()->reparentNode(internalNode(), name(), modelNode.internalNode(), isNodeList, dynamicTypeName);
Q_ASSERT(!oldParentProperty.isNull());
} else {
model()->d->reparentNode(internalNode(), name(), modelNode.internalNode(), isNodeList, dynamicTypeName);
privateModel()->reparentNode(internalNode(), name(), modelNode.internalNode(), isNodeList, dynamicTypeName);
}
}

View File

@@ -99,7 +99,7 @@ void NodeListProperty::slide(int from, int to) const
if (to > count() - 1)
throw InvalidPropertyException(__LINE__, __FUNCTION__, __FILE__, "<invalid node list sliding>");
model()->d->changeNodeOrder(internalNode(), name(), from, to);
privateModel()->changeNodeOrder(internalNode(), name(), from, to);
}
void NodeListProperty::reparentHere(const ModelNode &modelNode)

View File

@@ -59,9 +59,9 @@ void NodeProperty::setModelNode(const ModelNode &modelNode)
}
if (internalNode()->hasProperty(name()) && !internalNode()->property(name())->isNodeProperty())
model()->d->removeProperty(internalNode()->property(name()));
privateModel()->removeProperty(internalNode()->property(name()));
model()->d->reparentNode(internalNode(), name(), modelNode.internalNode(), false); //### we have to add a flag that this is not a list
privateModel()->reparentNode(internalNode(), name(), modelNode.internalNode(), false); //### we have to add a flag that this is not a list
}
ModelNode NodeProperty::modelNode() const

View File

@@ -71,9 +71,9 @@ void SignalHandlerProperty::setSource(const QString &source)
}
if (internalNode()->hasProperty(name()) && !internalNode()->property(name())->isSignalHandlerProperty())
model()->d->removeProperty(internalNode()->property(name()));
privateModel()->removeProperty(internalNode()->property(name()));
model()->d->setSignalHandlerProperty(internalNode(), name(), source);
privateModel()->setSignalHandlerProperty(internalNode(), name(), source);
}
QString SignalHandlerProperty::source() const

View File

@@ -71,9 +71,9 @@ void VariantProperty::setValue(const QVariant &value)
}
if (internalNode()->hasProperty(name()) && !internalNode()->property(name())->isVariantProperty())
model()->d->removeProperty(internalNode()->property(name()));
privateModel()->removeProperty(internalNode()->property(name()));
model()->d->setVariantProperty(internalNode(), name(), value);
privateModel()->setVariantProperty(internalNode(), name(), value);
}
QVariant VariantProperty::value() const
@@ -120,9 +120,9 @@ void VariantProperty::setDynamicTypeNameAndValue(const TypeName &type, const QVa
}
if (internalNode()->hasProperty(name()) && !internalNode()->property(name())->isVariantProperty())
model()->d->removeProperty(internalNode()->property(name()));
privateModel()->removeProperty(internalNode()->property(name()));
model()->d->setDynamicVariantProperty(internalNode(), name(), type, value);
privateModel()->setDynamicVariantProperty(internalNode(), name(), type, value);
}
void VariantProperty::setDynamicTypeNameAndEnumeration(const TypeName &type, const EnumerationName &enumerationName)