AbstractDiagramElement Class Reference

#include <abstractdiagramelement.h>

Inheritance diagram for AbstractDiagramElement:

AbstractElement DomAccessibleState DiagramGesture DiagramPolygon DiagramPolyline DiagramShape DiagramText List of all members.

Public Types

enum  ControlPointEditFlag { NoEditingAllowed = 0x0, InsertionIsAllowed = 0x1, RemovalIsAllowed = 0x2, MovementIsAllowed = 0x4 }

Public Member Functions

 Q_DECLARE_FLAGS (ControlPointEditFlags, ControlPointEditFlag)
virtual ControlPointEditFlags controlPointEditFlags () const=0
const QList< QPointF > & controlPoints () const
virtual const QSet< int > & requiredAttributes () const=0
virtual const QSet< int > & additionalAttributes () const=0

Static Public Member Functions

static ControlPointEditFlags classControlPointEditFlags ()

Protected Member Functions

 AbstractDiagramElement (qint32 instanceId, ElementDoc *doc, const QList< QPointF > &controlPoints=QList< QPointF >())
 AbstractDiagramElement (ElementDoc *doc, const QList< QPointF > &controlPoints=QList< QPointF >())
void addRequiredAttributes ()
virtual void dispatchEvent (MEvent *)
virtual void controlPointInsertEvent (MEControlPointInsertEvent *)
virtual void controlPointRemoveEvent (MEControlPointRemoveEvent *)
virtual void controlPointMoveEvent (MEControlPointMoveEvent *)
virtual AbstractElementAttributecreateAttribute (int type)
virtual AbstractElementAttributecreateAttribute (const QByteArray &key)
virtual int attributeKeyToType (const QByteArray &key)

Protected Attributes

QList< QPointF > m_controlPoints

Detailed Description

Warning! Control points are only used for editing purposes. All persistent data (other than the name) is kept in the attributes.


Member Enumeration Documentation

enum AbstractDiagramElement::ControlPointEditFlag

Enumerator:
NoEditingAllowed 
InsertionIsAllowed  No control point editing is allowed.
RemovalIsAllowed  Control points can be inserted.
MovementIsAllowed  Control points can be removed.


Constructor & Destructor Documentation

AbstractDiagramElement::AbstractDiagramElement ( qint32  instanceId,
ElementDoc doc,
const QList< QPointF > &  controlPoints = QList<QPointF>() 
) [protected]

Constructs an element for Diagram doc with a given instanceId.

AbstractDiagramElement::AbstractDiagramElement ( ElementDoc doc,
const QList< QPointF > &  controlPoints = QList<QPointF>() 
) [protected]

Convenience constructor. It behaves essentially like the above function.

The element's instanceId is automatically generated using ElementDoc::genElementInstanceId.


Member Function Documentation

AbstractDiagramElement::Q_DECLARE_FLAGS ( ControlPointEditFlags  ,
ControlPointEditFlag   
)

static ControlPointEditFlags AbstractDiagramElement::classControlPointEditFlags (  )  [inline, static]

Reimplemented in DiagramGesture, DiagramPolygon, DiagramPolyline, DiagramShape, and DiagramText.

virtual ControlPointEditFlags AbstractDiagramElement::controlPointEditFlags (  )  const [pure virtual]

Implemented in DiagramGesture, DiagramPolygon, DiagramPolyline, DiagramShape, and DiagramText.

const QList<QPointF>& AbstractDiagramElement::controlPoints (  )  const [inline]

Warning! Control points are only used for editing purposes. All persistent data (other than the name) is kept in the attributes.

virtual const QSet<int>& AbstractDiagramElement::requiredAttributes (  )  const [pure virtual]

Reimplemented from AbstractElement.

Implemented in DiagramGesture, DiagramPolygon, DiagramPolyline, DiagramShape, and DiagramText.

virtual const QSet<int>& AbstractDiagramElement::additionalAttributes (  )  const [pure virtual]

Reimplemented from AbstractElement.

Implemented in DiagramGesture, DiagramPolygon, DiagramPolyline, DiagramShape, and DiagramText.

void AbstractDiagramElement::addRequiredAttributes (  )  [protected]

This will create and add an instance of each attribute type that is listed by requiredAttributes().

Warning: This can't be called by the AbstractDiagramElement's constructors, as it relies on the sub-class' v-table to have been created, as it calls requiredAttributes(), which is (pure-)virtual. Hence, it must be called by the sub-class' constructor().

void AbstractDiagramElement::dispatchEvent ( MEvent event  )  [protected, virtual]

The elements's event dispatcher.

Receives events and then passes them off to be processed by appropiate (virtual) methods.

Warning: It is assumed that the events have their correct type set (as it uses static casts).

Asserts that the event is non-null.

Reimplemented from AbstractElement.

void AbstractDiagramElement::controlPointInsertEvent ( MEControlPointInsertEvent event  )  [protected, virtual]

This implementation simply inserts the control point into the controlPoints() list.

Reimplemented in DiagramGesture, DiagramPolygon, DiagramPolyline, DiagramShape, and DiagramText.

void AbstractDiagramElement::controlPointRemoveEvent ( MEControlPointRemoveEvent event  )  [protected, virtual]

This implementation simply remove the control point from the controlPoints() list.

Reimplemented in DiagramGesture, DiagramPolygon, DiagramPolyline, DiagramShape, and DiagramText.

void AbstractDiagramElement::controlPointMoveEvent ( MEControlPointMoveEvent event  )  [protected, virtual]

This implementation simply updates the controlPoints() item at event->index() to reflect event->pos().

Note: event->index() must be a valid index position in the conrtrol point list (i.e., 0 <= event->index() < controlPoints().size()).

Reimplemented in DiagramGesture, DiagramPolygon, DiagramPolyline, DiagramShape, and DiagramText.

AbstractElementAttribute * AbstractDiagramElement::createAttribute ( int  type  )  [protected, virtual]

Note: The type is an int, as to aid extensibility.

Implements AbstractElement.

AbstractElementAttribute * AbstractDiagramElement::createAttribute ( const QByteArray &  key  )  [protected, virtual]

Implements AbstractElement.

int AbstractDiagramElement::attributeKeyToType ( const QByteArray &  key  )  [protected, virtual]

Implements AbstractElement.


Member Data Documentation

QList<QPointF> AbstractDiagramElement::m_controlPoints [protected]


The documentation for this class was generated from the following files:
Generated on Mon Jul 30 09:46:51 2007 for Digest by  doxygen 1.5.2