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