00001
00002
00003
00004
00005
00006
00007 #include "CmdMediator.h"
00008 #include "DocumentModelGridRemoval.h"
00009 #include "DocumentSerialize.h"
00010 #include "Logger.h"
00011 #include <QObject>
00012 #include <QTextStream>
00013 #include <QXmlStreamWriter>
00014 #include "Xml.h"
00015
00016 const double CLOSE_DISTANCE_DEFAULT = 10.0;
00017
00018
00019 const int DEFAULT_COUNT = 2;
00020 const double DEFAULT_NON_COUNT = 0.0;
00021
00022 DocumentModelGridRemoval::DocumentModelGridRemoval() :
00023 m_stable (false),
00024 m_removeDefinedGridLines (false),
00025 m_closeDistance (CLOSE_DISTANCE_DEFAULT),
00026 m_gridCoordDisableX (GRID_COORD_DISABLE_COUNT),
00027 m_countX (DEFAULT_COUNT),
00028 m_startX (DEFAULT_NON_COUNT),
00029 m_stepX (DEFAULT_NON_COUNT),
00030 m_stopX (DEFAULT_NON_COUNT),
00031 m_gridCoordDisableY (GRID_COORD_DISABLE_COUNT),
00032 m_countY (DEFAULT_COUNT),
00033 m_startY (DEFAULT_NON_COUNT),
00034 m_stepY (DEFAULT_NON_COUNT),
00035 m_stopY (DEFAULT_NON_COUNT)
00036 {
00037 }
00038
00039 DocumentModelGridRemoval::DocumentModelGridRemoval (double startX,
00040 double startY,
00041 double stepX,
00042 double stepY,
00043 int countX,
00044 int countY) :
00045 m_stable (false),
00046 m_removeDefinedGridLines (false),
00047 m_closeDistance (CLOSE_DISTANCE_DEFAULT),
00048 m_gridCoordDisableX (GRID_COORD_DISABLE_COUNT),
00049 m_countX (countX),
00050 m_startX (startX),
00051 m_stepX (stepX),
00052 m_stopX (startX + (countX - 1.0) * stepX),
00053 m_gridCoordDisableY (GRID_COORD_DISABLE_COUNT),
00054 m_countY (countY),
00055 m_startY (startY),
00056 m_stepY (stepY),
00057 m_stopY (startY + (countY - 1.0) * stepY)
00058 {
00059 }
00060
00061 DocumentModelGridRemoval::DocumentModelGridRemoval(const Document &document) :
00062 m_stable (document.modelGridRemoval().stable()),
00063 m_removeDefinedGridLines (document.modelGridRemoval().removeDefinedGridLines()),
00064 m_closeDistance (document.modelGridRemoval().closeDistance()),
00065 m_gridCoordDisableX (document.modelGridRemoval().gridCoordDisableX()),
00066 m_countX (document.modelGridRemoval().countX()),
00067 m_startX (document.modelGridRemoval().startX()),
00068 m_stepX (document.modelGridRemoval().stepX()),
00069 m_stopX (document.modelGridRemoval().stopX()),
00070 m_gridCoordDisableY (document.modelGridRemoval().gridCoordDisableY()),
00071 m_countY (document.modelGridRemoval().countY()),
00072 m_startY (document.modelGridRemoval().startY()),
00073 m_stepY (document.modelGridRemoval().stepY()),
00074 m_stopY (document.modelGridRemoval().stopY())
00075 {
00076 }
00077
00078 DocumentModelGridRemoval::DocumentModelGridRemoval(const DocumentModelGridRemoval &other) :
00079 m_stable (other.stable()),
00080 m_removeDefinedGridLines (other.removeDefinedGridLines()),
00081 m_closeDistance (other.closeDistance()),
00082 m_gridCoordDisableX (other.gridCoordDisableX()),
00083 m_countX (other.countX()),
00084 m_startX (other.startX()),
00085 m_stepX (other.stepX()),
00086 m_stopX (other.stopX()),
00087 m_gridCoordDisableY (other.gridCoordDisableX()),
00088 m_countY (other.countY()),
00089 m_startY (other.startY()),
00090 m_stepY (other.stepY()),
00091 m_stopY (other.stopY())
00092 {
00093 }
00094
00095 DocumentModelGridRemoval &DocumentModelGridRemoval::operator=(const DocumentModelGridRemoval &other)
00096 {
00097 m_stable = other.stable();
00098 m_removeDefinedGridLines = other.removeDefinedGridLines();
00099 m_closeDistance = other.closeDistance();
00100 m_gridCoordDisableX = other.gridCoordDisableX();
00101 m_countX = other.countX();
00102 m_startX = other.startX();
00103 m_stepX = other.stepX();
00104 m_stopX = other.stopX();
00105 m_gridCoordDisableY = other.gridCoordDisableY();
00106 m_countY = other.countY();
00107 m_startY = other.startY();
00108 m_stepY = other.stepY();
00109 m_stopY = other.stopY();
00110
00111 return *this;
00112 }
00113
00114 double DocumentModelGridRemoval::closeDistance() const
00115 {
00116 return m_closeDistance;
00117 }
00118
00119 int DocumentModelGridRemoval::countX() const
00120 {
00121 return m_countX;
00122 }
00123
00124 int DocumentModelGridRemoval::countY() const
00125 {
00126 return m_countY;
00127 }
00128
00129 GridCoordDisable DocumentModelGridRemoval::gridCoordDisableX () const
00130 {
00131 return m_gridCoordDisableX;
00132 }
00133
00134 GridCoordDisable DocumentModelGridRemoval::gridCoordDisableY () const
00135 {
00136 return m_gridCoordDisableY;
00137 }
00138
00139 void DocumentModelGridRemoval::loadXml(QXmlStreamReader &reader)
00140 {
00141 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelGridRemoval::loadXml";
00142
00143 bool success = true;
00144
00145 QXmlStreamAttributes attributes = reader.attributes();
00146
00147 if (attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_STABLE) &&
00148 attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_DEFINED_GRID_LINES) &&
00149 attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_CLOSE_DISTANCE) &&
00150 attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_COORD_DISABLE_X) &&
00151 attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_COUNT_X) &&
00152 attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_START_X) &&
00153 attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_STEP_X) &&
00154 attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_STOP_X) &&
00155 attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_COORD_DISABLE_Y) &&
00156 attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_COUNT_Y) &&
00157 attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_START_Y) &&
00158 attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_STEP_Y) &&
00159 attributes.hasAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_STOP_Y)) {
00160
00161
00162 QString stableValue = attributes.value(DOCUMENT_SERIALIZE_GRID_REMOVAL_STABLE).toString();
00163 QString definedValue = attributes.value(DOCUMENT_SERIALIZE_GRID_REMOVAL_DEFINED_GRID_LINES).toString();
00164
00165 setStable (stableValue == DOCUMENT_SERIALIZE_BOOL_TRUE);
00166 setRemoveDefinedGridLines (definedValue == DOCUMENT_SERIALIZE_BOOL_TRUE);
00167 setCloseDistance (attributes.value(DOCUMENT_SERIALIZE_GRID_REMOVAL_CLOSE_DISTANCE).toDouble());
00168 setGridCoordDisableX ((GridCoordDisable) attributes.value(DOCUMENT_SERIALIZE_GRID_REMOVAL_COORD_DISABLE_X).toInt());
00169 setCountX (attributes.value(DOCUMENT_SERIALIZE_GRID_REMOVAL_COUNT_X).toInt());
00170 setStartX (attributes.value(DOCUMENT_SERIALIZE_GRID_REMOVAL_START_X).toDouble());
00171 setStepX (attributes.value(DOCUMENT_SERIALIZE_GRID_REMOVAL_STEP_X).toDouble());
00172 setStopX (attributes.value(DOCUMENT_SERIALIZE_GRID_REMOVAL_STOP_X).toDouble());
00173 setGridCoordDisableY ((GridCoordDisable) attributes.value(DOCUMENT_SERIALIZE_GRID_REMOVAL_COORD_DISABLE_Y).toInt());
00174 setCountY (attributes.value(DOCUMENT_SERIALIZE_GRID_REMOVAL_COUNT_Y).toInt());
00175 setStartY (attributes.value(DOCUMENT_SERIALIZE_GRID_REMOVAL_START_Y).toDouble());
00176 setStepY (attributes.value(DOCUMENT_SERIALIZE_GRID_REMOVAL_STEP_Y).toDouble());
00177 setStopY (attributes.value(DOCUMENT_SERIALIZE_GRID_REMOVAL_STOP_Y).toDouble());
00178
00179
00180 while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
00181 (reader.name() != DOCUMENT_SERIALIZE_GRID_REMOVAL)){
00182 loadNextFromReader(reader);
00183 if (reader.atEnd()) {
00184 success = false;
00185 break;
00186 }
00187 }
00188 }
00189
00190 if (!success) {
00191 reader.raiseError (QObject::tr ("Cannot read grid removal data"));
00192 }
00193 }
00194
00195 void DocumentModelGridRemoval::printStream(QString indentation,
00196 QTextStream &str) const
00197 {
00198 str << indentation << "DocumentModelGridRemoval\n";
00199
00200 indentation += INDENTATION_DELTA;
00201
00202 str << indentation << "stable=" << (m_stable ? "true" : "false") << "\n";
00203 str << indentation << "removeDefinedGridLines=" << (m_removeDefinedGridLines ? "true" : "false") << "\n";
00204 str << indentation << "closeDistance=" << m_closeDistance << "\n";
00205 str << indentation << "gridCoordDisableX=" << gridCoordDisableToString (m_gridCoordDisableX) << "\n";
00206 str << indentation << "countX=" << m_countX << "\n";
00207 str << indentation << "startX=" << m_startX << "\n";
00208 str << indentation << "stepX=" << m_stepX << "\n";
00209 str << indentation << "stopX=" << m_stopX << "\n";
00210 str << indentation << "gridCoordDisableY=" << gridCoordDisableToString (m_gridCoordDisableY) << "\n";
00211 str << indentation << "countY=" << m_countY << "\n";
00212 str << indentation << "startY=" << m_startY << "\n";
00213 str << indentation << "stepY=" << m_stepY << "\n";
00214 str << indentation << "stopY=" << m_stopY << "\n";
00215 }
00216
00217 bool DocumentModelGridRemoval::removeDefinedGridLines () const
00218 {
00219 return m_removeDefinedGridLines;
00220 }
00221
00222 void DocumentModelGridRemoval::saveXml(QXmlStreamWriter &writer) const
00223 {
00224 LOG4CPP_INFO_S ((*mainCat)) << "DocumentModelGridRemoval::saveXml";
00225
00226 writer.writeStartElement(DOCUMENT_SERIALIZE_GRID_REMOVAL);
00227 writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_STABLE, m_stable ?
00228 DOCUMENT_SERIALIZE_BOOL_TRUE :
00229 DOCUMENT_SERIALIZE_BOOL_FALSE);
00230 writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_DEFINED_GRID_LINES, m_removeDefinedGridLines ?
00231 DOCUMENT_SERIALIZE_BOOL_TRUE :
00232 DOCUMENT_SERIALIZE_BOOL_FALSE);
00233 writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_CLOSE_DISTANCE, QString::number (m_closeDistance));
00234 writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_COORD_DISABLE_X, QString::number (m_gridCoordDisableX));
00235 writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_COORD_DISABLE_X_STRING, gridCoordDisableToString (m_gridCoordDisableX));
00236 writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_COUNT_X, QString::number (m_countX));
00237 writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_START_X, QString::number (m_startX));
00238 writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_STEP_X, QString::number (m_stepX));
00239 writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_STOP_X, QString::number (m_stopX));
00240 writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_COORD_DISABLE_Y, QString::number (m_gridCoordDisableY));
00241 writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_COORD_DISABLE_Y_STRING, gridCoordDisableToString (m_gridCoordDisableY));
00242 writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_COUNT_Y, QString::number (m_countY));
00243 writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_START_Y, QString::number (m_startY));
00244 writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_STEP_Y, QString::number (m_stepY));
00245 writer.writeAttribute(DOCUMENT_SERIALIZE_GRID_REMOVAL_STOP_Y, QString::number (m_stopY));
00246
00247 writer.writeEndElement();
00248 }
00249
00250 void DocumentModelGridRemoval::setCloseDistance(double closeDistance)
00251 {
00252 m_closeDistance = closeDistance;
00253 }
00254
00255 void DocumentModelGridRemoval::setCountX(int countX)
00256 {
00257 m_countX = countX;
00258 }
00259
00260 void DocumentModelGridRemoval::setCountY(int countY)
00261 {
00262 m_countY = countY;
00263 }
00264
00265 void DocumentModelGridRemoval::setGridCoordDisableX (GridCoordDisable gridCoordDisable)
00266 {
00267 m_gridCoordDisableX = gridCoordDisable;
00268 }
00269
00270 void DocumentModelGridRemoval::setGridCoordDisableY (GridCoordDisable gridCoordDisable)
00271 {
00272 m_gridCoordDisableY = gridCoordDisable;
00273 }
00274
00275 void DocumentModelGridRemoval::setRemoveDefinedGridLines (bool removeDefinedGridLines)
00276 {
00277 m_removeDefinedGridLines = removeDefinedGridLines;
00278 }
00279
00280 void DocumentModelGridRemoval::setStable ()
00281 {
00282 m_stable = true;
00283 }
00284
00285 void DocumentModelGridRemoval::setStable (bool stable)
00286 {
00287 m_stable = stable;
00288 }
00289
00290 void DocumentModelGridRemoval::setStartX(double startX)
00291 {
00292 m_startX = startX;
00293 }
00294
00295 void DocumentModelGridRemoval::setStartY(double startY)
00296 {
00297 m_startY = startY;
00298 }
00299
00300 void DocumentModelGridRemoval::setStepX(double stepX)
00301 {
00302 m_stepX = stepX;
00303 }
00304
00305 void DocumentModelGridRemoval::setStepY(double stepY)
00306 {
00307 m_stepY = stepY;
00308 }
00309
00310 void DocumentModelGridRemoval::setStopX(double stopX)
00311 {
00312 m_stopX = stopX;
00313 }
00314
00315 void DocumentModelGridRemoval::setStopY(double stopY)
00316 {
00317 m_stopY = stopY;
00318 }
00319
00320 bool DocumentModelGridRemoval::stable () const
00321 {
00322 return m_stable;
00323 }
00324
00325 double DocumentModelGridRemoval::startX() const
00326 {
00327 return m_startX;
00328 }
00329
00330 double DocumentModelGridRemoval::startY() const
00331 {
00332 return m_startY;
00333 }
00334
00335 double DocumentModelGridRemoval::stepX() const
00336 {
00337 return m_stepX;
00338 }
00339
00340 double DocumentModelGridRemoval::stepY() const
00341 {
00342 return m_stepY;
00343 }
00344
00345 double DocumentModelGridRemoval::stopX() const
00346 {
00347 return m_stopX;
00348 }
00349
00350 double DocumentModelGridRemoval::stopY() const
00351 {
00352 return m_stopY;
00353 }