| 603 | } |
| 604 | |
| 605 | bool ConditionalFormatting::loadFromXml(QXmlStreamReader &reader, Styles *styles) |
| 606 | { |
| 607 | Q_ASSERT(reader.name() == QStringLiteral("conditionalFormatting")); |
| 608 | |
| 609 | d->ranges.clear(); |
| 610 | d->cfRules.clear(); |
| 611 | QXmlStreamAttributes attrs = reader.attributes(); |
| 612 | const QString sqref = attrs.value(QLatin1String("sqref")).toString(); |
| 613 | const auto sqrefParts = sqref.split(QLatin1Char(' ')); |
| 614 | for (const QString &range : sqrefParts) { |
| 615 | this->addRange(range); |
| 616 | } |
| 617 | |
| 618 | while (!reader.atEnd()) { |
| 619 | reader.readNextStartElement(); |
| 620 | if (reader.tokenType() == QXmlStreamReader::StartElement) { |
| 621 | if (reader.name() == QLatin1String("cfRule")) { |
| 622 | auto cfRule = std::make_shared<XlsxCfRuleData>(); |
| 623 | d->readCfRule(reader, cfRule.get(), styles); |
| 624 | d->cfRules.append(cfRule); |
| 625 | } |
| 626 | } |
| 627 | if (reader.tokenType() == QXmlStreamReader::EndElement |
| 628 | && reader.name() == QStringLiteral("conditionalFormatting")) { |
| 629 | break; |
| 630 | } |
| 631 | } |
| 632 | |
| 633 | |
| 634 | return true; |
| 635 | } |
| 636 | |
| 637 | bool ConditionalFormatting::saveToXml(QXmlStreamWriter &writer) const |
| 638 | { |