Introduce CreateFlag for all the ooxmlfile

This commit is contained in:
Debao Zhang
2014-02-27 14:07:38 +08:00
parent 12129cebdc
commit 34c645ed76
41 changed files with 140 additions and 119 deletions
+4 -4
View File
@@ -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))
{
}
+8 -1
View File
@@ -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;
+2 -1
View File
@@ -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;
};
+2 -2
View File
@@ -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;
+1 -1
View File
@@ -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;
+4 -4
View File
@@ -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;
}
+1 -1
View File
@@ -80,7 +80,7 @@ private:
friend class Chartsheet;
friend class DrawingAnchor;
Chart(AbstractSheet *parent);
Chart(AbstractSheet *parent, CreateFlag flag);
};
QT_END_NAMESPACE_XLSX
+1 -1
View File
@@ -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);
+5 -5
View File
@@ -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);
}
}
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -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;
+2 -1
View File
@@ -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.");
+1 -1
View File
@@ -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);
+2 -1
View File
@@ -34,7 +34,8 @@
namespace QXlsx {
DocPropsApp::DocPropsApp()
DocPropsApp::DocPropsApp(CreateFlag flag)
:AbstractOOXmlFile(flag)
{
}
+1 -1
View File
@@ -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);
+2 -1
View File
@@ -34,7 +34,8 @@
namespace QXlsx {
DocPropsCore::DocPropsCore()
DocPropsCore::DocPropsCore(CreateFlag flag)
:AbstractOOXmlFile(flag)
{
}
+1 -1
View File
@@ -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
View File
@@ -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;
+1 -1
View File
@@ -61,7 +61,7 @@ public:
QMap<QString, QString> documentProperties; //core, app and custom properties
QSharedPointer<Workbook> workbook;
mutable ContentTypes contentTypes;
QSharedPointer<ContentTypes> contentTypes;
};
}
+2 -2
View File
@@ -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();
}
+1 -1
View File
@@ -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);
+1 -1
View File
@@ -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);
}
+2 -1
View File
@@ -37,7 +37,8 @@
namespace QXlsx {
SharedStrings::SharedStrings()
SharedStrings::SharedStrings(CreateFlag flag)
:AbstractOOXmlFile(flag)
{
m_stringCount = 0;
}
+1 -1
View File
@@ -64,7 +64,7 @@ public:
class XLSX_AUTOTEST_EXPORT SharedStrings : public AbstractOOXmlFile
{
public:
SharedStrings();
SharedStrings(CreateFlag flag);
int count() const;
bool isEmpty() const;
+2 -1
View File
@@ -26,7 +26,8 @@
#include <QIODevice>
namespace QXlsx {
SimpleOOXmlFile::SimpleOOXmlFile()
SimpleOOXmlFile::SimpleOOXmlFile(CreateFlag flag)
:AbstractOOXmlFile(flag)
{
}
+1 -1
View File
@@ -45,7 +45,7 @@ namespace QXlsx {
class SimpleOOXmlFile : public AbstractOOXmlFile
{
public:
SimpleOOXmlFile();
SimpleOOXmlFile(CreateFlag flag);
void saveToXmlFile(QIODevice *device) const;
QByteArray saveToXmlData() const;
+3 -3
View File
@@ -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);
+1 -1
View File
@@ -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;
+2 -1
View File
@@ -201,7 +201,8 @@ const char *defaultXmlData =
"</a:theme>"
;
Theme::Theme()
Theme::Theme(CreateFlag flag)
:AbstractOOXmlFile(flag)
{
}
+1 -1
View File
@@ -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
View File
@@ -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);
+1 -1
View File
@@ -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);
+1 -1
View File
@@ -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
View File
@@ -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);
}
}
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -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;