15 #include <QStringBuilder> 22 : mMetadata( metadata )
28 QString myMetadata = QStringLiteral(
"<table class=\"list-view\">\n" );
29 myMetadata += QStringLiteral(
"<tr><td class=\"highlight\">" ) + tr(
"Fees" ) + QStringLiteral(
"</td><td>" ) + mMetadata.
fees() + QStringLiteral(
"</td></tr>\n" );
30 myMetadata += QStringLiteral(
"<tr><td class=\"highlight\">" ) + tr(
"Licenses" ) + QStringLiteral(
"</td><td>" ) + mMetadata.
licenses().join( QStringLiteral(
"<br />" ) ) + QStringLiteral(
"</td></tr>\n" );
31 myMetadata += QStringLiteral(
"<tr><td class=\"highlight\">" ) + tr(
"Rights" ) + QStringLiteral(
"</td><td>" ) + mMetadata.
rights().join( QStringLiteral(
"<br />" ) ) + QStringLiteral(
"</td></tr>\n" );
32 myMetadata += QStringLiteral(
"<tr><td class=\"highlight\">" ) + tr(
"Constraints" ) + QStringLiteral(
"</td><td>" );
33 const QList<QgsLayerMetadata::Constraint> &constraints = mMetadata.
constraints();
34 bool notFirstRow =
false;
39 myMetadata += QLatin1String(
"<br />" );
41 myMetadata += QStringLiteral(
"<strong>" ) + constraint.type + QStringLiteral(
": </strong>" ) + constraint.constraint;
44 myMetadata += QLatin1String(
"</td></tr>\n" );
45 mMetadata.
rights().join( QStringLiteral(
"<br />" ) ) + QStringLiteral(
"</td></tr>\n" );
46 myMetadata += QLatin1String(
"</table>\n" );
52 const QList<QgsAbstractMetadataBase::Contact> &contacts = mMetadata.
contacts();
54 if ( contacts.isEmpty() )
56 myMetadata += QStringLiteral(
"<p>" ) + tr(
"No contact yet." ) + QStringLiteral(
"</p>" );
60 myMetadata += QStringLiteral(
"<table width=\"100%\" class=\"tabular-view\">\n" );
61 myMetadata += QLatin1String(
"<tr><th>" ) + tr(
"ID" ) + QLatin1String(
"</th><th>" ) + tr(
"Name" ) + QLatin1String(
"</th><th>" ) + tr(
"Position" ) + QLatin1String(
"</th><th>" ) + tr(
"Organization" ) + QLatin1String(
"</th><th>" ) + tr(
"Role" ) + QLatin1String(
"</th><th>" ) + tr(
"Email" ) + QLatin1String(
"</th><th>" ) + tr(
"Voice" ) + QLatin1String(
"</th><th>" ) + tr(
"Fax" ) + QLatin1String(
"</th><th>" ) + tr(
"Addresses" ) + QLatin1String(
"</th></tr>\n" );
67 rowClass = QStringLiteral(
"class=\"odd-row\"" );
68 myMetadata += QLatin1String(
"<tr " ) + rowClass + QLatin1String(
"><td>" ) + QString::number( i ) + QLatin1String(
"</td><td>" ) + contact.name + QLatin1String(
"</td><td>" ) + contact.position + QLatin1String(
"</td><td>" ) + contact.organization + QLatin1String(
"</td><td>" ) + contact.role + QLatin1String(
"</td><td>" ) + contact.email + QLatin1String(
"</td><td>" ) + contact.voice + QLatin1String(
"</td><td>" ) + contact.fax + QLatin1String(
"</td><td>" );
69 bool notFirstRow =
false;
74 myMetadata += QLatin1String(
"<br />\n" );
76 if ( ! oneAddress.
type.isEmpty() )
78 myMetadata += oneAddress.
type + QStringLiteral(
"<br />" );
80 if ( ! oneAddress.
address.isEmpty() )
82 myMetadata += oneAddress.
address + QStringLiteral(
"<br />" );
86 myMetadata += oneAddress.
postalCode + QStringLiteral(
"<br />" );
88 if ( ! oneAddress.
city.isEmpty() )
90 myMetadata += oneAddress.
city + QStringLiteral(
"<br />" );
96 if ( ! oneAddress.
country.isEmpty() )
98 myMetadata += oneAddress.
country;
102 myMetadata += QLatin1String(
"</td></tr>\n" );
105 myMetadata += QLatin1String(
"</table>\n" );
113 bool notFirstRow =
false;
114 QString myMetadata = QStringLiteral(
"<table class=\"list-view\">\n" );
115 if ( showSpatialExtent )
117 myMetadata += QStringLiteral(
"<tr><td class=\"highlight\">" ) + tr(
"CRS" ) + QStringLiteral(
"</td><td>" );
120 myMetadata += mMetadata.
crs().
authid() + QStringLiteral(
" - " );
121 myMetadata += mMetadata.
crs().
description() + QStringLiteral(
" - " );
123 myMetadata += tr(
"Geographic" );
125 myMetadata += tr(
"Projected" );
127 myMetadata += QLatin1String(
"</td></tr>\n" );
129 myMetadata += QStringLiteral(
"<tr><td class=\"highlight\">" ) + tr(
"Spatial Extent" ) + QStringLiteral(
"</td><td>" );
130 const QList< QgsLayerMetadata::SpatialExtent > spatialExtents = extent.
spatialExtents();
135 myMetadata += QLatin1String(
"<br />\n" );
137 myMetadata += QStringLiteral(
"<strong>" ) + tr(
"CRS" ) + QStringLiteral(
": </strong>" ) + spatialExtent.extentCrs.authid() + QStringLiteral(
" - " );
138 myMetadata += spatialExtent.extentCrs.description() + QStringLiteral(
" - " );
139 if ( spatialExtent.extentCrs.isGeographic() )
140 myMetadata += tr(
"Geographic" );
142 myMetadata += tr(
"Projected" );
143 myMetadata += QStringLiteral(
"<br />" );
144 myMetadata += QStringLiteral(
"<strong>" ) + tr(
"X Minimum:" ) + QStringLiteral(
" </strong>" ) +
qgsDoubleToString( spatialExtent.bounds.xMinimum() ) + QStringLiteral(
"<br />" );
145 myMetadata += QStringLiteral(
"<strong>" ) + tr(
"Y Minimum:" ) + QStringLiteral(
" </strong>" ) +
qgsDoubleToString( spatialExtent.bounds.yMinimum() ) + QStringLiteral(
"<br />" );
146 myMetadata += QStringLiteral(
"<strong>" ) + tr(
"X Maximum:" ) + QStringLiteral(
" </strong>" ) +
qgsDoubleToString( spatialExtent.bounds.xMaximum() ) + QStringLiteral(
"<br />" );
147 myMetadata += QStringLiteral(
"<strong>" ) + tr(
"Y Maximum:" ) + QStringLiteral(
" </strong>" ) +
qgsDoubleToString( spatialExtent.bounds.yMaximum() ) + QStringLiteral(
"<br />" );
148 if ( spatialExtent.bounds.zMinimum() || spatialExtent.bounds.zMaximum() )
150 myMetadata += QStringLiteral(
"<strong>" ) + tr(
"Z Minimum:" ) + QStringLiteral(
" </strong>" ) +
qgsDoubleToString( spatialExtent.bounds.zMinimum() ) + QStringLiteral(
"<br />" );
151 myMetadata += QStringLiteral(
"<strong>" ) + tr(
"Z Maximum:" ) + QStringLiteral(
" </strong>" ) +
qgsDoubleToString( spatialExtent.bounds.zMaximum() );
155 myMetadata += QLatin1String(
"</td></tr>\n" );
157 myMetadata += QStringLiteral(
"<tr><td class=\"highlight\">" ) + tr(
"Temporal Extent" ) + QStringLiteral(
"</td><td>" );
158 const QList< QgsDateTimeRange > temporalExtents = extent.
temporalExtents();
160 for (
const QgsDateTimeRange &temporalExtent : temporalExtents )
164 myMetadata += QLatin1String(
"<br />\n" );
166 if ( temporalExtent.isInstant() )
168 myMetadata += QStringLiteral(
"<strong>" ) + tr(
"Instant:" ) + QStringLiteral(
" </strong>" ) + temporalExtent.begin().toTimeSpec( Qt::OffsetFromUTC ).toString( Qt::ISODate );
172 myMetadata += QStringLiteral(
"<strong>" ) + tr(
"Start:" ) + QStringLiteral(
" </strong>" ) + temporalExtent.begin().toTimeSpec( Qt::OffsetFromUTC ).toString( Qt::ISODate ) + QStringLiteral(
"<br />\n" );
173 myMetadata += QStringLiteral(
"<strong>" ) + tr(
"End:" ) + QStringLiteral(
" </strong>" ) + temporalExtent.end().toTimeSpec( Qt::OffsetFromUTC ).toString( Qt::ISODate );
177 myMetadata += QLatin1String(
"</td></tr>\n" );
178 myMetadata += QLatin1String(
"</table>\n" );
184 QString myMetadata = QStringLiteral(
"<table class=\"list-view\">\n" );
187 myMetadata += QStringLiteral(
"<tr><td class=\"highlight\">" ) + tr(
"Identifier" ) + QStringLiteral(
"</td><td>" ) + mMetadata.
identifier() + QStringLiteral(
"</td></tr>\n" );
190 myMetadata += QStringLiteral(
"<tr><td class=\"highlight\">" ) + tr(
"Parent Identifier" ) + QStringLiteral(
"</td><td>" ) + mMetadata.
parentIdentifier() + QStringLiteral(
"</td></tr>\n" );
193 myMetadata += QStringLiteral(
"<tr><td class=\"highlight\">" ) + tr(
"Title" ) + QStringLiteral(
"</td><td>" ) + mMetadata.
title() + QStringLiteral(
"</td></tr>\n" );
196 myMetadata += QStringLiteral(
"<tr><td class=\"highlight\">" ) + tr(
"Type" ) + QStringLiteral(
"</td><td>" ) + mMetadata.
type() + QStringLiteral(
"</td></tr>\n" );
199 myMetadata += QStringLiteral(
"<tr><td class=\"highlight\">" ) + tr(
"Language" ) + QStringLiteral(
"</td><td>" ) + mMetadata.
language() + QStringLiteral(
"</td></tr>\n" );
202 myMetadata += QStringLiteral(
"<tr><td class=\"highlight\">" ) + tr(
"Abstract" ) + QStringLiteral(
"</td><td>" ) + mMetadata.
abstract() + QStringLiteral(
"</td></tr>\n" );
205 myMetadata += QStringLiteral(
"<tr><td class=\"highlight\">" ) + tr(
"Categories" ) + QStringLiteral(
"</td><td>" ) + mMetadata.
categories().join( QStringLiteral(
", " ) ) + QStringLiteral(
"</td></tr>\n" );
208 myMetadata += QStringLiteral(
"<tr><td class=\"highlight\">" ) + tr(
"Keywords" ) + QStringLiteral(
"</td><td>\n" );
209 QMapIterator<QString, QStringList> i( mMetadata.
keywords() );
212 myMetadata += QStringLiteral(
"<table width=\"100%\" class=\"tabular-view\">\n" );
213 myMetadata += QLatin1String(
"<tr><th>" ) + tr(
"Vocabulary" ) + QLatin1String(
"</th><th>" ) + tr(
"Items" ) + QLatin1String(
"</th></tr>\n" );
215 while ( i.hasNext() )
220 rowClass = QStringLiteral(
"class=\"odd-row\"" );
221 myMetadata += QLatin1String(
"<tr " ) + rowClass + QLatin1String(
"><td>" ) + i.key() + QLatin1String(
"</td><td>" ) + i.value().join( QStringLiteral(
", " ) ) + QLatin1String(
"</td></tr>\n" );
224 myMetadata += QLatin1String(
"</table>\n" );
226 myMetadata += QLatin1String(
"</td></tr>\n" );
227 myMetadata += QLatin1String(
"</table>\n" );
234 const QStringList historyItems = mMetadata.
history();
235 if ( historyItems.isEmpty() )
237 myMetadata += QStringLiteral(
"<p>" ) + tr(
"No history yet." ) + QStringLiteral(
"</p>\n" );
241 myMetadata += QStringLiteral(
"<table width=\"100%\" class=\"tabular-view\">\n" );
242 myMetadata += QLatin1String(
"<tr><th>" ) + tr(
"ID" ) + QLatin1String(
"</th><th>" ) + tr(
"Action" ) + QLatin1String(
"</th></tr>\n" );
244 for (
const QString &history : historyItems )
248 rowClass = QStringLiteral(
"class=\"odd-row\"" );
249 myMetadata += QLatin1String(
"<tr " ) + rowClass + QLatin1String(
"><td width=\"5%\">" ) + QString::number( i ) + QLatin1String(
"</td><td>" ) + history + QLatin1String(
"</td></tr>\n" );
252 myMetadata += QLatin1String(
"</table>\n" );
260 const QList<QgsAbstractMetadataBase::Link> &links = mMetadata.
links();
261 if ( links.isEmpty() )
263 myMetadata += QStringLiteral(
"<p>" ) + tr(
"No links yet." ) + QStringLiteral(
"</p>\n" );
267 myMetadata += QStringLiteral(
"<table width=\"100%\" class=\"tabular-view\">\n" );
268 myMetadata += QLatin1String(
"<tr><th>" ) + tr(
"ID" ) + QLatin1String(
"</th><th>" ) + tr(
"Name" ) + QLatin1String(
"</th><th>" ) + tr(
"Type" ) + QLatin1String(
"</th><th>" ) + tr(
"URL" ) + QLatin1String(
"</th><th>" ) + tr(
"Description" ) + QLatin1String(
"</th><th>" ) + tr(
"Format" ) + QLatin1String(
"</th><th>" ) + tr(
"MIME Type" ) + QLatin1String(
"</th><th>" ) + tr(
"Size" ) + QLatin1String(
"</th></tr>\n" );
274 rowClass = QStringLiteral(
"class=\"odd-row\"" );
275 myMetadata += QLatin1String(
"<tr " ) + rowClass + QLatin1String(
"><td>" ) + QString::number( i ) + QLatin1String(
"</td><td>" ) + link.name + QLatin1String(
"</td><td>" ) + link.type + QLatin1String(
"</td><td>" ) + link.url + QLatin1String(
"</td><td>" ) + link.description + QLatin1String(
"</td><td>" ) + link.format + QLatin1String(
"</td><td>" ) + link.mimeType + QLatin1String(
"</td><td>" ) + link.size + QLatin1String(
"</td></tr>\n" );
278 myMetadata += QLatin1String(
"</table>\n" );
QString qgsDoubleToString(double a, int precision=17)
Returns a string representation of a double.
bool isValid() const
Returns whether this CRS is correctly initialized and usable.
QString authid() const
Returns the authority identifier for the CRS.
QString description() const
Returns the descriptive name of the CRS, e.g., "WGS 84" or "GDA 94 / Vicgrid94".
bool isGeographic() const
Returns whether the CRS is a geographic CRS (using lat/lon coordinates)