QGIS API Documentation  master-3f58142
src/core/composer/qgscomposermultiframecommand.cpp
Go to the documentation of this file.
00001 /***************************************************************************
00002                           qgscomposermultiframecommand.cpp
00003                           --------------------------------
00004     begin                : 2012-08-02
00005     copyright            : (C) 2012 by Marco Hugentobler
00006     email                : marco dot hugentobler at sourcepole dot ch
00007 ***************************************************************************/
00008 
00009 /***************************************************************************
00010  *                                                                         *
00011  *   This program is free software; you can redistribute it and/or modify  *
00012  *   it under the terms of the GNU General Public License as published by  *
00013  *   the Free Software Foundation; either version 2 of the License, or     *
00014  *   (at your option) any later version.                                   *
00015  *                                                                         *
00016  ***************************************************************************/
00017 
00018 #include "qgscomposermultiframecommand.h"
00019 #include "qgscomposermultiframe.h"
00020 
00021 QgsComposerMultiFrameCommand::QgsComposerMultiFrameCommand( QgsComposerMultiFrame* multiFrame, const QString& text, QUndoCommand* parent ):
00022     QUndoCommand( text, parent ), mMultiFrame( multiFrame ), mFirstRun( true )
00023 {
00024 }
00025 
00026 QgsComposerMultiFrameCommand::QgsComposerMultiFrameCommand(): QUndoCommand( "", 0 ), mMultiFrame( 0 ), mFirstRun( false )
00027 {
00028 }
00029 
00030 QgsComposerMultiFrameCommand::~QgsComposerMultiFrameCommand()
00031 {
00032 }
00033 
00034 void QgsComposerMultiFrameCommand::undo()
00035 {
00036   restoreState( mPreviousState );
00037 }
00038 
00039 void QgsComposerMultiFrameCommand::redo()
00040 {
00041   if ( checkFirstRun() )
00042   {
00043     return;
00044   }
00045   restoreState( mAfterState );
00046 }
00047 
00048 void QgsComposerMultiFrameCommand::savePreviousState()
00049 {
00050   saveState( mPreviousState );
00051 }
00052 
00053 void QgsComposerMultiFrameCommand::saveAfterState()
00054 {
00055   saveState( mAfterState );
00056 }
00057 
00058 void QgsComposerMultiFrameCommand::saveState( QDomDocument& stateDoc )
00059 {
00060   if ( mMultiFrame )
00061   {
00062     stateDoc.clear();
00063     QDomElement documentElement = stateDoc.createElement( "ComposerMultiFrameState" );
00064     mMultiFrame->writeXML( documentElement, stateDoc );
00065     stateDoc.appendChild( documentElement );
00066   }
00067 }
00068 
00069 void QgsComposerMultiFrameCommand::restoreState( QDomDocument& stateDoc )
00070 {
00071   if ( mMultiFrame )
00072   {
00073     mMultiFrame->readXML( stateDoc.documentElement().firstChild().toElement(), stateDoc );
00074   }
00075 }
00076 
00077 bool QgsComposerMultiFrameCommand::checkFirstRun()
00078 {
00079   if ( !mFirstRun )
00080   {
00081     return false;
00082   }
00083   mFirstRun = false;
00084   return true;
00085 }
00086 
00087 bool QgsComposerMultiFrameCommand::containsChange() const
00088 {
00089   return !( mPreviousState.isNull() || mAfterState.isNull() || mPreviousState.toString() == mAfterState.toString() );
00090 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines