@@ -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
9292QgsRuleBasedRendererV2Widget::~QgsRuleBasedRendererV2Widget ()
@@ -511,7 +511,7 @@ void QgsRendererRulesTreeWidget::setRenderer( QgsRuleBasedRendererV2* r )
511511void 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+
613619void QgsRendererRulesTreeWidget::populateRulesGroupByScale ()
614620{
615621 QMap< QPair<int , int >, QTreeWidgetItem*> scale_items;
0 commit comments