Introduce CreateFlag for all the ooxmlfile
This commit is contained in:
@@ -31,8 +31,8 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE_XLSX
|
||||
|
||||
AbstractOOXmlFilePrivate::AbstractOOXmlFilePrivate(AbstractOOXmlFile *q)
|
||||
:relationships(new Relationships), q_ptr(q)
|
||||
AbstractOOXmlFilePrivate::AbstractOOXmlFilePrivate(AbstractOOXmlFile *q, AbstractOOXmlFile::CreateFlag flag=AbstractOOXmlFile::F_NewFromScratch)
|
||||
:relationships(new Relationships), flag(flag), q_ptr(q)
|
||||
{
|
||||
|
||||
}
|
||||
@@ -50,8 +50,8 @@ AbstractOOXmlFilePrivate::~AbstractOOXmlFilePrivate()
|
||||
* Base class of all the ooxml part file.
|
||||
*/
|
||||
|
||||
AbstractOOXmlFile::AbstractOOXmlFile()
|
||||
:d_ptr(new AbstractOOXmlFilePrivate(this))
|
||||
AbstractOOXmlFile::AbstractOOXmlFile(CreateFlag flag)
|
||||
:d_ptr(new AbstractOOXmlFilePrivate(this, flag))
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -39,6 +39,12 @@ class Q_XLSX_EXPORT AbstractOOXmlFile
|
||||
{
|
||||
Q_DECLARE_PRIVATE(AbstractOOXmlFile)
|
||||
public:
|
||||
enum CreateFlag
|
||||
{
|
||||
F_NewFromScratch,
|
||||
F_LoadFromExists
|
||||
};
|
||||
|
||||
virtual ~AbstractOOXmlFile();
|
||||
|
||||
virtual void saveToXmlFile(QIODevice *device) const = 0;
|
||||
@@ -51,8 +57,9 @@ public:
|
||||
|
||||
void setFilePath(const QString path);
|
||||
QString filePath() const;
|
||||
|
||||
protected:
|
||||
AbstractOOXmlFile();
|
||||
AbstractOOXmlFile(CreateFlag flag);
|
||||
AbstractOOXmlFile(AbstractOOXmlFilePrivate *d);
|
||||
|
||||
AbstractOOXmlFilePrivate *d_ptr;
|
||||
|
||||
@@ -49,12 +49,13 @@ class XLSX_AUTOTEST_EXPORT AbstractOOXmlFilePrivate
|
||||
Q_DECLARE_PUBLIC(AbstractOOXmlFile)
|
||||
|
||||
public:
|
||||
AbstractOOXmlFilePrivate(AbstractOOXmlFile *q);
|
||||
AbstractOOXmlFilePrivate(AbstractOOXmlFile *q, AbstractOOXmlFile::CreateFlag flag);
|
||||
virtual ~AbstractOOXmlFilePrivate();
|
||||
|
||||
QString filePathInPackage;//such as "xl/worksheets/sheet1.xml"
|
||||
//used when load the .xlsx file
|
||||
Relationships *relationships;
|
||||
AbstractOOXmlFile::CreateFlag flag;
|
||||
AbstractOOXmlFile *q_ptr;
|
||||
};
|
||||
|
||||
|
||||
@@ -28,8 +28,8 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE_XLSX
|
||||
|
||||
AbstractSheetPrivate::AbstractSheetPrivate(AbstractSheet *p)
|
||||
: AbstractOOXmlFilePrivate(p)
|
||||
AbstractSheetPrivate::AbstractSheetPrivate(AbstractSheet *p, AbstractSheet::CreateFlag flag)
|
||||
: AbstractOOXmlFilePrivate(p, flag)
|
||||
{
|
||||
hidden = false;
|
||||
type = AbstractSheet::ST_WorkSheet;
|
||||
|
||||
@@ -48,7 +48,7 @@ class XLSX_AUTOTEST_EXPORT AbstractSheetPrivate : public AbstractOOXmlFilePrivat
|
||||
{
|
||||
Q_DECLARE_PUBLIC(AbstractSheet)
|
||||
public:
|
||||
AbstractSheetPrivate(AbstractSheet *p);
|
||||
AbstractSheetPrivate(AbstractSheet *p, AbstractSheet::CreateFlag flag);
|
||||
~AbstractSheetPrivate();
|
||||
|
||||
Workbook *workbook;
|
||||
|
||||
@@ -35,8 +35,8 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE_XLSX
|
||||
|
||||
ChartPrivate::ChartPrivate(Chart *q)
|
||||
:AbstractOOXmlFilePrivate(q), chartType(static_cast<Chart::ChartType>(0))
|
||||
ChartPrivate::ChartPrivate(Chart *q, Chart::CreateFlag flag)
|
||||
:AbstractOOXmlFilePrivate(q, flag), chartType(static_cast<Chart::ChartType>(0))
|
||||
{
|
||||
|
||||
}
|
||||
@@ -77,8 +77,8 @@ ChartPrivate::~ChartPrivate()
|
||||
/*!
|
||||
* \internal
|
||||
*/
|
||||
Chart::Chart(AbstractSheet *parent)
|
||||
:AbstractOOXmlFile(new ChartPrivate(this))
|
||||
Chart::Chart(AbstractSheet *parent, CreateFlag flag)
|
||||
:AbstractOOXmlFile(new ChartPrivate(this, flag))
|
||||
{
|
||||
d_func()->sheet = parent;
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ private:
|
||||
friend class Chartsheet;
|
||||
friend class DrawingAnchor;
|
||||
|
||||
Chart(AbstractSheet *parent);
|
||||
Chart(AbstractSheet *parent, CreateFlag flag);
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE_XLSX
|
||||
|
||||
@@ -92,7 +92,7 @@ class ChartPrivate : public AbstractOOXmlFilePrivate
|
||||
Q_DECLARE_PUBLIC(Chart)
|
||||
|
||||
public:
|
||||
ChartPrivate(Chart *q);
|
||||
ChartPrivate(Chart *q, Chart::CreateFlag flag);
|
||||
~ChartPrivate();
|
||||
|
||||
bool loadXmlChart(QXmlStreamReader &reader);
|
||||
|
||||
@@ -35,8 +35,8 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE_XLSX
|
||||
|
||||
ChartsheetPrivate::ChartsheetPrivate(Chartsheet *p)
|
||||
: AbstractSheetPrivate(p)
|
||||
ChartsheetPrivate::ChartsheetPrivate(Chartsheet *p, Chartsheet::CreateFlag flag)
|
||||
: AbstractSheetPrivate(p, flag)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -53,8 +53,8 @@ ChartsheetPrivate::~ChartsheetPrivate()
|
||||
/*!
|
||||
* \internal
|
||||
*/
|
||||
Chartsheet::Chartsheet(const QString &name, int id, Workbook *workbook)
|
||||
:AbstractSheet(name, id, workbook, new ChartsheetPrivate(this))
|
||||
Chartsheet::Chartsheet(const QString &name, int id, Workbook *workbook, CreateFlag flag)
|
||||
:AbstractSheet(name, id, workbook, new ChartsheetPrivate(this, flag))
|
||||
{
|
||||
setSheetType(ST_ChartSheet);
|
||||
}
|
||||
@@ -130,7 +130,7 @@ bool Chartsheet::loadFromXmlFile(QIODevice *device)
|
||||
QString rId = reader.attributes().value(QStringLiteral("r:id")).toString();
|
||||
QString name = d->relationships->getRelationshipById(rId).target;
|
||||
QString path = QDir::cleanPath(splitPath(filePath())[0] + QLatin1String("/") + name);
|
||||
d->drawing = QSharedPointer<Drawing>(new Drawing(this));
|
||||
d->drawing = QSharedPointer<Drawing>(new Drawing(this, F_LoadFromExists));
|
||||
d->drawing->setFilePath(path);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ public:
|
||||
private:
|
||||
friend class DocumentPrivate;
|
||||
friend class Workbook;
|
||||
Chartsheet(const QString &sheetName, int sheetId, Workbook *book);
|
||||
Chartsheet(const QString &sheetName, int sheetId, Workbook *book, CreateFlag flag);
|
||||
Chartsheet *copy(const QString &distName, int distId) const;
|
||||
|
||||
void saveToXmlFile(QIODevice *device) const;
|
||||
|
||||
@@ -46,7 +46,7 @@ class XLSX_AUTOTEST_EXPORT ChartsheetPrivate : public AbstractSheetPrivate
|
||||
{
|
||||
Q_DECLARE_PUBLIC(Chartsheet)
|
||||
public:
|
||||
ChartsheetPrivate(Chartsheet *p);
|
||||
ChartsheetPrivate(Chartsheet *p, Chartsheet::CreateFlag flag);
|
||||
~ChartsheetPrivate();
|
||||
|
||||
Chart *chart;
|
||||
|
||||
@@ -32,7 +32,8 @@
|
||||
|
||||
namespace QXlsx {
|
||||
|
||||
ContentTypes::ContentTypes()
|
||||
ContentTypes::ContentTypes(CreateFlag flag)
|
||||
:AbstractOOXmlFile(flag)
|
||||
{
|
||||
m_package_prefix = QStringLiteral("application/vnd.openxmlformats-package.");
|
||||
m_document_prefix = QStringLiteral("application/vnd.openxmlformats-officedocument.");
|
||||
|
||||
@@ -49,7 +49,7 @@ namespace QXlsx {
|
||||
class ContentTypes : public AbstractOOXmlFile
|
||||
{
|
||||
public:
|
||||
ContentTypes();
|
||||
ContentTypes(CreateFlag flag);
|
||||
|
||||
void addDefault(const QString &key, const QString &value);
|
||||
void addOverride(const QString &key, const QString &value);
|
||||
|
||||
@@ -34,7 +34,8 @@
|
||||
|
||||
namespace QXlsx {
|
||||
|
||||
DocPropsApp::DocPropsApp()
|
||||
DocPropsApp::DocPropsApp(CreateFlag flag)
|
||||
:AbstractOOXmlFile(flag)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ namespace QXlsx {
|
||||
class XLSX_AUTOTEST_EXPORT DocPropsApp : public AbstractOOXmlFile
|
||||
{
|
||||
public:
|
||||
DocPropsApp();
|
||||
DocPropsApp(CreateFlag flag);
|
||||
|
||||
void addPartTitle(const QString &title);
|
||||
void addHeadingPair(const QString &name, int value);
|
||||
|
||||
@@ -34,7 +34,8 @@
|
||||
|
||||
namespace QXlsx {
|
||||
|
||||
DocPropsCore::DocPropsCore()
|
||||
DocPropsCore::DocPropsCore(CreateFlag flag)
|
||||
:AbstractOOXmlFile(flag)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace QXlsx {
|
||||
class XLSX_AUTOTEST_EXPORT DocPropsCore : public AbstractOOXmlFile
|
||||
{
|
||||
public:
|
||||
explicit DocPropsCore();
|
||||
explicit DocPropsCore(CreateFlag flag);
|
||||
|
||||
bool setProperty(const QString &name, const QString &value);
|
||||
QString property(const QString &name) const;
|
||||
|
||||
+27
-20
@@ -87,11 +87,16 @@ QT_BEGIN_NAMESPACE_XLSX
|
||||
DocumentPrivate::DocumentPrivate(Document *p) :
|
||||
q_ptr(p), defaultPackageName(QStringLiteral("Book1.xlsx"))
|
||||
{
|
||||
workbook = QSharedPointer<Workbook>(new Workbook);
|
||||
}
|
||||
|
||||
void DocumentPrivate::init()
|
||||
{
|
||||
if (contentTypes.isNull())
|
||||
contentTypes = QSharedPointer<ContentTypes>(new ContentTypes(ContentTypes::F_NewFromScratch));
|
||||
|
||||
if (workbook.isNull())
|
||||
workbook = QSharedPointer<Workbook>(new Workbook(Workbook::F_NewFromScratch));
|
||||
|
||||
if (workbook->sheetCount() == 0)
|
||||
workbook->addSheet();
|
||||
}
|
||||
@@ -105,7 +110,8 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
|
||||
//Load the Content_Types file
|
||||
if (!filePaths.contains(QLatin1String("[Content_Types].xml")))
|
||||
return false;
|
||||
contentTypes.loadFromXmlData(zipReader.fileData(QStringLiteral("[Content_Types].xml")));
|
||||
contentTypes = QSharedPointer<ContentTypes>(new ContentTypes(ContentTypes::F_LoadFromExists));
|
||||
contentTypes->loadFromXmlData(zipReader.fileData(QStringLiteral("[Content_Types].xml")));
|
||||
|
||||
//Load root rels file
|
||||
if (!filePaths.contains(QLatin1String("_rels/.rels")))
|
||||
@@ -120,7 +126,7 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
|
||||
//In normal case, this should be "docProps/core.xml"
|
||||
QString docPropsCore_Name = rels_core[0].target;
|
||||
|
||||
DocPropsCore props;
|
||||
DocPropsCore props(DocPropsCore::F_LoadFromExists);
|
||||
props.loadFromXmlData(zipReader.fileData(docPropsCore_Name));
|
||||
foreach (QString name, props.propertyNames())
|
||||
q->setDocumentProperty(name, props.property(name));
|
||||
@@ -133,7 +139,7 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
|
||||
//In normal case, this should be "docProps/app.xml"
|
||||
QString docPropsApp_Name = rels_app[0].target;
|
||||
|
||||
DocPropsApp props;
|
||||
DocPropsApp props(DocPropsApp::F_LoadFromExists);
|
||||
props.loadFromXmlData(zipReader.fileData(docPropsApp_Name));
|
||||
foreach (QString name, props.propertyNames())
|
||||
q->setDocumentProperty(name, props.property(name));
|
||||
@@ -141,6 +147,7 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
|
||||
|
||||
//load workbook now, Get the workbook file path from the root rels file
|
||||
//In normal case, this should be "xl/workbook.xml"
|
||||
workbook = QSharedPointer<Workbook>(new Workbook(Workbook::F_LoadFromExists));
|
||||
QList<XlsxRelationship> rels_xl = rootRels.documentRelationships(QStringLiteral("/officeDocument"));
|
||||
if (rels_xl.isEmpty())
|
||||
return false;
|
||||
@@ -156,7 +163,7 @@ bool DocumentPrivate::loadPackage(QIODevice *device)
|
||||
//In normal case this should be styles.xml which in xl
|
||||
QString name = rels_styles[0].target;
|
||||
QString path = xlworkbook_Dir + QLatin1String("/") + name;
|
||||
QSharedPointer<Styles> styles (new Styles(true));
|
||||
QSharedPointer<Styles> styles (new Styles(Styles::F_LoadFromExists));
|
||||
styles->loadFromXmlData(zipReader.fileData(path));
|
||||
workbook->d_func()->styles = styles;
|
||||
}
|
||||
@@ -234,16 +241,16 @@ bool DocumentPrivate::savePackage(QIODevice *device) const
|
||||
if (zipWriter.error())
|
||||
return false;
|
||||
|
||||
contentTypes.clearOverrides();
|
||||
contentTypes->clearOverrides();
|
||||
|
||||
DocPropsApp docPropsApp;
|
||||
DocPropsCore docPropsCore;
|
||||
DocPropsApp docPropsApp(DocPropsApp::F_NewFromScratch);
|
||||
DocPropsCore docPropsCore(DocPropsCore::F_NewFromScratch);
|
||||
|
||||
// save sheet xml files
|
||||
for (int i=0; i<workbook->sheetCount(); ++i) {
|
||||
AbstractSheet *sheet = workbook->sheet(i);
|
||||
if (sheet->sheetType() == AbstractSheet::ST_WorkSheet) {
|
||||
contentTypes.addWorksheetName(QStringLiteral("sheet%1").arg(i+1));
|
||||
contentTypes->addWorksheetName(QStringLiteral("sheet%1").arg(i+1));
|
||||
docPropsApp.addPartTitle(sheet->sheetName());
|
||||
|
||||
zipWriter.addFile(QStringLiteral("xl/worksheets/sheet%1.xml").arg(i+1), sheet->saveToXmlData());
|
||||
@@ -256,7 +263,7 @@ bool DocumentPrivate::savePackage(QIODevice *device) const
|
||||
// save external links xml files
|
||||
for (int i=0; i<workbook->d_func()->externalLinks.count(); ++i) {
|
||||
SimpleOOXmlFile *link = workbook->d_func()->externalLinks[i].data();
|
||||
contentTypes.addExternalLinkName(QStringLiteral("externalLink%1").arg(i+1));
|
||||
contentTypes->addExternalLinkName(QStringLiteral("externalLink%1").arg(i+1));
|
||||
|
||||
zipWriter.addFile(QStringLiteral("xl/externalLinks/externalLink%1.xml").arg(i+1), link->saveToXmlData());
|
||||
Relationships *rel = link->relationships();
|
||||
@@ -265,13 +272,13 @@ bool DocumentPrivate::savePackage(QIODevice *device) const
|
||||
}
|
||||
|
||||
// save workbook xml file
|
||||
contentTypes.addWorkbook();
|
||||
contentTypes->addWorkbook();
|
||||
zipWriter.addFile(QStringLiteral("xl/workbook.xml"), workbook->saveToXmlData());
|
||||
zipWriter.addFile(QStringLiteral("xl/_rels/workbook.xml.rels"), workbook->relationships()->saveToXmlData());
|
||||
|
||||
// save drawing xml files
|
||||
for (int i=0; i<workbook->drawings().size(); ++i) {
|
||||
contentTypes.addDrawingName(QStringLiteral("drawing%1").arg(i+1));
|
||||
contentTypes->addDrawingName(QStringLiteral("drawing%1").arg(i+1));
|
||||
|
||||
Drawing *drawing = workbook->drawings()[i];
|
||||
zipWriter.addFile(QStringLiteral("xl/drawings/drawing%1.xml").arg(i+1), drawing->saveToXmlData());
|
||||
@@ -286,28 +293,28 @@ bool DocumentPrivate::savePackage(QIODevice *device) const
|
||||
}
|
||||
if (workbook->sheetCount())
|
||||
docPropsApp.addHeadingPair(QStringLiteral("Worksheets"), workbook->sheetCount());
|
||||
contentTypes.addDocPropApp();
|
||||
contentTypes.addDocPropCore();
|
||||
contentTypes->addDocPropApp();
|
||||
contentTypes->addDocPropCore();
|
||||
zipWriter.addFile(QStringLiteral("docProps/app.xml"), docPropsApp.saveToXmlData());
|
||||
zipWriter.addFile(QStringLiteral("docProps/core.xml"), docPropsCore.saveToXmlData());
|
||||
|
||||
// save sharedStrings xml file
|
||||
if (!workbook->sharedStrings()->isEmpty()) {
|
||||
contentTypes.addSharedString();
|
||||
contentTypes->addSharedString();
|
||||
zipWriter.addFile(QStringLiteral("xl/sharedStrings.xml"), workbook->sharedStrings()->saveToXmlData());
|
||||
}
|
||||
|
||||
// save styles xml file
|
||||
contentTypes.addStyles();
|
||||
contentTypes->addStyles();
|
||||
zipWriter.addFile(QStringLiteral("xl/styles.xml"), workbook->styles()->saveToXmlData());
|
||||
|
||||
// save theme xml file
|
||||
contentTypes.addTheme();
|
||||
contentTypes->addTheme();
|
||||
zipWriter.addFile(QStringLiteral("xl/theme/theme1.xml"), workbook->theme()->saveToXmlData());
|
||||
|
||||
// save chart xml files
|
||||
for (int i=0; i<workbook->chartFiles().size(); ++i) {
|
||||
contentTypes.addChartName(QStringLiteral("chart%1").arg(i+1));
|
||||
contentTypes->addChartName(QStringLiteral("chart%1").arg(i+1));
|
||||
QSharedPointer<Chart> cf = workbook->chartFiles()[i];
|
||||
zipWriter.addFile(QStringLiteral("xl/charts/chart%1.xml").arg(i+1), cf->saveToXmlData());
|
||||
}
|
||||
@@ -316,7 +323,7 @@ bool DocumentPrivate::savePackage(QIODevice *device) const
|
||||
for (int i=0; i<workbook->mediaFiles().size(); ++i) {
|
||||
QSharedPointer<MediaFile> mf = workbook->mediaFiles()[i];
|
||||
if (!mf->mimeType().isEmpty())
|
||||
contentTypes.addDefault(mf->suffix(), mf->mimeType());
|
||||
contentTypes->addDefault(mf->suffix(), mf->mimeType());
|
||||
|
||||
zipWriter.addFile(QStringLiteral("xl/media/image%1.%2").arg(i+1).arg(mf->suffix()), mf->contents());
|
||||
}
|
||||
@@ -329,7 +336,7 @@ bool DocumentPrivate::savePackage(QIODevice *device) const
|
||||
zipWriter.addFile(QStringLiteral("_rels/.rels"), rootrels.saveToXmlData());
|
||||
|
||||
// save content types xml file
|
||||
zipWriter.addFile(QStringLiteral("[Content_Types].xml"), contentTypes.saveToXmlData());
|
||||
zipWriter.addFile(QStringLiteral("[Content_Types].xml"), contentTypes->saveToXmlData());
|
||||
|
||||
zipWriter.close();
|
||||
return true;
|
||||
|
||||
@@ -61,7 +61,7 @@ public:
|
||||
|
||||
QMap<QString, QString> documentProperties; //core, app and custom properties
|
||||
QSharedPointer<Workbook> workbook;
|
||||
mutable ContentTypes contentTypes;
|
||||
QSharedPointer<ContentTypes> contentTypes;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
|
||||
namespace QXlsx {
|
||||
|
||||
Drawing::Drawing(AbstractSheet *sheet)
|
||||
:sheet(sheet)
|
||||
Drawing::Drawing(AbstractSheet *sheet, CreateFlag flag)
|
||||
:AbstractOOXmlFile(flag), sheet(sheet)
|
||||
{
|
||||
workbook = sheet->workbook();
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ class MediaFile;
|
||||
class Drawing : public AbstractOOXmlFile
|
||||
{
|
||||
public:
|
||||
Drawing(AbstractSheet *sheet);
|
||||
Drawing(AbstractSheet *sheet, CreateFlag flag);
|
||||
~Drawing();
|
||||
void saveToXmlFile(QIODevice *device) const;
|
||||
bool loadFromXmlFile(QIODevice *device);
|
||||
|
||||
@@ -206,7 +206,7 @@ void DrawingAnchor::loadXmlObjectGraphicFrame(QXmlStreamReader &reader)
|
||||
}
|
||||
}
|
||||
if (!exist) {
|
||||
m_chartFile = QSharedPointer<Chart> (new Chart(m_drawing->sheet));
|
||||
m_chartFile = QSharedPointer<Chart> (new Chart(m_drawing->sheet, Chart::F_LoadFromExists));
|
||||
m_chartFile->setFilePath(path);
|
||||
m_drawing->workbook->addChartFile(m_chartFile);
|
||||
}
|
||||
|
||||
@@ -37,7 +37,8 @@
|
||||
|
||||
namespace QXlsx {
|
||||
|
||||
SharedStrings::SharedStrings()
|
||||
SharedStrings::SharedStrings(CreateFlag flag)
|
||||
:AbstractOOXmlFile(flag)
|
||||
{
|
||||
m_stringCount = 0;
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ public:
|
||||
class XLSX_AUTOTEST_EXPORT SharedStrings : public AbstractOOXmlFile
|
||||
{
|
||||
public:
|
||||
SharedStrings();
|
||||
SharedStrings(CreateFlag flag);
|
||||
int count() const;
|
||||
bool isEmpty() const;
|
||||
|
||||
|
||||
@@ -26,7 +26,8 @@
|
||||
#include <QIODevice>
|
||||
|
||||
namespace QXlsx {
|
||||
SimpleOOXmlFile::SimpleOOXmlFile()
|
||||
SimpleOOXmlFile::SimpleOOXmlFile(CreateFlag flag)
|
||||
:AbstractOOXmlFile(flag)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace QXlsx {
|
||||
class SimpleOOXmlFile : public AbstractOOXmlFile
|
||||
{
|
||||
public:
|
||||
SimpleOOXmlFile();
|
||||
SimpleOOXmlFile(CreateFlag flag);
|
||||
|
||||
void saveToXmlFile(QIODevice *device) const;
|
||||
QByteArray saveToXmlData() const;
|
||||
|
||||
@@ -41,12 +41,12 @@ namespace QXlsx {
|
||||
otherwise, default formats should be added.
|
||||
|
||||
*/
|
||||
Styles::Styles(bool createEmpty)
|
||||
: m_nextCustomNumFmtId(176), m_emptyFormatAdded(false)
|
||||
Styles::Styles(CreateFlag flag)
|
||||
: AbstractOOXmlFile(flag), m_nextCustomNumFmtId(176), m_emptyFormatAdded(false)
|
||||
{
|
||||
//!Fix me. Should the custom num fmt Id starts with 164 or 176 or others??
|
||||
|
||||
if (!createEmpty) {
|
||||
if (flag == F_NewFromScratch) {
|
||||
//Add default Format
|
||||
Format defaultFmt;
|
||||
addXfFormat(defaultFmt);
|
||||
|
||||
@@ -67,7 +67,7 @@ struct XlsxFormatNumberData
|
||||
class XLSX_AUTOTEST_EXPORT Styles : public AbstractOOXmlFile
|
||||
{
|
||||
public:
|
||||
Styles(bool createEmpty=false);
|
||||
Styles(CreateFlag flag);
|
||||
~Styles();
|
||||
void addXfFormat(const Format &format, bool force=false);
|
||||
Format xfFormat(int idx) const;
|
||||
|
||||
@@ -201,7 +201,8 @@ const char *defaultXmlData =
|
||||
"</a:theme>"
|
||||
;
|
||||
|
||||
Theme::Theme()
|
||||
Theme::Theme(CreateFlag flag)
|
||||
:AbstractOOXmlFile(flag)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace QXlsx {
|
||||
class Theme : public AbstractOOXmlFile
|
||||
{
|
||||
public:
|
||||
Theme();
|
||||
Theme(CreateFlag flag);
|
||||
|
||||
void saveToXmlFile(QIODevice *device) const;
|
||||
QByteArray saveToXmlData() const;
|
||||
|
||||
+10
-10
@@ -41,12 +41,12 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE_XLSX
|
||||
|
||||
WorkbookPrivate::WorkbookPrivate(Workbook *q) :
|
||||
AbstractOOXmlFilePrivate(q)
|
||||
WorkbookPrivate::WorkbookPrivate(Workbook *q, Workbook::CreateFlag flag) :
|
||||
AbstractOOXmlFilePrivate(q, flag)
|
||||
{
|
||||
sharedStrings = QSharedPointer<SharedStrings> (new SharedStrings);
|
||||
styles = QSharedPointer<Styles>(new Styles);
|
||||
theme = QSharedPointer<Theme>(new Theme);
|
||||
sharedStrings = QSharedPointer<SharedStrings> (new SharedStrings(flag));
|
||||
styles = QSharedPointer<Styles>(new Styles(flag));
|
||||
theme = QSharedPointer<Theme>(new Theme(flag));
|
||||
|
||||
x_window = 240;
|
||||
y_window = 15;
|
||||
@@ -65,8 +65,8 @@ WorkbookPrivate::WorkbookPrivate(Workbook *q) :
|
||||
last_sheet_id = 0;
|
||||
}
|
||||
|
||||
Workbook::Workbook()
|
||||
: AbstractOOXmlFile(new WorkbookPrivate(this))
|
||||
Workbook::Workbook(CreateFlag flag)
|
||||
: AbstractOOXmlFile(new WorkbookPrivate(this, flag))
|
||||
{
|
||||
|
||||
}
|
||||
@@ -196,7 +196,7 @@ AbstractSheet *Workbook::addSheet(const QString &name, int sheetId, AbstractShee
|
||||
if (sheetId > d->last_sheet_id)
|
||||
d->last_sheet_id = sheetId;
|
||||
|
||||
Worksheet *sheet = new Worksheet(name, sheetId, this);
|
||||
Worksheet *sheet = new Worksheet(name, sheetId, this, F_LoadFromExists);
|
||||
d->sheets.append(QSharedPointer<Worksheet>(sheet));
|
||||
d->sheetNames.append(name);
|
||||
return sheet;
|
||||
@@ -218,7 +218,7 @@ AbstractSheet *Workbook::insertSheet(int index, const QString &name, AbstractShe
|
||||
}
|
||||
|
||||
++d->last_sheet_id;
|
||||
Worksheet *sheet = new Worksheet(worksheetName, d->last_sheet_id, this);
|
||||
Worksheet *sheet = new Worksheet(worksheetName, d->last_sheet_id, this, F_NewFromScratch);
|
||||
d->sheets.insert(index, QSharedPointer<Worksheet>(sheet));
|
||||
d->sheetNames.insert(index, worksheetName);
|
||||
d->activesheetIndex = index;
|
||||
@@ -545,7 +545,7 @@ bool Workbook::loadFromXmlFile(QIODevice *device)
|
||||
const QString rId = attributes.value(QLatin1String("r:id")).toString();
|
||||
XlsxRelationship relationship = d->relationships->getRelationshipById(rId);
|
||||
|
||||
QSharedPointer<SimpleOOXmlFile> link(new SimpleOOXmlFile);
|
||||
QSharedPointer<SimpleOOXmlFile> link(new SimpleOOXmlFile(F_LoadFromExists));
|
||||
const QString fullPath = QDir::cleanPath(splitPath(filePath())[0] +QLatin1String("/")+ relationship.target);
|
||||
link->setFilePath(fullPath);
|
||||
d->externalLinks.append(link);
|
||||
|
||||
@@ -92,7 +92,7 @@ private:
|
||||
friend class Document;
|
||||
friend class DocumentPrivate;
|
||||
|
||||
Workbook();
|
||||
Workbook(Workbook::CreateFlag flag);
|
||||
|
||||
void saveToXmlFile(QIODevice *device) const;
|
||||
bool loadFromXmlFile(QIODevice *device);
|
||||
|
||||
@@ -69,7 +69,7 @@ class WorkbookPrivate : public AbstractOOXmlFilePrivate
|
||||
{
|
||||
Q_DECLARE_PUBLIC(Workbook)
|
||||
public:
|
||||
WorkbookPrivate(Workbook *q);
|
||||
WorkbookPrivate(Workbook *q, Workbook::CreateFlag flag);
|
||||
|
||||
QSharedPointer<SharedStrings> sharedStrings;
|
||||
QList<QSharedPointer<AbstractSheet> > sheets;
|
||||
|
||||
+10
-10
@@ -56,8 +56,8 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE_XLSX
|
||||
|
||||
WorksheetPrivate::WorksheetPrivate(Worksheet *p)
|
||||
: AbstractSheetPrivate(p)
|
||||
WorksheetPrivate::WorksheetPrivate(Worksheet *p, Worksheet::CreateFlag flag)
|
||||
: AbstractSheetPrivate(p, flag)
|
||||
, windowProtection(false), showFormulas(false), showGridLines(true), showRowColHeaders(true)
|
||||
, showZeros(true), rightToLeft(false), tabSelected(false), showRuler(false)
|
||||
, showOutlineSymbols(true), showWhiteSpace(true)
|
||||
@@ -171,11 +171,11 @@ int WorksheetPrivate::checkDimensions(int row, int col, bool ignore_row, bool ig
|
||||
/*!
|
||||
* \internal
|
||||
*/
|
||||
Worksheet::Worksheet(const QString &name, int id, Workbook *workbook)
|
||||
:AbstractSheet(name, id, workbook, new WorksheetPrivate(this))
|
||||
Worksheet::Worksheet(const QString &name, int id, Workbook *workbook, CreateFlag flag)
|
||||
:AbstractSheet(name, id, workbook, new WorksheetPrivate(this, flag))
|
||||
{
|
||||
if (!workbook) //For unit test propose only. Ignore the memery leak.
|
||||
d_func()->workbook = new Workbook;
|
||||
d_func()->workbook = new Workbook(flag);
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -187,7 +187,7 @@ Worksheet::Worksheet(const QString &name, int id, Workbook *workbook)
|
||||
Worksheet *Worksheet::copy(const QString &distName, int distId) const
|
||||
{
|
||||
Q_D(const Worksheet);
|
||||
Worksheet *sheet = new Worksheet(distName, distId, d->workbook);
|
||||
Worksheet *sheet = new Worksheet(distName, distId, d->workbook, F_NewFromScratch);
|
||||
WorksheetPrivate *sheet_d = sheet->d_func();
|
||||
|
||||
sheet_d->dimension = d->dimension;
|
||||
@@ -1028,7 +1028,7 @@ bool Worksheet::insertImage(int row, int column, const QImage &image)
|
||||
return false;
|
||||
|
||||
if (!d->drawing)
|
||||
d->drawing = QSharedPointer<Drawing>(new Drawing(this));
|
||||
d->drawing = QSharedPointer<Drawing>(new Drawing(this, F_NewFromScratch));
|
||||
|
||||
DrawingOneCellAnchor *anchor = new DrawingOneCellAnchor(d->drawing.data(), DrawingAnchor::Picture);
|
||||
|
||||
@@ -1054,7 +1054,7 @@ Chart *Worksheet::insertChart(int row, int column, const QSize &size)
|
||||
Q_D(Worksheet);
|
||||
|
||||
if (!d->drawing)
|
||||
d->drawing = QSharedPointer<Drawing>(new Drawing(this));
|
||||
d->drawing = QSharedPointer<Drawing>(new Drawing(this, F_NewFromScratch));
|
||||
|
||||
DrawingOneCellAnchor *anchor = new DrawingOneCellAnchor(d->drawing.data(), DrawingAnchor::Picture);
|
||||
|
||||
@@ -1066,7 +1066,7 @@ Chart *Worksheet::insertChart(int row, int column, const QSize &size)
|
||||
anchor->from = XlsxMarker(row, column, 0, 0);
|
||||
anchor->ext = size * 9525;
|
||||
|
||||
QSharedPointer<Chart> chart = QSharedPointer<Chart>(new Chart(this));
|
||||
QSharedPointer<Chart> chart = QSharedPointer<Chart>(new Chart(this, F_NewFromScratch));
|
||||
anchor->setObjectGraphicFrame(chart);
|
||||
|
||||
return chart.data();
|
||||
@@ -2116,7 +2116,7 @@ bool Worksheet::loadFromXmlFile(QIODevice *device)
|
||||
QString rId = reader.attributes().value(QStringLiteral("r:id")).toString();
|
||||
QString name = d->relationships->getRelationshipById(rId).target;
|
||||
QString path = QDir::cleanPath(splitPath(filePath())[0] + QLatin1String("/") + name);
|
||||
d->drawing = QSharedPointer<Drawing>(new Drawing(this));
|
||||
d->drawing = QSharedPointer<Drawing>(new Drawing(this, F_LoadFromExists));
|
||||
d->drawing->setFilePath(path);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ private:
|
||||
friend class DocumentPrivate;
|
||||
friend class Workbook;
|
||||
friend class ::WorksheetTest;
|
||||
Worksheet(const QString &sheetName, int sheetId, Workbook *book);
|
||||
Worksheet(const QString &sheetName, int sheetId, Workbook *book, CreateFlag flag);
|
||||
Worksheet *copy(const QString &distName, int distId) const;
|
||||
|
||||
void saveToXmlFile(QIODevice *device) const;
|
||||
|
||||
@@ -115,7 +115,7 @@ class XLSX_AUTOTEST_EXPORT WorksheetPrivate : public AbstractSheetPrivate
|
||||
{
|
||||
Q_DECLARE_PUBLIC(Worksheet)
|
||||
public:
|
||||
WorksheetPrivate(Worksheet *p);
|
||||
WorksheetPrivate(Worksheet *p, Worksheet::CreateFlag flag);
|
||||
~WorksheetPrivate();
|
||||
int checkDimensions(int row, int col, bool ignore_row=false, bool ignore_col=false);
|
||||
Format cellFormat(int row, int col) const;
|
||||
|
||||
Reference in New Issue
Block a user