From 945870596fc4c08e9a77e914afad8712577cd094 Mon Sep 17 00:00:00 2001 From: Debao Zhang Date: Sat, 11 Jan 2014 20:56:31 +0800 Subject: [PATCH] Add load function for ContentTypes --- src/xlsx/xlsxcontenttypes.cpp | 45 +++++++++++++++++++++++++++++++++++ src/xlsx/xlsxcontenttypes_p.h | 4 ++++ 2 files changed, 49 insertions(+) diff --git a/src/xlsx/xlsxcontenttypes.cpp b/src/xlsx/xlsxcontenttypes.cpp index fca42d6..532b855 100755 --- a/src/xlsx/xlsxcontenttypes.cpp +++ b/src/xlsx/xlsxcontenttypes.cpp @@ -24,9 +24,11 @@ ****************************************************************************/ #include "xlsxcontenttypes_p.h" #include +#include #include #include #include +#include namespace QXlsx { @@ -112,6 +114,11 @@ void ContentTypes::addVbaProject() addOverride(QStringLiteral("bin"), QStringLiteral("application/vnd.ms-office.vbaProject")); } +void ContentTypes::clearOverrides() +{ + m_overrides.clear(); +} + QByteArray ContentTypes::saveToXmlData() const { QByteArray data; @@ -156,4 +163,42 @@ void ContentTypes::saveToXmlFile(QIODevice *device) const } +bool ContentTypes::loadFromXmlFile(QIODevice *device) +{ + m_defaults.clear(); + m_overrides.clear(); + + QXmlStreamReader reader(device); + while (!reader.atEnd()) { + QXmlStreamReader::TokenType token = reader.readNext(); + if (token == QXmlStreamReader::StartElement) { + if (reader.name() == QLatin1String("Default")) { + QXmlStreamAttributes attrs = reader.attributes(); + QString extension = attrs.value(QLatin1String("Extension")).toString(); + QString type = attrs.value(QLatin1String("ContentType")).toString(); + m_defaults.insert(extension, type); + } else if (reader.name() == QLatin1String("Override")) { + QXmlStreamAttributes attrs = reader.attributes(); + QString partName = attrs.value(QLatin1String("PartName")).toString(); + QString type = attrs.value(QLatin1String("ContentType")).toString(); + m_overrides.insert(partName, type); + } + } + + if (reader.hasError()) { + qDebug()< m_defaults;