00001
00002
00003
00004
00005
00006
00007 #include "CmdSettingsGridDisplay.h"
00008 #include "Document.h"
00009 #include "DocumentSerialize.h"
00010 #include "Logger.h"
00011 #include "MainWindow.h"
00012 #include <QXmlStreamReader>
00013 #include "Xml.h"
00014
00015 const QString CMD_DESCRIPTION ("Grid Display settings");
00016
00017 CmdSettingsGridDisplay::CmdSettingsGridDisplay(MainWindow &mainWindow,
00018 Document &document,
00019 const DocumentModelGridDisplay &modelGridDisplayBefore,
00020 const DocumentModelGridDisplay &modelGridDisplayAfter) :
00021 CmdAbstract(mainWindow,
00022 document,
00023 CMD_DESCRIPTION),
00024 m_modelGridDisplayBefore (modelGridDisplayBefore),
00025 m_modelGridDisplayAfter (modelGridDisplayAfter)
00026 {
00027 LOG4CPP_INFO_S ((*mainCat)) << "CmdSettingsGridDisplay::CmdSettingsGridDisplay";
00028 }
00029
00030 CmdSettingsGridDisplay::CmdSettingsGridDisplay (MainWindow &mainWindow,
00031 Document &document,
00032 const QString &cmdDescription,
00033 QXmlStreamReader &reader) :
00034 CmdAbstract (mainWindow,
00035 document,
00036 cmdDescription)
00037 {
00038 LOG4CPP_INFO_S ((*mainCat)) << "CmdSettingsGridDisplay::CmdSettingsGridDisplay";
00039
00040 bool success = true;
00041
00042
00043 bool isBefore = true;
00044 while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
00045 (reader.name() != DOCUMENT_SERIALIZE_CMD)){
00046 loadNextFromReader(reader);
00047 if (reader.atEnd()) {
00048 xmlExitWithError (reader,
00049 QString ("%1 %2")
00050 .arg (QObject::tr ("Reached end of file before finding end element for"))
00051 .arg (DOCUMENT_SERIALIZE_CMD));
00052 success = false;
00053 break;
00054 }
00055
00056 if ((reader.tokenType() == QXmlStreamReader::StartElement) &&
00057 (reader.name() == DOCUMENT_SERIALIZE_GRID_DISPLAY)) {
00058
00059 if (isBefore) {
00060
00061 m_modelGridDisplayBefore.loadXml (reader);
00062 isBefore = false;
00063
00064 } else {
00065
00066 m_modelGridDisplayAfter.loadXml (reader);
00067
00068 }
00069 }
00070 }
00071
00072 if (!success) {
00073 reader.raiseError ("Cannot read grid display settings");
00074 }
00075 }
00076
00077 CmdSettingsGridDisplay::~CmdSettingsGridDisplay()
00078 {
00079 }
00080
00081 void CmdSettingsGridDisplay::cmdRedo ()
00082 {
00083 LOG4CPP_INFO_S ((*mainCat)) << "CmdSettingsGridDisplay::cmdRedo";
00084
00085 saveOrCheckPreCommandDocumentStateHash (document ());
00086 mainWindow().updateSettingsGridDisplay(m_modelGridDisplayAfter);
00087 mainWindow().updateAfterCommand();
00088 saveOrCheckPostCommandDocumentStateHash (document ());
00089 }
00090
00091 void CmdSettingsGridDisplay::cmdUndo ()
00092 {
00093 LOG4CPP_INFO_S ((*mainCat)) << "CmdSettingsGridDisplay::cmdUndo";
00094
00095 saveOrCheckPostCommandDocumentStateHash (document ());
00096 mainWindow().updateSettingsGridDisplay(m_modelGridDisplayBefore);
00097 mainWindow().updateAfterCommand();
00098 saveOrCheckPreCommandDocumentStateHash (document ());
00099 }
00100
00101 void CmdSettingsGridDisplay::saveXml (QXmlStreamWriter &writer) const
00102 {
00103 writer.writeStartElement(DOCUMENT_SERIALIZE_CMD);
00104 writer.writeAttribute(DOCUMENT_SERIALIZE_CMD_TYPE, DOCUMENT_SERIALIZE_CMD_SETTINGS_GRID_DISPLAY);
00105 writer.writeAttribute(DOCUMENT_SERIALIZE_CMD_DESCRIPTION, QUndoCommand::text ());
00106 m_modelGridDisplayBefore.saveXml (writer);
00107 m_modelGridDisplayAfter.saveXml(writer);
00108 writer.writeEndElement();
00109 }