Skip to content

Commit

Permalink
Fix loading of composer map preview states after template read. Ticket
Browse files Browse the repository at this point in the history
  • Loading branch information
mhugent committed Jul 12, 2012
1 parent f3edf04 commit 3869a6c
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 17 deletions.
46 changes: 29 additions & 17 deletions src/app/composer/qgscomposer.cpp
Expand Up @@ -1094,23 +1094,8 @@ void QgsComposer::showEvent( QShowEvent* event )
{
if ( event->spontaneous() ) //event from the window system
{
//go through maps and restore original preview modes (show on demand after loading from project file)
QMap< QgsComposerMap*, int >::iterator mapIt = mMapsToRestore.begin();
for ( ; mapIt != mMapsToRestore.end(); ++mapIt )
{
mapIt.key()->setPreviewMode(( QgsComposerMap::PreviewMode )( mapIt.value() ) );
mapIt.key()->cache();
mapIt.key()->update();
}
mMapsToRestore.clear();

//create composer picture widget previews
QList< QgsComposerPictureWidget* >::iterator picIt = mPicturePreviews.begin();
for ( ; picIt != mPicturePreviews.end(); ++picIt )
{
( *picIt )->addStandardDirectoriesToPreview();
}
mPicturePreviews.clear();
restoreComposerMapStates();
initialiseComposerPicturePreviews();
}

#ifdef Q_WS_MAC
Expand Down Expand Up @@ -1505,6 +1490,9 @@ void QgsComposer::cleanupAfterTemplateRead()
}
}
}

restoreComposerMapStates();
initialiseComposerPicturePreviews();
}

void QgsComposer::on_mActionPageSetup_triggered()
Expand All @@ -1517,3 +1505,27 @@ void QgsComposer::on_mActionPageSetup_triggered()
QPageSetupDialog pageSetupDialog( &mPrinter, this );
pageSetupDialog.exec();
}

void QgsComposer::restoreComposerMapStates()
{
//go through maps and restore original preview modes (show on demand after loading from project file)
QMap< QgsComposerMap*, int >::iterator mapIt = mMapsToRestore.begin();
for ( ; mapIt != mMapsToRestore.end(); ++mapIt )
{
mapIt.key()->setPreviewMode(( QgsComposerMap::PreviewMode )( mapIt.value() ) );
mapIt.key()->cache();
mapIt.key()->update();
}
mMapsToRestore.clear();
}

void QgsComposer::initialiseComposerPicturePreviews()
{
//create composer picture widget previews
QList< QgsComposerPictureWidget* >::iterator picIt = mPicturePreviews.begin();
for ( ; picIt != mPicturePreviews.end(); ++picIt )
{
( *picIt )->addStandardDirectoriesToPreview();
}
mPicturePreviews.clear();
}
8 changes: 8 additions & 0 deletions src/app/composer/qgscomposer.h
Expand Up @@ -289,6 +289,14 @@ class QgsComposer: public QMainWindow, private Ui::QgsComposerBase
//! Removes all the item from the graphics scene and deletes them
void deleteItems();

//! Restores composer map preview states.
//! Initially after reading from xml, states are set to rectangle to achieve faster project loading.
void restoreComposerMapStates();

//! Fills icons into composer picture widgets
//! To make loading from project faster, the previews are generated when the composer becomes visible.
void initialiseComposerPicturePreviews();

/**Composer title*/
QString mTitle;

Expand Down

0 comments on commit 3869a6c

Please sign in to comment.