Skip to content

Commit 4b3355f

Browse files
committed
More multipage changes
1 parent f70e716 commit 4b3355f

File tree

2 files changed

+45
-67
lines changed

2 files changed

+45
-67
lines changed

src/core/composer/qgscomposition.cpp

Lines changed: 43 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,7 @@ QgsComposition::QgsComposition():
5252

5353
QgsComposition::~QgsComposition()
5454
{
55-
for ( int i = 0; i < mPages.size(); ++i )
56-
{
57-
delete mPages.at( i );
58-
}
59-
55+
removePaperItems();
6056
// make sure that all composer items are removed before
6157
// this class is deconstructed - to avoid segfaults
6258
// when composer items access in destructor composition that isn't valid anymore
@@ -65,9 +61,13 @@ QgsComposition::~QgsComposition()
6561

6662
void QgsComposition::setPaperSize( double width, double height )
6763
{
64+
mPageWidth = width;
65+
mPageHeight = height;
66+
double currentY = 0;
6867
for ( int i = 0; i < mPages.size(); ++i )
6968
{
70-
mPages.at( i )->setRect( QRectF( 0, 0, width, height ) );
69+
mPages.at( i )->setRect( QRectF( 0, currentY, width, height ) );
70+
++currentY;
7171
}
7272
}
7373

@@ -213,13 +213,9 @@ bool QgsComposition::writeXML( QDomElement& composerElem, QDomDocument& doc )
213213
}
214214

215215
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() );
223219

224220
//snapping
225221
if ( mSnapToGrid )
@@ -250,20 +246,19 @@ bool QgsComposition::readXML( const QDomElement& compositionElem, const QDomDocu
250246
return false;
251247
}
252248

253-
//create paper item
249+
//create pages
254250
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();
257254

258255
if ( widthConversionOk && heightConversionOk )
259256
{
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+
}
267262
}
268263

269264
//snapping
@@ -281,14 +276,7 @@ bool QgsComposition::readXML( const QDomElement& compositionElem, const QDomDocu
281276
mPrintAsRaster = compositionElem.attribute( "printAsRaster" ).toInt();
282277

283278
mPrintResolution = compositionElem.attribute( "printResolution", "300" ).toInt();
284-
285-
#if 0
286-
if ( mPaperItem )
287-
{
288-
mPaperItem->update();
289-
}
290-
#endif //0
291-
279+
updatePaperItems();
292280
return true;
293281
}
294282

@@ -856,72 +844,42 @@ int QgsComposition::boundingRectOfSelectedItems( QRectF& bRect )
856844
void QgsComposition::setSnapToGridEnabled( bool b )
857845
{
858846
mSnapToGrid = b;
859-
#if 0
860-
if ( mPaperItem )
861-
{
862-
mPaperItem->update();
863-
}
864-
#endif //0
847+
updatePaperItems();
865848
saveSettings();
866849
}
867850

868851
void QgsComposition::setSnapGridResolution( double r )
869852
{
870853
mSnapGridResolution = r;
871-
#if 0
872-
if ( mPaperItem )
873-
{
874-
mPaperItem->update();
875-
}
876-
#endif //0
854+
updatePaperItems();
877855
saveSettings();
878856
}
879857

880858
void QgsComposition::setSnapGridOffsetX( double offset )
881859
{
882860
mSnapGridOffsetX = offset;
883-
#if 0
884-
if ( mPaperItem )
885-
{
886-
mPaperItem->update();
887-
}
888-
#endif //0
861+
updatePaperItems();
889862
saveSettings();
890863
}
891864

892865
void QgsComposition::setSnapGridOffsetY( double offset )
893866
{
894867
mSnapGridOffsetY = offset;
895-
#if 0
896-
if ( mPaperItem )
897-
{
898-
mPaperItem->update();
899-
}
900-
#endif //0
868+
updatePaperItems();
901869
saveSettings();
902870
}
903871

904872
void QgsComposition::setGridPen( const QPen& p )
905873
{
906874
mGridPen = p;
907-
#if 0
908-
if ( mPaperItem )
909-
{
910-
mPaperItem->update();
911-
}
912-
#endif //0
875+
updatePaperItems();
913876
saveSettings();
914877
}
915878

916879
void QgsComposition::setGridStyle( GridStyle s )
917880
{
918881
mGridStyle = s;
919-
#if 0
920-
if ( mPaperItem )
921-
{
922-
mPaperItem->update();
923-
}
924-
#endif //0
882+
updatePaperItems();
925883
saveSettings();
926884
}
927885

@@ -1242,6 +1200,15 @@ void QgsComposition::sendItemAddedSignal( QgsComposerItem* item )
12421200
}
12431201
}
12441202

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+
12451212
void QgsComposition::addPaperItem()
12461213
{
12471214
double paperHeight = this->paperHeight();
@@ -1253,3 +1220,12 @@ void QgsComposition::addPaperItem()
12531220
paperItem->setZValue( 0 );
12541221
mPages.push_back( paperItem );
12551222
}
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+
}

src/core/composer/qgscomposition.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,9 @@ class CORE_EXPORT QgsComposition: public QGraphicsScene
267267

268268
void connectAddRemoveCommandSignals( QgsAddRemoveItemCommand* c );
269269

270+
void updatePaperItems();
270271
void addPaperItem();
272+
void removePaperItems();
271273

272274
signals:
273275
void paperSizeChanged();

0 commit comments

Comments
 (0)