21#include <QStringListModel> 
   22#include <QStandardItemModel> 
   35  connect( mBtnAdd, &QAbstractButton::clicked, 
this, &QgsLayerTreeEmbeddedConfigWidget::onAddClicked );
 
   36  connect( mBtnRemove, &QAbstractButton::clicked, 
this, &QgsLayerTreeEmbeddedConfigWidget::onRemoveClicked );
 
   38  QStandardItemModel *modelAvailable = 
new QStandardItemModel( 
this );
 
   39  QStandardItemModel *modelUsed = 
new QStandardItemModel( 
this );
 
   43  for ( 
const QString &providerId : constProviders )
 
   48      QStandardItem *item = 
new QStandardItem( provider->
name() );
 
   49      item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
 
   50      item->setData( provider->
id(), Qt::UserRole + 1 );
 
   51      modelAvailable->appendRow( item );
 
   54  mListAvailable->setModel( modelAvailable );
 
   57  const int widgetsCount = layer->
customProperty( QStringLiteral( 
"embeddedWidgets/count" ), 0 ).toInt();
 
   58  for ( 
int i = 0; i < widgetsCount; ++i )
 
   60    const QString providerId = layer->
customProperty( QStringLiteral( 
"embeddedWidgets/%1/id" ).arg( i ) ).toString();
 
   63      QStandardItem *item = 
new QStandardItem( provider->name() );
 
   64      item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
 
   65      item->setData( provider->id(), Qt::UserRole + 1 );
 
   66      modelUsed->appendRow( item );
 
   69  mListUsed->setModel( modelUsed );
 
 
   72void QgsLayerTreeEmbeddedConfigWidget::onAddClicked()
 
   74  if ( !mListAvailable->currentIndex().isValid() )
 
   77  const QString providerId = mListAvailable->model()->data( mListAvailable->currentIndex(), Qt::UserRole + 1 ).toString();
 
   82  if ( QStandardItemModel *model = qobject_cast<QStandardItemModel *>( mListUsed->model() ) )
 
   84    QStandardItem *item = 
new QStandardItem( provider->
name() );
 
   85    item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
 
   86    item->setData( provider->
id(), Qt::UserRole + 1 );
 
   87    model->appendRow( item );
 
   91void QgsLayerTreeEmbeddedConfigWidget::onRemoveClicked()
 
   93  if ( !mListUsed->currentIndex().isValid() )
 
   96  const int row = mListUsed->currentIndex().row();
 
   97  mListUsed->model()->removeRow( row );
 
  106  const int widgetsCount = mLayer->
customProperty( QStringLiteral( 
"embeddedWidgets/count" ), 0 ).toInt();
 
  107  for ( 
int i = 0; i < widgetsCount; ++i )
 
  113  const int newCount = mListUsed->model()->rowCount();
 
  114  mLayer->
setCustomProperty( QStringLiteral( 
"embeddedWidgets/count" ), newCount );
 
  115  for ( 
int i = 0; i < newCount; ++i )
 
  117    const QString providerId = mListUsed->model()->data( mListUsed->model()->index( i, 0 ), Qt::UserRole + 1 ).toString();
 
  118    mLayer->
setCustomProperty( QStringLiteral( 
"embeddedWidgets/%1/id" ).arg( i ), providerId );
 
 
static QgsLayerTreeEmbeddedWidgetRegistry * layerTreeEmbeddedWidgetRegistry()
Returns the global layer tree embedded widget registry, used for registering widgets that may be embe...
 
Base class for all map layer types.
 
Q_INVOKABLE QVariant customProperty(const QString &value, const QVariant &defaultValue=QVariant()) const
Read a custom property from layer.
 
void removeCustomProperty(const QString &key)
Remove a custom property from layer.
 
Q_INVOKABLE void setCustomProperty(const QString &key, const QVariant &value)
Set a custom property for layer.