Relationships code refactoring: Don't use static member

This commit is contained in:
Debao Zhang
2014-01-04 15:08:07 +08:00
parent 6d6dfd4edc
commit 45a86accee
3 changed files with 32 additions and 14 deletions
+4 -3
View File
@@ -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"));
+22 -9
View File
@@ -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 true;
return rels;
} }
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
+6 -2
View File
@@ -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());