@@ -117,6 +117,28 @@ QgsBrowserLayerProperties::QgsBrowserLayerProperties( QWidget *parent )
117
117
mHeaderGridLayout ->addItem ( new QWidgetItem ( mUriLabel ), 1 , 1 );
118
118
}
119
119
120
+ // /@cond PRIVATE
121
+ class ProjectionSettingRestorer
122
+ {
123
+ public:
124
+
125
+ ProjectionSettingRestorer ()
126
+ {
127
+ QgsSettings settings;
128
+ previousSetting = settings.value ( QStringLiteral ( " /Projections/defaultBehavior" ) ).toString ();
129
+ settings.setValue ( QStringLiteral ( " /Projections/defaultBehavior" ), QStringLiteral ( " useProject" ) );
130
+ }
131
+
132
+ ~ProjectionSettingRestorer ()
133
+ {
134
+ QgsSettings settings;
135
+ settings.setValue ( QStringLiteral ( " /Projections/defaultBehavior" ), previousSetting );
136
+ }
137
+
138
+ QString previousSetting;
139
+ };
140
+ // /@endcond PRIVATE
141
+
120
142
void QgsBrowserLayerProperties::setItem ( QgsDataItem *item )
121
143
{
122
144
QgsLayerItem *layerItem = qobject_cast<QgsLayerItem *>( item );
@@ -129,13 +151,11 @@ void QgsBrowserLayerProperties::setItem( QgsDataItem *item )
129
151
QString layerMetadata = tr ( " Error" );
130
152
QgsCoordinateReferenceSystem layerCrs;
131
153
154
+ QString defaultProjectionOption = QgsSettings ().value ( QStringLiteral ( " Projections/defaultBehavior" ), " prompt" ).toString ();
132
155
// temporarily override /Projections/defaultBehavior to avoid dialog prompt
133
- QgsSettings settings;
134
- QString defaultProjectionOption = settings.value ( QStringLiteral ( " Projections/defaultBehavior" ), " prompt" ).toString ();
135
- if ( settings.value ( QStringLiteral ( " Projections/defaultBehavior" ), " prompt" ).toString () == QLatin1String ( " prompt" ) )
136
- {
137
- settings.setValue ( QStringLiteral ( " Projections/defaultBehavior" ), " useProject" );
138
- }
156
+ // TODO - remove when there is a cleaner way to block the unknown projection dialog!
157
+ ProjectionSettingRestorer restorer;
158
+ ( void )restorer; // no warnings
139
159
140
160
// find root item
141
161
// we need to create a temporary layer to get metadata
@@ -193,12 +213,6 @@ void QgsBrowserLayerProperties::setItem( QgsDataItem *item )
193
213
return ;
194
214
}
195
215
196
- // restore /Projections/defaultBehavior
197
- if ( defaultProjectionOption == QLatin1String ( " prompt" ) )
198
- {
199
- settings.setValue ( QStringLiteral ( " Projections/defaultBehavior" ), defaultProjectionOption );
200
- }
201
-
202
216
mNameLabel ->setText ( layerItem->name () );
203
217
mUriLabel ->setText ( layerItem->uri () );
204
218
mProviderLabel ->setText ( layerItem->providerKey () );
@@ -212,7 +226,7 @@ void QgsBrowserLayerProperties::setItem( QgsDataItem *item )
212
226
QgsCoordinateReferenceSystem defaultCrs =
213
227
QgsProject::instance ()->crs ();
214
228
if ( layerCrs == defaultCrs )
215
- mNoticeLabel ->setText ( " NOTICE: Layer srs set from project (" + defaultCrs.authid () + ' )' );
229
+ mNoticeLabel ->setText ( " NOTICE: Layer CRS set from project (" + defaultCrs.authid () + ' )' );
216
230
}
217
231
218
232
if ( mNoticeLabel ->text ().isEmpty () )
0 commit comments