@@ -52,11 +52,7 @@ QgsComposition::QgsComposition():
52
52
53
53
QgsComposition::~QgsComposition ()
54
54
{
55
- for ( int i = 0 ; i < mPages .size (); ++i )
56
- {
57
- delete mPages .at ( i );
58
- }
59
-
55
+ removePaperItems ();
60
56
// make sure that all composer items are removed before
61
57
// this class is deconstructed - to avoid segfaults
62
58
// when composer items access in destructor composition that isn't valid anymore
@@ -65,9 +61,13 @@ QgsComposition::~QgsComposition()
65
61
66
62
void QgsComposition::setPaperSize ( double width, double height )
67
63
{
64
+ mPageWidth = width;
65
+ mPageHeight = height;
66
+ double currentY = 0 ;
68
67
for ( int i = 0 ; i < mPages .size (); ++i )
69
68
{
70
- mPages .at ( i )->setRect ( QRectF ( 0 , 0 , width, height ) );
69
+ mPages .at ( i )->setRect ( QRectF ( 0 , currentY, width, height ) );
70
+ ++currentY;
71
71
}
72
72
}
73
73
@@ -213,13 +213,9 @@ bool QgsComposition::writeXML( QDomElement& composerElem, QDomDocument& doc )
213
213
}
214
214
215
215
QDomElement compositionElem = doc.createElement ( " Composition" );
216
- #if 0
217
- if ( mPaperItem )
218
- {
219
- compositionElem.setAttribute( "paperWidth", QString::number( mPaperItem->rect().width() ) );
220
- compositionElem.setAttribute( "paperHeight", QString::number( mPaperItem->rect().height() ) );
221
- }
222
- #endif // 0
216
+ compositionElem.setAttribute ( " paperWidth" , QString::number ( mPageWidth ) );
217
+ compositionElem.setAttribute ( " paperHeight" , QString::number ( mPageHeight ) );
218
+ compositionElem.setAttribute ( " numPages" , mPages .size () );
223
219
224
220
// snapping
225
221
if ( mSnapToGrid )
@@ -250,20 +246,19 @@ bool QgsComposition::readXML( const QDomElement& compositionElem, const QDomDocu
250
246
return false ;
251
247
}
252
248
253
- // create paper item
249
+ // create pages
254
250
bool widthConversionOk, heightConversionOk;
255
- double paperWidth = compositionElem.attribute ( " paperWidth" ).toDouble ( &widthConversionOk );
256
- double paperHeight = compositionElem.attribute ( " paperHeight" ).toDouble ( &heightConversionOk );
251
+ mPageWidth = compositionElem.attribute ( " paperWidth" ).toDouble ( &widthConversionOk );
252
+ mPageHeight = compositionElem.attribute ( " paperHeight" ).toDouble ( &heightConversionOk );
253
+ int numPages = compositionElem.attribute ( " numPages" , " 1" ).toInt ();
257
254
258
255
if ( widthConversionOk && heightConversionOk )
259
256
{
260
- #if 0
261
- delete mPaperItem;
262
- mPaperItem = new QgsPaperItem( 0, 0, paperWidth, paperHeight, this );
263
- mPaperItem->setBrush( Qt::white );
264
- addItem( mPaperItem );
265
- mPaperItem->setZValue( 0 );
266
- #endif // 0
257
+ removePaperItems ();
258
+ for ( int i = 0 ; i < numPages; ++i )
259
+ {
260
+ addPaperItem ();
261
+ }
267
262
}
268
263
269
264
// snapping
@@ -281,14 +276,7 @@ bool QgsComposition::readXML( const QDomElement& compositionElem, const QDomDocu
281
276
mPrintAsRaster = compositionElem.attribute ( " printAsRaster" ).toInt ();
282
277
283
278
mPrintResolution = compositionElem.attribute ( " printResolution" , " 300" ).toInt ();
284
-
285
- #if 0
286
- if ( mPaperItem )
287
- {
288
- mPaperItem->update();
289
- }
290
- #endif // 0
291
-
279
+ updatePaperItems ();
292
280
return true ;
293
281
}
294
282
@@ -856,72 +844,42 @@ int QgsComposition::boundingRectOfSelectedItems( QRectF& bRect )
856
844
void QgsComposition::setSnapToGridEnabled ( bool b )
857
845
{
858
846
mSnapToGrid = b;
859
- #if 0
860
- if ( mPaperItem )
861
- {
862
- mPaperItem->update();
863
- }
864
- #endif // 0
847
+ updatePaperItems ();
865
848
saveSettings ();
866
849
}
867
850
868
851
void QgsComposition::setSnapGridResolution ( double r )
869
852
{
870
853
mSnapGridResolution = r;
871
- #if 0
872
- if ( mPaperItem )
873
- {
874
- mPaperItem->update();
875
- }
876
- #endif // 0
854
+ updatePaperItems ();
877
855
saveSettings ();
878
856
}
879
857
880
858
void QgsComposition::setSnapGridOffsetX ( double offset )
881
859
{
882
860
mSnapGridOffsetX = offset;
883
- #if 0
884
- if ( mPaperItem )
885
- {
886
- mPaperItem->update();
887
- }
888
- #endif // 0
861
+ updatePaperItems ();
889
862
saveSettings ();
890
863
}
891
864
892
865
void QgsComposition::setSnapGridOffsetY ( double offset )
893
866
{
894
867
mSnapGridOffsetY = offset;
895
- #if 0
896
- if ( mPaperItem )
897
- {
898
- mPaperItem->update();
899
- }
900
- #endif // 0
868
+ updatePaperItems ();
901
869
saveSettings ();
902
870
}
903
871
904
872
void QgsComposition::setGridPen ( const QPen& p )
905
873
{
906
874
mGridPen = p;
907
- #if 0
908
- if ( mPaperItem )
909
- {
910
- mPaperItem->update();
911
- }
912
- #endif // 0
875
+ updatePaperItems ();
913
876
saveSettings ();
914
877
}
915
878
916
879
void QgsComposition::setGridStyle ( GridStyle s )
917
880
{
918
881
mGridStyle = s;
919
- #if 0
920
- if ( mPaperItem )
921
- {
922
- mPaperItem->update();
923
- }
924
- #endif // 0
882
+ updatePaperItems ();
925
883
saveSettings ();
926
884
}
927
885
@@ -1242,6 +1200,15 @@ void QgsComposition::sendItemAddedSignal( QgsComposerItem* item )
1242
1200
}
1243
1201
}
1244
1202
1203
+ void QgsComposition::updatePaperItems ()
1204
+ {
1205
+ QList< QgsPaperItem* >::iterator paperIt = mPages .begin ();
1206
+ for ( ; paperIt != mPages .end (); ++paperIt )
1207
+ {
1208
+ ( *paperIt )->update ();
1209
+ }
1210
+ }
1211
+
1245
1212
void QgsComposition::addPaperItem ()
1246
1213
{
1247
1214
double paperHeight = this ->paperHeight ();
@@ -1253,3 +1220,12 @@ void QgsComposition::addPaperItem()
1253
1220
paperItem->setZValue ( 0 );
1254
1221
mPages .push_back ( paperItem );
1255
1222
}
1223
+
1224
+ void QgsComposition::removePaperItems ()
1225
+ {
1226
+ for ( int i = 0 ; i < mPages .size (); ++i )
1227
+ {
1228
+ delete mPages .at ( i );
1229
+ }
1230
+ mPages .clear ();
1231
+ }
0 commit comments