Browse Source

Relationships code refactoring: Don't use static member

master
Debao Zhang 11 years ago
parent
commit
45a86accee
  1. 7
      src/xlsx/xlsxpackage.cpp
  2. 31
      src/xlsx/xlsxrelationships.cpp
  3. 8
      src/xlsx/xlsxrelationships_p.h

7
src/xlsx/xlsxpackage.cpp

@ -104,7 +104,8 @@ bool Package::parsePackage(QIODevice *packageDevice)
if (!filePaths.contains(QLatin1String("_rels/.rels"))) if (!filePaths.contains(QLatin1String("_rels/.rels")))
return false; return false;
Relationships rootRels = Relationships::loadFromXmlData(zipReader.fileData(QStringLiteral("_rels/.rels"))); Relationships rootRels;
rootRels.loadFromXmlData(zipReader.fileData(QStringLiteral("_rels/.rels")));
//load core property //load core property
QList<XlsxRelationship> rels_core = rootRels.packageRelationships(QStringLiteral("/metadata/core-properties")); QList<XlsxRelationship> rels_core = rootRels.packageRelationships(QStringLiteral("/metadata/core-properties"));
@ -141,8 +142,8 @@ bool Package::parsePackage(QIODevice *packageDevice)
QString xlworkbook_Name = xlworkbook_PathList[1]; QString xlworkbook_Name = xlworkbook_PathList[1];
m_document->workbook()->loadFromXmlData(zipReader.fileData(xlworkbook_Path)); m_document->workbook()->loadFromXmlData(zipReader.fileData(xlworkbook_Path));
QList<XlsxSheetItemInfo> sheetNameIdPairList = m_document->workbook()->d_func()->sheetItemInfoList; QList<XlsxSheetItemInfo> sheetNameIdPairList = m_document->workbook()->d_func()->sheetItemInfoList;
Relationships xlworkbook_Rels = Relationships::loadFromXmlData( Relationships xlworkbook_Rels;
zipReader.fileData(xlworkbook_Dir+QStringLiteral("/_rels/")+xlworkbook_Name+QStringLiteral(".rels"))); xlworkbook_Rels.loadFromXmlData(zipReader.fileData(xlworkbook_Dir+QStringLiteral("/_rels/")+xlworkbook_Name+QStringLiteral(".rels")));
//load styles //load styles
QList<XlsxRelationship> rels_styles = xlworkbook_Rels.documentRelationships(QStringLiteral("/styles")); QList<XlsxRelationship> rels_styles = xlworkbook_Rels.documentRelationships(QStringLiteral("/styles"));

31
src/xlsx/xlsxrelationships.cpp

@ -130,10 +130,9 @@ QByteArray Relationships::saveToXmlData()
return data; return data;
} }
Relationships Relationships::loadFromXmlFile(QIODevice *device) bool Relationships::loadFromXmlFile(QIODevice *device)
{ {
Relationships rels; clear();
QXmlStreamReader reader(device); QXmlStreamReader reader(device);
while (!reader.atEnd()) { while (!reader.atEnd()) {
QXmlStreamReader::TokenType token = reader.readNext(); QXmlStreamReader::TokenType token = reader.readNext();
@ -145,18 +144,17 @@ Relationships Relationships::loadFromXmlFile(QIODevice *device)
relationship.type = attributes.value(QLatin1String("Type")).toString(); relationship.type = attributes.value(QLatin1String("Type")).toString();
relationship.target = attributes.value(QLatin1String("Target")).toString(); relationship.target = attributes.value(QLatin1String("Target")).toString();
relationship.targetMode = attributes.value(QLatin1String("TargetMode")).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; QBuffer buffer;
buffer.setData(data); buffer.setData(data);
@ -173,4 +171,19 @@ XlsxRelationship Relationships::getRelationshipById(const QString &id) const
return XlsxRelationship(); 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 } //namespace

8
src/xlsx/xlsxrelationships_p.h

@ -68,10 +68,14 @@ public:
void saveToXmlFile(QIODevice *device); void saveToXmlFile(QIODevice *device);
QByteArray saveToXmlData(); QByteArray saveToXmlData();
static Relationships loadFromXmlFile(QIODevice *device); bool loadFromXmlFile(QIODevice *device);
static Relationships loadFromXmlData(const QByteArray &data); bool loadFromXmlData(const QByteArray &data);
XlsxRelationship getRelationshipById(const QString &id) const; XlsxRelationship getRelationshipById(const QString &id) const;
void clear();
int count() const;
bool isEmpty() const;
private: private:
QList<XlsxRelationship> relationships(const QString &type) const; QList<XlsxRelationship> relationships(const QString &type) const;
void addRelationship(const QString &type, const QString &target, const QString &targetMode=QString()); void addRelationship(const QString &type, const QString &target, const QString &targetMode=QString());

Loading…
Cancel
Save