Skip to content

Commit 41d98c8

Browse files
committedAug 2, 2021
Add a formal settings category for GPS settings
1 parent 9dddd32 commit 41d98c8

File tree

4 files changed

+72
-67
lines changed

4 files changed

+72
-67
lines changed
 

‎python/core/auto_generated/settings/qgssettings.sip.in

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ static bool setGlobalSettingsPath( QString path );
6161
App,
6262
Providers,
6363
Expressions,
64-
Misc
64+
Misc,
65+
Gps,
6566
};
6667

6768
explicit QgsSettings( const QString &organization,

‎src/app/gps/qgsgpsinformationwidget.cpp

Lines changed: 56 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ QgsGpsInformationWidget::QgsGpsInformationWidget( QgsMapCanvas *mapCanvas, QWidg
236236

237237
QDomDocument doc;
238238
QDomElement elem;
239-
QString symbolXml = mySettings.value( QStringLiteral( "gps/bearingLineSymbol" ) ).toString();
239+
QString symbolXml = mySettings.value( QStringLiteral( "bearingLineSymbol" ), QVariant(), QgsSettings::Gps ).toString();
240240
if ( !symbolXml.isEmpty() )
241241
{
242242
doc.setContent( symbolXml );
@@ -254,21 +254,21 @@ QgsGpsInformationWidget::QgsGpsInformationWidget( QgsMapCanvas *mapCanvas, QWidg
254254

255255
// Restore state
256256

257-
mGroupShowMarker->setChecked( mySettings.value( QStringLiteral( "gps/showMarker" ), "true" ).toBool() );
258-
mTravelBearingCheckBox->setChecked( mySettings.value( QStringLiteral( "gps/calculateBearingFromTravel" ), "false" ).toBool() );
259-
mSliderMarkerSize->setValue( mySettings.value( QStringLiteral( "gps/markerSize" ), "12" ).toInt() );
260-
mSpinTrackWidth->setValue( mySettings.value( QStringLiteral( "gps/trackWidth" ), "2" ).toInt() );
257+
mGroupShowMarker->setChecked( mySettings.value( QStringLiteral( "showMarker" ), "true", QgsSettings::Gps ).toBool() );
258+
mTravelBearingCheckBox->setChecked( mySettings.value( QStringLiteral( "calculateBearingFromTravel" ), "false", QgsSettings::Gps ).toBool() );
259+
mSliderMarkerSize->setValue( mySettings.value( QStringLiteral( "markerSize" ), "12", QgsSettings::Gps ).toInt() );
260+
mSpinTrackWidth->setValue( mySettings.value( QStringLiteral( "trackWidth" ), "2", QgsSettings::Gps ).toInt() );
261261
mSpinTrackWidth->setClearValue( 2 );
262-
mBtnTrackColor->setColor( mySettings.value( QStringLiteral( "gps/trackColor" ), QColor( Qt::red ) ).value<QColor>() );
263-
QString myPortMode = mySettings.value( QStringLiteral( "gps/portMode" ), "scanPorts" ).toString();
262+
mBtnTrackColor->setColor( mySettings.value( QStringLiteral( "trackColor" ), QColor( Qt::red ), QgsSettings::Gps ).value<QColor>() );
263+
QString myPortMode = mySettings.value( QStringLiteral( "portMode" ), "scanPorts", QgsSettings::Gps ).toString();
264264

265-
mSpinMapExtentMultiplier->setValue( mySettings.value( QStringLiteral( "gps/mapExtentMultiplier" ), "50" ).toInt() );
265+
mSpinMapExtentMultiplier->setValue( mySettings.value( QStringLiteral( "mapExtentMultiplier" ), "50", QgsSettings::Gps ).toInt() );
266266
mSpinMapExtentMultiplier->setClearValue( 50 );
267-
mDateTimeFormat = mySettings.value( QStringLiteral( "gps/dateTimeFormat" ), "" ).toString(); // zero-length string signifies default format
267+
mDateTimeFormat = mySettings.value( QStringLiteral( "dateTimeFormat" ), "", QgsSettings::Gps ).toString(); // zero-length string signifies default format
268268

269-
mGpsdHost->setText( mySettings.value( QStringLiteral( "gps/gpsdHost" ), "localhost" ).toString() );
270-
mGpsdPort->setText( mySettings.value( QStringLiteral( "gps/gpsdPort" ), 2947 ).toString() );
271-
mGpsdDevice->setText( mySettings.value( QStringLiteral( "gps/gpsdDevice" ) ).toString() );
269+
mGpsdHost->setText( mySettings.value( QStringLiteral( "gpsdHost" ), "localhost", QgsSettings::Gps ).toString() );
270+
mGpsdPort->setText( mySettings.value( QStringLiteral( "gpsdPort" ), 2947, QgsSettings::Gps ).toString() );
271+
mGpsdDevice->setText( mySettings.value( QStringLiteral( "gpsdDevice" ), QVariant(), QgsSettings::Gps ).toString() );
272272

273273
//port mode
274274
if ( myPortMode == QLatin1String( "scanPorts" ) )
@@ -294,14 +294,14 @@ QgsGpsInformationWidget::QgsGpsInformationWidget( QgsMapCanvas *mapCanvas, QWidg
294294
mRadInternal->hide();
295295

296296
//auto digitizing behavior
297-
mCbxAutoAddVertices->setChecked( mySettings.value( QStringLiteral( "gps/autoAddVertices" ), "false" ).toBool() );
297+
mCbxAutoAddVertices->setChecked( mySettings.value( QStringLiteral( "autoAddVertices" ), "false", QgsSettings::Gps ).toBool() );
298298

299299
mBtnAddVertex->setEnabled( !mCbxAutoAddVertices->isChecked() );
300300

301-
mCbxAutoCommit->setChecked( mySettings.value( QStringLiteral( "gps/autoCommit" ), "false" ).toBool() );
301+
mCbxAutoCommit->setChecked( mySettings.value( QStringLiteral( "autoCommit" ), "false", QgsSettings::Gps ).toBool() );
302302

303303
//pan mode
304-
QString myPanMode = mySettings.value( QStringLiteral( "gps/panMode" ), "recenterWhenNeeded" ).toString();
304+
QString myPanMode = mySettings.value( QStringLiteral( "panMode" ), "recenterWhenNeeded", QgsSettings::Gps ).toString();
305305
if ( myPanMode == QLatin1String( "none" ) )
306306
{
307307
radNeverRecenter->setChecked( true );
@@ -317,9 +317,9 @@ QgsGpsInformationWidget::QgsGpsInformationWidget( QgsMapCanvas *mapCanvas, QWidg
317317

318318
connect( mRotateMapCheckBox, &QCheckBox::toggled, mSpinMapRotateInterval, &QSpinBox::setEnabled );
319319

320-
mRotateMapCheckBox->setChecked( mySettings.value( QStringLiteral( "gps/rotateMap" ), false ).toBool() );
321-
mSpinMapRotateInterval->setValue( mySettings.value( QStringLiteral( "gps/rotateMapInterval" ), 0 ).toInt() );
322-
mShowBearingLineCheck->setChecked( mySettings.value( QStringLiteral( "gps/showBearingLine" ), false ).toBool() );
320+
mRotateMapCheckBox->setChecked( mySettings.value( QStringLiteral( "rotateMap" ), false, QgsSettings::Gps ).toBool() );
321+
mSpinMapRotateInterval->setValue( mySettings.value( QStringLiteral( "rotateMapInterval" ), 0, QgsSettings::Gps ).toInt() );
322+
mShowBearingLineCheck->setChecked( mySettings.value( QStringLiteral( "showBearingLine" ), false, QgsSettings::Gps ).toBool() );
323323
connect( mShowBearingLineCheck, &QgsCollapsibleGroupBox::toggled, this, [ = ]( bool checked )
324324
{
325325
if ( !checked )
@@ -332,7 +332,7 @@ QgsGpsInformationWidget::QgsGpsInformationWidget( QgsMapCanvas *mapCanvas, QWidg
332332
}
333333
} );
334334

335-
mBtnDebug->setVisible( mySettings.value( QStringLiteral( "gps/showDebug" ), "false" ).toBool() ); // use a registry setting to control - power users/devs could set it
335+
mBtnDebug->setVisible( mySettings.value( QStringLiteral( "showDebug" ), "false", QgsSettings::Gps ).toBool() ); // use a registry setting to control - power users/devs could set it
336336

337337
// status = unknown
338338
setStatusIndicator( NoData );
@@ -365,8 +365,8 @@ QgsGpsInformationWidget::QgsGpsInformationWidget( QgsMapCanvas *mapCanvas, QWidg
365365

366366
mCboAcquisitionInterval->setValidator( mAcquisitionIntValidator );
367367
mCboDistanceThreshold->setValidator( mDistanceThresholdValidator );
368-
mCboAcquisitionInterval->setCurrentText( mySettings.value( QStringLiteral( "gps/acquisitionInterval" ), 0 ).toString() );
369-
mCboDistanceThreshold->setCurrentText( mySettings.value( QStringLiteral( "gps/distanceThreshold" ), 0 ).toString() );
368+
mCboAcquisitionInterval->setCurrentText( mySettings.value( QStringLiteral( "acquisitionInterval" ), 0, QgsSettings::Gps ).toString() );
369+
mCboDistanceThreshold->setCurrentText( mySettings.value( QStringLiteral( "distanceThreshold" ), 0, QgsSettings::Gps ).toString() );
370370

371371
// Timestamp
372372
mCboTimestampField->setAllowEmptyFieldName( true );
@@ -378,7 +378,7 @@ QgsGpsInformationWidget::QgsGpsInformationWidget( QgsMapCanvas *mapCanvas, QWidg
378378
mCboTimestampFormat->addItem( tr( "Local Time" ), Qt::TimeSpec::LocalTime );
379379
mCboTimestampFormat->addItem( tr( "UTC" ), Qt::TimeSpec::UTC );
380380
mCboTimestampFormat->addItem( tr( "Time Zone" ), Qt::TimeSpec::TimeZone );
381-
mCboTimestampFormat->setCurrentIndex( mySettings.value( QStringLiteral( "gps/timeStampFormat" ), Qt::LocalTime ).toInt() );
381+
mCboTimestampFormat->setCurrentIndex( mySettings.value( QStringLiteral( "timeStampFormat" ), Qt::LocalTime, QgsSettings::Gps ).toInt() );
382382
connect( mCboTimestampFormat, qOverload< int >( &QComboBox::currentIndexChanged ),
383383
this, &QgsGpsInformationWidget::timestampFormatChanged );
384384
connect( mCboTimestampField, qOverload< int >( &QComboBox::currentIndexChanged ),
@@ -409,7 +409,7 @@ QgsGpsInformationWidget::QgsGpsInformationWidget( QgsMapCanvas *mapCanvas, QWidg
409409
mCboTimeZones->addItem( tzId );
410410
}
411411

412-
QString lastTz { mySettings.value( QStringLiteral( "gps/timestampTimeZone" ) ).toString() };
412+
QString lastTz { mySettings.value( QStringLiteral( "timestampTimeZone" ), QVariant(), QgsSettings::Gps ).toString() };
413413
int tzIdx { mCboTimeZones->findText( lastTz ) };
414414
if ( tzIdx == -1 )
415415
{
@@ -418,9 +418,9 @@ QgsGpsInformationWidget::QgsGpsInformationWidget( QgsMapCanvas *mapCanvas, QWidg
418418
}
419419
mCboTimeZones->setCurrentIndex( tzIdx );
420420

421-
mCbxLeapSeconds->setChecked( mySettings.value( QStringLiteral( "gps/applyLeapSeconds" ), true ).toBool() );
421+
mCbxLeapSeconds->setChecked( mySettings.value( QStringLiteral( "applyLeapSeconds" ), true, QgsSettings::Gps ).toBool() );
422422
// Leap seconds as of 2019-06-20, if the default changes, it can be updated in qgis_global_settings.ini
423-
mLeapSeconds->setValue( mySettings.value( QStringLiteral( "gps/leapSecondsCorrection" ), 18 ).toInt() );
423+
mLeapSeconds->setValue( mySettings.value( QStringLiteral( "leapSecondsCorrection" ), 18, QgsSettings::Gps ).toInt() );
424424
mLeapSeconds->setClearValue( 18 );
425425

426426
connect( mAcquisitionTimer.get(), &QTimer::timeout,
@@ -449,64 +449,64 @@ QgsGpsInformationWidget::~QgsGpsInformationWidget()
449449
#endif
450450

451451
QgsSettings mySettings;
452-
mySettings.setValue( QStringLiteral( "gps/lastPort" ), mCboDevices->currentData().toString() );
453-
mySettings.setValue( QStringLiteral( "gps/trackWidth" ), mSpinTrackWidth->value() );
454-
mySettings.setValue( QStringLiteral( "gps/trackColor" ), mBtnTrackColor->color() );
455-
mySettings.setValue( QStringLiteral( "gps/markerSize" ), mSliderMarkerSize->value() );
456-
mySettings.setValue( QStringLiteral( "gps/showMarker" ), mGroupShowMarker->isChecked() );
457-
mySettings.setValue( QStringLiteral( "gps/calculateBearingFromTravel" ), mTravelBearingCheckBox->isChecked() );
458-
mySettings.setValue( QStringLiteral( "gps/autoAddVertices" ), mCbxAutoAddVertices->isChecked() );
459-
mySettings.setValue( QStringLiteral( "gps/autoCommit" ), mCbxAutoCommit->isChecked() );
460-
mySettings.setValue( QStringLiteral( "gps/acquisitionInterval" ), mCboAcquisitionInterval->currentText() );
461-
mySettings.setValue( QStringLiteral( "gps/distanceThreshold" ), mCboDistanceThreshold->currentText() );
462-
mySettings.setValue( QStringLiteral( "gps/timestampTimeZone" ), mCboTimeZones->currentText() );
463-
mySettings.setValue( QStringLiteral( "gps/applyLeapSeconds" ), mCbxLeapSeconds->isChecked() );
464-
mySettings.setValue( QStringLiteral( "gps/leapSecondsCorrection" ), mLeapSeconds->value() );
465-
mySettings.setValue( QStringLiteral( "gps/mapExtentMultiplier" ), mSpinMapExtentMultiplier->value() );
452+
mySettings.setValue( QStringLiteral( "lastPort" ), mCboDevices->currentData().toString(), QgsSettings::Gps );
453+
mySettings.setValue( QStringLiteral( "trackWidth" ), mSpinTrackWidth->value(), QgsSettings::Gps );
454+
mySettings.setValue( QStringLiteral( "trackColor" ), mBtnTrackColor->color(), QgsSettings::Gps );
455+
mySettings.setValue( QStringLiteral( "markerSize" ), mSliderMarkerSize->value(), QgsSettings::Gps );
456+
mySettings.setValue( QStringLiteral( "showMarker" ), mGroupShowMarker->isChecked(), QgsSettings::Gps );
457+
mySettings.setValue( QStringLiteral( "calculateBearingFromTravel" ), mTravelBearingCheckBox->isChecked(), QgsSettings::Gps );
458+
mySettings.setValue( QStringLiteral( "autoAddVertices" ), mCbxAutoAddVertices->isChecked(), QgsSettings::Gps );
459+
mySettings.setValue( QStringLiteral( "autoCommit" ), mCbxAutoCommit->isChecked(), QgsSettings::Gps );
460+
mySettings.setValue( QStringLiteral( "acquisitionInterval" ), mCboAcquisitionInterval->currentText(), QgsSettings::Gps );
461+
mySettings.setValue( QStringLiteral( "distanceThreshold" ), mCboDistanceThreshold->currentText(), QgsSettings::Gps );
462+
mySettings.setValue( QStringLiteral( "timestampTimeZone" ), mCboTimeZones->currentText(), QgsSettings::Gps );
463+
mySettings.setValue( QStringLiteral( "applyLeapSeconds" ), mCbxLeapSeconds->isChecked(), QgsSettings::Gps );
464+
mySettings.setValue( QStringLiteral( "leapSecondsCorrection" ), mLeapSeconds->value(), QgsSettings::Gps );
465+
mySettings.setValue( QStringLiteral( "mapExtentMultiplier" ), mSpinMapExtentMultiplier->value(), QgsSettings::Gps );
466466

467467
// scan, explicit port or gpsd
468468
if ( mRadAutodetect->isChecked() )
469469
{
470-
mySettings.setValue( QStringLiteral( "gps/portMode" ), "scanPorts" );
470+
mySettings.setValue( QStringLiteral( "portMode" ), "scanPorts", QgsSettings::Gps );
471471
}
472472
else if ( mRadInternal->isChecked() )
473473
{
474-
mySettings.setValue( QStringLiteral( "gps/portMode" ), "internalGPS" );
474+
mySettings.setValue( QStringLiteral( "portMode" ), "internalGPS", QgsSettings::Gps );
475475
}
476476
else if ( mRadUserPath->isChecked() )
477477
{
478-
mySettings.setValue( QStringLiteral( "gps/portMode" ), "explicitPort" );
478+
mySettings.setValue( QStringLiteral( "portMode" ), "explicitPort", QgsSettings::Gps );
479479
}
480480
else
481481
{
482-
mySettings.setValue( QStringLiteral( "gps/portMode" ), "gpsd" );
482+
mySettings.setValue( QStringLiteral( "portMode" ), "gpsd", QgsSettings::Gps );
483483
}
484484

485-
mySettings.setValue( QStringLiteral( "gps/gpsdHost" ), mGpsdHost->text() );
486-
mySettings.setValue( QStringLiteral( "gps/gpsdPort" ), mGpsdPort->text().toInt() );
487-
mySettings.setValue( QStringLiteral( "gps/gpsdDevice" ), mGpsdDevice->text() );
485+
mySettings.setValue( QStringLiteral( "gpsdHost" ), mGpsdHost->text(), QgsSettings::Gps );
486+
mySettings.setValue( QStringLiteral( "gpsdPort" ), mGpsdPort->text().toInt(), QgsSettings::Gps );
487+
mySettings.setValue( QStringLiteral( "gpsdDevice" ), mGpsdDevice->text(), QgsSettings::Gps );
488488

489489
// pan mode
490490
if ( radRecenterMap->isChecked() )
491491
{
492-
mySettings.setValue( QStringLiteral( "gps/panMode" ), "recenterAlways" );
492+
mySettings.setValue( QStringLiteral( "panMode" ), "recenterAlways", QgsSettings::Gps );
493493
}
494494
else if ( radRecenterWhenNeeded->isChecked() )
495495
{
496-
mySettings.setValue( QStringLiteral( "gps/panMode" ), "recenterWhenNeeded" );
496+
mySettings.setValue( QStringLiteral( "panMode" ), "recenterWhenNeeded", QgsSettings::Gps );
497497
}
498498
else
499499
{
500-
mySettings.setValue( QStringLiteral( "gps/panMode" ), "none" );
500+
mySettings.setValue( QStringLiteral( "panMode" ), "none", QgsSettings::Gps );
501501
}
502-
mySettings.setValue( QStringLiteral( "gps/rotateMap" ), mRotateMapCheckBox->isChecked() );
503-
mySettings.setValue( QStringLiteral( "gps/rotateMapInterval" ), mSpinMapRotateInterval->value() );
504-
mySettings.setValue( QStringLiteral( "gps/showBearingLine" ), mShowBearingLineCheck->isChecked() );
502+
mySettings.setValue( QStringLiteral( "rotateMap" ), mRotateMapCheckBox->isChecked(), QgsSettings::Gps );
503+
mySettings.setValue( QStringLiteral( "rotateMapInterval" ), mSpinMapRotateInterval->value(), QgsSettings::Gps );
504+
mySettings.setValue( QStringLiteral( "showBearingLine" ), mShowBearingLineCheck->isChecked(), QgsSettings::Gps );
505505

506506
QDomDocument doc;
507507
QDomElement elem = QgsSymbolLayerUtils::saveSymbol( QStringLiteral( "Symbol" ), mBearingLineStyleButton->symbol(), doc, QgsReadWriteContext() );
508508
doc.appendChild( elem );
509-
mySettings.setValue( QStringLiteral( "gps/bearingLineSymbol" ), doc.toString() );
509+
mySettings.setValue( QStringLiteral( "bearingLineSymbol" ), doc.toString(), QgsSettings::Gps );
510510

511511
if ( mMapCanvas )
512512
mMapCanvas->removeInteractionBlocker( this );
@@ -1390,7 +1390,7 @@ void QgsGpsInformationWidget::populateDevices()
13901390

13911391
// remember the last ports used
13921392
QgsSettings settings;
1393-
QString lastPort = settings.value( QStringLiteral( "gps/lastPort" ), "" ).toString();
1393+
QString lastPort = settings.value( QStringLiteral( "lastPort" ), "", QgsSettings::Gps ).toString();
13941394

13951395
int idx = mCboDevices->findData( lastPort );
13961396
mCboDevices->setCurrentIndex( idx < 0 ? 0 : idx );
@@ -1552,7 +1552,7 @@ void QgsGpsInformationWidget::setDistanceThreshold( uint distance )
15521552

15531553
void QgsGpsInformationWidget::updateTimeZones()
15541554
{
1555-
QgsSettings().setValue( QStringLiteral( "gps/timestampFormat" ), mCboTimestampFormat->currentData( ) );
1555+
QgsSettings().setValue( QStringLiteral( "timestampFormat" ), mCboTimestampFormat->currentData( ), QgsSettings::Gps );
15561556
const bool enabled { static_cast<Qt::TimeSpec>( mCboTimestampFormat->currentData( ).toInt() ) == Qt::TimeSpec::TimeZone };
15571557
mCboTimeZones->setEnabled( enabled );
15581558
mLblTimeZone->setEnabled( enabled );
@@ -1621,7 +1621,7 @@ void QgsGpsInformationWidget::cboDistanceThresholdEdited()
16211621

16221622
void QgsGpsInformationWidget::timestampFormatChanged( int )
16231623
{
1624-
QgsSettings().setValue( QStringLiteral( "gps/timestampFormat" ), mCboTimestampFormat->currentData( ).toInt() );
1624+
QgsSettings().setValue( QStringLiteral( "timestampFormat" ), mCboTimestampFormat->currentData( ).toInt(), QgsSettings::Gps );
16251625
const bool enabled { static_cast<Qt::TimeSpec>( mCboTimestampFormat->currentData( ).toInt() ) == Qt::TimeSpec::TimeZone };
16261626
mCboTimeZones->setEnabled( enabled );
16271627
mLblTimeZone->setEnabled( enabled );

‎src/core/settings/qgssettings.cpp

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -215,33 +215,36 @@ QString QgsSettings::prefixedKey( const QString &key, const Section section ) co
215215
QString prefix;
216216
switch ( section )
217217
{
218-
case Section::Core :
218+
case Section::Core:
219219
prefix = QStringLiteral( "core" );
220220
break;
221-
case Section::Server :
221+
case Section::Server:
222222
prefix = QStringLiteral( "server" );
223223
break;
224-
case Section::Gui :
224+
case Section::Gui:
225225
prefix = QStringLiteral( "gui" );
226226
break;
227-
case Section::Plugins :
227+
case Section::Plugins:
228228
prefix = QStringLiteral( "plugins" );
229229
break;
230-
case Section::Misc :
230+
case Section::Misc:
231231
prefix = QStringLiteral( "misc" );
232232
break;
233-
case Section::Auth :
233+
case Section::Auth:
234234
prefix = QStringLiteral( "auth" );
235235
break;
236-
case Section::App :
236+
case Section::App:
237237
prefix = QStringLiteral( "app" );
238238
break;
239-
case Section::Providers :
239+
case Section::Providers:
240240
prefix = QStringLiteral( "providers" );
241241
break;
242-
case Section::Expressions :
242+
case Section::Expressions:
243243
prefix = QStringLiteral( "expressions" );
244244
break;
245+
case Section::Gps:
246+
prefix = QStringLiteral( "gps" );
247+
break;
245248
case Section::NoSection:
246249
return sanitizeKey( key );
247250
}

‎src/core/settings/qgssettings.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ class CORE_EXPORT QgsSettings : public QObject
7575
App,
7676
Providers,
7777
Expressions,
78-
Misc
78+
Misc,
79+
Gps, //!< GPS section, since QGIS 3.22
7980
};
8081

8182
/**

0 commit comments

Comments
 (0)
Please sign in to comment.