00001
00002
00003
00004
00005
00006
00007 #include "CmdMediator.h"
00008 #include "DocumentModelAxesChecker.h"
00009 #include "DocumentSerialize.h"
00010 #include "Logger.h"
00011 #include <QObject>
00012 #include <QTextStream>
00013 #include "QtToString.h"
00014 #include <QXmlStreamWriter>
00015 #include "Xml.h"
00016
00017 const int DEFAULT_CHECKER_SECONDS = 3;
00018
00019
00020
00021 const ColorPalette DEFAULT_LINE_COLOR = COLOR_PALETTE_RED;
00022
00023 DocumentModelAxesChecker::DocumentModelAxesChecker() :
00024 m_checkerMode (CHECKER_MODE_N_SECONDS),
00025 m_checkerSeconds (DEFAULT_CHECKER_SECONDS),
00026 m_lineColor (DEFAULT_LINE_COLOR)
00027 {
00028 }
00029
00030 DocumentModelAxesChecker::DocumentModelAxesChecker(const Document &document) :
00031 m_checkerMode (document.modelAxesChecker().checkerMode()),
00032 m_checkerSeconds (document.modelAxesChecker().checkerSeconds()),
00033 m_lineColor (document.modelAxesChecker().lineColor())
00034 {
00035 }
00036
00037 DocumentModelAxesChecker::DocumentModelAxesChecker(const DocumentModelAxesChecker &other) :
00038 m_checkerMode (other.checkerMode()),
00039 m_checkerSeconds (other.checkerSeconds()),
00040 m_lineColor (other.lineColor())
00041 {
00042 }
00043
00044 DocumentModelAxesChecker &DocumentModelAxesChecker::operator=(const DocumentModelAxesChecker &other)
00045 {
00046 m_checkerMode = other.checkerMode();
00047 m_checkerSeconds = other.checkerSeconds();
00048 m_lineColor = other.lineColor();
00049
00050 return *this;
00051 }
00052
00053 CheckerMode DocumentModelAxesChecker::checkerMode() const
00054 {
00055 return m_checkerMode;
00056 }
00057
00058 int DocumentModelAxesChecker::checkerSeconds() const
00059 {
00060 return m_checkerSeconds;
00061 }
00062
00063 ColorPalette DocumentModelAxesChecker::lineColor () const
00064 {
00065 return m_lineColor;
00066 }
00067
00068 void DocumentModelAxesChecker::loadXml(QXmlStreamReader &reader)
00069 {
00070 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelAxesChecker::loadXml";
00071
00072 bool success = true;
00073
00074 QXmlStreamAttributes attributes = reader.attributes();
00075
00076 if (attributes.hasAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_MODE) &&
00077 attributes.hasAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_SECONDS) &&
00078 attributes.hasAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_LINE_COLOR)) {
00079
00080 setCheckerMode ((CheckerMode) attributes.value(DOCUMENT_SERIALIZE_AXES_CHECKER_MODE).toInt());
00081 setCheckerSeconds (attributes.value(DOCUMENT_SERIALIZE_AXES_CHECKER_SECONDS).toInt());
00082 setLineColor ((ColorPalette) attributes.value(DOCUMENT_SERIALIZE_AXES_CHECKER_LINE_COLOR).toInt());
00083
00084
00085 while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
00086 (reader.name() != DOCUMENT_SERIALIZE_AXES_CHECKER)){
00087 loadNextFromReader(reader);
00088 if (reader.atEnd()) {
00089 success = false;
00090 break;
00091 }
00092 }
00093 }
00094
00095 if (!success) {
00096 reader.raiseError (QObject::tr ("Cannot read axes checker data"));
00097 }
00098 }
00099
00100 void DocumentModelAxesChecker::printStream(QString indentation,
00101 QTextStream &str) const
00102 {
00103 str << indentation << "DocumentModelAxesChecker\n";
00104
00105 indentation += INDENTATION_DELTA;
00106
00107 str << indentation << "checkerMode=" << checkerModeToString (m_checkerMode) << "\n";
00108 str << indentation << "checkerSeconds=" << m_checkerSeconds << "\n";
00109 str << indentation << "color=" << colorPaletteToString (m_lineColor) << "\n";
00110 }
00111
00112 void DocumentModelAxesChecker::saveXml(QXmlStreamWriter &writer) const
00113 {
00114 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelAxesChecker::saveXml";
00115
00116 writer.writeStartElement(DOCUMENT_SERIALIZE_AXES_CHECKER);
00117 writer.writeAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_MODE, QString::number (m_checkerMode));
00118 writer.writeAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_SECONDS, QString::number (m_checkerSeconds));
00119 writer.writeAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_LINE_COLOR, QString::number (m_lineColor));
00120 writer.writeEndElement();
00121 }
00122
00123 void DocumentModelAxesChecker::setCheckerMode(CheckerMode checkerMode)
00124 {
00125 m_checkerMode = checkerMode;
00126 }
00127
00128 void DocumentModelAxesChecker::setCheckerSeconds(int seconds)
00129 {
00130 m_checkerSeconds = seconds;
00131 }
00132
00133 void DocumentModelAxesChecker::setLineColor (ColorPalette lineColor)
00134 {
00135 m_lineColor = lineColor;
00136 }