Skip to content

Commit 36b0f65

Browse files
committed
Cleanup decoration code
1 parent 03ec7ed commit 36b0f65

16 files changed

+93
-143
lines changed

src/app/qgsdecorationcopyright.cpp

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,10 @@ email : tim@linfiniti.com
4343

4444
QgsDecorationCopyright::QgsDecorationCopyright( QObject* parent )
4545
: QgsDecorationItem( parent )
46+
, mMarginHorizontal( 0 )
47+
, mMarginVertical( 0 )
4648
{
47-
mPlacementLabels << tr( "Bottom Left" ) << tr( "Top Left" )
48-
<< tr( "Top Right" ) << tr( "Bottom Right" );
49-
mMarginHorizontal = 0;
50-
mMarginVertical = 0;
49+
mPlacement = BottomRight;
5150

5251
setName( "Copyright Label" );
5352
// initialise default values in the gui
@@ -69,7 +68,6 @@ void QgsDecorationCopyright::projectRead()
6968
// mQFont.setPointSize( QgsProject::instance()->readNumEntry( "CopyrightLabel", "/FontSize", 9 ) );
7069
QgsProject* prj = QgsProject::instance();
7170
mLabelQString = prj->readEntry( mNameConfig, "/Label", defString );
72-
mPlacementIndex = prj->readNumEntry( mNameConfig, "/Placement", 3 );
7371
mMarginHorizontal = QgsProject::instance()->readNumEntry( mNameConfig, "/MarginH", 0 );
7472
mMarginVertical = QgsProject::instance()->readNumEntry( mNameConfig, "/MarginV", 0 );
7573
mLabelQColor.setNamedColor( prj->readEntry( mNameConfig, "/Color", "#000000" ) ); // default color is black
@@ -83,7 +81,6 @@ void QgsDecorationCopyright::saveToProject()
8381
prj->writeEntry( mNameConfig, "/FontSize", mQFont.pointSize() );
8482
prj->writeEntry( mNameConfig, "/Label", mLabelQString );
8583
prj->writeEntry( mNameConfig, "/Color", mLabelQColor.name() );
86-
prj->writeEntry( mNameConfig, "/Placement", mPlacementIndex );
8784
prj->writeEntry( mNameConfig, "/MarginH", mMarginHorizontal );
8885
prj->writeEntry( mNameConfig, "/MarginV", mMarginVertical );
8986
}
@@ -124,23 +121,23 @@ void QgsDecorationCopyright::render( QPainter * theQPainter )
124121
myYOffset = int(( float( myHeight - size.height() )
125122
/ 100. ) * float( mMarginVertical ) );
126123
//Determine placement of label from form combo box
127-
switch ( mPlacementIndex )
124+
switch ( mPlacement )
128125
{
129-
case 0: // Bottom Left. myXOffset is set above
126+
case BottomLeft: // Bottom Left. myXOffset is set above
130127
myYOffset = myHeight - myYOffset - size.height();
131128
break;
132-
case 1: // Top left. Already setup above
129+
case TopLeft: // Top left. Already setup above
133130
break;
134-
case 2: // Top Right. myYOffset is set above
131+
case TopRight: // Top Right. myYOffset is set above
135132
myXOffset = myWidth - myXOffset - size.width();
136133
break;
137-
case 3: // Bottom Right
134+
case BottomRight: // Bottom Right
138135
//Define bottom right hand corner start point
139136
myYOffset = myHeight - myYOffset - size.height();
140137
myXOffset = myWidth - myXOffset - size.width();
141138
break;
142139
default:
143-
QgsDebugMsg( QString( "Unknown placement index of %1" ).arg( mPlacementIndex ) );
140+
QgsDebugMsg( QString( "Unknown placement index of %1" ).arg( static_cast<int>( mPlacement ) ) );
144141
}
145142

146143
//Paint label to canvas

src/app/qgsdecorationcopyright.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,6 @@ class APP_EXPORT QgsDecorationCopyright : public QgsDecorationItem
5757
QString mLabelQString;
5858
//! This is the color for the copyright label
5959
QColor mLabelQColor;
60-
//! Placement of the copyright label - index and translated label names
61-
int mPlacementIndex;
62-
QStringList mPlacementLabels;
6360
//! enable or disable use of position percentage for placement
6461
int mMarginHorizontal;
6562
int mMarginVertical;

src/app/qgsdecorationcopyrightdialog.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,11 @@ QgsDecorationCopyrightDialog::QgsDecorationCopyrightDialog( QgsDecorationCopyrig
3737
// text
3838
txtCopyrightText->setPlainText( mDeco.mLabelQString );
3939
// placement
40-
cboPlacement->clear();
41-
cboPlacement->addItems( mDeco.mPlacementLabels );
42-
cboPlacement->setCurrentIndex( mDeco.mPlacementIndex );
40+
cboPlacement->addItem( tr( "Top left" ), QgsDecorationItem::TopLeft );
41+
cboPlacement->addItem( tr( "Top right" ), QgsDecorationItem::TopRight );
42+
cboPlacement->addItem( tr( "Bottom left" ), QgsDecorationItem::BottomLeft );
43+
cboPlacement->addItem( tr( "Bottom right" ), QgsDecorationItem::BottomRight );
44+
cboPlacement->setCurrentIndex( cboPlacement->findData( mDeco.placement() ) );
4345
spnHorizontal->setValue( mDeco.mMarginHorizontal );
4446
spnVertical->setValue( mDeco.mMarginVertical );
4547
// color
@@ -64,7 +66,7 @@ void QgsDecorationCopyrightDialog::on_buttonBox_accepted()
6466
mDeco.mQFont = txtCopyrightText->currentFont();
6567
mDeco.mLabelQString = txtCopyrightText->toPlainText();
6668
mDeco.mLabelQColor = pbnColorChooser->color();
67-
mDeco.mPlacementIndex = cboPlacement->currentIndex();
69+
mDeco.setPlacement( static_cast< QgsDecorationItem::Placement>( cboPlacement->itemData( cboPlacement->currentIndex() ).toInt() ) );
6870
mDeco.mMarginHorizontal = spnHorizontal->value();
6971
mDeco.mMarginVertical = spnVertical->value();
7072
mDeco.setEnabled( grpEnable->isChecked() );

src/app/qgsdecorationgrid.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,10 @@ void QgsDecorationGrid::projectRead()
9494
QgsDecorationItem::projectRead();
9595

9696
mEnabled = QgsProject::instance()->readBoolEntry( mNameConfig, "/Enabled", false );
97-
mMapUnits = ( QGis::UnitType ) QgsProject::instance()->readNumEntry( mNameConfig, "/MapUnits",
98-
QGis::UnknownUnit );
99-
mGridStyle = ( GridStyle ) QgsProject::instance()->readNumEntry( mNameConfig, "/Style",
100-
QgsDecorationGrid::Line );
97+
mMapUnits = static_cast< QGis::UnitType >( QgsProject::instance()->readNumEntry( mNameConfig, "/MapUnits",
98+
QGis::UnknownUnit ) );
99+
mGridStyle = static_cast< GridStyle >( QgsProject::instance()->readNumEntry( mNameConfig, "/Style",
100+
QgsDecorationGrid::Line ) );
101101
mGridIntervalX = QgsProject::instance()->readDoubleEntry( mNameConfig, "/IntervalX", 10 );
102102
mGridIntervalY = QgsProject::instance()->readDoubleEntry( mNameConfig, "/IntervalY", 10 );
103103
mGridOffsetX = QgsProject::instance()->readDoubleEntry( mNameConfig, "/OffsetX", 0 );
@@ -107,8 +107,8 @@ void QgsDecorationGrid::projectRead()
107107
// mGridAnnotationPosition = ( GridAnnotationPosition ) QgsProject::instance()->readNumEntry( mNameConfig,
108108
// "/AnnotationPosition", 0 );
109109
mGridAnnotationPosition = InsideMapFrame; // don't allow outside frame, doesn't make sense
110-
mGridAnnotationDirection = ( GridAnnotationDirection ) QgsProject::instance()->readNumEntry( mNameConfig,
111-
"/AnnotationDirection", 0 );
110+
mGridAnnotationDirection = static_cast< GridAnnotationDirection >( QgsProject::instance()->readNumEntry( mNameConfig,
111+
"/AnnotationDirection", 0 ) );
112112
QString fontStr = QgsProject::instance()->readEntry( mNameConfig, "/AnnotationFont", "" );
113113
if ( fontStr != "" )
114114
{
@@ -164,8 +164,8 @@ void QgsDecorationGrid::saveToProject()
164164
{
165165
QgsDecorationItem::saveToProject();
166166
QgsProject::instance()->writeEntry( mNameConfig, "/Enabled", mEnabled );
167-
QgsProject::instance()->writeEntry( mNameConfig, "/MapUnits", ( int ) mMapUnits );
168-
QgsProject::instance()->writeEntry( mNameConfig, "/Style", ( int ) mGridStyle );
167+
QgsProject::instance()->writeEntry( mNameConfig, "/MapUnits", static_cast< int >( mMapUnits ) );
168+
QgsProject::instance()->writeEntry( mNameConfig, "/Style", static_cast< int >( mGridStyle ) );
169169
QgsProject::instance()->writeEntry( mNameConfig, "/IntervalX", mGridIntervalX );
170170
QgsProject::instance()->writeEntry( mNameConfig, "/IntervalY", mGridIntervalY );
171171
QgsProject::instance()->writeEntry( mNameConfig, "/OffsetX", mGridOffsetX );
@@ -174,7 +174,7 @@ void QgsDecorationGrid::saveToProject()
174174
// missing mGridPen, but should use styles anyway
175175
QgsProject::instance()->writeEntry( mNameConfig, "/ShowAnnotation", mShowGridAnnotation );
176176
// QgsProject::instance()->writeEntry( mNameConfig, "/AnnotationPosition", ( int ) mGridAnnotationPosition );
177-
QgsProject::instance()->writeEntry( mNameConfig, "/AnnotationDirection", ( int ) mGridAnnotationDirection );
177+
QgsProject::instance()->writeEntry( mNameConfig, "/AnnotationDirection", static_cast< int >( mGridAnnotationDirection ) );
178178
QgsProject::instance()->writeEntry( mNameConfig, "/AnnotationFont", mGridAnnotationFont.toString() );
179179
QgsProject::instance()->writeEntry( mNameConfig, "/AnnotationFrameDistance", mAnnotationFrameDistance );
180180
QgsProject::instance()->writeEntry( mNameConfig, "/AnnotationPrecision", mGridAnnotationPrecision );
@@ -595,7 +595,7 @@ int QgsDecorationGrid::xGridLines( QList< QPair< qreal, QLineF > >& lines ) cons
595595
Q_ASSERT( fabs( len - lineWest.length() ) < 1e-6 ); // no shear
596596

597597
double roundCorrection = mapBoundingRect.top() > 0 ? 1.0 : 0.0;
598-
double dist = ( int )(( mapBoundingRect.top() - mGridOffsetY ) / mGridIntervalY + roundCorrection ) * mGridIntervalY + mGridOffsetY;
598+
double dist = static_cast< int >(( mapBoundingRect.top() - mGridOffsetY ) / mGridIntervalY + roundCorrection ) * mGridIntervalY + mGridOffsetY;
599599
dist = dist - mapBoundingRect.top();
600600
while ( dist < len )
601601
{
@@ -642,7 +642,7 @@ int QgsDecorationGrid::yGridLines( QList< QPair< qreal, QLineF > >& lines ) cons
642642

643643
const QRectF& mapBoundingRect = mapPolygon.boundingRect();
644644
double roundCorrection = mapBoundingRect.left() > 0 ? 1.0 : 0.0;
645-
double dist = ( int )(( mapBoundingRect.left() - mGridOffsetX ) / mGridIntervalX + roundCorrection ) * mGridIntervalX + mGridOffsetX;
645+
double dist = static_cast< int >(( mapBoundingRect.left() - mGridOffsetX ) / mGridIntervalX + roundCorrection ) * mGridIntervalX + mGridOffsetX;
646646
dist = dist - mapBoundingRect.left();
647647
while ( dist < len )
648648
{
@@ -767,7 +767,7 @@ bool QgsDecorationGrid::isDirty()
767767
// or if interval is 0
768768
if ( mMapUnits == QGis::UnknownUnit ||
769769
mMapUnits != QgisApp::instance()->mapCanvas()->mapSettings().mapUnits() ||
770-
mGridIntervalX == 0 || mGridIntervalY == 0 )
770+
qgsDoubleNear( mGridIntervalX, 0.0 ) || qgsDoubleNear( mGridIntervalY, 0.0 ) )
771771
return true;
772772
return false;
773773
}
@@ -796,15 +796,15 @@ bool QgsDecorationGrid::getIntervalFromExtent( double* values, bool useXAxis )
796796
else
797797
interval = ( extent.yMaximum() - extent.yMinimum() ) / 5;
798798
QgsDebugMsg( QString( "interval: %1" ).arg( interval ) );
799-
if ( interval != 0 )
799+
if ( !qgsDoubleNear( interval, 0.0 ) )
800800
{
801801
double interval2 = 0;
802802
int factor = pow( 10, floor( log10( interval ) ) );
803803
if ( factor != 0 )
804804
{
805805
interval2 = qRound( interval / factor ) * factor;
806806
QgsDebugMsg( QString( "interval2: %1" ).arg( interval2 ) );
807-
if ( interval2 != 0 )
807+
if ( !qgsDoubleNear( interval2, 0.0 ) )
808808
interval = interval2;
809809
}
810810
}

src/app/qgsdecorationgriddialog.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,9 @@ void QgsDecorationGridDialog::updateGuiElements()
7474
mOffsetXEdit->setText( QString::number( mDeco.gridOffsetX() ) );
7575
mOffsetYEdit->setText( QString::number( mDeco.gridOffsetY() ) );
7676

77-
mGridTypeComboBox->setCurrentIndex(( int ) mDeco.gridStyle() );
77+
mGridTypeComboBox->setCurrentIndex( static_cast< int >( mDeco.gridStyle() ) );
7878
mDrawAnnotationCheckBox->setChecked( mDeco.showGridAnnotation() );
79-
mAnnotationDirectionComboBox->setCurrentIndex(( int ) mDeco.gridAnnotationDirection() );
79+
mAnnotationDirectionComboBox->setCurrentIndex( static_cast< int >( mDeco.gridAnnotationDirection() ) );
8080
mCoordinatePrecisionSpinBox->setValue( mDeco.gridAnnotationPrecision() );
8181

8282
mDistanceToMapFrameSpinBox->setValue( mDeco.annotationFrameDistance() );

src/app/qgsdecorationitem.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,9 @@
4444

4545
QgsDecorationItem::QgsDecorationItem( QObject* parent )
4646
: QObject( parent )
47+
, mEnabled( false )
48+
, mPlacement( TopLeft )
4749
{
48-
mEnabled = false;
4950
}
5051

5152
QgsDecorationItem::~QgsDecorationItem()
@@ -63,12 +64,14 @@ void QgsDecorationItem::projectRead()
6364
{
6465
QgsDebugMsg( "Entered" );
6566
mEnabled = QgsProject::instance()->readBoolEntry( mNameConfig, "/Enabled", false );
67+
mPlacement = static_cast< Placement >( QgsProject::instance()->readNumEntry( mNameConfig, "/Placement", static_cast< int >( mPlacement ) ) );
6668
}
6769

6870
void QgsDecorationItem::saveToProject()
6971
{
7072
QgsDebugMsg( "Entered" );
7173
QgsProject::instance()->writeEntry( mNameConfig, "/Enabled", mEnabled );
74+
QgsProject::instance()->writeEntry( mNameConfig, "/Placement", static_cast< int >( mPlacement ) );
7275
}
7376
void QgsDecorationItem::setName( const char *name )
7477
{

src/app/qgsdecorationitem.h

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,16 @@ class APP_EXPORT QgsDecorationItem: public QObject
2727
{
2828
Q_OBJECT
2929
public:
30+
31+
//! Item placements
32+
enum Placement
33+
{
34+
BottomLeft = 0,
35+
TopLeft,
36+
TopRight,
37+
BottomRight,
38+
};
39+
3040
//! Constructor
3141
QgsDecorationItem( QObject* parent = nullptr );
3242
//! Destructor
@@ -35,6 +45,16 @@ class APP_EXPORT QgsDecorationItem: public QObject
3545
void setEnabled( bool enabled ) { mEnabled = enabled; }
3646
bool enabled() const { return mEnabled; }
3747

48+
/** Returns the current placement for the item.
49+
* @see setPlacement()
50+
*/
51+
Placement placement() const { return mPlacement; }
52+
53+
/** Sets the placement of the item.
54+
* @see placement()
55+
*/
56+
void setPlacement( Placement placement ) { mPlacement = placement; }
57+
3858
void update();
3959

4060
signals:
@@ -59,6 +79,9 @@ class APP_EXPORT QgsDecorationItem: public QObject
5979
/** True if decoration item has to be displayed*/
6080
bool mEnabled;
6181

82+
//! Placement of the decoration
83+
Placement mPlacement;
84+
6285
QString mName;
6386
QString mNameConfig;
6487
QString mNameTranslated;

src/app/qgsdecorationnortharrow.cpp

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,12 @@ const double QgsDecorationNorthArrow::TOL = 1e-8;
5656
*/
5757
QgsDecorationNorthArrow::QgsDecorationNorthArrow( QObject* parent )
5858
: QgsDecorationItem( parent )
59+
, mRotationInt( 0 )
60+
, mAutomatic( true )
61+
, mMarginHorizontal( 0 )
62+
, mMarginVertical( 0 )
5963
{
60-
mRotationInt = 0;
61-
mAutomatic = true;
62-
mPlacementLabels << tr( "Bottom Left" ) << tr( "Top Left" )
63-
<< tr( "Top Right" ) << tr( "Bottom Right" );
64-
mMarginHorizontal = 0;
65-
mMarginVertical = 0;
66-
64+
mPlacement = BottomLeft;
6765
setName( "North Arrow" );
6866
projectRead();
6967
}
@@ -76,7 +74,6 @@ void QgsDecorationNorthArrow::projectRead()
7674
{
7775
QgsDecorationItem::projectRead();
7876
mRotationInt = QgsProject::instance()->readNumEntry( mNameConfig, "/Rotation", 0 );
79-
mPlacementIndex = QgsProject::instance()->readNumEntry( mNameConfig, "/Placement", 0 );
8077
mAutomatic = QgsProject::instance()->readBoolEntry( mNameConfig, "/Automatic", true );
8178
mMarginHorizontal = QgsProject::instance()->readNumEntry( mNameConfig, "/MarginH", 0 );
8279
mMarginVertical = QgsProject::instance()->readNumEntry( mNameConfig, "/MarginV", 0 );
@@ -86,7 +83,6 @@ void QgsDecorationNorthArrow::saveToProject()
8683
{
8784
QgsDecorationItem::saveToProject();
8885
QgsProject::instance()->writeEntry( mNameConfig, "/Rotation", mRotationInt );
89-
QgsProject::instance()->writeEntry( mNameConfig, "/Placement", mPlacementIndex );
9086
QgsProject::instance()->writeEntry( mNameConfig, "/Automatic", mAutomatic );
9187
QgsProject::instance()->writeEntry( mNameConfig, "/MarginH", mMarginHorizontal );
9288
QgsProject::instance()->writeEntry( mNameConfig, "/MarginV", mMarginVertical );
@@ -153,18 +149,18 @@ void QgsDecorationNorthArrow::render( QPainter * theQPainter )
153149
/ 100. ) * float( mMarginVertical ) );
154150

155151
//Determine placement of label from form combo box
156-
switch ( mPlacementIndex )
152+
switch ( mPlacement )
157153
{
158-
case 0: // Bottom Left
154+
case BottomLeft:
159155
theQPainter->translate( myPercentageWidth, myHeight - myPercentageHeight - myQPixmap.height() );
160156
break;
161-
case 1: // Top Left
157+
case TopLeft:
162158
theQPainter->translate( myPercentageWidth, myPercentageHeight );
163159
break;
164-
case 2: // Top Right
160+
case TopRight:
165161
theQPainter->translate( myWidth - myPercentageWidth - myQPixmap.width(), myPercentageHeight );
166162
break;
167-
case 3: // Bottom Right
163+
case BottomRight:
168164
theQPainter->translate( myWidth - myPercentageWidth - myQPixmap.width(),
169165
myHeight - myPercentageHeight - myQPixmap.height() );
170166
break;

src/app/qgsdecorationnortharrow.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,6 @@ class APP_EXPORT QgsDecorationNorthArrow: public QgsDecorationItem
6565

6666
//! enable or disable the automatic setting of the arrow direction
6767
bool mAutomatic;
68-
// The placement index and translated text
69-
int mPlacementIndex;
70-
QStringList mPlacementLabels;
7168
//! margin values
7269
int mMarginHorizontal;
7370
int mMarginVertical;

src/app/qgsdecorationnortharrowdialog.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,11 @@ QgsDecorationNorthArrowDialog::QgsDecorationNorthArrowDialog( QgsDecorationNorth
3636
spinAngle->setValue( mDeco.mRotationInt );
3737

3838
// placement
39-
cboPlacement->clear();
40-
cboPlacement->addItems( mDeco.mPlacementLabels );
41-
cboPlacement->setCurrentIndex( mDeco.mPlacementIndex );
39+
cboPlacement->addItem( tr( "Top left" ), QgsDecorationItem::TopLeft );
40+
cboPlacement->addItem( tr( "Top right" ), QgsDecorationItem::TopRight );
41+
cboPlacement->addItem( tr( "Bottom left" ), QgsDecorationItem::BottomLeft );
42+
cboPlacement->addItem( tr( "Bottom right" ), QgsDecorationItem::BottomRight );
43+
cboPlacement->setCurrentIndex( cboPlacement->findData( mDeco.placement() ) );
4244
spinHorizontal->setValue( mDeco.mMarginHorizontal );
4345
spinVertical->setValue( mDeco.mMarginVertical );
4446

@@ -63,7 +65,7 @@ void QgsDecorationNorthArrowDialog::on_buttonBox_helpRequested()
6365
void QgsDecorationNorthArrowDialog::on_buttonBox_accepted()
6466
{
6567
mDeco.mRotationInt = sliderRotation->value();
66-
mDeco.mPlacementIndex = cboPlacement->currentIndex();
68+
mDeco.setPlacement( static_cast< QgsDecorationItem::Placement>( cboPlacement->itemData( cboPlacement->currentIndex() ).toInt() ) );
6769
mDeco.setEnabled( grpEnable->isChecked() );
6870
mDeco.mAutomatic = cboxAutomatic->isChecked();
6971
mDeco.mMarginHorizontal = spinHorizontal->value();

0 commit comments

Comments
 (0)