Skip to content

Commit

Permalink
Move enum to hopefully fix windows build
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Nov 8, 2022
1 parent 98471b6 commit f2a3db0
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 37 deletions.
7 changes: 7 additions & 0 deletions python/core/auto_additions/qgis.py
Expand Up @@ -1849,6 +1849,13 @@
# --
Qgis.ViewSyncModeFlag.baseClass = Qgis
# monkey patching scoped based enum
Qgis.MapRecenteringMode.Always.__doc__ = "Always recenter map"
Qgis.MapRecenteringMode.WhenOutsideVisibleExtent.__doc__ = "Only recenter map when new center would be outside of current visible extent"
Qgis.MapRecenteringMode.Never.__doc__ = "Never recenter map"
Qgis.MapRecenteringMode.__doc__ = 'Modes for recentering map canvases.\n\n.. versionadded:: 3.30\n\n' + '* ``Always``: ' + Qgis.MapRecenteringMode.Always.__doc__ + '\n' + '* ``WhenOutsideVisibleExtent``: ' + Qgis.MapRecenteringMode.WhenOutsideVisibleExtent.__doc__ + '\n' + '* ``Never``: ' + Qgis.MapRecenteringMode.Never.__doc__
# --
Qgis.MapRecenteringMode.baseClass = Qgis
# monkey patching scoped based enum
Qgis.HistoryProviderBackend.LocalProfile.__doc__ = "Local profile"
Qgis.HistoryProviderBackend.__doc__ = 'History provider backends.\n\n.. versionadded:: 3.24\n\n' + '* ``LocalProfile``: ' + Qgis.HistoryProviderBackend.LocalProfile.__doc__
# --
Expand Down
7 changes: 7 additions & 0 deletions python/core/auto_generated/qgis.sip.in
Expand Up @@ -1175,6 +1175,13 @@ The development version
typedef QFlags<Qgis::ViewSyncModeFlag> ViewSyncModeFlags;


enum class MapRecenteringMode
{
Always,
WhenOutsideVisibleExtent,
Never,
};

enum class HistoryProviderBackend
{
LocalProfile,
Expand Down
34 changes: 17 additions & 17 deletions src/app/gps/qgsappgpssettingsmenu.cpp
Expand Up @@ -62,7 +62,7 @@ QgsAppGpsSettingsMenu::QgsAppGpsSettingsMenu( QWidget *parent )
{
bool showLocationMarker = true;
bool showBearingLine = false;
QgsGpsCanvasBridge::MapCenteringMode mapCenteringMode = QgsGpsCanvasBridge::MapCenteringMode::WhenLeavingExtent;
Qgis::MapRecenteringMode mapCenteringMode = Qgis::MapRecenteringMode::WhenOutsideVisibleExtent;
bool rotateMap = false;

if ( QgsGpsCanvasBridge::settingShowBearingLine.exists( ) )
Expand All @@ -83,15 +83,15 @@ QgsAppGpsSettingsMenu::QgsAppGpsSettingsMenu( QWidget *parent )
const QString panMode = settings.value( QStringLiteral( "panMode" ), "recenterWhenNeeded", QgsSettings::Gps ).toString();
if ( panMode == QLatin1String( "none" ) )
{
mapCenteringMode = QgsGpsCanvasBridge::MapCenteringMode::Never;
mapCenteringMode = Qgis::MapRecenteringMode::Never;
}
else if ( panMode == QLatin1String( "recenterAlways" ) )
{
mapCenteringMode = QgsGpsCanvasBridge::MapCenteringMode::Always;
mapCenteringMode = Qgis::MapRecenteringMode::Always;
}
else
{
mapCenteringMode = QgsGpsCanvasBridge::MapCenteringMode::WhenLeavingExtent;
mapCenteringMode = Qgis::MapRecenteringMode::WhenOutsideVisibleExtent;
}
}

Expand Down Expand Up @@ -137,13 +137,13 @@ QgsAppGpsSettingsMenu::QgsAppGpsSettingsMenu( QWidget *parent )
//pan mode
switch ( mapCenteringMode )
{
case QgsGpsCanvasBridge::MapCenteringMode::Always:
case Qgis::MapRecenteringMode::Always:
mRadioAlwaysRecenter->setChecked( true );
break;
case QgsGpsCanvasBridge::MapCenteringMode::WhenLeavingExtent:
case Qgis::MapRecenteringMode::WhenOutsideVisibleExtent:
mRadioRecenterWhenOutside->setChecked( true );
break;
case QgsGpsCanvasBridge::MapCenteringMode::Never:
case Qgis::MapRecenteringMode::Never:
mRadioNeverRecenter->setChecked( true );
break;
}
Expand All @@ -152,26 +152,26 @@ QgsAppGpsSettingsMenu::QgsAppGpsSettingsMenu( QWidget *parent )
{
if ( checked )
{
QgsGpsCanvasBridge::settingMapCenteringMode.setValue( QgsGpsCanvasBridge::MapCenteringMode::Always );
emit mapCenteringModeChanged( QgsGpsCanvasBridge::MapCenteringMode::Always );
QgsGpsCanvasBridge::settingMapCenteringMode.setValue( Qgis::MapRecenteringMode::Always );
emit mapCenteringModeChanged( Qgis::MapRecenteringMode::Always );
}
} );

connect( mRadioRecenterWhenOutside, &QRadioButton::toggled, this, [ = ]( bool checked )
{
if ( checked )
{
QgsGpsCanvasBridge::settingMapCenteringMode.setValue( QgsGpsCanvasBridge::MapCenteringMode::WhenLeavingExtent );
emit mapCenteringModeChanged( QgsGpsCanvasBridge::MapCenteringMode::WhenLeavingExtent );
QgsGpsCanvasBridge::settingMapCenteringMode.setValue( Qgis::MapRecenteringMode::WhenOutsideVisibleExtent );
emit mapCenteringModeChanged( Qgis::MapRecenteringMode::WhenOutsideVisibleExtent );
}
} );

connect( mRadioNeverRecenter, &QRadioButton::toggled, this, [ = ]( bool checked )
{
if ( checked )
{
QgsGpsCanvasBridge::settingMapCenteringMode.setValue( QgsGpsCanvasBridge::MapCenteringMode::Never );
emit mapCenteringModeChanged( QgsGpsCanvasBridge::MapCenteringMode::Never );
QgsGpsCanvasBridge::settingMapCenteringMode.setValue( Qgis::MapRecenteringMode::Never );
emit mapCenteringModeChanged( Qgis::MapRecenteringMode::Never );
}
} );

Expand Down Expand Up @@ -275,20 +275,20 @@ bool QgsAppGpsSettingsMenu::rotateMap() const
return mRotateMapAction->isChecked();
}

QgsGpsCanvasBridge::MapCenteringMode QgsAppGpsSettingsMenu::mapCenteringMode() const
Qgis::MapRecenteringMode QgsAppGpsSettingsMenu::mapCenteringMode() const
{
// pan mode
if ( mRadioAlwaysRecenter->isChecked() )
{
return QgsGpsCanvasBridge::MapCenteringMode::Always;
return Qgis::MapRecenteringMode::Always;
}
else if ( mRadioRecenterWhenOutside->isChecked() )
{
return QgsGpsCanvasBridge::MapCenteringMode::WhenLeavingExtent;
return Qgis::MapRecenteringMode::WhenOutsideVisibleExtent;
}
else
{
return QgsGpsCanvasBridge::MapCenteringMode::Never;
return Qgis::MapRecenteringMode::Never;
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/app/gps/qgsappgpssettingsmenu.h
Expand Up @@ -55,7 +55,7 @@ class APP_EXPORT QgsAppGpsSettingsMenu : public QMenu
bool locationMarkerVisible() const;
bool bearingLineVisible() const;
bool rotateMap() const;
QgsGpsCanvasBridge::MapCenteringMode mapCenteringMode() const;
Qgis::MapRecenteringMode mapCenteringMode() const;

public slots:

Expand All @@ -66,7 +66,7 @@ class APP_EXPORT QgsAppGpsSettingsMenu : public QMenu
void locationMarkerToggled( bool visible );
void bearingLineToggled( bool visible );
void rotateMapToggled( bool enabled );
void mapCenteringModeChanged( QgsGpsCanvasBridge::MapCenteringMode mode );
void mapCenteringModeChanged( Qgis::MapRecenteringMode mode );
void timeStampDestinationChanged( const QString &fieldName );
void enableNmeaLog( bool enabled );
void nmeaLogFileChanged( const QString &filename );
Expand Down
14 changes: 7 additions & 7 deletions src/app/gps/qgsgpscanvasbridge.cpp
Expand Up @@ -92,7 +92,7 @@ bool QgsGpsCanvasBridge::blockCanvasInteraction( Interaction interaction ) const
// if we're connected and set to follow the GPS location, block the single click navigation mode
// to avoid accidental map canvas pans away from the GPS location.
// (for now, we don't block click-and-drag pans, as they are less likely to be accidentally triggered)
if ( mConnection->isConnected() && ( mCenteringMode != QgsGpsCanvasBridge::MapCenteringMode::Never ) )
if ( mConnection->isConnected() && ( mCenteringMode != Qgis::MapRecenteringMode::Never ) )
return true;

break;
Expand Down Expand Up @@ -124,7 +124,7 @@ void QgsGpsCanvasBridge::setRotateMap( bool enabled )
mRotateMap = enabled;
}

void QgsGpsCanvasBridge::setMapCenteringMode( QgsGpsCanvasBridge::MapCenteringMode mode )
void QgsGpsCanvasBridge::setMapCenteringMode( Qgis::MapRecenteringMode mode )
{
mCenteringMode = mode;
}
Expand Down Expand Up @@ -227,8 +227,8 @@ void QgsGpsCanvasBridge::gpsStateChanged( const QgsGpsInformation &info )
// Pan based on user specified behavior
switch ( mCenteringMode )
{
case QgsGpsCanvasBridge::MapCenteringMode::Always:
case QgsGpsCanvasBridge::MapCenteringMode::WhenLeavingExtent:
case Qgis::MapRecenteringMode::Always:
case Qgis::MapRecenteringMode::WhenOutsideVisibleExtent:
try
{
const QgsPointXY point = mCanvasToWgs84Transform.transform( myNewCenter, Qgis::TransformDirection::Reverse );
Expand All @@ -241,8 +241,8 @@ void QgsGpsCanvasBridge::gpsStateChanged( const QgsGpsInformation &info )
extentLimit.scale( mMapExtentMultiplier * 0.01 );

// only change the extents if the point is beyond the current extents to minimize repaints
if ( mCenteringMode == QgsGpsCanvasBridge::MapCenteringMode::Always ||
( mCenteringMode == QgsGpsCanvasBridge::MapCenteringMode::WhenLeavingExtent && !extentLimit.contains( point ) ) )
if ( mCenteringMode == Qgis::MapRecenteringMode::Always ||
( mCenteringMode == Qgis::MapRecenteringMode::WhenOutsideVisibleExtent && !extentLimit.contains( point ) ) )
{
mCanvas->setExtent( rect, true );
mCanvas->refresh();
Expand All @@ -254,7 +254,7 @@ void QgsGpsCanvasBridge::gpsStateChanged( const QgsGpsInformation &info )
}
break;

case QgsGpsCanvasBridge::MapCenteringMode::Never:
case Qgis::MapRecenteringMode::Never:
break;
}

Expand Down
14 changes: 3 additions & 11 deletions src/app/gps/qgsgpscanvasbridge.h
Expand Up @@ -41,18 +41,10 @@ class APP_EXPORT QgsGpsCanvasBridge : public QObject, public QgsMapCanvasInterac

public:

enum class MapCenteringMode
{
Always,
WhenLeavingExtent,
Never
};
Q_ENUM( MapCenteringMode )

static const inline QgsSettingsEntryBool settingShowBearingLine = QgsSettingsEntryBool( QStringLiteral( "show-bearing-line" ), QgsSettings::Prefix::GPS, false, QStringLiteral( "Whether the GPS bearing line symbol should be shown" ) );
static const inline QgsSettingsEntryString settingBearingLineSymbol = QgsSettingsEntryString( QStringLiteral( "bearing-line-symbol" ), QgsSettings::Prefix::GPS, QString(), QStringLiteral( "Line symbol to use for GPS bearing line" ), Qgis::SettingsOptions(), 0 );
static const inline QgsSettingsEntryInteger settingMapExtentRecenteringThreshold = QgsSettingsEntryInteger( QStringLiteral( "map-recentering-threshold" ), QgsSettings::Prefix::GPS, 50, QStringLiteral( "Threshold for GPS automatic map centering" ) );
static const inline QgsSettingsEntryEnumFlag<QgsGpsCanvasBridge::MapCenteringMode> settingMapCenteringMode = QgsSettingsEntryEnumFlag<QgsGpsCanvasBridge::MapCenteringMode>( QStringLiteral( "map-recentering" ), QgsSettings::Prefix::GPS, QgsGpsCanvasBridge::MapCenteringMode::WhenLeavingExtent, QStringLiteral( "Automatic GPS based map recentering mode" ) );
static const inline QgsSettingsEntryEnumFlag<Qgis::MapRecenteringMode> settingMapCenteringMode = QgsSettingsEntryEnumFlag<Qgis::MapRecenteringMode>( QStringLiteral( "map-recentering" ), QgsSettings::Prefix::GPS, Qgis::MapRecenteringMode::WhenOutsideVisibleExtent, QStringLiteral( "Automatic GPS based map recentering mode" ) );
static const inline QgsSettingsEntryBool settingRotateMap = QgsSettingsEntryBool( QStringLiteral( "auto-map-rotate" ), QgsSettings::Prefix::GPS, false, QStringLiteral( "Whether to automatically rotate the map to match GPS bearing" ) );
static const inline QgsSettingsEntryInteger settingMapRotateInterval = QgsSettingsEntryInteger( QStringLiteral( "map-rotate-interval" ), QgsSettings::Prefix::GPS, 0, QStringLiteral( "Interval for GPS automatic map rotation" ) );

Expand All @@ -66,7 +58,7 @@ class APP_EXPORT QgsGpsCanvasBridge : public QObject, public QgsMapCanvasInterac
void setLocationMarkerVisible( bool show );
void setBearingLineVisible( bool show );
void setRotateMap( bool enabled );
void setMapCenteringMode( QgsGpsCanvasBridge::MapCenteringMode mode );
void setMapCenteringMode( Qgis::MapRecenteringMode mode );
void tapAndHold( const QgsPointXY &mapPoint, QTapAndHoldGesture *gesture );

private slots:
Expand Down Expand Up @@ -95,7 +87,7 @@ class APP_EXPORT QgsGpsCanvasBridge : public QObject, public QgsMapCanvasInterac

bool mRotateMap = false;

QgsGpsCanvasBridge::MapCenteringMode mCenteringMode = QgsGpsCanvasBridge::MapCenteringMode::Always;
Qgis::MapRecenteringMode mCenteringMode = Qgis::MapRecenteringMode::Always;

QgsDistanceArea mDistanceCalculator;
QgsCoordinateTransform mCanvasToWgs84Transform;
Expand Down
13 changes: 13 additions & 0 deletions src/core/qgis.h
Expand Up @@ -1981,6 +1981,19 @@ class CORE_EXPORT Qgis
Q_ENUM( ViewSyncModeFlag )
Q_DECLARE_FLAGS( ViewSyncModeFlags, ViewSyncModeFlag )

/**
* Modes for recentering map canvases.
*
* \since QGIS 3.30
*/
enum class MapRecenteringMode
{
Always, //!< Always recenter map
WhenOutsideVisibleExtent, //!< Only recenter map when new center would be outside of current visible extent
Never, //!< Never recenter map
};
Q_ENUM( MapRecenteringMode )

/**
* History provider backends.
*
Expand Down

0 comments on commit f2a3db0

Please sign in to comment.