Don't try to get the operation details for the instantiated operation,

instead correctly use the desired operation for the handler
This commit is contained in:
Nyall Dawson 2020-02-14 12:22:22 +10:00
parent 9883e18e21
commit ee4774a84e
4 changed files with 10 additions and 11 deletions

View File

@ -58,7 +58,7 @@ QgsAppMissingGridHandler::QgsAppMissingGridHandler( QObject *parent )
QgsCoordinateTransform::setFallbackOperationOccurredHandler( [ = ]( const QgsCoordinateReferenceSystem & sourceCrs,
const QgsCoordinateReferenceSystem & destinationCrs,
const QgsDatumTransform::TransformDetails & desired )
const QString & desired )
{
emit fallbackOperationOccurred( sourceCrs, destinationCrs, desired );
} );
@ -273,13 +273,13 @@ void QgsAppMissingGridHandler::onMissingGridUsedByContextHandler( const QgsCoord
bar->pushWidget( widget, Qgis::Critical, 0 );
}
void QgsAppMissingGridHandler::onFallbackOperationOccurred( const QgsCoordinateReferenceSystem &sourceCrs, const QgsCoordinateReferenceSystem &destinationCrs, const QgsDatumTransform::TransformDetails &desired )
void QgsAppMissingGridHandler::onFallbackOperationOccurred( const QgsCoordinateReferenceSystem &sourceCrs, const QgsCoordinateReferenceSystem &destinationCrs, const QString &desired )
{
// if ( !shouldWarnAboutPairForCurrentProject( sourceCrs, destinationCrs ) )
// return;
const QString shortMessage = tr( "Used a fallback transform from %1 to %2" ).arg( sourceCrs.userFriendlyIdentifier( QgsCoordinateReferenceSystem::ShortString ), destinationCrs.userFriendlyIdentifier( QgsCoordinateReferenceSystem::ShortString ) );
const QString longMessage = tr( "<p>An alternative transform was used when transforming coordinates between <i>%1</i> and <i>%2</i>.</p><p style=\"color: red\">I wanted to use %3</p>" ).arg( sourceCrs.userFriendlyIdentifier(), destinationCrs.userFriendlyIdentifier(), desired.proj );
const QString longMessage = tr( "<p>An alternative transform was used when transforming coordinates between <i>%1</i> and <i>%2</i>.</p><p style=\"color: red\">I wanted to use %3</p>" ).arg( sourceCrs.userFriendlyIdentifier(), destinationCrs.userFriendlyIdentifier(), desired );
QgsMessageBar *bar = QgisApp::instance()->messageBar();
QgsMessageBarItem *widget = bar->createMessage( QString(), shortMessage );

View File

@ -51,7 +51,7 @@ class QgsAppMissingGridHandler : public QObject
void fallbackOperationOccurred( const QgsCoordinateReferenceSystem &sourceCrs,
const QgsCoordinateReferenceSystem &destinationCrs,
const QgsDatumTransform::TransformDetails &desired );
const QString &desired );
private slots:
@ -74,7 +74,7 @@ class QgsAppMissingGridHandler : public QObject
void onFallbackOperationOccurred( const QgsCoordinateReferenceSystem &sourceCrs,
const QgsCoordinateReferenceSystem &destinationCrs,
const QgsDatumTransform::TransformDetails &desired );
const QString &desired );
private:

View File

@ -54,7 +54,7 @@ bool QgsCoordinateTransform::sDisableCache = false;
std::function< void( const QgsCoordinateReferenceSystem &sourceCrs,
const QgsCoordinateReferenceSystem &destinationCrs,
const QgsDatumTransform::TransformDetails &desiredOperation )> QgsCoordinateTransform::sFallbackOperationOccurredHandler = nullptr;
const QString &desiredOperation )> QgsCoordinateTransform::sFallbackOperationOccurredHandler = nullptr;
QgsCoordinateTransform::QgsCoordinateTransform()
{
@ -776,8 +776,7 @@ void QgsCoordinateTransform::transformCoords( int numPoints, double *x, double *
if ( !mBallparkTransformsAreAppropriate && sFallbackOperationOccurredHandler )
{
QgsDatumTransform::TransformDetails desired = instantiatedCoordinateOperationDetails();
sFallbackOperationOccurredHandler( d->mSourceCRS, d->mDestCRS, desired );
sFallbackOperationOccurredHandler( d->mSourceCRS, d->mDestCRS, d->mProjCoordinateOperation );
const QString warning = QStringLiteral( "A fallback coordinate operation was used between %1 and %2" ).arg( d->mSourceCRS.authid(),
d->mDestCRS.authid() );
qWarning( "%s", warning.toLatin1().constData() );
@ -1123,7 +1122,7 @@ void QgsCoordinateTransform::setCustomMissingGridUsedByContextHandler( const std
QgsCoordinateTransformPrivate::setCustomMissingGridUsedByContextHandler( handler );
}
void QgsCoordinateTransform::setFallbackOperationOccurredHandler( const std::function<void ( const QgsCoordinateReferenceSystem &, const QgsCoordinateReferenceSystem &, const QgsDatumTransform::TransformDetails & )> &handler )
void QgsCoordinateTransform::setFallbackOperationOccurredHandler( const std::function<void ( const QgsCoordinateReferenceSystem &, const QgsCoordinateReferenceSystem &, const QString & )> &handler )
{
sFallbackOperationOccurredHandler = handler;
}

View File

@ -593,7 +593,7 @@ class CORE_EXPORT QgsCoordinateTransform
*/
static void setFallbackOperationOccurredHandler( const std::function< void( const QgsCoordinateReferenceSystem &sourceCrs,
const QgsCoordinateReferenceSystem &destinationCrs,
const QgsDatumTransform::TransformDetails &desiredOperation )> &handler );
const QString &desiredOperation )> &handler );
#endif
@ -640,7 +640,7 @@ class CORE_EXPORT QgsCoordinateTransform
static std::function< void( const QgsCoordinateReferenceSystem &sourceCrs,
const QgsCoordinateReferenceSystem &destinationCrs,
const QgsDatumTransform::TransformDetails &desiredOperation )> sFallbackOperationOccurredHandler;
const QString &desiredOperation )> sFallbackOperationOccurredHandler;
};