void QTextOdfWriter::writeFormats(QXmlStreamWriter &writer, QSet<int> formats) const { writer.writeStartElement(officeNS, QString::fromLatin1("automatic-styles")); QVector<QTextFormat> allStyles = m_document->allFormats(); QSetIterator<int> formatId(formats); while(formatId.hasNext()) { int formatIndex = formatId.next(); QTextFormat textFormat = allStyles.at(formatIndex); switch (textFormat.type()) { case QTextFormat::CharFormat: if (textFormat.isTableCellFormat()) writeTableCellFormat(writer, textFormat.toTableCellFormat(), formatIndex); else writeCharacterFormat(writer, textFormat.toCharFormat(), formatIndex); break; case QTextFormat::BlockFormat: writeBlockFormat(writer, textFormat.toBlockFormat(), formatIndex); break; case QTextFormat::ListFormat: writeListFormat(writer, textFormat.toListFormat(), formatIndex); break; case QTextFormat::FrameFormat: writeFrameFormat(writer, textFormat.toFrameFormat(), formatIndex); break; case QTextFormat::TableFormat: ;break; } } writer.writeEndElement(); // automatic-styles }
int QTextCopyHelper::convertFormatIndex(const QTextFormat &oldFormat, int objectIndexToSet) { QTextFormat fmt = oldFormat; if (objectIndexToSet != -1) { fmt.setObjectIndex(objectIndexToSet); } else if (fmt.objectIndex() != -1) { int newObjectIndex = objectIndexMap.value(fmt.objectIndex(), -1); if (newObjectIndex == -1) { QTextFormat objFormat = src->formatCollection()->objectFormat(fmt.objectIndex()); Q_ASSERT(objFormat.objectIndex() == -1); newObjectIndex = formatCollection.createObjectIndex(objFormat); objectIndexMap.insert(fmt.objectIndex(), newObjectIndex); } fmt.setObjectIndex(newObjectIndex); } int idx = formatCollection.indexForFormat(fmt); Q_ASSERT(formatCollection.format(idx).type() == oldFormat.type()); return idx; }