QVariant QgsCategorizedSymbolRendererV2Model::data( const QModelIndex &index, int role ) const { if ( !index.isValid() || !mRenderer ) return QVariant(); const QgsRendererCategoryV2 category = mRenderer->categories().value( index.row() ); if ( role == Qt::CheckStateRole && index.column() == 0 ) { return category.renderState() ? Qt::Checked : Qt::Unchecked; } else if ( role == Qt::DisplayRole || role == Qt::ToolTipRole ) { switch ( index.column() ) { case 1: return category.value().toString(); case 2: return category.label(); default: return QVariant(); } } else if ( role == Qt::DecorationRole && index.column() == 0 && category.symbol() ) { return QgsSymbolLayerV2Utils::symbolPreviewIcon( category.symbol(), QSize( 16, 16 ) ); } else if ( role == Qt::TextAlignmentRole ) { return ( index.column() == 0 ) ? Qt::AlignHCenter : Qt::AlignLeft; } else if ( role == Qt::EditRole ) { switch ( index.column() ) { case 1: return category.value(); case 2: return category.label(); default: return QVariant(); } } return QVariant(); }
void QgsCategorizedSymbolRendererV2Widget::addCategory( const QgsRendererCategoryV2 &cat ) { QSize iconSize( 16, 16 ); QIcon icon = QgsSymbolLayerV2Utils::symbolPreviewIcon( cat.symbol(), iconSize ); QStandardItem *symbolItem = new QStandardItem( icon, "" ); symbolItem->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEnabled ); QStandardItem *valueItem = new QStandardItem( cat.value().toString() ); valueItem->setData( cat.value() ); // set attribute value as user role QList<QStandardItem *> list; list << symbolItem << valueItem << new QStandardItem( cat.label() ); qobject_cast<QStandardItemModel *>( viewCategories->model() )->appendRow( list ); }
bool labelLessThan( const QgsRendererCategoryV2 &c1, const QgsRendererCategoryV2 &c2 ) { return QString::localeAwareCompare( c1.label(), c2.label() ) < 0; }