22#include <QStandardItemModel>
24#include <QStringListModel>
26#include "moc_qgslayertreeembeddedconfigwidget.cpp"
28using namespace Qt::StringLiterals;
41 connect( mBtnAdd, &QAbstractButton::clicked,
this, &QgsLayerTreeEmbeddedConfigWidget::onAddClicked );
42 connect( mBtnRemove, &QAbstractButton::clicked,
this, &QgsLayerTreeEmbeddedConfigWidget::onRemoveClicked );
44 QStandardItemModel *modelAvailable =
new QStandardItemModel(
this );
45 QStandardItemModel *modelUsed =
new QStandardItemModel(
this );
49 for (
const QString &providerId : constProviders )
54 QStandardItem *item =
new QStandardItem( provider->
name() );
55 item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
56 item->setData( provider->
id(), Qt::UserRole + 1 );
57 modelAvailable->appendRow( item );
60 mListAvailable->setModel( modelAvailable );
63 const int widgetsCount = layer->
customProperty( u
"embeddedWidgets/count"_s, 0 ).toInt();
64 for (
int i = 0; i < widgetsCount; ++i )
66 const QString providerId = layer->
customProperty( u
"embeddedWidgets/%1/id"_s.arg( i ) ).toString();
69 QStandardItem *item =
new QStandardItem( provider->name() );
70 item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
71 item->setData( provider->id(), Qt::UserRole + 1 );
72 modelUsed->appendRow( item );
75 mListUsed->setModel( modelUsed );
78void QgsLayerTreeEmbeddedConfigWidget::onAddClicked()
80 if ( !mListAvailable->currentIndex().isValid() )
83 const QString providerId = mListAvailable->model()->data( mListAvailable->currentIndex(), Qt::UserRole + 1 ).toString();
88 if ( QStandardItemModel *model = qobject_cast<QStandardItemModel *>( mListUsed->model() ) )
90 QStandardItem *item =
new QStandardItem( provider->
name() );
91 item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
92 item->setData( provider->
id(), Qt::UserRole + 1 );
93 model->appendRow( item );
97void QgsLayerTreeEmbeddedConfigWidget::onRemoveClicked()
99 if ( !mListUsed->currentIndex().isValid() )
102 const int row = mListUsed->currentIndex().row();
103 mListUsed->model()->removeRow( row );
112 const int widgetsCount = mLayer->customProperty( u
"embeddedWidgets/count"_s, 0 ).toInt();
113 for (
int i = 0; i < widgetsCount; ++i )
115 mLayer->removeCustomProperty( u
"embeddedWidgets/%1/id"_s.arg( i ) );
119 const int newCount = mListUsed->model()->rowCount();
120 mLayer->setCustomProperty( u
"embeddedWidgets/count"_s, newCount );
121 for (
int i = 0; i < newCount; ++i )
123 const QString providerId = mListUsed->model()->data( mListUsed->model()->index( i, 0 ), Qt::UserRole + 1 ).toString();
124 mLayer->setCustomProperty( u
"embeddedWidgets/%1/id"_s.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.