Skip to content

Commit b9d2615

Browse files
committedJul 26, 2012
Extend content to next pages if resize mode is extend
1 parent a928d57 commit b9d2615

File tree

3 files changed

+27
-16
lines changed

3 files changed

+27
-16
lines changed
 

‎src/core/composer/qgscomposerhtml.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ QgsComposerHtml::QgsComposerHtml( QgsComposition* c, qreal x, qreal y, qreal wid
3030
setUrl( QUrl( "http://www.qgis.org" ) );//test
3131
QgsComposerFrame* frame = new QgsComposerFrame( c, this, x, y, width, height );
3232
addFrame( frame );
33-
mComposition->addItem( frame );
3433
recalculateFrameSizes();
3534
}
3635

‎src/core/composer/qgscomposermultiframe.cpp

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,21 @@ void QgsComposerMultiFrame::recalculateFrameSizes()
4343
double currentHeight = 0;
4444
QgsComposerFrame* currentItem = 0;
4545

46-
QList<QgsComposerFrame*>::iterator frameIt = mFrameItems.begin();
47-
for ( ; frameIt != mFrameItems.end(); ++frameIt )
46+
for ( int i = 0; i < mFrameItems.size(); ++i )
4847
{
4948
if ( currentY >= totalHeight )
5049
{
50+
if ( mResizeMode == ExtendToNextPage ) //remove unneeded frames in extent mode
51+
{
52+
for ( int j = mFrameItems.size(); j > i; --j )
53+
{
54+
removeFrame( j - 1 );
55+
}
56+
}
5157
return;
5258
}
53-
currentItem = *frameIt;
59+
60+
currentItem = mFrameItems.value( i );
5461
currentHeight = currentItem->rect().height();
5562
currentItem->setContentSection( QRectF( 0, currentY, currentItem->rect().width(), currentHeight ) );
5663
currentItem->update();
@@ -64,9 +71,8 @@ void QgsComposerMultiFrame::recalculateFrameSizes()
6471
{
6572
//find out on which page the lower left point of the last frame is
6673
int page = currentItem->transform().dy() / ( mComposition->paperHeight() + mComposition->spaceBetweenPages() );
67-
//double offset = currentItem->transform().dy() - page * ( mComposition->paperHeight() + mComposition->spaceBetweenPages() );
6874

69-
//e.v. add a new page
75+
//add new pages if necessary
7076
if ( mComposition->numPages() < ( page + 2 ) )
7177
{
7278
mComposition->setNumPages( page + 2 );
@@ -79,22 +85,27 @@ void QgsComposerMultiFrame::recalculateFrameSizes()
7985
currentY += newFrame->rect().height();
8086
currentItem = newFrame;
8187
addFrame( newFrame );
82-
mComposition->addItem( newFrame );
8388
}
8489
}
85-
86-
#if 0
87-
if ( mFrameItems.size() > 0 )
88-
{
89-
QSizeF size = totalSize();
90-
QgsComposerFrame* item = mFrameItems[0];
91-
item->setContentSection( QRectF( 0, 0, item->rect().width(), item->rect().height() ) );
92-
}
93-
#endif //0
9490
}
9591

9692
void QgsComposerMultiFrame::addFrame( QgsComposerFrame* frame )
9793
{
9894
mFrameItems.push_back( frame );
9995
QObject::connect( frame, SIGNAL( sizeChanged() ), this, SLOT( recalculateFrameSizes() ) );
96+
QObject::connect( frame, SIGNAL( destroyed() ), this, SLOT( recalculateFrameSizes() ) );
97+
if ( mComposition )
98+
{
99+
mComposition->addItem( frame );
100+
}
101+
}
102+
103+
void QgsComposerMultiFrame::removeFrame( int i )
104+
{
105+
QgsComposerFrame* frameItem = mFrameItems[i];
106+
if ( mComposition )
107+
{
108+
mComposition->removeComposerItem( frameItem );
109+
}
110+
mFrameItems.removeAt( i );
100111
}

‎src/core/composer/qgscomposermultiframe.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class QgsComposerMultiFrame: public QObject
4242
virtual void render( QPainter* p, const QRectF& renderExtent ) = 0;
4343

4444
void addFrame( QgsComposerFrame* frame );
45+
void removeFrame( int i );
4546

4647
void setResizeMode( ResizeMode mode ) { mResizeMode = mode; }
4748
ResizeMode resizeMode() const { return mResizeMode; }

0 commit comments

Comments
 (0)
Please sign in to comment.