23
23
#include < QTableWidgetItem>
24
24
#include < QItemDelegate>
25
25
#include < QSpinBox>
26
-
26
+ # include < QDialogButtonBox >
27
27
28
28
29
29
// //////////////
30
30
31
- QgsSymbolLevelsDialog::QgsSymbolLevelsDialog ( const QgsLegendSymbolList &list, bool usingSymbolLevels, QWidget *parent )
32
- : QDialog( parent )
31
+ QgsSymbolLevelsWidget::QgsSymbolLevelsWidget ( QgsFeatureRenderer *renderer, bool usingSymbolLevels, QWidget *parent )
32
+ : QgsPanelWidget( parent )
33
+ , mRenderer( renderer )
33
34
, mForceOrderingEnabled( false )
34
35
{
35
36
setupUi ( this );
36
37
37
- QgsSettings settings;
38
- restoreGeometry ( settings.value ( QStringLiteral ( " Windows/symbolLevelsDlg/geometry" ) ).toByteArray () );
39
-
40
38
tableLevels->setItemDelegate ( new SpinBoxDelegate ( this ) );
41
39
42
40
chkEnable->setChecked ( usingSymbolLevels );
43
41
44
- connect ( chkEnable, &QAbstractButton::clicked, this , &QgsSymbolLevelsDialog::updateUi );
45
- connect ( buttonBox, &QDialogButtonBox::helpRequested, this , &QgsSymbolLevelsDialog::showHelp );
42
+ connect ( chkEnable, &QAbstractButton::clicked, this , &QgsSymbolLevelsWidget::updateUi );
46
43
47
- // only consider entries with symbols
48
- Q_FOREACH ( const QgsLegendSymbolItem &item, list )
44
+ if ( mRenderer )
49
45
{
50
- if ( item.symbol () )
51
- mList << item;
46
+ // only consider entries with symbols
47
+ Q_FOREACH ( const QgsLegendSymbolItem &item, mRenderer ->legendSymbolItems () )
48
+ {
49
+ if ( item.symbol () )
50
+ mList << item;
51
+ }
52
52
}
53
53
54
54
int maxLayers = 0 ;
@@ -84,16 +84,10 @@ QgsSymbolLevelsDialog::QgsSymbolLevelsDialog( const QgsLegendSymbolList &list, b
84
84
85
85
populateTable ();
86
86
87
- connect ( tableLevels, &QTableWidget::cellChanged, this , &QgsSymbolLevelsDialog ::renderingPassChanged );
87
+ connect ( tableLevels, &QTableWidget::cellChanged, this , &QgsSymbolLevelsWidget ::renderingPassChanged );
88
88
}
89
89
90
- QgsSymbolLevelsDialog::~QgsSymbolLevelsDialog ()
91
- {
92
- QgsSettings settings;
93
- settings.setValue ( QStringLiteral ( " Windows/symbolLevelsDlg/geometry" ), saveGeometry () );
94
- }
95
-
96
- void QgsSymbolLevelsDialog::populateTable ()
90
+ void QgsSymbolLevelsWidget::populateTable ()
97
91
{
98
92
for ( int row = 0 ; row < mList .count (); row++ )
99
93
{
@@ -123,12 +117,27 @@ void QgsSymbolLevelsDialog::populateTable()
123
117
124
118
}
125
119
126
- void QgsSymbolLevelsDialog ::updateUi ()
120
+ void QgsSymbolLevelsWidget ::updateUi ()
127
121
{
128
122
tableLevels->setEnabled ( chkEnable->isChecked () );
123
+ emit widgetChanged ();
129
124
}
130
125
131
- void QgsSymbolLevelsDialog::setDefaultLevels ()
126
+ void QgsSymbolLevelsWidget::apply ()
127
+ {
128
+ for ( int i = 0 ; i < mList .count (); i++ )
129
+ {
130
+ QgsSymbol *sym = mList .at ( i ).symbol ();
131
+ for ( int layer = 0 ; layer < sym->symbolLayerCount (); layer++ )
132
+ {
133
+ mRenderer ->setLegendSymbolItem ( mList .at ( i ).ruleKey (), sym->clone () );
134
+ }
135
+ }
136
+
137
+ mRenderer ->setUsingSymbolLevels ( usingLevels () );
138
+ }
139
+
140
+ void QgsSymbolLevelsWidget::setDefaultLevels ()
132
141
{
133
142
for ( int i = 0 ; i < mList .count (); i++ )
134
143
{
@@ -140,22 +149,24 @@ void QgsSymbolLevelsDialog::setDefaultLevels()
140
149
}
141
150
}
142
151
143
- bool QgsSymbolLevelsDialog ::usingLevels () const
152
+ bool QgsSymbolLevelsWidget ::usingLevels () const
144
153
{
145
154
return chkEnable->isChecked ();
146
155
}
147
156
148
- void QgsSymbolLevelsDialog ::renderingPassChanged ( int row, int column )
157
+ void QgsSymbolLevelsWidget ::renderingPassChanged ( int row, int column )
149
158
{
150
159
if ( row < 0 || row >= mList .count () )
151
160
return ;
152
161
QgsSymbol *sym = mList .at ( row ).symbol ();
153
162
if ( column < 0 || column > sym->symbolLayerCount () )
154
163
return ;
155
164
sym->symbolLayer ( column - 1 )->setRenderingPass ( tableLevels->item ( row, column )->text ().toInt () );
165
+
166
+ emit widgetChanged ();
156
167
}
157
168
158
- void QgsSymbolLevelsDialog ::setForceOrderingEnabled ( bool enabled )
169
+ void QgsSymbolLevelsWidget ::setForceOrderingEnabled ( bool enabled )
159
170
{
160
171
mForceOrderingEnabled = enabled;
161
172
if ( enabled )
@@ -167,11 +178,24 @@ void QgsSymbolLevelsDialog::setForceOrderingEnabled( bool enabled )
167
178
chkEnable->show ();
168
179
}
169
180
170
- void QgsSymbolLevelsDialog::showHelp ()
181
+ QgsSymbolLevelsDialog::QgsSymbolLevelsDialog ( QgsFeatureRenderer *renderer, bool usingSymbolLevels, QWidget *parent )
182
+ : QDialog( parent )
171
183
{
172
- QgsHelp::openHelp ( QStringLiteral ( " working_with_vector/vector_properties.html#symbols-levels" ) );
184
+ QVBoxLayout *vLayout = new QVBoxLayout ();
185
+ mWidget = new QgsSymbolLevelsWidget ( renderer, usingSymbolLevels );
186
+ vLayout->addWidget ( mWidget );
187
+ QDialogButtonBox *bbox = new QDialogButtonBox ( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal );
188
+ connect ( bbox, &QDialogButtonBox::accepted, mWidget , &QgsSymbolLevelsWidget::apply );
189
+ connect ( bbox, &QDialogButtonBox::accepted, this , &QgsSymbolLevelsDialog::accept );
190
+ connect ( bbox, &QDialogButtonBox::rejected, this , &QgsSymbolLevelsDialog::reject );
191
+ vLayout->addWidget ( bbox );
192
+ setLayout ( vLayout );
173
193
}
174
194
195
+ void QgsSymbolLevelsDialog::setForceOrderingEnabled ( bool enabled )
196
+ {
197
+ mWidget ->setForceOrderingEnabled ( enabled );
198
+ }
175
199
176
200
// / @cond PRIVATE
177
201
0 commit comments