QGIS API Documentation 3.99.0-Master (d270888f95f)
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#include <QString>
25
26using namespace Qt::StringLiterals;
27
28bool QgsProjectMetadata::readMetadataXml( const QDomElement &metadataElement, const QgsReadWriteContext &context )
29{
30 QgsAbstractMetadataBase::readMetadataXml( metadataElement, context );
31
32 QDomNode mnl;
33
34 // set author
35 mnl = metadataElement.namedItem( u"author"_s );
36 mAuthor = context.projectTranslator()->translate( "metadata", mnl.toElement().text() );
37
38 if ( !mDates.contains( Qgis::MetadataDateType::Created ) )
39 {
40 // creation datetime -- old format
41 mnl = metadataElement.namedItem( u"creation"_s );
42 const QDateTime creationDateTime = QDateTime::fromString( mnl.toElement().text(), Qt::ISODate );
44 }
45
46 return true;
47}
48
49bool QgsProjectMetadata::writeMetadataXml( QDomElement &metadataElement, QDomDocument &document, const QgsReadWriteContext &context ) const
50{
51 QgsAbstractMetadataBase::writeMetadataXml( metadataElement, document, context );
52
53 // author
54 QDomElement author = document.createElement( u"author"_s );
55 const QDomText authorText = document.createTextNode( mAuthor );
56 author.appendChild( authorText );
57 metadataElement.appendChild( author );
58
59 // creation datetime
60 QDomElement creation = document.createElement( u"creation"_s );
61 const QDomText creationText = document.createTextNode( mDates.value( Qgis::MetadataDateType::Created ).toString( Qt::ISODate ) );
62 creation.appendChild( creationText );
63 metadataElement.appendChild( creation );
64
65 return true;
66}
67
69{
71
72 translationContext->registerTranslation( u"metadata"_s, mAuthor );
73}
74
76{
78
79 if ( const QgsProjectMetadata *otherProjectMetadata = dynamic_cast< const QgsProjectMetadata * >( other ) )
80 {
81 if ( !otherProjectMetadata->author().isEmpty() )
82 mAuthor = otherProjectMetadata->author();
83 }
84}
85
86bool QgsProjectMetadata::operator==( const QgsProjectMetadata &metadataOther ) const
87{
88 return equals( metadataOther ) &&
89 mAuthor == metadataOther.mAuthor;
90}
91
93{
94 return new QgsProjectMetadata( *this );
95}
96
98{
99 return mAuthor;
100}
101
103{
104 mAuthor = author;
105}
106
108{
110}
111
@ Created
Date created.
Definition qgis.h:4766
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.