Skip to content

Commit 8d3f710

Browse files
committed
Use structs instead of pairs
1 parent 6afc6e6 commit 8d3f710

File tree

3 files changed

+60
-44
lines changed

3 files changed

+60
-44
lines changed

src/app/qgsdatumtransformtablewidget.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,9 @@ void QgsDatumTransformTableWidget::addDatumTransform()
200200
QgsDatumTransformDialog dlg( QgsCoordinateReferenceSystem(), QgsCoordinateReferenceSystem(), true, false, false );
201201
if ( dlg.exec() )
202202
{
203-
QPair< QPair<QgsCoordinateReferenceSystem, int>, QPair<QgsCoordinateReferenceSystem, int > > dt = dlg.selectedDatumTransforms();
203+
const QgsDatumTransformDialog::TransformInfo dt = dlg.selectedDatumTransform();
204204
QgsCoordinateTransformContext context = mModel->transformContext();
205-
context.addSourceDestinationDatumTransform( dt.first.first, dt.second.first, dt.first.second, dt.second.second );
205+
context.addSourceDestinationDatumTransform( dt.sourceCrs, dt.destinationCrs, dt.sourceTransformId, dt.destinationTransformId );
206206
mModel->setTransformContext( context );
207207
selectionChanged();
208208
}
@@ -253,10 +253,10 @@ void QgsDatumTransformTableWidget::editDatumTransform()
253253
QgsDatumTransformDialog dlg( sourceCrs, destinationCrs, true, false, false, qMakePair( sourceTransform, destinationTransform ) );
254254
if ( dlg.exec() )
255255
{
256-
QPair< QPair<QgsCoordinateReferenceSystem, int>, QPair<QgsCoordinateReferenceSystem, int > > dt = dlg.selectedDatumTransforms();
256+
const QgsDatumTransformDialog::TransformInfo dt = dlg.selectedDatumTransform();
257257
QgsCoordinateTransformContext context = mModel->transformContext();
258258
// QMap::insert takes care of replacing existing value
259-
context.addSourceDestinationDatumTransform( sourceCrs, destinationCrs, dt.first.second, dt.second.second );
259+
context.addSourceDestinationDatumTransform( sourceCrs, destinationCrs, dt.sourceTransformId, dt.destinationTransformId );
260260
mModel->setTransformContext( context );
261261
}
262262
}

src/gui/qgsdatumtransformdialog.cpp

+38-38
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ bool QgsDatumTransformDialog::run( const QgsCoordinateReferenceSystem &sourceCrs
4343
{
4444
if ( dlg.exec() )
4545
{
46-
QPair< QPair<QgsCoordinateReferenceSystem, int>, QPair<QgsCoordinateReferenceSystem, int > > dt = dlg.selectedDatumTransforms();
46+
const TransformInfo dt = dlg.selectedDatumTransform();
4747
QgsCoordinateTransformContext context = QgsProject::instance()->transformContext();
48-
context.addSourceDestinationDatumTransform( dt.first.first, dt.second.first, dt.first.second, dt.second.second );
48+
context.addSourceDestinationDatumTransform( dt.sourceCrs, dt.destinationCrs, dt.sourceTransformId, dt.destinationTransformId );
4949
QgsProject::instance()->setTransformContext( context );
5050
return true;
5151
}
@@ -255,15 +255,15 @@ void QgsDatumTransformDialog::accept()
255255
QgsSettings settings;
256256
settings.beginGroup( QStringLiteral( "/Projections" ) );
257257

258-
QPair< QPair<QgsCoordinateReferenceSystem, int>, QPair<QgsCoordinateReferenceSystem, int > > dt = selectedDatumTransforms();
258+
const TransformInfo dt = selectedDatumTransform();
259259

260-
QString srcAuthId = dt.first.first.authid();
261-
QString destAuthId = dt.second.first.authid();
262-
int sourceDatumTransform = dt.first.second;
260+
QString srcAuthId = dt.sourceCrs.authid();
261+
QString destAuthId = dt.destinationCrs.authid();
262+
int sourceDatumTransform = dt.sourceTransformId;
263263
QString sourceDatumProj;
264264
if ( sourceDatumTransform >= 0 )
265265
sourceDatumProj = QgsDatumTransform::datumTransformToProj( sourceDatumTransform );
266-
int destinationDatumTransform = dt.second.second;
266+
int destinationDatumTransform = dt.destinationTransformId;
267267
QString destinationDatumProj;
268268
if ( destinationDatumTransform >= 0 )
269269
destinationDatumProj = QgsDatumTransform::datumTransformToProj( destinationDatumTransform );
@@ -292,23 +292,23 @@ bool QgsDatumTransformDialog::shouldAskUserForSelection() const
292292
return false;
293293
}
294294

295-
QPair<QPair<QgsCoordinateReferenceSystem, int>, QPair<QgsCoordinateReferenceSystem, int> > QgsDatumTransformDialog::defaultDatumTransform() const
295+
QgsDatumTransformDialog::TransformInfo QgsDatumTransformDialog::defaultDatumTransform() const
296296
{
297-
QPair<QPair<QgsCoordinateReferenceSystem, int>, QPair<QgsCoordinateReferenceSystem, int> > preferredNonDeprecated;
298-
preferredNonDeprecated.first.first = mSourceCrs;
299-
preferredNonDeprecated.second.first = mDestinationCrs;
297+
TransformInfo preferredNonDeprecated;
298+
preferredNonDeprecated.sourceCrs = mSourceCrs;
299+
preferredNonDeprecated.destinationCrs = mDestinationCrs;
300300
bool foundPreferredNonDeprecated = false;
301-
QPair<QPair<QgsCoordinateReferenceSystem, int>, QPair<QgsCoordinateReferenceSystem, int> > preferred;
302-
preferred.first.first = mSourceCrs;
303-
preferred.second.first = mDestinationCrs;
301+
TransformInfo preferred;
302+
preferred.sourceCrs = mSourceCrs;
303+
preferred.destinationCrs = mDestinationCrs;
304304
bool foundPreferred = false;
305-
QPair<QPair<QgsCoordinateReferenceSystem, int>, QPair<QgsCoordinateReferenceSystem, int> > nonDeprecated;
306-
nonDeprecated.first.first = mSourceCrs;
307-
nonDeprecated.second.first = mDestinationCrs;
305+
TransformInfo nonDeprecated;
306+
nonDeprecated.sourceCrs = mSourceCrs;
307+
nonDeprecated.destinationCrs = mDestinationCrs;
308308
bool foundNonDeprecated = false;
309-
QPair<QPair<QgsCoordinateReferenceSystem, int>, QPair<QgsCoordinateReferenceSystem, int> > fallback;
310-
fallback.first.first = mSourceCrs;
311-
fallback.second.first = mDestinationCrs;
309+
TransformInfo fallback;
310+
fallback.sourceCrs = mSourceCrs;
311+
fallback.destinationCrs = mDestinationCrs;
312312
bool foundFallback = false;
313313

314314
for ( const QgsDatumTransform::TransformPair &transform : qgis::as_const( mDatumTransforms ) )
@@ -321,28 +321,28 @@ QPair<QPair<QgsCoordinateReferenceSystem, int>, QPair<QgsCoordinateReferenceSyst
321321
if ( !foundPreferredNonDeprecated && ( ( srcInfo.preferred && !srcInfo.deprecated ) || transform.sourceTransformId == -1 )
322322
&& ( ( destInfo.preferred && !destInfo.deprecated ) || transform.destinationTransformId == -1 ) )
323323
{
324-
preferredNonDeprecated.first.second = transform.sourceTransformId;
325-
preferredNonDeprecated.second.second = transform.destinationTransformId;
324+
preferredNonDeprecated.sourceTransformId = transform.sourceTransformId;
325+
preferredNonDeprecated.destinationTransformId = transform.destinationTransformId;
326326
foundPreferredNonDeprecated = true;
327327
}
328328
else if ( !foundPreferred && ( srcInfo.preferred || transform.sourceTransformId == -1 ) &&
329329
( destInfo.preferred || transform.destinationTransformId == -1 ) )
330330
{
331-
preferred.first.second = transform.sourceTransformId;
332-
preferred.second.second = transform.destinationTransformId;
331+
preferred.sourceTransformId = transform.sourceTransformId;
332+
preferred.destinationTransformId = transform.destinationTransformId;
333333
foundPreferred = true;
334334
}
335335
else if ( !foundNonDeprecated && ( !srcInfo.deprecated || transform.sourceTransformId == -1 )
336336
&& ( !destInfo.deprecated || transform.destinationTransformId == -1 ) )
337337
{
338-
nonDeprecated.first.second = transform.sourceTransformId;
339-
nonDeprecated.second.second = transform.destinationTransformId;
338+
nonDeprecated.sourceTransformId = transform.sourceTransformId;
339+
nonDeprecated.destinationTransformId = transform.destinationTransformId;
340340
foundNonDeprecated = true;
341341
}
342342
else if ( !foundFallback )
343343
{
344-
fallback.first.second = transform.sourceTransformId;
345-
fallback.second.second = transform.destinationTransformId;
344+
fallback.sourceTransformId = transform.sourceTransformId;
345+
fallback.destinationTransformId = transform.destinationTransformId;
346346
foundFallback = true;
347347
}
348348
}
@@ -361,30 +361,30 @@ void QgsDatumTransformDialog::applyDefaultTransform()
361361
if ( mDatumTransforms.count() > 0 )
362362
{
363363
QgsCoordinateTransformContext context = QgsProject::instance()->transformContext();
364-
const QPair<QPair<QgsCoordinateReferenceSystem, int>, QPair<QgsCoordinateReferenceSystem, int> > dt = defaultDatumTransform();
365-
context.addSourceDestinationDatumTransform( dt.first.first, dt.second.first, dt.first.second, dt.second.second );
364+
const TransformInfo dt = defaultDatumTransform();
365+
context.addSourceDestinationDatumTransform( dt.sourceCrs, dt.destinationCrs, dt.sourceTransformId, dt.destinationTransformId );
366366
QgsProject::instance()->setTransformContext( context );
367367
}
368368
}
369369

370-
QPair<QPair<QgsCoordinateReferenceSystem, int>, QPair<QgsCoordinateReferenceSystem, int> > QgsDatumTransformDialog::selectedDatumTransforms()
370+
QgsDatumTransformDialog::TransformInfo QgsDatumTransformDialog::selectedDatumTransform()
371371
{
372372
int row = mDatumTransformTableWidget->currentRow();
373-
QPair< QPair<QgsCoordinateReferenceSystem, int>, QPair<QgsCoordinateReferenceSystem, int > > sdt;
374-
sdt.first.first = mSourceCrs;
375-
sdt.second.first = mDestinationCrs;
373+
TransformInfo sdt;
374+
sdt.sourceCrs = mSourceCrs;
375+
sdt.destinationCrs = mDestinationCrs;
376376

377377
if ( row >= 0 )
378378
{
379379
QTableWidgetItem *srcItem = mDatumTransformTableWidget->item( row, 0 );
380-
sdt.first.second = srcItem ? srcItem->data( Qt::UserRole ).toInt() : -1;
380+
sdt.sourceTransformId = srcItem ? srcItem->data( Qt::UserRole ).toInt() : -1;
381381
QTableWidgetItem *destItem = mDatumTransformTableWidget->item( row, 1 );
382-
sdt.second.second = destItem ? destItem->data( Qt::UserRole ).toInt() : -1;
382+
sdt.destinationTransformId = destItem ? destItem->data( Qt::UserRole ).toInt() : -1;
383383
}
384384
else
385385
{
386-
sdt.first.second = -1;
387-
sdt.second.second = -1;
386+
sdt.sourceTransformId = -1;
387+
sdt.destinationTransformId = -1;
388388
}
389389
return sdt;
390390
}

src/gui/qgsdatumtransformdialog.h

+18-2
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,22 @@ class GUI_EXPORT QgsDatumTransformDialog : public QDialog, private Ui::QgsDatumT
3737
Q_OBJECT
3838
public:
3939

40+
//! Dialog transformation entry info
41+
struct TransformInfo
42+
{
43+
//! Source coordinate reference system
44+
QgsCoordinateReferenceSystem sourceCrs;
45+
46+
//! Source transform ID
47+
int sourceTransformId = -1;
48+
49+
//! Destination coordinate reference system
50+
QgsCoordinateReferenceSystem destinationCrs;
51+
52+
//! Destination transform ID
53+
int destinationTransformId = -1;
54+
};
55+
4056
/**
4157
* Runs the dialog (if required) prompting for the desired transform to use from \a sourceCrs to
4258
* \a destinationCrs, updating the current project transform context as required
@@ -72,7 +88,7 @@ class GUI_EXPORT QgsDatumTransformDialog : public QDialog, private Ui::QgsDatumT
7288
* Returns the source and destination transforms, each being a pair of QgsCoordinateReferenceSystems and datum transform code
7389
* \since 3.0
7490
*/
75-
QPair< QPair<QgsCoordinateReferenceSystem, int>, QPair<QgsCoordinateReferenceSystem, int > > selectedDatumTransforms();
91+
TransformInfo selectedDatumTransform();
7692

7793
private slots:
7894

@@ -101,7 +117,7 @@ class GUI_EXPORT QgsDatumTransformDialog : public QDialog, private Ui::QgsDatumT
101117
* \see shouldAskUserForSelection()
102118
* \see applyDefaultTransform()
103119
*/
104-
QPair< QPair<QgsCoordinateReferenceSystem, int>, QPair<QgsCoordinateReferenceSystem, int > > defaultDatumTransform() const;
120+
TransformInfo defaultDatumTransform() const;
105121

106122
/**
107123
* Applies the defaultDatumTransform(), adding it to the current QgsProject instance.

0 commit comments

Comments
 (0)