|
@@ -23,32 +23,32 @@ |
|
|
#include <QTableWidgetItem> |
|
|
#include <QItemDelegate> |
|
|
#include <QSpinBox> |
|
|
|
|
|
#include <QDialogButtonBox> |
|
|
|
|
|
|
|
|
//////////////// |
|
|
|
|
|
QgsSymbolLevelsDialog::QgsSymbolLevelsDialog( const QgsLegendSymbolList &list, bool usingSymbolLevels, QWidget *parent ) |
|
|
: QDialog( parent ) |
|
|
QgsSymbolLevelsWidget::QgsSymbolLevelsWidget( QgsFeatureRenderer *renderer, bool usingSymbolLevels, QWidget *parent ) |
|
|
: QgsPanelWidget( parent ) |
|
|
, mRenderer( renderer ) |
|
|
, mForceOrderingEnabled( false ) |
|
|
{ |
|
|
setupUi( this ); |
|
|
|
|
|
QgsSettings settings; |
|
|
restoreGeometry( settings.value( QStringLiteral( "Windows/symbolLevelsDlg/geometry" ) ).toByteArray() ); |
|
|
|
|
|
tableLevels->setItemDelegate( new SpinBoxDelegate( this ) ); |
|
|
|
|
|
chkEnable->setChecked( usingSymbolLevels ); |
|
|
|
|
|
connect( chkEnable, &QAbstractButton::clicked, this, &QgsSymbolLevelsDialog::updateUi ); |
|
|
connect( buttonBox, &QDialogButtonBox::helpRequested, this, &QgsSymbolLevelsDialog::showHelp ); |
|
|
connect( chkEnable, &QAbstractButton::clicked, this, &QgsSymbolLevelsWidget::updateUi ); |
|
|
|
|
|
// only consider entries with symbols |
|
|
Q_FOREACH ( const QgsLegendSymbolItem &item, list ) |
|
|
if ( mRenderer ) |
|
|
{ |
|
|
if ( item.symbol() ) |
|
|
mList << item; |
|
|
// only consider entries with symbols |
|
|
Q_FOREACH ( const QgsLegendSymbolItem &item, mRenderer->legendSymbolItems() ) |
|
|
{ |
|
|
if ( item.symbol() ) |
|
|
mList << item; |
|
|
} |
|
|
} |
|
|
|
|
|
int maxLayers = 0; |
|
@@ -84,16 +84,10 @@ QgsSymbolLevelsDialog::QgsSymbolLevelsDialog( const QgsLegendSymbolList &list, b |
|
|
|
|
|
populateTable(); |
|
|
|
|
|
connect( tableLevels, &QTableWidget::cellChanged, this, &QgsSymbolLevelsDialog::renderingPassChanged ); |
|
|
connect( tableLevels, &QTableWidget::cellChanged, this, &QgsSymbolLevelsWidget::renderingPassChanged ); |
|
|
} |
|
|
|
|
|
QgsSymbolLevelsDialog::~QgsSymbolLevelsDialog() |
|
|
{ |
|
|
QgsSettings settings; |
|
|
settings.setValue( QStringLiteral( "Windows/symbolLevelsDlg/geometry" ), saveGeometry() ); |
|
|
} |
|
|
|
|
|
void QgsSymbolLevelsDialog::populateTable() |
|
|
void QgsSymbolLevelsWidget::populateTable() |
|
|
{ |
|
|
for ( int row = 0; row < mList.count(); row++ ) |
|
|
{ |
|
@@ -123,12 +117,27 @@ void QgsSymbolLevelsDialog::populateTable() |
|
|
|
|
|
} |
|
|
|
|
|
void QgsSymbolLevelsDialog::updateUi() |
|
|
void QgsSymbolLevelsWidget::updateUi() |
|
|
{ |
|
|
tableLevels->setEnabled( chkEnable->isChecked() ); |
|
|
emit widgetChanged(); |
|
|
} |
|
|
|
|
|
void QgsSymbolLevelsDialog::setDefaultLevels() |
|
|
void QgsSymbolLevelsWidget::apply() |
|
|
{ |
|
|
for ( int i = 0; i < mList.count(); i++ ) |
|
|
{ |
|
|
QgsSymbol *sym = mList.at( i ).symbol(); |
|
|
for ( int layer = 0; layer < sym->symbolLayerCount(); layer++ ) |
|
|
{ |
|
|
mRenderer->setLegendSymbolItem( mList.at( i ).ruleKey(), sym->clone() ); |
|
|
} |
|
|
} |
|
|
|
|
|
mRenderer->setUsingSymbolLevels( usingLevels() ); |
|
|
} |
|
|
|
|
|
void QgsSymbolLevelsWidget::setDefaultLevels() |
|
|
{ |
|
|
for ( int i = 0; i < mList.count(); i++ ) |
|
|
{ |
|
@@ -140,22 +149,24 @@ void QgsSymbolLevelsDialog::setDefaultLevels() |
|
|
} |
|
|
} |
|
|
|
|
|
bool QgsSymbolLevelsDialog::usingLevels() const |
|
|
bool QgsSymbolLevelsWidget::usingLevels() const |
|
|
{ |
|
|
return chkEnable->isChecked(); |
|
|
} |
|
|
|
|
|
void QgsSymbolLevelsDialog::renderingPassChanged( int row, int column ) |
|
|
void QgsSymbolLevelsWidget::renderingPassChanged( int row, int column ) |
|
|
{ |
|
|
if ( row < 0 || row >= mList.count() ) |
|
|
return; |
|
|
QgsSymbol *sym = mList.at( row ).symbol(); |
|
|
if ( column < 0 || column > sym->symbolLayerCount() ) |
|
|
return; |
|
|
sym->symbolLayer( column - 1 )->setRenderingPass( tableLevels->item( row, column )->text().toInt() ); |
|
|
|
|
|
emit widgetChanged(); |
|
|
} |
|
|
|
|
|
void QgsSymbolLevelsDialog::setForceOrderingEnabled( bool enabled ) |
|
|
void QgsSymbolLevelsWidget::setForceOrderingEnabled( bool enabled ) |
|
|
{ |
|
|
mForceOrderingEnabled = enabled; |
|
|
if ( enabled ) |
|
@@ -167,11 +178,24 @@ void QgsSymbolLevelsDialog::setForceOrderingEnabled( bool enabled ) |
|
|
chkEnable->show(); |
|
|
} |
|
|
|
|
|
void QgsSymbolLevelsDialog::showHelp() |
|
|
QgsSymbolLevelsDialog::QgsSymbolLevelsDialog( QgsFeatureRenderer *renderer, bool usingSymbolLevels, QWidget *parent ) |
|
|
: QDialog( parent ) |
|
|
{ |
|
|
QgsHelp::openHelp( QStringLiteral( "working_with_vector/vector_properties.html#symbols-levels" ) ); |
|
|
QVBoxLayout *vLayout = new QVBoxLayout(); |
|
|
mWidget = new QgsSymbolLevelsWidget( renderer, usingSymbolLevels ); |
|
|
vLayout->addWidget( mWidget ); |
|
|
QDialogButtonBox *bbox = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal ); |
|
|
connect( bbox, &QDialogButtonBox::accepted, mWidget, &QgsSymbolLevelsWidget::apply ); |
|
|
connect( bbox, &QDialogButtonBox::accepted, this, &QgsSymbolLevelsDialog::accept ); |
|
|
connect( bbox, &QDialogButtonBox::rejected, this, &QgsSymbolLevelsDialog::reject ); |
|
|
vLayout->addWidget( bbox ); |
|
|
setLayout( vLayout ); |
|
|
} |
|
|
|
|
|
void QgsSymbolLevelsDialog::setForceOrderingEnabled( bool enabled ) |
|
|
{ |
|
|
mWidget->setForceOrderingEnabled( enabled ); |
|
|
} |
|
|
|
|
|
/// @cond PRIVATE |
|
|
|
|
|