Add load function for ContentTypes
This commit is contained in:
@@ -24,9 +24,11 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
#include "xlsxcontenttypes_p.h"
|
#include "xlsxcontenttypes_p.h"
|
||||||
#include <QXmlStreamWriter>
|
#include <QXmlStreamWriter>
|
||||||
|
#include <QXmlStreamReader>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QMapIterator>
|
#include <QMapIterator>
|
||||||
#include <QBuffer>
|
#include <QBuffer>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
namespace QXlsx {
|
namespace QXlsx {
|
||||||
|
|
||||||
@@ -112,6 +114,11 @@ void ContentTypes::addVbaProject()
|
|||||||
addOverride(QStringLiteral("bin"), QStringLiteral("application/vnd.ms-office.vbaProject"));
|
addOverride(QStringLiteral("bin"), QStringLiteral("application/vnd.ms-office.vbaProject"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ContentTypes::clearOverrides()
|
||||||
|
{
|
||||||
|
m_overrides.clear();
|
||||||
|
}
|
||||||
|
|
||||||
QByteArray ContentTypes::saveToXmlData() const
|
QByteArray ContentTypes::saveToXmlData() const
|
||||||
{
|
{
|
||||||
QByteArray data;
|
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()<<reader.errorString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ContentTypes::loadFromXmlData(const QByteArray &data)
|
||||||
|
{
|
||||||
|
QBuffer buffer;
|
||||||
|
buffer.setData(data);
|
||||||
|
buffer.open(QIODevice::ReadOnly);
|
||||||
|
|
||||||
|
return loadFromXmlFile(&buffer);
|
||||||
|
}
|
||||||
|
|
||||||
} //namespace QXlsx
|
} //namespace QXlsx
|
||||||
|
|||||||
@@ -65,8 +65,12 @@ public:
|
|||||||
void addCalcChain();
|
void addCalcChain();
|
||||||
void addVbaProject();
|
void addVbaProject();
|
||||||
|
|
||||||
|
void clearOverrides();
|
||||||
|
|
||||||
QByteArray saveToXmlData() const;
|
QByteArray saveToXmlData() const;
|
||||||
void saveToXmlFile(QIODevice *device) const;
|
void saveToXmlFile(QIODevice *device) const;
|
||||||
|
bool loadFromXmlFile(QIODevice *device);
|
||||||
|
bool loadFromXmlData(const QByteArray &data);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QMap<QString, QString> m_defaults;
|
QMap<QString, QString> m_defaults;
|
||||||
|
|||||||
Reference in New Issue
Block a user