From fd1bf132a8fdeeaf01498b7e8c0b49c8ecc35757 Mon Sep 17 00:00:00 2001 From: Debao Zhang Date: Wed, 30 Oct 2013 13:25:02 +0800 Subject: [PATCH] Fix bug: workbook information doesn't load to document --- src/xlsx/xlsxpackage.cpp | 4 ++-- src/xlsx/xlsxworkbook.cpp | 28 ++++++++++++++-------------- src/xlsx/xlsxworkbook.h | 4 ++-- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/xlsx/xlsxpackage.cpp b/src/xlsx/xlsxpackage.cpp index dd8f7a6..2798e34 100644 --- a/src/xlsx/xlsxpackage.cpp +++ b/src/xlsx/xlsxpackage.cpp @@ -138,8 +138,8 @@ bool Package::parsePackage(QIODevice *packageDevice) QStringList xlworkbook_PathList = splitPath(xlworkbook_Path); QString xlworkbook_Dir = xlworkbook_PathList[0]; QString xlworkbook_Name = xlworkbook_PathList[1]; - QSharedPointer book = Workbook::loadFromXmlData(zipReader.fileData(xlworkbook_Path)); - QList sheetNameIdPairList = book->d_func()->sheetItemInfoList; + m_document->workbook()->loadFromXmlData(zipReader.fileData(xlworkbook_Path)); + QList sheetNameIdPairList = m_document->workbook()->d_func()->sheetItemInfoList; Relationships xlworkbook_Rels = Relationships::loadFromXmlData( zipReader.fileData(xlworkbook_Dir+QStringLiteral("/_rels/")+xlworkbook_Name+QStringLiteral(".rels"))); diff --git a/src/xlsx/xlsxworkbook.cpp b/src/xlsx/xlsxworkbook.cpp index 714672d..168351e 100755 --- a/src/xlsx/xlsxworkbook.cpp +++ b/src/xlsx/xlsxworkbook.cpp @@ -373,9 +373,9 @@ QByteArray Workbook::saveToXmlData() return data; } -QSharedPointer Workbook::loadFromXmlFile(QIODevice *device) +bool Workbook::loadFromXmlFile(QIODevice *device) { - QSharedPointer book(new Workbook); + Q_D(Workbook); XmlStreamReader reader(device); while(!reader.atEnd()) { @@ -389,11 +389,11 @@ QSharedPointer Workbook::loadFromXmlFile(QIODevice *device) info.rId = attributes.value(QLatin1String("r:id")).toString(); if (attributes.hasAttribute(QLatin1String("state"))) info.state = attributes.value(QLatin1String("state")).toString(); - book->d_func()->sheetItemInfoList.append(info); + d->sheetItemInfoList.append(info); } else if (reader.name() == QLatin1String("workbookPr")) { QXmlStreamAttributes attrs = reader.attributes(); if (attrs.hasAttribute(QLatin1String("date1904"))) - book->d_ptr->date1904 = true; + d->date1904 = true; } else if (reader.name() == QLatin1String("bookviews")) { while(!(reader.name() == QLatin1String("bookviews") && reader.tokenType() == QXmlStreamReader::EndElement)) { reader.readNextStartElement(); @@ -401,17 +401,17 @@ QSharedPointer Workbook::loadFromXmlFile(QIODevice *device) if (reader.name() == QLatin1String("workbookView")) { QXmlStreamAttributes attrs = reader.attributes(); if (attrs.hasAttribute(QLatin1String("xWindow"))) - book->d_func()->x_window = attrs.value(QLatin1String("xWindow")).toInt(); + d->x_window = attrs.value(QLatin1String("xWindow")).toInt(); if (attrs.hasAttribute(QLatin1String("yWindow"))) - book->d_func()->y_window = attrs.value(QLatin1String("yWindow")).toInt(); + d->y_window = attrs.value(QLatin1String("yWindow")).toInt(); if (attrs.hasAttribute(QLatin1String("windowWidth"))) - book->d_func()->window_width = attrs.value(QLatin1String("windowWidth")).toInt(); + d->window_width = attrs.value(QLatin1String("windowWidth")).toInt(); if (attrs.hasAttribute(QLatin1String("windowHeight"))) - book->d_func()->window_height = attrs.value(QLatin1String("windowHeight")).toInt(); + d->window_height = attrs.value(QLatin1String("windowHeight")).toInt(); if (attrs.hasAttribute(QLatin1String("firstSheet"))) - book->d_func()->firstsheet = attrs.value(QLatin1String("firstSheet")).toInt(); + d->firstsheet = attrs.value(QLatin1String("firstSheet")).toInt(); if (attrs.hasAttribute(QLatin1String("activeTab"))) - book->d_func()->activesheet = attrs.value(QLatin1String("activeTab")).toInt(); + d->activesheet = attrs.value(QLatin1String("activeTab")).toInt(); } } } @@ -424,18 +424,18 @@ QSharedPointer Workbook::loadFromXmlFile(QIODevice *device) data.comment = attrs.value(QLatin1String("comment")).toString(); if (attrs.hasAttribute(QLatin1String("localSheetId"))) { int localId = attrs.value(QLatin1String("localSheetId")).toInt(); - int sheetId = book->d_func()->sheetItemInfoList[localId].sheetId; + int sheetId = d->sheetItemInfoList[localId].sheetId; data.sheetId = sheetId; } data.formula = reader.readElementText(); - book->d_func()->definedNamesList.append(data); + d->definedNamesList.append(data); } } } - return book; + return true; } -QSharedPointer Workbook::loadFromXmlData(const QByteArray &data) +bool Workbook::loadFromXmlData(const QByteArray &data) { QBuffer buffer; buffer.setData(data); diff --git a/src/xlsx/xlsxworkbook.h b/src/xlsx/xlsxworkbook.h index 55f7b25..2ba599b 100755 --- a/src/xlsx/xlsxworkbook.h +++ b/src/xlsx/xlsxworkbook.h @@ -77,8 +77,8 @@ private: void saveToXmlFile(QIODevice *device); QByteArray saveToXmlData(); - static QSharedPointer loadFromXmlFile(QIODevice *device); - static QSharedPointer loadFromXmlData(const QByteArray &data); + bool loadFromXmlFile(QIODevice *device); + bool loadFromXmlData(const QByteArray &data); SharedStrings *sharedStrings() const; Styles *styles();