37
37
#include " qgsvectorlayer.h"
38
38
#include " qgsvectordataprovider.h"
39
39
#include " qgsexpression.h"
40
+ #include " qgssymbolv2.h"
41
+ #include " qgssymbollayerv2utils.h"
40
42
41
43
#include < QDomDocument>
42
44
#include < QDomElement>
@@ -54,6 +56,7 @@ QgsComposition::QgsComposition( QgsMapRenderer* mapRenderer )
54
56
, mPageWidth( 297 )
55
57
, mPageHeight( 210 )
56
58
, mSpaceBetweenPages( 10 )
59
+ , mPageStyleSymbol( 0 )
57
60
, mPrintAsRaster( false )
58
61
, mGenerateWorldFile( false )
59
62
, mWorldFileMap( 0 )
@@ -75,6 +78,7 @@ QgsComposition::QgsComposition( QgsMapRenderer* mapRenderer )
75
78
, mPreventCursorChange( false )
76
79
{
77
80
setBackgroundBrush ( Qt::gray );
81
+ createDefaultPageStyleSymbol ();
78
82
addPaperItem ();
79
83
80
84
// add mouse selection handles to composition, and initially hide
@@ -97,6 +101,7 @@ QgsComposition::QgsComposition()
97
101
mPageWidth( 297 ),
98
102
mPageHeight( 210 ),
99
103
mSpaceBetweenPages( 10 ),
104
+ mPageStyleSymbol( 0 ),
100
105
mPrintAsRaster( false ),
101
106
mGenerateWorldFile( false ),
102
107
mWorldFileMap( 0 ),
@@ -133,6 +138,7 @@ QgsComposition::~QgsComposition()
133
138
clear ();
134
139
delete mActiveItemCommand ;
135
140
delete mActiveMultiFrameCommand ;
141
+ delete mPageStyleSymbol ;
136
142
}
137
143
138
144
void QgsComposition::loadDefaults ()
@@ -200,6 +206,22 @@ int QgsComposition::numPages() const
200
206
return mPages .size ();
201
207
}
202
208
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
+
203
225
QPointF QgsComposition::positionOnPage ( const QPointF & position ) const
204
226
{
205
227
double y;
@@ -469,6 +491,9 @@ bool QgsComposition::writeXML( QDomElement& composerElem, QDomDocument& doc )
469
491
compositionElem.setAttribute ( " paperHeight" , QString::number ( mPageHeight ) );
470
492
compositionElem.setAttribute ( " numPages" , mPages .size () );
471
493
494
+ QDomElement pageStyleElem = QgsSymbolLayerV2Utils::saveSymbol ( QString (), mPageStyleSymbol , doc );
495
+ compositionElem.appendChild ( pageStyleElem );
496
+
472
497
// snapping
473
498
if ( mSnapToGrid )
474
499
{
@@ -559,6 +584,13 @@ bool QgsComposition::readXML( const QDomElement& compositionElem, const QDomDocu
559
584
emit paperSizeChanged ();
560
585
int numPages = compositionElem.attribute ( " numPages" , " 1" ).toInt ();
561
586
587
+ QDomElement pageStyleSymbolElem = compositionElem.firstChildElement ( " symbol" );
588
+ if ( !pageStyleSymbolElem.isNull () )
589
+ {
590
+ delete mPageStyleSymbol ;
591
+ mPageStyleSymbol = dynamic_cast <QgsFillSymbolV2*>( QgsSymbolLayerV2Utils::loadSymbol ( pageStyleSymbolElem ) );
592
+ }
593
+
562
594
if ( widthConversionOk && heightConversionOk )
563
595
{
564
596
removePaperItems ();
0 commit comments