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

View File

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

View File

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

View File

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

View File

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

View File

@@ -84,9 +84,9 @@ void BindingProperty::setExpression(const QString &expression)
} }
if (internalNode()->hasProperty(name()) && !internalNode()->property(name())->isBindingProperty()) 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 QString BindingProperty::expression() const
@@ -239,9 +239,9 @@ void BindingProperty::setDynamicTypeNameAndExpression(const TypeName &typeName,
} }
if (internalNode()->hasProperty(name()) && !internalNode()->property(name())->isBindingProperty()) 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) QDebug operator<<(QDebug debug, const BindingProperty &property)

View File

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

View File

@@ -86,18 +86,18 @@ void NodeAbstractProperty::reparentHere(const ModelNode &modelNode, bool isNode
throw InvalidReparentingException(__LINE__, __FUNCTION__, __FILE__); throw InvalidReparentingException(__LINE__, __FUNCTION__, __FILE__);
if (internalNode()->hasProperty(name()) && !internalNode()->property(name())->isNodeAbstractProperty()) if (internalNode()->hasProperty(name()) && !internalNode()->property(name())->isNodeAbstractProperty())
model()->d->removeProperty(internalNode()->property(name())); privateModel()->removeProperty(internalNode()->property(name()));
if (modelNode.hasParentProperty()) { if (modelNode.hasParentProperty()) {
Internal::InternalNodeAbstractProperty::Pointer oldParentProperty = modelNode.internalNode()->parentProperty(); 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()); Q_ASSERT(!oldParentProperty.isNull());
} else { } 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) if (to > count() - 1)
throw InvalidPropertyException(__LINE__, __FUNCTION__, __FILE__, "<invalid node list sliding>"); 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) 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()) 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 ModelNode NodeProperty::modelNode() const

View File

@@ -71,9 +71,9 @@ void SignalHandlerProperty::setSource(const QString &source)
} }
if (internalNode()->hasProperty(name()) && !internalNode()->property(name())->isSignalHandlerProperty()) 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 QString SignalHandlerProperty::source() const

View File

@@ -71,9 +71,9 @@ void VariantProperty::setValue(const QVariant &value)
} }
if (internalNode()->hasProperty(name()) && !internalNode()->property(name())->isVariantProperty()) 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 QVariant VariantProperty::value() const
@@ -120,9 +120,9 @@ void VariantProperty::setDynamicTypeNameAndValue(const TypeName &type, const QVa
} }
if (internalNode()->hasProperty(name()) && !internalNode()->property(name())->isVariantProperty()) 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) void VariantProperty::setDynamicTypeNameAndEnumeration(const TypeName &type, const EnumerationName &enumerationName)