1
1
#include " qgslayertreeembeddedconfigwidget.h"
2
2
3
- #include " qgslayertree .h"
3
+ #include " qgsmaplayer .h"
4
4
#include " qgslayertreeembeddedwidgetregistry.h"
5
5
6
6
#include < QStringListModel>
7
7
#include < QStandardItemModel>
8
8
9
- QgsLayerTreeEmbeddedConfigWidget::QgsLayerTreeEmbeddedConfigWidget ( QgsLayerTreeLayer* nodeLayer, QWidget* parent )
9
+ QgsLayerTreeEmbeddedConfigWidget::QgsLayerTreeEmbeddedConfigWidget ( QWidget* parent )
10
10
: QWidget( parent )
11
- , mNodeLayer( nodeLayer )
11
+ , mLayer( nullptr )
12
12
{
13
13
setupUi ( this );
14
+ }
15
+
16
+ void QgsLayerTreeEmbeddedConfigWidget::setLayer ( QgsMapLayer* layer )
17
+ {
18
+ mLayer = layer;
14
19
15
20
connect ( mBtnAdd , SIGNAL ( clicked ( bool ) ), this , SLOT ( onAddClicked () ) );
16
21
connect ( mBtnRemove , SIGNAL ( clicked ( bool ) ), this , SLOT ( onRemoveClicked () ) );
@@ -23,19 +28,21 @@ QgsLayerTreeEmbeddedConfigWidget::QgsLayerTreeEmbeddedConfigWidget( QgsLayerTree
23
28
{
24
29
QgsLayerTreeEmbeddedWidgetProvider* provider = QgsLayerTreeEmbeddedWidgetRegistry::instance ()->provider ( providerId );
25
30
QStandardItem* item = new QStandardItem ( provider->name () );
31
+ item->setFlags ( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
26
32
item->setData ( provider->id (), Qt::UserRole + 1 );
27
33
modelAvailable->appendRow ( item );
28
34
}
29
35
mListAvailable ->setModel ( modelAvailable );
30
36
31
37
// populate used
32
- int widgetsCount = nodeLayer ->customProperty ( " embeddedWidgets/count" , 0 ).toInt ();
38
+ int widgetsCount = layer ->customProperty ( " embeddedWidgets/count" , 0 ).toInt ();
33
39
for ( int i = 0 ; i < widgetsCount; ++i )
34
40
{
35
- QString providerId = nodeLayer ->customProperty ( QString ( " embeddedWidgets/%1/id" ).arg ( i ) ).toString ();
41
+ QString providerId = layer ->customProperty ( QString ( " embeddedWidgets/%1/id" ).arg ( i ) ).toString ();
36
42
if ( QgsLayerTreeEmbeddedWidgetProvider* provider = QgsLayerTreeEmbeddedWidgetRegistry::instance ()->provider ( providerId ) )
37
43
{
38
44
QStandardItem* item = new QStandardItem ( provider->name () );
45
+ item->setFlags ( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
39
46
item->setData ( provider->id (), Qt::UserRole + 1 );
40
47
modelUsed->appendRow ( item );
41
48
}
@@ -56,11 +63,10 @@ void QgsLayerTreeEmbeddedConfigWidget::onAddClicked()
56
63
if ( QStandardItemModel* model = qobject_cast<QStandardItemModel*>( mListUsed ->model () ) )
57
64
{
58
65
QStandardItem* item = new QStandardItem ( provider->name () );
66
+ item->setFlags ( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
59
67
item->setData ( provider->id (), Qt::UserRole + 1 );
60
68
model->appendRow ( item );
61
69
}
62
-
63
- updateCustomProperties ();
64
70
}
65
71
66
72
void QgsLayerTreeEmbeddedConfigWidget::onRemoveClicked ()
@@ -70,25 +76,26 @@ void QgsLayerTreeEmbeddedConfigWidget::onRemoveClicked()
70
76
71
77
int row = mListUsed ->currentIndex ().row ();
72
78
mListUsed ->model ()->removeRow ( row );
73
-
74
- updateCustomProperties ();
75
79
}
76
80
77
- void QgsLayerTreeEmbeddedConfigWidget::updateCustomProperties ()
81
+ void QgsLayerTreeEmbeddedConfigWidget::applyToLayer ()
78
82
{
83
+ if ( !mLayer )
84
+ return ;
85
+
79
86
// clear old properties
80
- int widgetsCount = mNodeLayer ->customProperty ( " embeddedWidgets/count" , 0 ).toInt ();
87
+ int widgetsCount = mLayer ->customProperty ( " embeddedWidgets/count" , 0 ).toInt ();
81
88
for ( int i = 0 ; i < widgetsCount; ++i )
82
89
{
83
- mNodeLayer ->removeCustomProperty ( QString ( " embeddedWidgets/%1/id" ).arg ( i ) );
90
+ mLayer ->removeCustomProperty ( QString ( " embeddedWidgets/%1/id" ).arg ( i ) );
84
91
}
85
92
86
93
// setup new properties
87
94
int newCount = mListUsed ->model ()->rowCount ();
88
- mNodeLayer ->setCustomProperty ( " embeddedWidgets/count" , newCount );
95
+ mLayer ->setCustomProperty ( " embeddedWidgets/count" , newCount );
89
96
for ( int i = 0 ; i < newCount; ++i )
90
97
{
91
98
QString providerId = mListUsed ->model ()->data ( mListUsed ->model ()->index ( i, 0 ), Qt::UserRole + 1 ).toString ();
92
- mNodeLayer ->setCustomProperty ( QString ( " embeddedWidgets/%1/id" ).arg ( i ), providerId );
99
+ mLayer ->setCustomProperty ( QString ( " embeddedWidgets/%1/id" ).arg ( i ), providerId );
93
100
}
94
101
}
0 commit comments