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