Skip to content

Commit bb91d14

Browse files
author
jef
committed
unique value dialog: ask if the existing classes should be deleted when classifying on a new attribute
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@8555 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 0313460 commit bb91d14

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

src/app/qgsuniquevaluedialog.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626

2727
#include "qgslogger.h"
2828

29+
#include <QMessageBox>
30+
2931
QgsUniqueValueDialog::QgsUniqueValueDialog(QgsVectorLayer* vl): QDialog(), mVectorLayer(vl), sydialog(vl, true)
3032
{
3133
setupUi(this);
@@ -65,6 +67,7 @@ QgsUniqueValueDialog::QgsUniqueValueDialog(QgsVectorLayer* vl): QDialog(), mVect
6567
//int classattr = *iter;
6668
//QString field = provider->fields()[ classattr ].name();
6769
QString field = provider->fields()[ renderer->classificationField() ].name();
70+
mOldClassificationAttribute = field;
6871
mClassificationComboBox->setCurrentItem( mClassificationComboBox->findText(field) );
6972

7073
const QList<QgsSymbol*> list = renderer->symbols();
@@ -272,6 +275,19 @@ void QgsUniqueValueDialog::changeClassificationAttribute()
272275
{
273276
QgsDebugMsg("called.");
274277
QString attributeName = mClassificationComboBox->currentText();
278+
279+
if( !mOldClassificationAttribute.isEmpty() &&
280+
attributeName!=mOldClassificationAttribute &&
281+
QMessageBox::question(this,
282+
tr("Confirm Delete"),
283+
tr("The classification field was changed from '%1' to '%2'.\n"
284+
"Should the existing classes be deleted before classification?")
285+
.arg(mOldClassificationAttribute).arg(attributeName),
286+
QMessageBox::Ok | QMessageBox::Cancel) == QMessageBox::Ok )
287+
{
288+
deleteSelectedClasses();
289+
}
290+
mOldClassificationAttribute=attributeName;
275291

276292
QgsVectorDataProvider *provider = dynamic_cast<QgsVectorDataProvider *>(mVectorLayer->getDataProvider());
277293
if (provider)
@@ -376,6 +392,9 @@ void QgsUniqueValueDialog::deleteSelectedClasses()
376392
{
377393
QgsDebugMsg("called.");
378394
QList<QListWidgetItem *> selection = mClassListWidget->selectedItems();
395+
if(selection.size()==0)
396+
selection = mClassListWidget->findItems("", Qt::MatchContains);
397+
379398
for(int i=0; i<selection.size(); i++)
380399
{
381400
QListWidgetItem* currentItem = selection[i];

src/app/qgsuniquevaluedialog.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ class QgsUniqueValueDialog: public QDialog, private Ui::QgsUniqueValueDialogBase
6666
void updateEntryIcon(QgsSymbol * thepSymbol,QListWidgetItem * thepItem);
6767
QColor randomColor();
6868
void setSymbolColor(QgsSymbol *symbol, QColor thecolor);
69+
70+
QString mOldClassificationAttribute;
6971
};
7072

7173
#endif

0 commit comments

Comments
 (0)