Skip to content

Commit f4eae28

Browse files
3nidsnyalldawson
authored andcommittedDec 15, 2017
started datum UI refactoring
1 parent 3916628 commit f4eae28

8 files changed

+268
-69
lines changed
 

‎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+
}

‎src/app/qgsdatumtransformtablemodel.h

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">

‎src/ui/qgsprojectpropertiesbase.ui

Lines changed: 99 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -259,8 +259,8 @@
259259
<rect>
260260
<x>0</x>
261261
<y>0</y>
262-
<width>565</width>
263-
<height>697</height>
262+
<width>676</width>
263+
<height>764</height>
264264
</rect>
265265
</property>
266266
<layout class="QVBoxLayout" name="verticalLayout_8">
@@ -787,12 +787,6 @@
787787
</rect>
788788
</property>
789789
<layout class="QVBoxLayout" name="verticalLayout_7">
790-
<property name="topMargin">
791-
<number>0</number>
792-
</property>
793-
<property name="bottomMargin">
794-
<number>0</number>
795-
</property>
796790
<item>
797791
<widget class="QGroupBox" name="cbxProjectionEnabled">
798792
<property name="title">
@@ -808,6 +802,70 @@
808802
</layout>
809803
</widget>
810804
</item>
805+
<item>
806+
<widget class="QGroupBox" name="mDatumTransformGroupBox">
807+
<property name="title">
808+
<string>Datum transformations</string>
809+
</property>
810+
<layout class="QGridLayout" name="gridLayout_2">
811+
<item row="0" column="2">
812+
<widget class="QToolButton" name="mDatumTransformEditButton">
813+
<property name="text">
814+
<string>...</string>
815+
</property>
816+
<property name="icon">
817+
<iconset resource="../../images/images.qrc">
818+
<normaloff>:/images/themes/default/mActionToggleEditing.svg</normaloff>:/images/themes/default/mActionToggleEditing.svg</iconset>
819+
</property>
820+
</widget>
821+
</item>
822+
<item row="0" column="1">
823+
<widget class="QToolButton" name="mDatumTransformRemoveButton">
824+
<property name="text">
825+
<string>...</string>
826+
</property>
827+
<property name="icon">
828+
<iconset resource="../../images/images.qrc">
829+
<normaloff>:/images/themes/default/symbologyRemove.svg</normaloff>:/images/themes/default/symbologyRemove.svg</iconset>
830+
</property>
831+
</widget>
832+
</item>
833+
<item row="0" column="0">
834+
<widget class="QToolButton" name="mDatumTransformAddButton">
835+
<property name="text">
836+
<string>...</string>
837+
</property>
838+
<property name="icon">
839+
<iconset resource="../../images/images.qrc">
840+
<normaloff>:/images/themes/default/symbologyAdd.svg</normaloff>:/images/themes/default/symbologyAdd.svg</iconset>
841+
</property>
842+
</widget>
843+
</item>
844+
<item row="0" column="3">
845+
<spacer name="horizontalSpacer_5">
846+
<property name="orientation">
847+
<enum>Qt::Horizontal</enum>
848+
</property>
849+
<property name="sizeHint" stdset="0">
850+
<size>
851+
<width>40</width>
852+
<height>20</height>
853+
</size>
854+
</property>
855+
</spacer>
856+
</item>
857+
<item row="1" column="0" colspan="4">
858+
<widget class="QTableView" name="mDatumTransformTableView"/>
859+
</item>
860+
</layout>
861+
<zorder>cbxProjectionEnabled</zorder>
862+
<zorder>mDatumTransformTableView</zorder>
863+
<zorder>mDatumTransformAddButton</zorder>
864+
<zorder>mDatumTransformRemoveButton</zorder>
865+
<zorder>mDatumTransformEditButton</zorder>
866+
<zorder>horizontalSpacer_5</zorder>
867+
</widget>
868+
</item>
811869
</layout>
812870
</widget>
813871
</widget>
@@ -841,8 +899,8 @@
841899
<rect>
842900
<x>0</x>
843901
<y>0</y>
844-
<width>132</width>
845-
<height>100</height>
902+
<width>676</width>
903+
<height>764</height>
846904
</rect>
847905
</property>
848906
<layout class="QVBoxLayout" name="verticalLayout_10">
@@ -927,8 +985,8 @@
927985
<rect>
928986
<x>0</x>
929987
<y>0</y>
930-
<width>269</width>
931-
<height>597</height>
988+
<width>676</width>
989+
<height>764</height>
932990
</rect>
933991
</property>
934992
<layout class="QVBoxLayout" name="verticalLayout_12">
@@ -1365,8 +1423,8 @@
13651423
<rect>
13661424
<x>0</x>
13671425
<y>0</y>
1368-
<width>598</width>
1369-
<height>2361</height>
1426+
<width>676</width>
1427+
<height>2363</height>
13701428
</rect>
13711429
</property>
13721430
<layout class="QVBoxLayout" name="verticalLayout_13">
@@ -2466,8 +2524,8 @@
24662524
<rect>
24672525
<x>0</x>
24682526
<y>0</y>
2469-
<width>156</width>
2470-
<height>59</height>
2527+
<width>676</width>
2528+
<height>764</height>
24712529
</rect>
24722530
</property>
24732531
<layout class="QVBoxLayout" name="verticalLayout_17">
@@ -2788,6 +2846,31 @@
27882846
</tabstops>
27892847
<resources>
27902848
<include location="../../images/images.qrc"/>
2849+
<include location="../../images/images.qrc"/>
2850+
<include location="../../images/images.qrc"/>
2851+
<include location="../../images/images.qrc"/>
2852+
<include location="../../images/images.qrc"/>
2853+
<include location="../../images/images.qrc"/>
2854+
<include location="../../images/images.qrc"/>
2855+
<include location="../../images/images.qrc"/>
2856+
<include location="../../images/images.qrc"/>
2857+
<include location="../../images/images.qrc"/>
2858+
<include location="../../images/images.qrc"/>
2859+
<include location="../../images/images.qrc"/>
2860+
<include location="../../images/images.qrc"/>
2861+
<include location="../../images/images.qrc"/>
2862+
<include location="../../images/images.qrc"/>
2863+
<include location="../../images/images.qrc"/>
2864+
<include location="../../images/images.qrc"/>
2865+
<include location="../../images/images.qrc"/>
2866+
<include location="../../images/images.qrc"/>
2867+
<include location="../../images/images.qrc"/>
2868+
<include location="../../images/images.qrc"/>
2869+
<include location="../../images/images.qrc"/>
2870+
<include location="../../images/images.qrc"/>
2871+
<include location="../../images/images.qrc"/>
2872+
<include location="../../images/images.qrc"/>
2873+
<include location="../../images/images.qrc"/>
27912874
</resources>
27922875
<connections>
27932876
<connection>

0 commit comments

Comments
 (0)
Please sign in to comment.