Skip to content

Commit cd24adb

Browse files
committedFeb 14, 2018
[needs-docs] Rework arrangement of buttons in categories tab in
metadata editor to make their operation more self-explanatory for users. Also add tooltips to the buttons describing their function, and allow the buttons to operate on multiple selected rows at once. Fixes #18090
1 parent 2d24bbf commit cd24adb

File tree

4 files changed

+185
-99
lines changed

4 files changed

+185
-99
lines changed
 

‎python/gui/qgsmetadatawidget.sip.in

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,17 @@ class QgsMetadataWidget : QWidget
2828
Constructor for the wizard.
2929
%End
3030

31-
void saveMetadata( QgsLayerMetadata &layerMetadata ) const;
31+
void saveMetadata( QgsLayerMetadata &layerMetadata );
3232
%Docstring
3333
Save all fields in a QgsLayerMetadata object.
3434
%End
3535

36-
bool checkMetadata() const;
36+
bool checkMetadata();
3737
%Docstring
3838
Check if values in the wizard are correct.
3939
%End
4040

41-
void crsChanged() const;
41+
void crsChanged();
4242
%Docstring
4343
If the CRS is updated.
4444
%End

‎src/gui/qgsmetadatawidget.cpp

Lines changed: 46 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -103,19 +103,19 @@ QgsMetadataWidget::QgsMetadataWidget( QWidget *parent, QgsMapLayer *layer )
103103
connect( btnAddHistory, &QPushButton::clicked, this, &QgsMetadataWidget::addHistory );
104104
connect( btnRemoveHistory, &QPushButton::clicked, this, &QgsMetadataWidget::removeSelectedHistory );
105105
connect( btnNewCategory, &QPushButton::clicked, this, &QgsMetadataWidget::addNewCategory );
106-
connect( btnAddDefaultCategory, &QPushButton::clicked, this, &QgsMetadataWidget::addDefaultCategory );
107-
connect( btnRemoveCategory, &QPushButton::clicked, this, &QgsMetadataWidget::removeSelectedCategory );
106+
connect( btnAddDefaultCategory, &QPushButton::clicked, this, &QgsMetadataWidget::addDefaultCategories );
107+
connect( btnRemoveCategory, &QPushButton::clicked, this, &QgsMetadataWidget::removeSelectedCategories );
108108

109109
fillComboBox();
110110
setPropertiesFromLayer();
111111
}
112112

113-
void QgsMetadataWidget::fillSourceFromLayer() const
113+
void QgsMetadataWidget::fillSourceFromLayer()
114114
{
115115
lineEditIdentifier->setText( mLayer->publicSource() );
116116
}
117117

118-
void QgsMetadataWidget::addVocabulary() const
118+
void QgsMetadataWidget::addVocabulary()
119119
{
120120
int row = tabKeywords->rowCount();
121121
tabKeywords->setRowCount( row + 1 );
@@ -130,7 +130,7 @@ void QgsMetadataWidget::addVocabulary() const
130130
tabKeywords->setItem( row, 1, pCell );
131131
}
132132

133-
void QgsMetadataWidget::removeSelectedVocabulary() const
133+
void QgsMetadataWidget::removeSelectedVocabulary()
134134
{
135135
QItemSelectionModel *selectionModel = tabKeywords->selectionModel();
136136
const QModelIndexList selectedRows = selectionModel->selectedRows();
@@ -152,7 +152,7 @@ void QgsMetadataWidget::addLicence()
152152
}
153153
}
154154

155-
void QgsMetadataWidget::removeSelectedLicence() const
155+
void QgsMetadataWidget::removeSelectedLicence()
156156
{
157157
QItemSelectionModel *selectionModel = tabLicenses->selectionModel();
158158
const QModelIndexList selectedRows = selectionModel->selectedRows();
@@ -173,7 +173,7 @@ void QgsMetadataWidget::addRight()
173173
}
174174
}
175175

176-
void QgsMetadataWidget::removeSelectedRight() const
176+
void QgsMetadataWidget::removeSelectedRight()
177177
{
178178
QItemSelectionModel *selection = listRights->selectionModel();
179179
if ( selection->hasSelection() )
@@ -187,20 +187,20 @@ void QgsMetadataWidget::removeSelectedRight() const
187187
}
188188
}
189189

190-
void QgsMetadataWidget::addConstraint() const
190+
void QgsMetadataWidget::addConstraint()
191191
{
192192
int row = mConstraintsModel->rowCount();
193193
mConstraintsModel->setItem( row, 0, new QStandardItem( QString( tr( "undefined %1" ) ).arg( row + 1 ) ) );
194194
mConstraintsModel->setItem( row, 1, new QStandardItem( QString( tr( "undefined %1" ) ).arg( row + 1 ) ) );
195195
}
196196

197-
void QgsMetadataWidget::removeSelectedConstraint() const
197+
void QgsMetadataWidget::removeSelectedConstraint()
198198
{
199199
const QModelIndexList selectedRows = tabConstraints->selectionModel()->selectedRows();
200200
mConstraintsModel->removeRow( selectedRows[0].row() );
201201
}
202202

203-
void QgsMetadataWidget::crsChanged() const
203+
void QgsMetadataWidget::crsChanged()
204204
{
205205
if ( mCrs.isValid() )
206206
{
@@ -233,7 +233,7 @@ void QgsMetadataWidget::crsChanged() const
233233
}
234234
}
235235

236-
void QgsMetadataWidget::addAddress() const
236+
void QgsMetadataWidget::addAddress()
237237
{
238238
int row = tabAddresses->rowCount();
239239
tabAddresses->setRowCount( row + 1 );
@@ -259,7 +259,7 @@ void QgsMetadataWidget::addAddress() const
259259
tabAddresses->setItem( row, 5, new QTableWidgetItem() );
260260
}
261261

262-
void QgsMetadataWidget::removeSelectedAddress() const
262+
void QgsMetadataWidget::removeSelectedAddress()
263263
{
264264
QItemSelectionModel *selectionModel = tabAddresses->selectionModel();
265265
const QModelIndexList selectedRows = selectionModel->selectedRows();
@@ -281,7 +281,7 @@ void QgsMetadataWidget::fillCrsFromProvider()
281281
crsChanged();
282282
}
283283

284-
void QgsMetadataWidget::addLink() const
284+
void QgsMetadataWidget::addLink()
285285
{
286286
int row = mLinksModel->rowCount();
287287
mLinksModel->setItem( row, 0, new QStandardItem( QString( tr( "undefined %1" ) ).arg( row + 1 ) ) );
@@ -293,7 +293,7 @@ void QgsMetadataWidget::addLink() const
293293
mLinksModel->setItem( row, 6, new QStandardItem() );
294294
}
295295

296-
void QgsMetadataWidget::removeSelectedLink() const
296+
void QgsMetadataWidget::removeSelectedLink()
297297
{
298298
const QModelIndexList selectedRows = tabLinks->selectionModel()->selectedRows();
299299
mLinksModel->removeRow( selectedRows[0].row() );
@@ -310,7 +310,7 @@ void QgsMetadataWidget::addHistory()
310310
}
311311
}
312312

313-
void QgsMetadataWidget::removeSelectedHistory() const
313+
void QgsMetadataWidget::removeSelectedHistory()
314314
{
315315
QItemSelectionModel *selection = listHistory->selectionModel();
316316
if ( selection->hasSelection() )
@@ -324,7 +324,7 @@ void QgsMetadataWidget::removeSelectedHistory() const
324324
}
325325
}
326326

327-
void QgsMetadataWidget::fillComboBox() const
327+
void QgsMetadataWidget::fillComboBox()
328328
{
329329
// Set default values in type combobox
330330
// It is advised to use the ISO 19115 MD_ScopeCode values. E.g. 'dataset' or 'series'.
@@ -522,7 +522,7 @@ void QgsMetadataWidget::setPropertiesFromLayer()
522522
mHistoryModel->setStringList( mMetadata.history() );
523523
}
524524

525-
void QgsMetadataWidget::saveMetadata( QgsLayerMetadata &layerMetadata ) const
525+
void QgsMetadataWidget::saveMetadata( QgsLayerMetadata &layerMetadata )
526526
{
527527
layerMetadata.setParentIdentifier( lineEditParentId->text() );
528528
layerMetadata.setIdentifier( lineEditIdentifier->text() );
@@ -635,7 +635,7 @@ void QgsMetadataWidget::saveMetadata( QgsLayerMetadata &layerMetadata ) const
635635
layerMetadata.setHistory( mHistoryModel->stringList() );
636636
}
637637

638-
bool QgsMetadataWidget::checkMetadata() const
638+
bool QgsMetadataWidget::checkMetadata()
639639
{
640640
QgsLayerMetadata metadata = QgsLayerMetadata();
641641
saveMetadata( metadata );
@@ -826,7 +826,7 @@ void QgsMetadataWidget::setMetadata( const QgsLayerMetadata &metadata )
826826
setPropertiesFromLayer();
827827
}
828828

829-
void QgsMetadataWidget::syncFromCategoriesTabToKeywordsTab() const
829+
void QgsMetadataWidget::syncFromCategoriesTabToKeywordsTab()
830830
{
831831
if ( mCategoriesModel->rowCount() > 0 )
832832
{
@@ -847,7 +847,7 @@ void QgsMetadataWidget::syncFromCategoriesTabToKeywordsTab() const
847847
}
848848
}
849849

850-
void QgsMetadataWidget::updatePanel() const
850+
void QgsMetadataWidget::updatePanel()
851851
{
852852
int index = tabWidget->currentIndex();
853853
QString currentTabText = tabWidget->widget( index )->objectName();
@@ -896,46 +896,45 @@ void QgsMetadataWidget::addNewCategory()
896896
}
897897
}
898898

899-
void QgsMetadataWidget::addDefaultCategory() const
899+
void QgsMetadataWidget::addDefaultCategories()
900900
{
901-
QItemSelectionModel *selection = listDefaultCategories->selectionModel();
902-
if ( selection->hasSelection() )
903-
{
904-
QModelIndex indexElementSelectionne = selection->currentIndex();
901+
const QModelIndexList selectedIndexes = listDefaultCategories->selectionModel()->selectedIndexes();
902+
QStringList defaultCategoriesList = mDefaultCategoriesModel->stringList();
903+
QStringList selectedCategories = mCategoriesModel->stringList();
905904

906-
QVariant item = mDefaultCategoriesModel->data( indexElementSelectionne, Qt::DisplayRole );
907-
QStringList list = mDefaultCategoriesModel->stringList();
908-
list.removeOne( item.toString() );
909-
mDefaultCategoriesModel->setStringList( list );
905+
for ( const QModelIndex &selection : selectedIndexes )
906+
{
907+
QVariant item = mDefaultCategoriesModel->data( selection, Qt::DisplayRole );
908+
defaultCategoriesList.removeOne( item.toString() );
910909

911-
list = mCategoriesModel->stringList();
912-
list.append( item.toString() );
913-
mCategoriesModel->setStringList( list );
914-
mCategoriesModel->sort( 0 );
910+
selectedCategories.append( item.toString() );
915911
}
916-
}
917912

913+
mDefaultCategoriesModel->setStringList( defaultCategoriesList );
914+
mCategoriesModel->setStringList( selectedCategories );
915+
mCategoriesModel->sort( 0 );
916+
}
918917

919-
void QgsMetadataWidget::removeSelectedCategory() const
918+
void QgsMetadataWidget::removeSelectedCategories()
920919
{
921-
QItemSelectionModel *selection = listCategories->selectionModel();
922-
if ( selection->hasSelection() )
923-
{
924-
QModelIndex indexElementSelectionne = listCategories->selectionModel()->currentIndex();
920+
const QModelIndexList selectedIndexes = listCategories->selectionModel()->selectedIndexes();
921+
QStringList categories = mCategoriesModel->stringList();
922+
QStringList defaultList = mDefaultCategoriesModel->stringList();
925923

926-
QVariant item = mCategoriesModel->data( indexElementSelectionne, Qt::DisplayRole );
927-
QStringList list = mCategoriesModel->stringList();
928-
list.removeOne( item.toString() );
929-
mCategoriesModel->setStringList( list );
924+
for ( const QModelIndex &selection : selectedIndexes )
925+
{
926+
QVariant item = mCategoriesModel->data( selection, Qt::DisplayRole );
927+
categories.removeOne( item.toString() );
930928

931929
if ( mDefaultCategories.contains( item.toString() ) )
932930
{
933-
list = mDefaultCategoriesModel->stringList();
934-
list.append( item.toString() );
935-
mDefaultCategoriesModel->setStringList( list );
936-
mDefaultCategoriesModel->sort( 0 );
931+
defaultList.append( item.toString() );
937932
}
938933
}
934+
mCategoriesModel->setStringList( categories );
935+
936+
mDefaultCategoriesModel->setStringList( defaultList );
937+
mDefaultCategoriesModel->sort( 0 );
939938
}
940939

941940
LinkItemDelegate::LinkItemDelegate( QObject *parent )

‎src/gui/qgsmetadatawidget.h

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,17 @@ class GUI_EXPORT QgsMetadataWidget : public QWidget, private Ui::QgsMetadataWidg
4949
/**
5050
* Save all fields in a QgsLayerMetadata object.
5151
*/
52-
void saveMetadata( QgsLayerMetadata &layerMetadata ) const;
52+
void saveMetadata( QgsLayerMetadata &layerMetadata );
5353

5454
/**
5555
* Check if values in the wizard are correct.
5656
*/
57-
bool checkMetadata() const;
57+
bool checkMetadata();
5858

5959
/**
6060
* If the CRS is updated.
6161
*/
62-
void crsChanged() const;
62+
void crsChanged();
6363

6464
/**
6565
* Saves the metadata to the layer.
@@ -103,31 +103,34 @@ class GUI_EXPORT QgsMetadataWidget : public QWidget, private Ui::QgsMetadataWidg
103103
*/
104104
void setMapCanvas( QgsMapCanvas *canvas );
105105

106-
private:
107-
void updatePanel() const;
108-
void fillSourceFromLayer() const;
106+
private slots:
107+
void removeSelectedCategories();
108+
void updatePanel();
109+
void fillSourceFromLayer();
109110
void fillCrsFromLayer();
110111
void fillCrsFromProvider();
111-
void addDefaultCategory() const;
112+
void addDefaultCategories();
112113
void addNewCategory();
113-
void removeSelectedCategory() const;
114-
void addVocabulary() const;
115-
void removeSelectedVocabulary() const;
114+
void addVocabulary();
115+
void removeSelectedVocabulary();
116116
void addLicence();
117-
void removeSelectedLicence() const;
117+
void removeSelectedLicence();
118118
void addRight();
119-
void removeSelectedRight() const;
120-
void addConstraint() const;
121-
void removeSelectedConstraint() const;
122-
void addAddress() const;
123-
void removeSelectedAddress() const;
124-
void addLink() const;
125-
void removeSelectedLink() const;
119+
void removeSelectedRight();
120+
void addConstraint();
121+
void removeSelectedConstraint();
122+
void addAddress();
123+
void removeSelectedAddress();
124+
void addLink();
125+
void removeSelectedLink();
126126
void addHistory();
127-
void removeSelectedHistory() const;
128-
void fillComboBox() const;
127+
void removeSelectedHistory();
128+
129+
private:
130+
131+
void fillComboBox();
129132
void setPropertiesFromLayer();
130-
void syncFromCategoriesTabToKeywordsTab() const;
133+
void syncFromCategoriesTabToKeywordsTab();
131134
QStringList mDefaultCategories;
132135
QgsMapLayer *mLayer = nullptr;
133136
QgsCoordinateReferenceSystem mCrs;

0 commit comments

Comments
 (0)
Please sign in to comment.