############################################################################## ################## Serialization/Deserialization ########################### ############################################################################## Save as XML
| 1460 | // ############################################################################## |
| 1461 | //! Save as XML |
| 1462 | void ProcessBehaviorChart::save(QXmlStreamWriter* writer) const { |
| 1463 | Q_D(const ProcessBehaviorChart); |
| 1464 | |
| 1465 | writer->writeStartElement(QStringLiteral("ProcessBehaviorChart")); |
| 1466 | writeBasicAttributes(writer); |
| 1467 | writeCommentElement(writer); |
| 1468 | |
| 1469 | // general |
| 1470 | writer->writeStartElement(QStringLiteral("general")); |
| 1471 | WRITE_COLUMN(d->dataColumn, dataColumn); |
| 1472 | WRITE_COLUMN(d->data2Column, data2Column); |
| 1473 | WRITE_COLUMN(d->xColumn, xColumn); |
| 1474 | WRITE_COLUMN(d->yColumn, yColumn); |
| 1475 | WRITE_COLUMN(d->xCenterColumn, xCenterColumn); |
| 1476 | WRITE_COLUMN(d->yCenterColumn, yCenterColumn); |
| 1477 | WRITE_COLUMN(d->xUpperLimitColumn, xUpperLimitColumn); |
| 1478 | WRITE_COLUMN(d->yUpperLimitColumn, yUpperLimtColumn); |
| 1479 | WRITE_COLUMN(d->xLowerLimitColumn, xLowerLimitColumn); |
| 1480 | WRITE_COLUMN(d->yLowerLimitColumn, yLowerLimitColumn); |
| 1481 | writer->writeAttribute(QStringLiteral("type"), QString::number(static_cast<int>(d->type))); |
| 1482 | writer->writeAttribute(QStringLiteral("limitsMetric"), QString::number(static_cast<int>(d->limitsMetric))); |
| 1483 | writer->writeAttribute(QStringLiteral("sampleSize"), QString::number(d->sampleSize)); |
| 1484 | writer->writeAttribute(QStringLiteral("minLowerLimit"), QString::number(d->minLowerLimit)); |
| 1485 | writer->writeAttribute(QStringLiteral("maxUpperLimit"), QString::number(d->maxUpperLimit)); |
| 1486 | writer->writeAttribute(QStringLiteral("exactLimitsEnabled"), QString::number(d->exactLimitsEnabled)); |
| 1487 | writer->writeAttribute(QStringLiteral("visible"), QString::number(d->isVisible())); |
| 1488 | writer->writeAttribute(QStringLiteral("legendVisible"), QString::number(d->legendVisible)); |
| 1489 | writer->writeEndElement(); |
| 1490 | |
| 1491 | writer->writeStartElement(QStringLiteral("labels")); |
| 1492 | writer->writeAttribute(QStringLiteral("enabled"), QString::number(d->labelsEnabled)); |
| 1493 | writer->writeAttribute(QStringLiteral("precision"), QString::number(d->labelsPrecision)); |
| 1494 | writer->writeAttribute(QStringLiteral("autoPrecision"), QString::number(d->labelsAutoPrecision)); |
| 1495 | d->labelsBorderLine->save(writer); |
| 1496 | writer->writeEndElement(); |
| 1497 | |
| 1498 | d->centerLabel->save(writer); |
| 1499 | d->lowerLimitLabel->save(writer); |
| 1500 | d->upperLimitLabel->save(writer); |
| 1501 | |
| 1502 | // save the internal columns, above only the references to them were saved |
| 1503 | d->xColumn->save(writer); |
| 1504 | d->yColumn->save(writer); |
| 1505 | d->xCenterColumn->save(writer); |
| 1506 | d->yCenterColumn->save(writer); |
| 1507 | d->xUpperLimitColumn->save(writer); |
| 1508 | d->yUpperLimitColumn->save(writer); |
| 1509 | d->xLowerLimitColumn->save(writer); |
| 1510 | d->yLowerLimitColumn->save(writer); |
| 1511 | |
| 1512 | // save the internal curves |
| 1513 | // disconnect temporarily from renameInternalCurves so we can use unique names to be able to properly load the curves later |
| 1514 | disconnect(this, &AbstractAspect::aspectDescriptionChanged, this, &ProcessBehaviorChart::renameInternalCurves); |
| 1515 | d->dataCurve->setName(QStringLiteral("data")); |
| 1516 | d->dataCurve->save(writer); |
| 1517 | d->centerCurve->setName(QStringLiteral("center")); |
| 1518 | d->centerCurve->save(writer); |
| 1519 | d->upperLimitCurve->setName(QStringLiteral("upperLimit")); |