22 #include <QStandardItemModel>
23 #include <QStandardItem>
34 QStandardItemModel *model =
new QStandardItemModel( groupTree );
35 groupTree->setModel( model );
37 QStandardItem *favSymbols =
new QStandardItem( tr(
"Favorites" ) );
38 favSymbols->setData(
"favorites", Qt::UserRole + 2 );
39 favSymbols->setEditable(
false );
41 model->appendRow( favSymbols );
43 QStandardItem *allSymbols =
new QStandardItem( tr(
"All" ) );
44 allSymbols->setData(
"all", Qt::UserRole + 2 );
45 allSymbols->setEditable(
false );
47 model->appendRow( allSymbols );
49 QStandardItem *tags =
new QStandardItem( QString() );
50 tags->setData(
"tagsheader", Qt::UserRole + 2 );
51 tags->setEditable(
false );
52 tags->setFlags( tags->flags() & ~Qt::ItemIsSelectable );
54 tags->setText( tr(
"Tags" ) );
56 model->appendRow( tags );
58 QStandardItem *tag =
new QStandardItem( tr(
"Smart Groups" ) );
59 tag->setData(
"smartgroupsheader", Qt::UserRole + 2 );
60 tag->setEditable(
false );
61 tag->setFlags( tag->flags() & ~Qt::ItemIsSelectable );
64 QgsSymbolGroupMap::const_iterator i = sgMap.constBegin();
65 while ( i != sgMap.constEnd() )
67 QStandardItem *item =
new QStandardItem( i.value() );
68 item->setEditable(
false );
69 item->setData( i.key() );
70 item->setData(
"smartgroup", Qt::UserRole + 2 );
71 tag->appendRow( item );
74 model->appendRow( tag );
77 int rows = model->rowCount( model->indexFromItem( model->invisibleRootItem() ) );
78 for (
int i = 0; i < rows; i++ )
80 groupTree->setExpanded( model->indexFromItem( model->item( i ) ),
true );
82 connect( groupTree->selectionModel(), &QItemSelectionModel::selectionChanged,
this, &QgsStyleGroupSelectionDialog::groupTreeSelectionChanged );
87 QFont font = item->font();
89 item->setFont( font );
92 void QgsStyleGroupSelectionDialog::groupTreeSelectionChanged(
const QItemSelection &selected,
const QItemSelection &deselected )
94 const QModelIndexList selectedItems = selected.indexes();
95 const QModelIndexList deselectedItems = deselected.indexes();
97 for (
const QModelIndex &index : deselectedItems )
99 if ( index.data( Qt::UserRole + 2 ).toString() == QLatin1String(
"tagssheader" ) )
103 else if ( index.data( Qt::UserRole + 2 ).toString() == QLatin1String(
"favorites" ) )
107 else if ( index.data( Qt::UserRole + 2 ).toString() == QLatin1String(
"all" ) )
111 else if ( index.data( Qt::UserRole + 2 ).toString() == QLatin1String(
"smartgroupsheader" ) )
115 else if ( index.data( Qt::UserRole + 2 ).toString() == QLatin1String(
"smartgroup" ) )
119 else if ( index.data( Qt::UserRole + 2 ).toString() == QLatin1String(
"tag" ) )
125 const auto constSelectedItems = selectedItems;
126 for (
const QModelIndex &index : constSelectedItems )
128 if ( index.data( Qt::UserRole + 2 ).toString() == QLatin1String(
"tagssheader" ) )
132 else if ( index.data( Qt::UserRole + 2 ).toString() == QLatin1String(
"favorites" ) )
136 else if ( index.data( Qt::UserRole + 2 ).toString() == QLatin1String(
"all" ) )
140 else if ( index.data( Qt::UserRole + 2 ).toString() == QLatin1String(
"smartgroupsheader" ) )
144 else if ( index.data( Qt::UserRole + 2 ).toString() == QLatin1String(
"smartgroup" ) )
148 else if ( index.data( Qt::UserRole + 2 ).toString() == QLatin1String(
"tag" ) )
156 void QgsStyleGroupSelectionDialog::buildTagTree( QStandardItem *&parent )
158 QStringList tags = mStyle->
tags();
160 const auto constTags = tags;
161 for (
const QString &tag : constTags )
163 QStandardItem *item =
new QStandardItem( tag );
164 item->setData( mStyle->
tagId( tag ) );
165 item->setData(
"tag", Qt::UserRole + 2 );
166 item->setEditable(
false );
167 parent->appendRow( item );