QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgsprojectmetadata.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsprojectmetadata.cpp
3 --------------------
4 begin : March 2018
5 copyright : (C) 2018 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#include "qgsprojectmetadata.h"
19
21
22#include <QDomDocument>
23#include <QDomNode>
24
25bool QgsProjectMetadata::readMetadataXml( const QDomElement &metadataElement, const QgsReadWriteContext &context )
26{
27 QgsAbstractMetadataBase::readMetadataXml( metadataElement, context );
28
29 QDomNode mnl;
30
31 // set author
32 mnl = metadataElement.namedItem( QStringLiteral( "author" ) );
33 mAuthor = context.projectTranslator()->translate( "metadata", mnl.toElement().text() );
34
35 if ( !mDates.contains( Qgis::MetadataDateType::Created ) )
36 {
37 // creation datetime -- old format
38 mnl = metadataElement.namedItem( QStringLiteral( "creation" ) );
39 const QDateTime creationDateTime = QDateTime::fromString( mnl.toElement().text(), Qt::ISODate );
41 }
42
43 return true;
44}
45
46bool QgsProjectMetadata::writeMetadataXml( QDomElement &metadataElement, QDomDocument &document, const QgsReadWriteContext &context ) const
47{
48 QgsAbstractMetadataBase::writeMetadataXml( metadataElement, document, context );
49
50 // author
51 QDomElement author = document.createElement( QStringLiteral( "author" ) );
52 const QDomText authorText = document.createTextNode( mAuthor );
53 author.appendChild( authorText );
54 metadataElement.appendChild( author );
55
56 // creation datetime
57 QDomElement creation = document.createElement( QStringLiteral( "creation" ) );
58 const QDomText creationText = document.createTextNode( mDates.value( Qgis::MetadataDateType::Created ).toString( Qt::ISODate ) );
59 creation.appendChild( creationText );
60 metadataElement.appendChild( creation );
61
62 return true;
63}
64
66{
68
69 translationContext->registerTranslation( QStringLiteral( "metadata" ), mAuthor );
70}
71
73{
75
76 if ( const QgsProjectMetadata *otherProjectMetadata = dynamic_cast< const QgsProjectMetadata * >( other ) )
77 {
78 if ( !otherProjectMetadata->author().isEmpty() )
79 mAuthor = otherProjectMetadata->author();
80 }
81}
82
83bool QgsProjectMetadata::operator==( const QgsProjectMetadata &metadataOther ) const
84{
85 return equals( metadataOther ) &&
86 mAuthor == metadataOther.mAuthor;
87}
88
90{
91 return new QgsProjectMetadata( *this );
92}
93
95{
96 return mAuthor;
97}
98
100{
101 mAuthor = author;
102}
103
105{
107}
108
@ Created
Date created.
Definition qgis.h:4694
virtual void combine(const QgsAbstractMetadataBase *other)
Combines the metadata from this object with the metadata from an other object.
QMap< Qgis::MetadataDateType, QDateTime > mDates
Metadata dates.
virtual bool writeMetadataXml(QDomElement &metadataElement, QDomDocument &document, const QgsReadWriteContext &context=QgsReadWriteContext()) const
Stores state in a DOM node.
bool equals(const QgsAbstractMetadataBase &other) const
Tests whether the common metadata fields in this object are equal to other.
virtual void registerTranslations(QgsTranslationContext *translationContext) const
Registers metadata translation strings.
QgsAbstractMetadataBase()=default
Constructor for QgsAbstractMetadataBase.
virtual bool readMetadataXml(const QDomElement &metadataElement, const QgsReadWriteContext &context=QgsReadWriteContext())
Sets state from DOM document.
void registerTranslations(QgsTranslationContext *translationContext) const override
Registers metadata translation strings.
QString author() const
Returns the project author string.
bool readMetadataXml(const QDomElement &metadataElement, const QgsReadWriteContext &context=QgsReadWriteContext()) override
Sets state from DOM document.
bool writeMetadataXml(QDomElement &metadataElement, QDomDocument &document, const QgsReadWriteContext &context=QgsReadWriteContext()) const override
Stores state in a DOM node.
QgsProjectMetadata()=default
void combine(const QgsAbstractMetadataBase *other) override
Combines the metadata from this object with the metadata from an other object.
void setCreationDateTime(const QDateTime &creationDateTime)
Sets the project's creation date/timestamp.
bool operator==(const QgsProjectMetadata &metadataOther) const
void setAuthor(const QString &author)
Sets the project author string.
QgsProjectMetadata * clone() const override
Clones the metadata object.
QDateTime creationDateTime() const
Returns the project's creation date/timestamp.
virtual QString translate(const QString &context, const QString &sourceText, const char *disambiguation=nullptr, int n=-1) const =0
Translates a string using the Qt QTranslator mechanism.
A container for the context for various read/write operations on objects.
const QgsProjectTranslator * projectTranslator() const
Returns the project translator.
Used for the collecting of strings from projects for translation and creation of ts files.
void registerTranslation(const QString &context, const QString &source)
Registers the source to be translated.