Skip to content

Commit 83ec810

Browse files
committed
Do not use automatic grouping anymore
1 parent 45caf4f commit 83ec810

File tree

2 files changed

+38
-30
lines changed

2 files changed

+38
-30
lines changed

src/gui/symbology-ng/qgsrulebasedrendererv2widget.cpp

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ QgsRuleBasedRendererV2Widget::QgsRuleBasedRendererV2Widget( QgsVectorLayer* laye
8686

8787
connect( btnRenderingOrder, SIGNAL( clicked() ), this, SLOT( setRenderingOrder() ) );
8888

89-
treeRules->populateRules();
89+
treeRules->setGrouping( QgsRendererRulesTreeWidget::NoGrouping );
9090
}
9191

9292
QgsRuleBasedRendererV2Widget::~QgsRuleBasedRendererV2Widget()
@@ -511,7 +511,7 @@ void QgsRendererRulesTreeWidget::setRenderer( QgsRuleBasedRendererV2* r )
511511
void QgsRendererRulesTreeWidget::setGrouping( Grouping g )
512512
{
513513
mGrouping = g;
514-
setRootIsDecorated( mGrouping != NoGrouping );
514+
setRootIsDecorated( true ); //mGrouping != NoGrouping );
515515
populateRules();
516516
}
517517

@@ -569,47 +569,53 @@ void QgsRendererRulesTreeWidget::populateRules()
569569
setColumnWidth( 1, 200 ); // make the column for filter a bit bigger
570570
}
571571

572-
void QgsRendererRulesTreeWidget::populateRulesNoGrouping()
572+
QTreeWidgetItem* QgsRendererRulesTreeWidget::populateRulesNoGrouping( QgsRuleBasedRendererV2::Rule* rule, int i, QTreeWidgetItem* parentItem )
573573
{
574-
QList<QTreeWidgetItem *> lst;
574+
QTreeWidgetItem* item = new QTreeWidgetItem( parentItem );
575575

576-
for ( int i = 0; i < mR->ruleCount(); ++i )
576+
QString txtLabel = rule->label();
577+
item->setText( 0, txtLabel );
578+
item->setData( 0, Qt::UserRole + 1, i );
579+
if ( rule->symbol() )
577580
{
578-
QgsRuleBasedRendererV2::Rule* rule = mR->ruleAt( i );
579-
580-
QTreeWidgetItem* item = new QTreeWidgetItem;
581-
582-
QString txtLabel = rule->label();
583-
item->setText( 0, txtLabel );
584-
item->setData( 0, Qt::UserRole + 1, i );
585581
item->setIcon( 0, QgsSymbolLayerV2Utils::symbolPreviewIcon( rule->symbol(), QSize( 16, 16 ) ) );
582+
}
586583

587-
QString txtRule = rule->filterExpression();
588-
if ( txtRule.isEmpty() )
589-
txtRule = tr( "(no filter)" );
590-
item->setText( 1, txtRule );
591-
592-
if ( rule->dependsOnScale() )
593-
{
594-
item->setText( 2, formatScale( rule->scaleMinDenom(), mLongestMinDenom ) );
595-
item->setText( 3, formatScale( rule->scaleMaxDenom(), mLongestMaxDenom ) );
596-
item->setTextAlignment( 2, Qt::AlignRight );
597-
item->setTextAlignment( 3, Qt::AlignRight );
598-
}
584+
QString txtRule = rule->filterExpression();
585+
if ( txtRule.isEmpty() )
586+
txtRule = tr( "(no filter)" );
587+
item->setText( 1, txtRule );
599588

600-
//item->setBackground( 1, Qt::lightGray );
601-
//item->setBackground( 3, Qt::lightGray );
589+
if ( rule->dependsOnScale() )
590+
{
591+
item->setText( 2, formatScale( rule->scaleMinDenom(), mLongestMinDenom ) );
592+
item->setText( 3, formatScale( rule->scaleMaxDenom(), mLongestMaxDenom ) );
593+
item->setTextAlignment( 2, Qt::AlignRight );
594+
item->setTextAlignment( 3, Qt::AlignRight );
595+
}
602596

603-
// Priority (Id): add 1 to rule number and convert to string
604-
item->setText( 4, QString( "%1" ).arg( i + 1, 4 ) );
605-
item->setTextAlignment( 4, Qt::AlignRight );
606-
lst << item;
597+
// process children
598+
QgsRuleBasedRendererV2::RuleList& children = rule->children();
599+
for ( int i = 0; i < children.count(); ++i )
600+
{
601+
populateRulesNoGrouping( children[i], i, item );
607602
}
608603

604+
return item;
605+
}
609606

607+
void QgsRendererRulesTreeWidget::populateRulesNoGrouping()
608+
{
609+
QList<QTreeWidgetItem *> lst;
610+
611+
QgsRuleBasedRendererV2::Rule* rule = mR->rootRule();
612+
QTreeWidgetItem* item = populateRulesNoGrouping( rule, -1, NULL );
613+
614+
lst << item;
610615
addTopLevelItems( lst );
611616
}
612617

618+
613619
void QgsRendererRulesTreeWidget::populateRulesGroupByScale()
614620
{
615621
QMap< QPair<int, int>, QTreeWidgetItem*> scale_items;

src/gui/symbology-ng/qgsrulebasedrendererv2widget.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ class GUI_EXPORT QgsRendererRulesTreeWidget : public QTreeWidget
4545
void populateRulesGroupByScale();
4646
void populateRulesGroupByFilter();
4747

48+
QTreeWidgetItem* populateRulesNoGrouping( QgsRuleBasedRendererV2::Rule* rule, int i, QTreeWidgetItem* parentItem );
49+
4850
QString formatScaleRange( int minDenom, int maxDenom );
4951

5052
QString formatScale( int denom, int size = 0 );

0 commit comments

Comments
 (0)