|
QGIS API Documentation
master-3f58142
|
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 }