Engauge Digitizer  2
DocumentModelAxesChecker.cpp
1 #include "CmdMediator.h"
2 #include "DocumentModelAxesChecker.h"
3 #include "DocumentSerialize.h"
4 #include "Logger.h"
5 #include <QTextStream>
6 #include "QtToString.h"
7 #include <QXmlStreamWriter>
8 #include "Xml.h"
9 
10 const int DEFAULT_CHECKER_SECONDS = 3;
11 
12 // Color that should be easily visible against black axes lines. Red resonates with
13 // the default axes point color, and seems fairly bright when opacity is made transparent.
14 const ColorPalette DEFAULT_LINE_COLOR = COLOR_PALETTE_RED;
15 
17  m_checkerMode (CHECKER_MODE_N_SECONDS),
18  m_checkerSeconds (DEFAULT_CHECKER_SECONDS),
19  m_lineColor (DEFAULT_LINE_COLOR)
20 {
21 }
22 
24  m_checkerMode (document.modelAxesChecker().checkerMode()),
25  m_checkerSeconds (document.modelAxesChecker().checkerSeconds()),
26  m_lineColor (document.modelAxesChecker().lineColor())
27 {
28 }
29 
31  m_checkerMode (other.checkerMode()),
32  m_checkerSeconds (other.checkerSeconds()),
33  m_lineColor (other.lineColor())
34 {
35 }
36 
38 {
39  m_checkerMode = other.checkerMode();
40  m_checkerSeconds = other.checkerSeconds();
41  m_lineColor = other.lineColor();
42 
43  return *this;
44 }
45 
47 {
48  return m_checkerMode;
49 }
50 
52 {
53  return m_checkerSeconds;
54 }
55 
57 {
58  return m_lineColor;
59 }
60 
61 void DocumentModelAxesChecker::loadXml(QXmlStreamReader &reader)
62 {
63  LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelAxesChecker::loadXml";
64 
65  bool success = true;
66 
67  QXmlStreamAttributes attributes = reader.attributes();
68 
69  if (attributes.hasAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_MODE) &&
70  attributes.hasAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_SECONDS) &&
71  attributes.hasAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_LINE_COLOR)) {
72 
73  setCheckerMode ((CheckerMode) attributes.value(DOCUMENT_SERIALIZE_AXES_CHECKER_MODE).toInt());
74  setCheckerSeconds (attributes.value(DOCUMENT_SERIALIZE_AXES_CHECKER_SECONDS).toInt());
75  setLineColor ((ColorPalette) attributes.value(DOCUMENT_SERIALIZE_AXES_CHECKER_LINE_COLOR).toInt());
76 
77  // Read until end of this subtree
78  while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
79  (reader.name() != DOCUMENT_SERIALIZE_AXES_CHECKER)){
80  loadNextFromReader(reader);
81  if (reader.atEnd()) {
82  success = false;
83  break;
84  }
85  }
86  }
87 
88  if (!success) {
89  reader.raiseError ("Cannot read axes checker data");
90  }
91 }
92 
93 void DocumentModelAxesChecker::printStream(QString indentation,
94  QTextStream &str) const
95 {
96  str << indentation << "DocumentModelAxesChecker\n";
97 
98  indentation += INDENTATION_DELTA;
99 
100  str << indentation << "checkerMode=" << checkerModeToString (m_checkerMode) << "\n";
101  str << indentation << "checkerSeconds=" << m_checkerSeconds << "\n";
102  str << indentation << "color=" << colorPaletteToString (m_lineColor) << "\n";
103 }
104 
105 void DocumentModelAxesChecker::saveXml(QXmlStreamWriter &writer) const
106 {
107  LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelAxesChecker::saveXml";
108 
109  writer.writeStartElement(DOCUMENT_SERIALIZE_AXES_CHECKER);
110  writer.writeAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_MODE, QString::number (m_checkerMode));
111  writer.writeAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_SECONDS, QString::number (m_checkerSeconds));
112  writer.writeAttribute(DOCUMENT_SERIALIZE_AXES_CHECKER_LINE_COLOR, QString::number (m_lineColor));
113  writer.writeEndElement();
114 }
115 
116 void DocumentModelAxesChecker::setCheckerMode(CheckerMode checkerMode)
117 {
118  m_checkerMode = checkerMode;
119 }
120 
122 {
123  m_checkerSeconds = seconds;
124 }
125 
126 void DocumentModelAxesChecker::setLineColor (ColorPalette lineColor)
127 {
128  m_lineColor = lineColor;
129 }
int checkerSeconds() const
Get method for checker lifetime in seconds.
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
void setCheckerMode(CheckerMode checkerMode)
Set method for checker mode.
void setCheckerSeconds(int seconds)
Set method for checker lifetime in seconds.
DocumentModelAxesChecker()
Default constructor.
ColorPalette lineColor() const
Get method for line color.
void setLineColor(ColorPalette lineColor)
Set method for line color.
CheckerMode checkerMode() const
Get method for checker lifetime mode.
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
Storage of one imported image and the data attached to that image.
Definition: Document.h:28
Model for DlgSettingsAxesChecker and CmdSettingsAxesChecker.
DocumentModelAxesChecker & operator=(const DocumentModelAxesChecker &other)
Assignment constructor.
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...