diff --git a/src/xlsx/xlsxpackage.cpp b/src/xlsx/xlsxpackage.cpp index 982e3c3..06f5730 100644 --- a/src/xlsx/xlsxpackage.cpp +++ b/src/xlsx/xlsxpackage.cpp @@ -104,7 +104,8 @@ bool Package::parsePackage(QIODevice *packageDevice) if (!filePaths.contains(QLatin1String("_rels/.rels"))) return false; - Relationships rootRels = Relationships::loadFromXmlData(zipReader.fileData(QStringLiteral("_rels/.rels"))); + Relationships rootRels; + rootRels.loadFromXmlData(zipReader.fileData(QStringLiteral("_rels/.rels"))); //load core property QList rels_core = rootRels.packageRelationships(QStringLiteral("/metadata/core-properties")); @@ -141,8 +142,8 @@ bool Package::parsePackage(QIODevice *packageDevice) QString xlworkbook_Name = xlworkbook_PathList[1]; 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"))); + Relationships xlworkbook_Rels; + xlworkbook_Rels.loadFromXmlData(zipReader.fileData(xlworkbook_Dir+QStringLiteral("/_rels/")+xlworkbook_Name+QStringLiteral(".rels"))); //load styles QList rels_styles = xlworkbook_Rels.documentRelationships(QStringLiteral("/styles")); diff --git a/src/xlsx/xlsxrelationships.cpp b/src/xlsx/xlsxrelationships.cpp index 3d657e7..55cb99a 100755 --- a/src/xlsx/xlsxrelationships.cpp +++ b/src/xlsx/xlsxrelationships.cpp @@ -130,10 +130,9 @@ QByteArray Relationships::saveToXmlData() return data; } -Relationships Relationships::loadFromXmlFile(QIODevice *device) +bool Relationships::loadFromXmlFile(QIODevice *device) { - Relationships rels; - + clear(); QXmlStreamReader reader(device); while (!reader.atEnd()) { QXmlStreamReader::TokenType token = reader.readNext(); @@ -145,18 +144,17 @@ Relationships Relationships::loadFromXmlFile(QIODevice *device) relationship.type = attributes.value(QLatin1String("Type")).toString(); relationship.target = attributes.value(QLatin1String("Target")).toString(); relationship.targetMode = attributes.value(QLatin1String("TargetMode")).toString(); - rels.m_relationships.append(relationship); + m_relationships.append(relationship); } } - if (reader.hasError()) { - - } + if (reader.hasError()) + return false; } - return rels; + return true; } -Relationships Relationships::loadFromXmlData(const QByteArray &data) +bool Relationships::loadFromXmlData(const QByteArray &data) { QBuffer buffer; buffer.setData(data); @@ -173,4 +171,19 @@ XlsxRelationship Relationships::getRelationshipById(const QString &id) const return XlsxRelationship(); } +void Relationships::clear() +{ + m_relationships.clear(); +} + +int Relationships::count() const +{ + return m_relationships.count(); +} + +bool Relationships::isEmpty() const +{ + return m_relationships.isEmpty(); +} + } //namespace diff --git a/src/xlsx/xlsxrelationships_p.h b/src/xlsx/xlsxrelationships_p.h index 4b2669a..3ed8be4 100755 --- a/src/xlsx/xlsxrelationships_p.h +++ b/src/xlsx/xlsxrelationships_p.h @@ -68,10 +68,14 @@ public: void saveToXmlFile(QIODevice *device); QByteArray saveToXmlData(); - static Relationships loadFromXmlFile(QIODevice *device); - static Relationships loadFromXmlData(const QByteArray &data); + bool loadFromXmlFile(QIODevice *device); + bool loadFromXmlData(const QByteArray &data); XlsxRelationship getRelationshipById(const QString &id) const; + void clear(); + int count() const; + bool isEmpty() const; + private: QList relationships(const QString &type) const; void addRelationship(const QString &type, const QString &target, const QString &targetMode=QString());