Skip to content

Commit

Permalink
Add log to gpkg action
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Nov 16, 2022
1 parent 5579a4e commit 0dfac0c
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/app/gps/qgsappgpsdigitizing.h
Expand Up @@ -42,6 +42,7 @@ class APP_EXPORT QgsAppGpsDigitizing: public QgsGpsLogger
static const inline QgsSettingsEntryString settingTrackLineSymbol = QgsSettingsEntryString( QStringLiteral( "track-line-symbol" ), QgsSettings::Prefix::GPS, QStringLiteral( "<symbol alpha=\"1\" name=\"gps-track-symbol\" force_rhr=\"0\" clip_to_extent=\"1\" type=\"line\"><layer enabled=\"1\" pass=\"0\" locked=\"0\" class=\"SimpleLine\"><Option type=\"Map\"><Option name=\"line_color\" type=\"QString\" value=\"219,30,42,255\"/><Option name=\"line_style\" type=\"QString\" value=\"solid\"/><Option name=\"line_width\" type=\"QString\" value=\"0.4\"/></Option></layer></symbol>" ), QStringLiteral( "Line symbol to use for GPS track line" ), Qgis::SettingsOptions(), 0 );

static const inline QgsSettingsEntryString settingLastLogFolder = QgsSettingsEntryString( QStringLiteral( "last-log-folder" ), QgsSettings::Prefix::GPS, QString(), QStringLiteral( "Last used folder for GPS log files" ) );
static const inline QgsSettingsEntryString settingLastGpkgLog = QgsSettingsEntryString( QStringLiteral( "last-gpkg-log" ), QgsSettings::Prefix::GPS, QString(), QStringLiteral( "Last used Geopackage/Spatialite file for logging GPS locations" ) );

QgsAppGpsDigitizing( QgsAppGpsConnection *connection, QgsMapCanvas *canvas, QObject *parent = nullptr );
~QgsAppGpsDigitizing() override;
Expand Down
35 changes: 35 additions & 0 deletions src/app/gps/qgsappgpssettingsmenu.cpp
Expand Up @@ -220,6 +220,39 @@ QgsAppGpsSettingsMenu::QgsAppGpsSettingsMenu( QWidget *parent )

addSeparator();

mActionGpkgLog = new QAction( "Log to GeoPackage/Spatialite…" );
mActionGpkgLog->setCheckable( true );
connect( mActionGpkgLog, &QAction::toggled, this, [ = ]( bool checked )
{
if ( checked )
{
const QString lastGpkgLog = QgsAppGpsDigitizing::settingLastGpkgLog.value();
const QString initialPath = lastGpkgLog.isEmpty() ? QDir::homePath() : lastGpkgLog;

QString selectedFilter;
QString fileName = QFileDialog::getSaveFileName( this, tr( "GPS Log File" ), initialPath,
tr( "GeoPackage" ) + " (*.gpkg *.GPKG);;" + tr( "SpatiaLite" ) + " (*.sqlite *.db *.sqlite3 *.db3 *.s3db);;",
&selectedFilter, QFileDialog::Option::DontConfirmOverwrite );
if ( fileName.isEmpty() )
{
mActionGpkgLog->setChecked( false );
emit gpkgLogDestinationChanged( QString() );
return;
}


fileName = QgsFileUtils::addExtensionFromFilter( fileName, selectedFilter );
QgsAppGpsDigitizing::settingLastGpkgLog.setValue( fileName );

emit gpkgLogDestinationChanged( fileName );
}
else
{
emit gpkgLogDestinationChanged( QString() );
}
} );
addAction( mActionGpkgLog );

mActionNmeaLog = new QAction( "Log NMEA Sentences…" );
mActionNmeaLog->setCheckable( true );
connect( mActionNmeaLog, &QAction::toggled, this, [ = ]( bool checked )
Expand Down Expand Up @@ -250,6 +283,8 @@ QgsAppGpsSettingsMenu::QgsAppGpsSettingsMenu( QWidget *parent )
} );
addAction( mActionNmeaLog );

addSeparator();

QAction *settingsAction = new QAction( tr( "GPS Settings…" ), this );
settingsAction->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionOptions.svg" ) ) );
connect( settingsAction, &QAction::triggered, this, [ = ]
Expand Down
2 changes: 2 additions & 0 deletions src/app/gps/qgsappgpssettingsmenu.h
Expand Up @@ -64,6 +64,7 @@ class APP_EXPORT QgsAppGpsSettingsMenu : public QMenu
void rotateMapToggled( bool enabled );
void mapCenteringModeChanged( Qgis::MapRecenteringMode mode );
void enableNmeaLog( bool enabled );
void gpkgLogDestinationChanged( const QString &path );
void nmeaLogFileChanged( const QString &filename );

private slots:
Expand All @@ -77,6 +78,7 @@ class APP_EXPORT QgsAppGpsSettingsMenu : public QMenu
QAction *mRotateMapAction = nullptr;
QAction *mAutoAddTrackVerticesAction = nullptr;
QAction *mAutoSaveAddedFeatureAction = nullptr;
QAction *mActionGpkgLog = nullptr;
QAction *mActionNmeaLog = nullptr;

QRadioButton *mRadioAlwaysRecenter = nullptr;
Expand Down
1 change: 1 addition & 0 deletions src/app/qgssettingsregistryapp.cpp
Expand Up @@ -63,6 +63,7 @@ QgsSettingsRegistryApp::QgsSettingsRegistryApp()
addSettingsEntry( &QgsIdentifyResultsDialog::settingHideNullValues );

addSettingsEntry( &QgsAppGpsDigitizing::settingLastLogFolder );
addSettingsEntry( &QgsAppGpsDigitizing::settingLastGpkgLog );

addSettingsEntry( &QgsGpsCanvasBridge::settingShowBearingLine );
addSettingsEntry( &QgsGpsCanvasBridge::settingBearingLineSymbol );
Expand Down

0 comments on commit 0dfac0c

Please sign in to comment.