@@ -35,7 +35,10 @@ QgsMetadataWidget::QgsMetadataWidget( QWidget *parent, QgsMapLayer *layer )
3535 mLayer( layer )
3636{
3737 setupUi ( this );
38- mMetadata = layer->metadata ();
38+ if ( mLayer )
39+ {
40+ mMetadata = mLayer ->metadata ();
41+ }
3942 tabWidget->setCurrentIndex ( 0 );
4043
4144 // Disable the encoding
@@ -107,15 +110,36 @@ QgsMetadataWidget::QgsMetadataWidget( QWidget *parent, QgsMapLayer *layer )
107110 connect ( btnRemoveCategory, &QPushButton::clicked, this , &QgsMetadataWidget::removeSelectedCategories );
108111
109112 fillComboBox ();
113+ if ( !mLayer )
114+ {
115+ btnAutoSource->setEnabled ( false );
116+ btnAutoEncoding->setEnabled ( false );
117+ btnAutoCrs->setEnabled ( false );
118+ }
119+ setMetadata ( mMetadata );
120+ }
121+
122+ void QgsMetadataWidget::setMetadata ( const QgsLayerMetadata &layerMetadata )
123+ {
124+ mMetadata = layerMetadata;
110125 setPropertiesFromLayer ();
111126}
112127
113- void QgsMetadataWidget::fillSourceFromLayer ()
128+ QgsLayerMetadata QgsMetadataWidget::metadata ()
114129{
115- lineEditIdentifier->setText ( mLayer ->publicSource () );
130+ saveMetadata ( mMetadata );
131+ return mMetadata ;
116132}
117133
118- void QgsMetadataWidget::addVocabulary ()
134+ void QgsMetadataWidget::fillSourceFromLayer () const
135+ {
136+ if ( mLayer )
137+ {
138+ lineEditIdentifier->setText ( mLayer ->publicSource () );
139+ }
140+ }
141+
142+ void QgsMetadataWidget::addVocabulary () const
119143{
120144 int row = tabKeywords->rowCount ();
121145 tabKeywords->setRowCount ( row + 1 );
@@ -130,7 +154,7 @@ void QgsMetadataWidget::addVocabulary()
130154 tabKeywords->setItem ( row, 1 , pCell );
131155}
132156
133- void QgsMetadataWidget::removeSelectedVocabulary ()
157+ void QgsMetadataWidget::removeSelectedVocabulary () const
134158{
135159 QItemSelectionModel *selectionModel = tabKeywords->selectionModel ();
136160 const QModelIndexList selectedRows = selectionModel->selectedRows ();
@@ -152,7 +176,7 @@ void QgsMetadataWidget::addLicence()
152176 }
153177}
154178
155- void QgsMetadataWidget::removeSelectedLicence ()
179+ void QgsMetadataWidget::removeSelectedLicence () const
156180{
157181 QItemSelectionModel *selectionModel = tabLicenses->selectionModel ();
158182 const QModelIndexList selectedRows = selectionModel->selectedRows ();
@@ -173,7 +197,7 @@ void QgsMetadataWidget::addRight()
173197 }
174198}
175199
176- void QgsMetadataWidget::removeSelectedRight ()
200+ void QgsMetadataWidget::removeSelectedRight () const
177201{
178202 QItemSelectionModel *selection = listRights->selectionModel ();
179203 if ( selection->hasSelection () )
@@ -187,22 +211,22 @@ void QgsMetadataWidget::removeSelectedRight()
187211 }
188212}
189213
190- void QgsMetadataWidget::addConstraint ()
214+ void QgsMetadataWidget::addConstraint () const
191215{
192216 int row = mConstraintsModel ->rowCount ();
193217 mConstraintsModel ->setItem ( row, 0 , new QStandardItem ( QString ( tr ( " undefined %1" ) ).arg ( row + 1 ) ) );
194218 mConstraintsModel ->setItem ( row, 1 , new QStandardItem ( QString ( tr ( " undefined %1" ) ).arg ( row + 1 ) ) );
195219}
196220
197- void QgsMetadataWidget::removeSelectedConstraint ()
221+ void QgsMetadataWidget::removeSelectedConstraint () const
198222{
199223 const QModelIndexList selectedRows = tabConstraints->selectionModel ()->selectedRows ();
200224 mConstraintsModel ->removeRow ( selectedRows[0 ].row () );
201225}
202226
203- void QgsMetadataWidget::crsChanged ()
227+ void QgsMetadataWidget::crsChanged () const
204228{
205- if ( mCrs .isValid () )
229+ if ( ( mCrs .isValid () ) && ( mLayer ) )
206230 {
207231 lblCurrentCrs->setText ( tr ( " CRS: %1 - %2" ).arg ( mCrs .authid (), mCrs .description () ) );
208232 spatialExtentSelector->setEnabled ( true );
@@ -233,7 +257,7 @@ void QgsMetadataWidget::crsChanged()
233257 }
234258}
235259
236- void QgsMetadataWidget::addAddress ()
260+ void QgsMetadataWidget::addAddress () const
237261{
238262 int row = tabAddresses->rowCount ();
239263 tabAddresses->setRowCount ( row + 1 );
@@ -259,7 +283,7 @@ void QgsMetadataWidget::addAddress()
259283 tabAddresses->setItem ( row, 5 , new QTableWidgetItem () );
260284}
261285
262- void QgsMetadataWidget::removeSelectedAddress ()
286+ void QgsMetadataWidget::removeSelectedAddress () const
263287{
264288 QItemSelectionModel *selectionModel = tabAddresses->selectionModel ();
265289 const QModelIndexList selectedRows = selectionModel->selectedRows ();
@@ -281,7 +305,7 @@ void QgsMetadataWidget::fillCrsFromProvider()
281305 crsChanged ();
282306}
283307
284- void QgsMetadataWidget::addLink ()
308+ void QgsMetadataWidget::addLink () const
285309{
286310 int row = mLinksModel ->rowCount ();
287311 mLinksModel ->setItem ( row, 0 , new QStandardItem ( QString ( tr ( " undefined %1" ) ).arg ( row + 1 ) ) );
@@ -293,7 +317,7 @@ void QgsMetadataWidget::addLink()
293317 mLinksModel ->setItem ( row, 6 , new QStandardItem () );
294318}
295319
296- void QgsMetadataWidget::removeSelectedLink ()
320+ void QgsMetadataWidget::removeSelectedLink () const
297321{
298322 const QModelIndexList selectedRows = tabLinks->selectionModel ()->selectedRows ();
299323 mLinksModel ->removeRow ( selectedRows[0 ].row () );
@@ -310,7 +334,7 @@ void QgsMetadataWidget::addHistory()
310334 }
311335}
312336
313- void QgsMetadataWidget::removeSelectedHistory ()
337+ void QgsMetadataWidget::removeSelectedHistory () const
314338{
315339 QItemSelectionModel *selection = listHistory->selectionModel ();
316340 if ( selection->hasSelection () )
@@ -324,7 +348,7 @@ void QgsMetadataWidget::removeSelectedHistory()
324348 }
325349}
326350
327- void QgsMetadataWidget::fillComboBox ()
351+ void QgsMetadataWidget::fillComboBox () const
328352{
329353 // Set default values in type combobox
330354 // It is advised to use the ISO 19115 MD_ScopeCode values. E.g. 'dataset' or 'series'.
@@ -522,7 +546,7 @@ void QgsMetadataWidget::setPropertiesFromLayer()
522546 mHistoryModel ->setStringList ( mMetadata .history () );
523547}
524548
525- void QgsMetadataWidget::saveMetadata ( QgsLayerMetadata &layerMetadata )
549+ void QgsMetadataWidget::saveMetadata ( QgsLayerMetadata &layerMetadata ) const
526550{
527551 layerMetadata.setParentIdentifier ( lineEditParentId->text () );
528552 layerMetadata.setIdentifier ( lineEditIdentifier->text () );
@@ -635,7 +659,7 @@ void QgsMetadataWidget::saveMetadata( QgsLayerMetadata &layerMetadata )
635659 layerMetadata.setHistory ( mHistoryModel ->stringList () );
636660}
637661
638- bool QgsMetadataWidget::checkMetadata ()
662+ bool QgsMetadataWidget::checkMetadata () const
639663{
640664 QgsLayerMetadata metadata = QgsLayerMetadata ();
641665 saveMetadata ( metadata );
@@ -815,9 +839,11 @@ void QgsMetadataWidget::setMapCanvas( QgsMapCanvas *canvas )
815839void QgsMetadataWidget::acceptMetadata ()
816840{
817841 saveMetadata ( mMetadata );
818-
819- // Save layer metadata properties
820- mLayer ->setMetadata ( mMetadata );
842+ if ( mLayer )
843+ {
844+ // Save layer metadata properties
845+ mLayer ->setMetadata ( mMetadata );
846+ }
821847}
822848
823849void QgsMetadataWidget::setMetadata ( const QgsLayerMetadata &metadata )
@@ -826,7 +852,7 @@ void QgsMetadataWidget::setMetadata( const QgsLayerMetadata &metadata )
826852 setPropertiesFromLayer ();
827853}
828854
829- void QgsMetadataWidget::syncFromCategoriesTabToKeywordsTab ()
855+ void QgsMetadataWidget::syncFromCategoriesTabToKeywordsTab () const
830856{
831857 if ( mCategoriesModel ->rowCount () > 0 )
832858 {
@@ -847,7 +873,7 @@ void QgsMetadataWidget::syncFromCategoriesTabToKeywordsTab()
847873 }
848874}
849875
850- void QgsMetadataWidget::updatePanel ()
876+ void QgsMetadataWidget::updatePanel () const
851877{
852878 int index = tabWidget->currentIndex ();
853879 QString currentTabText = tabWidget->widget ( index )->objectName ();
0 commit comments