Skip to content

Commit f4eae28

Browse files
3nidsnyalldawson
authored andcommitted
started datum UI refactoring
1 parent 3916628 commit f4eae28

8 files changed

Lines changed: 268 additions & 69 deletions

src/app/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ SET(QGIS_APP_SRCS
2222
qgsclipboard.cpp
2323
qgscustomization.cpp
2424
qgscustomprojectiondialog.cpp
25+
qgsdatumtransformtablemodel.cpp
2526
qgsdecorationitem.cpp
2627
qgsdecorationcopyright.cpp
2728
qgsdecorationcopyrightdialog.cpp
@@ -246,6 +247,7 @@ SET (QGIS_APP_MOC_HDRS
246247
qgsclipboard.h
247248
qgscustomization.h
248249
qgscustomprojectiondialog.h
250+
qgsdatumtransformtablemodel.h
249251
qgsdecorationitem.h
250252
qgsdecorationcopyright.h
251253
qgsdecorationcopyrightdialog.h
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#include "qgsdatumtransformtablemodel.h"
2+
3+
QgsDatumTransformTableModel::QgsDatumTransformTableModel(QObject *parent)
4+
: QAbstractTableModel(parent)
5+
{
6+
}
7+
8+
void QgsDatumTransformTableModel::setTransformContext(QgsCoordinateTransformContext &context)
9+
{
10+
mTransformContext = context;
11+
reset();
12+
}
13+
14+
int QgsDatumTransformTableModel::rowCount(const QModelIndex &parent) const
15+
{
16+
return mTransformContext.sourceDestinationDatumTransforms().count()
17+
+ mTransformContext.sourceDatumTransforms().count()
18+
+ mTransformContext.destinationDatumTransforms().count();
19+
}
20+
21+
int QgsDatumTransformTableModel::columnCount(const QModelIndex &parent) const
22+
{
23+
return 4;
24+
}
25+
26+
QVariant QgsDatumTransformTableModel::data(const QModelIndex &index, int role) const
27+
{
28+
29+
30+
return QVariant();
31+
}
32+
33+
QVariant QgsDatumTransformTableModel::headerData(int section, Qt::Orientation orientation, int role) const
34+
{
35+
if (orientation == Qt::Vertical)
36+
return QVariant();
37+
38+
switch (role) {
39+
case Qt::DisplayRole:
40+
switch (section) {
41+
case SourceCrsHeader:
42+
return tr("Source CRS");
43+
case SourceTransformHeader:
44+
return tr("Source datum transform");
45+
case DestinationCrsHeader:
46+
return tr("Destination CRS");
47+
case DestinationTransformHeader:
48+
return tr("Destination datum transform");
49+
default:
50+
break;
51+
}
52+
break;
53+
default:
54+
break;
55+
}
56+
57+
return QVariant();
58+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#ifndef QGSDATUMTRANSFORMTABLEMODEL_H
2+
#define QGSDATUMTRANSFORMTABLEMODEL_H
3+
4+
5+
#include <QAbstractTableModel>
6+
7+
#include "qgis_app.h"
8+
#include "qgscoordinatetransformcontext.h"
9+
10+
class APP_EXPORT QgsDatumTransformTableModel : public QAbstractTableModel
11+
{
12+
Q_OBJECT
13+
public:
14+
15+
enum Headers {
16+
SourceCrsHeader = 0,
17+
SourceTransformHeader,
18+
DestinationCrsHeader,
19+
DestinationTransformHeader,
20+
};
21+
22+
QgsDatumTransformTableModel( QObject* parent = nullptr);
23+
24+
void setTransformContext( QgsCoordinateTransformContext &context );
25+
26+
public:
27+
int rowCount(const QModelIndex &parent) const override;
28+
int columnCount(const QModelIndex &parent) const override;
29+
QVariant data(const QModelIndex &index, int role) const override;
30+
QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
31+
32+
private:
33+
QgsCoordinateTransformContext mTransformContext;
34+
};
35+
36+
#endif // QGSDATUMTRANSFORMTABLEMODEL_H

src/app/qgsprojectproperties.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include "qgisapp.h"
2525
#include "qgscomposer.h"
2626
#include "qgscoordinatetransform.h"
27+
#include "qgsdatumtransformtablemodel.h"
2728
#include "qgslayoutmanager.h"
2829
#include "qgslogger.h"
2930
#include "qgsmapcanvas.h"
@@ -154,6 +155,17 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas *mapCanvas, QWidget *pa
154155
updateGuiForMapUnits( QgsProject::instance()->crs().mapUnits() );
155156
projectionSelector->setCrs( QgsProject::instance()->crs() );
156157

158+
// Datum transforms
159+
QgsDatumTransformTableModel* datumTransformTableModel = new QgsDatumTransformTableModel(this);
160+
QgsCoordinateTransformContext context = QgsProject::instance()->transformContext();
161+
datumTransformTableModel->setTransformContext(context);
162+
mDatumTransformTableView->setModel(datumTransformTableModel);
163+
mDatumTransformTableView->resizeColumnToContents( 0 );
164+
mDatumTransformTableView->horizontalHeader()->show();
165+
mDatumTransformTableView->setSelectionMode( QAbstractItemView::SingleSelection );
166+
mDatumTransformTableView->setSelectionBehavior( QAbstractItemView::SelectRows );
167+
connect(mDatumTransformAddButton, &QToolButton::clicked, this, &QgsProjectProperties::addDatumTransform);
168+
157169
QPolygonF mainCanvasPoly = mapCanvas->mapSettings().visiblePolygon();
158170
QgsGeometry g = QgsGeometry::fromQPolygonF( mainCanvasPoly );
159171
// close polygon
@@ -1212,7 +1224,12 @@ void QgsProjectProperties::apply()
12121224

12131225
void QgsProjectProperties::showProjectionsTab()
12141226
{
1215-
mOptionsListWidget->setCurrentRow( 1 );
1227+
mOptionsListWidget->setCurrentRow( 1 );
1228+
}
1229+
1230+
QgsProjectProperties::addDatumTransform()
1231+
{
1232+
12161233
}
12171234

12181235
void QgsProjectProperties::cbxWFSPubliedStateChanged( int aIdx )

src/app/qgsprojectproperties.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ class APP_EXPORT QgsProjectProperties : public QgsOptionsDialogBase, private Ui:
6969
*/
7070
void showProjectionsTab();
7171

72+
//! add a new datum transform
73+
addDatumTransform();
74+
7275
/**
7376
* Let the user add a scale to the list of project scales
7477
* used in scale combobox instead of global ones */

src/gui/qgsdatumtransformdialog.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,6 @@ void QgsDatumTransformDialog::accepted()
266266

267267
void QgsDatumTransformDialog::updateTitle()
268268
{
269-
mLabelSrcCrs->setText( QStringLiteral( "%1 - %2" ).arg( mSrcCrs.authid(), mSrcCrs.isValid() ? mSrcCrs.description() : tr( "unknown" ) ) );
270-
mLabelDstCrs->setText( QStringLiteral( "%1 - %2" ).arg( mDestCrs.authid(), mDestCrs.isValid() ? mDestCrs.description() : tr( "unknown" ) ) );
269+
mSourceCrsButton->setText( QStringLiteral( "%1 - %2" ).arg( mSrcCrs.authid(), mSrcCrs.isValid() ? mSrcCrs.description() : tr( "unknown" ) ) );
270+
mDstCrsButton->setText( QStringLiteral( "%1 - %2" ).arg( mDestCrs.authid(), mDestCrs.isValid() ? mDestCrs.description() : tr( "unknown" ) ) );
271271
}

src/ui/qgsdatumtransformdialogbase.ui

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -14,59 +14,15 @@
1414
<string>Select Datum Transformations</string>
1515
</property>
1616
<layout class="QGridLayout" name="gridLayout">
17-
<item row="3" column="0">
18-
<widget class="QLabel" name="mLabelSrcDescription">
19-
<property name="text">
20-
<string notr="true">Description</string>
21-
</property>
22-
<property name="alignment">
23-
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
24-
</property>
25-
<property name="wordWrap">
26-
<bool>true</bool>
27-
</property>
28-
</widget>
29-
</item>
30-
<item row="5" column="0" colspan="2">
31-
<layout class="QHBoxLayout" name="horizontalLayout">
32-
<item>
33-
<widget class="QCheckBox" name="mRememberSelectionCheckBox">
34-
<property name="text">
35-
<string>Remember selection</string>
36-
</property>
37-
</widget>
38-
</item>
39-
<item>
40-
<spacer name="horizontalSpacer">
41-
<property name="orientation">
42-
<enum>Qt::Horizontal</enum>
43-
</property>
44-
<property name="sizeHint" stdset="0">
45-
<size>
46-
<width>40</width>
47-
<height>20</height>
48-
</size>
49-
</property>
50-
</spacer>
51-
</item>
52-
<item>
53-
<widget class="QCheckBox" name="mHideDeprecatedCheckBox">
54-
<property name="text">
55-
<string>Hide deprecated</string>
56-
</property>
57-
</widget>
58-
</item>
59-
</layout>
60-
</item>
6117
<item row="1" column="0">
6218
<widget class="QLabel" name="label_2">
6319
<property name="text">
6420
<string>Destination CRS</string>
6521
</property>
6622
</widget>
6723
</item>
68-
<item row="3" column="1">
69-
<widget class="QLabel" name="mLabelDstDescription">
24+
<item row="3" column="0">
25+
<widget class="QLabel" name="mLabelSrcDescription">
7026
<property name="text">
7127
<string notr="true">Description</string>
7228
</property>
@@ -86,16 +42,16 @@
8642
</widget>
8743
</item>
8844
<item row="0" column="1">
89-
<widget class="QLabel" name="mLabelSrcCrs">
45+
<widget class="QPushButton" name="mSourceCrsButton">
9046
<property name="text">
91-
<string notr="true">Source CRS</string>
47+
<string>source CRS</string>
9248
</property>
9349
</widget>
9450
</item>
9551
<item row="1" column="1">
96-
<widget class="QLabel" name="mLabelDstCrs">
52+
<widget class="QPushButton" name="mDstCrsButton">
9753
<property name="text">
98-
<string notr="true">Destination CRS</string>
54+
<string>destination CRS</string>
9955
</property>
10056
</widget>
10157
</item>
@@ -118,6 +74,50 @@
11874
</column>
11975
</widget>
12076
</item>
77+
<item row="3" column="1">
78+
<widget class="QLabel" name="mLabelDstDescription">
79+
<property name="text">
80+
<string notr="true">Description</string>
81+
</property>
82+
<property name="alignment">
83+
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
84+
</property>
85+
<property name="wordWrap">
86+
<bool>true</bool>
87+
</property>
88+
</widget>
89+
</item>
90+
<item row="5" column="0" colspan="2">
91+
<layout class="QHBoxLayout" name="horizontalLayout">
92+
<item>
93+
<widget class="QCheckBox" name="mRememberSelectionCheckBox">
94+
<property name="text">
95+
<string>Remember selection</string>
96+
</property>
97+
</widget>
98+
</item>
99+
<item>
100+
<spacer name="horizontalSpacer">
101+
<property name="orientation">
102+
<enum>Qt::Horizontal</enum>
103+
</property>
104+
<property name="sizeHint" stdset="0">
105+
<size>
106+
<width>40</width>
107+
<height>20</height>
108+
</size>
109+
</property>
110+
</spacer>
111+
</item>
112+
<item>
113+
<widget class="QCheckBox" name="mHideDeprecatedCheckBox">
114+
<property name="text">
115+
<string>Hide deprecated</string>
116+
</property>
117+
</widget>
118+
</item>
119+
</layout>
120+
</item>
121121
<item row="6" column="0" colspan="2">
122122
<widget class="QDialogButtonBox" name="buttonBox">
123123
<property name="orientation">

0 commit comments

Comments
 (0)