Code refactoring: Remove magic things for ContentTypes
This commit is contained in:
@@ -39,12 +39,6 @@ ContentTypes::ContentTypes()
|
||||
|
||||
m_defaults.insert(QStringLiteral("rels"), m_package_prefix + QStringLiteral("relationships+xml"));
|
||||
m_defaults.insert(QStringLiteral("xml"), QStringLiteral("application/xml"));
|
||||
|
||||
m_overrides.insert(QStringLiteral("/docProps/app.xml"), m_document_prefix + QStringLiteral("extended-properties+xml"));
|
||||
m_overrides.insert(QStringLiteral("/docProps/core.xml"), m_package_prefix + QStringLiteral("core-properties+xml"));
|
||||
m_overrides.insert(QStringLiteral("/xl/styles.xml"), m_document_prefix + QStringLiteral("spreadsheetml.styles+xml"));
|
||||
m_overrides.insert(QStringLiteral("/xl/theme/theme1.xml"), m_document_prefix + QStringLiteral("theme+xml"));
|
||||
m_overrides.insert(QStringLiteral("/xl/workbook.xml"), m_document_prefix + QStringLiteral("spreadsheetml.sheet.main+xml"));
|
||||
}
|
||||
|
||||
void ContentTypes::addDefault(const QString &key, const QString &value)
|
||||
@@ -57,6 +51,31 @@ void ContentTypes::addOverride(const QString &key, const QString &value)
|
||||
m_overrides.insert(key, value);
|
||||
}
|
||||
|
||||
void ContentTypes::addDocPropApp()
|
||||
{
|
||||
addOverride(QStringLiteral("/docProps/app.xml"), m_document_prefix + QStringLiteral("extended-properties+xml"));
|
||||
}
|
||||
|
||||
void ContentTypes::addDocPropCore()
|
||||
{
|
||||
addOverride(QStringLiteral("/docProps/core.xml"), m_package_prefix + QStringLiteral("core-properties+xml"));
|
||||
}
|
||||
|
||||
void ContentTypes::addStyles()
|
||||
{
|
||||
addOverride(QStringLiteral("/xl/styles.xml"), m_document_prefix + QStringLiteral("spreadsheetml.styles+xml"));
|
||||
}
|
||||
|
||||
void ContentTypes::addTheme()
|
||||
{
|
||||
addOverride(QStringLiteral("/xl/theme/theme1.xml"), m_document_prefix + QStringLiteral("theme+xml"));
|
||||
}
|
||||
|
||||
void ContentTypes::addWorkbook()
|
||||
{
|
||||
addOverride(QStringLiteral("/xl/workbook.xml"), m_document_prefix + QStringLiteral("spreadsheetml.sheet.main+xml"));
|
||||
}
|
||||
|
||||
void ContentTypes::addWorksheetName(const QString &name)
|
||||
{
|
||||
addOverride(QStringLiteral("/xl/worksheets/%1.xml").arg(name), m_document_prefix + QStringLiteral("spreadsheetml.worksheet+xml"));
|
||||
@@ -82,12 +101,6 @@ void ContentTypes::addCommentName(const QString &name)
|
||||
addOverride(QStringLiteral("/xl/%1.xml").arg(name), m_document_prefix + QStringLiteral("spreadsheetml.comments+xml"));
|
||||
}
|
||||
|
||||
void ContentTypes::addImageTypes(const QStringList &imageTypes)
|
||||
{
|
||||
foreach (QString type, imageTypes)
|
||||
addDefault(type, QStringLiteral("image/") + type);
|
||||
}
|
||||
|
||||
void ContentTypes::addTableName(const QString &name)
|
||||
{
|
||||
addOverride(QStringLiteral("/xl/tables/%1.xml").arg(name), m_document_prefix + QStringLiteral("spreadsheetml.table+xml"));
|
||||
|
||||
@@ -53,12 +53,16 @@ public:
|
||||
void addOverride(const QString &key, const QString &value);
|
||||
|
||||
//Convenient funcation for addOverride()
|
||||
void addDocPropCore();
|
||||
void addDocPropApp();
|
||||
void addStyles();
|
||||
void addTheme();
|
||||
void addWorkbook();
|
||||
void addWorksheetName(const QString &name);
|
||||
void addChartsheetName(const QString &name);
|
||||
void addChartName(const QString &name);
|
||||
void addDrawingName(const QString &name);
|
||||
void addCommentName(const QString &name);
|
||||
void addImageTypes(const QStringList &imageTypes);
|
||||
void addTableName(const QString &name);
|
||||
void addSharedString();
|
||||
void addVmlName();
|
||||
|
||||
@@ -99,9 +99,14 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
|
||||
ZipReader zipReader(device);
|
||||
QStringList filePaths = zipReader.filePaths();
|
||||
|
||||
//Load the Content_Types file
|
||||
if (!filePaths.contains(QLatin1String("[Content_Types].xml")))
|
||||
return false;
|
||||
contentTypes.loadFromXmlData(zipReader.fileData(QStringLiteral("[Content_Types].xml")));
|
||||
|
||||
//Load root rels file
|
||||
if (!filePaths.contains(QLatin1String("_rels/.rels")))
|
||||
return false;
|
||||
|
||||
Relationships rootRels;
|
||||
rootRels.loadFromXmlData(zipReader.fileData(QStringLiteral("_rels/.rels")));
|
||||
|
||||
@@ -196,7 +201,8 @@ bool DocumentPrivate::savePackage(QIODevice *device) const
|
||||
if (zipWriter.error())
|
||||
return false;
|
||||
|
||||
ContentTypes contentTypes;
|
||||
contentTypes.clearOverrides();
|
||||
|
||||
DocPropsApp docPropsApp;
|
||||
DocPropsCore docPropsCore;
|
||||
|
||||
@@ -216,6 +222,7 @@ bool DocumentPrivate::savePackage(QIODevice *device) const
|
||||
}
|
||||
|
||||
// save workbook xml file
|
||||
contentTypes.addWorkbook();
|
||||
zipWriter.addFile(QStringLiteral("xl/workbook.xml"), workbook->saveToXmlData());
|
||||
zipWriter.addFile(QStringLiteral("xl/_rels/workbook.xml.rels"), workbook->relationships().saveToXmlData());
|
||||
|
||||
@@ -247,6 +254,8 @@ bool DocumentPrivate::savePackage(QIODevice *device) const
|
||||
}
|
||||
if (workbook->worksheetCount())
|
||||
docPropsApp.addHeadingPair(QStringLiteral("Worksheets"), workbook->worksheetCount());
|
||||
contentTypes.addDocPropApp();
|
||||
contentTypes.addDocPropCore();
|
||||
zipWriter.addFile(QStringLiteral("docProps/app.xml"), docPropsApp.saveToXmlData());
|
||||
zipWriter.addFile(QStringLiteral("docProps/core.xml"), docPropsCore.saveToXmlData());
|
||||
|
||||
@@ -257,14 +266,16 @@ bool DocumentPrivate::savePackage(QIODevice *device) const
|
||||
}
|
||||
|
||||
// save styles xml file
|
||||
contentTypes.addStyles();
|
||||
zipWriter.addFile(QStringLiteral("xl/styles.xml"), workbook->styles()->saveToXmlData());
|
||||
|
||||
// save theme xml file
|
||||
contentTypes.addTheme();
|
||||
zipWriter.addFile(QStringLiteral("xl/theme/theme1.xml"), workbook->theme()->saveToXmlData());
|
||||
|
||||
// save image files
|
||||
if (!workbook->images().isEmpty())
|
||||
contentTypes.addImageTypes(QStringList()<<QStringLiteral("png"));
|
||||
contentTypes.addDefault(QStringLiteral("png"), QStringLiteral("image/png"));
|
||||
|
||||
for (int i=0; i<workbook->images().size(); ++i) {
|
||||
QImage image = workbook->images()[i];
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
|
||||
#include "xlsxdocument.h"
|
||||
#include "xlsxworkbook.h"
|
||||
#include "xlsxcontenttypes_p.h"
|
||||
|
||||
#include <QMap>
|
||||
|
||||
@@ -60,6 +61,7 @@ public:
|
||||
|
||||
QMap<QString, QString> documentProperties; //core, app and custom properties
|
||||
QSharedPointer<Workbook> workbook;
|
||||
mutable ContentTypes contentTypes;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user