40 if ( mAnnotations.contains( annotation ) )
43 mAnnotations << annotation;
54 if ( !mAnnotations.contains( annotation ) )
58 mAnnotations.removeAll( annotation );
67 for (
auto *a : std::as_const( mAnnotations ) )
80 QList<QgsAnnotation *> results;
81 for (
const auto *a : std::as_const( mAnnotations ) )
83 results << a->clone();
94 QDomElement annotationsElem = element.firstChildElement( QStringLiteral(
"Annotations" ) );
96 QDomElement annotationElement = annotationsElem.firstChildElement( QStringLiteral(
"Annotation" ) );
97 while ( ! annotationElement .isNull() )
99 createAnnotationFromXml( annotationElement, context );
100 annotationElement = annotationElement.nextSiblingElement( QStringLiteral(
"Annotation" ) );
104 if ( annotationElement.isNull() )
106 QDomNodeList oldItemList = element.elementsByTagName( QStringLiteral(
"TextAnnotationItem" ) );
107 for (
int i = 0; i < oldItemList.size(); ++i )
109 createAnnotationFromXml( oldItemList.at( i ).toElement(), context );
111 oldItemList = element.elementsByTagName( QStringLiteral(
"FormAnnotationItem" ) );
112 for (
int i = 0; i < oldItemList.size(); ++i )
114 createAnnotationFromXml( oldItemList.at( i ).toElement(), context );
116 oldItemList = element.elementsByTagName( QStringLiteral(
"HtmlAnnotationItem" ) );
117 for (
int i = 0; i < oldItemList.size(); ++i )
119 createAnnotationFromXml( oldItemList.at( i ).toElement(), context );
121 oldItemList = element.elementsByTagName( QStringLiteral(
"SVGAnnotationItem" ) );
122 for (
int i = 0; i < oldItemList.size(); ++i )
124 createAnnotationFromXml( oldItemList.at( i ).toElement(), context );
133 QDomElement annotationsElem = doc.createElement( QStringLiteral(
"Annotations" ) );
134 QListIterator<QgsAnnotation *> i( mAnnotations );
137 while ( i.hasPrevious() )
146 annotation->
writeXml( annotationsElem, doc, context );
148 return annotationsElem;
153 if ( mAnnotations.empty() )
162 if ( !a->accept( visitor ) )
172void QgsAnnotationManager::createAnnotationFromXml(
const QDomElement &element,
const QgsReadWriteContext &context )
174 QString type = element.tagName();
179 annotation->
readXml( element, context );
QList< QgsAnnotation * > annotations() const
Returns a list of all annotations contained in the manager.
QList< QgsAnnotation * > cloneAnnotations() const
Returns a list containing clones of all annotations contained in the manager.
QDomElement writeXml(QDomDocument &doc, const QgsReadWriteContext &context) const
Returns a DOM element representing the state of the manager.
void annotationRemoved()
Emitted when an annotation was removed from the manager.
QgsAnnotationManager(QgsProject *project=nullptr)
Constructor for QgsAnnotationManager.
void annotationAboutToBeRemoved(QgsAnnotation *annotation)
Emitted when an annotation is about to be removed from the manager.
bool readXml(const QDomElement &element, const QgsReadWriteContext &context)
Reads the manager's state from a DOM element, restoring all annotations present in the XML document.
~QgsAnnotationManager() override
bool removeAnnotation(QgsAnnotation *annotation)
Removes an annotation from the manager.
bool accept(QgsStyleEntityVisitorInterface *visitor) const
Accepts the specified style entity visitor, causing it to visit all style entities associated within ...
void clear()
Removes and deletes all annotations from the manager.
bool addAnnotation(QgsAnnotation *annotation)
Adds an annotation to the manager.
void annotationAdded(QgsAnnotation *annotation)
Emitted when a annotation has been added to the manager.
Abstract base class for annotation items which are drawn over a map.
QgsCoordinateReferenceSystem mapPositionCrs() const
Returns the CRS of the map position, or an invalid CRS if the annotation does not have a fixed map po...
void setMapPositionCrs(const QgsCoordinateReferenceSystem &crs)
Sets the CRS of the map position.
virtual void readXml(const QDomElement &itemElem, const QgsReadWriteContext &context)=0
Restores the annotation's state from a DOM element.
virtual void writeXml(QDomElement &elem, QDomDocument &doc, const QgsReadWriteContext &context) const =0
Writes the annotation state to a DOM element.
static QgsAnnotationRegistry * annotationRegistry()
Returns the application's annotation registry, used for managing annotation types.
bool isValid() const
Returns whether this CRS is correctly initialized and usable.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
QgsCoordinateReferenceSystem crs
void setDirty(bool b=true)
Flag the project as dirty (modified).
The class is used as a container of context for various read/write operations on other objects.
An interface for classes which can visit style entity (e.g.
@ Annotations
Annotations collection.
virtual bool visitExit(const QgsStyleEntityVisitorInterface::Node &node)
Called when the visitor stops visiting a node.
virtual bool visitEnter(const QgsStyleEntityVisitorInterface::Node &node)
Called when the visitor starts visiting a node.
Contains information relating to a node (i.e.