MCPcopy Create free account
hub / github.com/KDE/labplot / XmlReadRow

Method XmlReadRow

src/backend/core/column/Column.cpp:1586–1643  ·  view source on GitHub ↗

* \brief Read XML row element */

Source from the content-addressed store, hash-verified

1584 * \brief Read XML row element
1585 */
1586bool Column::XmlReadRow(XmlStreamReader* reader) {
1587 Q_ASSERT(reader->isStartElement() == true && reader->name() == QLatin1String("row"));
1588
1589 // QXmlStreamAttributes attribs = reader->attributes();
1590
1591 bool ok;
1592 int index = reader->readAttributeInt(QStringLiteral("index"), &ok);
1593 if (!ok) {
1594 reader->raiseError(i18n("invalid or missing row index"));
1595 return false;
1596 }
1597
1598 QString str = reader->readElementText();
1599 switch (columnMode()) {
1600 case ColumnMode::Double: {
1601 double value = str.toDouble(&ok);
1602 if (!ok) {
1603 reader->raiseError(i18n("invalid row value"));
1604 return false;
1605 }
1606 setValueAt(index, value);
1607 break;
1608 }
1609 case ColumnMode::Integer: {
1610 int value = str.toInt(&ok);
1611 if (!ok) {
1612 reader->raiseError(i18n("invalid row value"));
1613 return false;
1614 }
1615 setIntegerAt(index, value);
1616 break;
1617 }
1618 case ColumnMode::BigInt: {
1619 qint64 value = str.toLongLong(&ok);
1620 if (!ok) {
1621 reader->raiseError(i18n("invalid row value"));
1622 return false;
1623 }
1624 setBigIntAt(index, value);
1625 break;
1626 }
1627 case ColumnMode::Text:
1628 setTextAt(index, str);
1629 break;
1630
1631 case ColumnMode::DateTime:
1632 case ColumnMode::Month:
1633 case ColumnMode::Day:
1634 // Same as in the Variable Parser. UTC must be used, otherwise
1635 // some dates are not valid. For example (2017-03-26)
1636 QDateTime date_time =
1637 QDateTime::fromString(str + QStringLiteral("Z"), QStringLiteral("yyyy-dd-MM hh:mm:ss:zzzt")); // last t is important. It is the timezone
1638 setDateTimeAt(index, date_time);
1639 break;
1640 }
1641
1642 return true;
1643}

Callers

nothing calls this directly

Calls 3

readAttributeIntMethod · 0.80
raiseErrorMethod · 0.80
nameMethod · 0.45

Tested by

no test coverage detected