3737#include " qgsvectorlayer.h"
3838#include " qgsvectordataprovider.h"
3939#include " qgsexpression.h"
40+ #include " qgssymbolv2.h"
41+ #include " qgssymbollayerv2utils.h"
4042
4143#include < QDomDocument>
4244#include < QDomElement>
@@ -54,6 +56,7 @@ QgsComposition::QgsComposition( QgsMapRenderer* mapRenderer )
5456 , mPageWidth( 297 )
5557 , mPageHeight( 210 )
5658 , mSpaceBetweenPages( 10 )
59+ , mPageStyleSymbol( 0 )
5760 , mPrintAsRaster( false )
5861 , mGenerateWorldFile( false )
5962 , mWorldFileMap( 0 )
@@ -75,6 +78,7 @@ QgsComposition::QgsComposition( QgsMapRenderer* mapRenderer )
7578 , mPreventCursorChange( false )
7679{
7780 setBackgroundBrush ( Qt::gray );
81+ createDefaultPageStyleSymbol ();
7882 addPaperItem ();
7983
8084 // add mouse selection handles to composition, and initially hide
@@ -97,6 +101,7 @@ QgsComposition::QgsComposition()
97101 mPageWidth( 297 ),
98102 mPageHeight( 210 ),
99103 mSpaceBetweenPages( 10 ),
104+ mPageStyleSymbol( 0 ),
100105 mPrintAsRaster( false ),
101106 mGenerateWorldFile( false ),
102107 mWorldFileMap( 0 ),
@@ -133,6 +138,7 @@ QgsComposition::~QgsComposition()
133138 clear ();
134139 delete mActiveItemCommand ;
135140 delete mActiveMultiFrameCommand ;
141+ delete mPageStyleSymbol ;
136142}
137143
138144void QgsComposition::loadDefaults ()
@@ -200,6 +206,22 @@ int QgsComposition::numPages() const
200206 return mPages .size ();
201207}
202208
209+ void QgsComposition::setPageStyleSymbol ( QgsFillSymbolV2* symbol )
210+ {
211+ delete mPageStyleSymbol ;
212+ mPageStyleSymbol = symbol;
213+ }
214+
215+ void QgsComposition::createDefaultPageStyleSymbol ()
216+ {
217+ delete mPageStyleSymbol ;
218+ QgsStringMap properties;
219+ properties.insert ( " color" , " white" );
220+ properties.insert ( " style" , " solid" );
221+ properties.insert ( " style_border" , " no" );
222+ mPageStyleSymbol = QgsFillSymbolV2::createSimple ( properties );
223+ }
224+
203225QPointF QgsComposition::positionOnPage ( const QPointF & position ) const
204226{
205227 double y;
@@ -469,6 +491,9 @@ bool QgsComposition::writeXML( QDomElement& composerElem, QDomDocument& doc )
469491 compositionElem.setAttribute ( " paperHeight" , QString::number ( mPageHeight ) );
470492 compositionElem.setAttribute ( " numPages" , mPages .size () );
471493
494+ QDomElement pageStyleElem = QgsSymbolLayerV2Utils::saveSymbol ( QString (), mPageStyleSymbol , doc );
495+ compositionElem.appendChild ( pageStyleElem );
496+
472497 // snapping
473498 if ( mSnapToGrid )
474499 {
@@ -559,6 +584,13 @@ bool QgsComposition::readXML( const QDomElement& compositionElem, const QDomDocu
559584 emit paperSizeChanged ();
560585 int numPages = compositionElem.attribute ( " numPages" , " 1" ).toInt ();
561586
587+ QDomElement pageStyleSymbolElem = compositionElem.firstChildElement ( " symbol" );
588+ if ( !pageStyleSymbolElem.isNull () )
589+ {
590+ delete mPageStyleSymbol ;
591+ mPageStyleSymbol = dynamic_cast <QgsFillSymbolV2*>( QgsSymbolLayerV2Utils::loadSymbol ( pageStyleSymbolElem ) );
592+ }
593+
562594 if ( widthConversionOk && heightConversionOk )
563595 {
564596 removePaperItems ();
0 commit comments