From 6ee507b0d84dc57965ea1c79d89e278faa21b1a0 Mon Sep 17 00:00:00 2001 From: Debao Zhang Date: Wed, 11 Sep 2013 17:12:56 +0800 Subject: [PATCH] Make constructor of Workbook private --- src/xlsx/xlsxworkbook.cpp | 26 +++++++++++++++++ src/xlsx/xlsxworkbook.h | 15 ++++++++-- tests/auto/mergecell/tst_mergecelltest.cpp | 29 +++++++++---------- .../relationships/tst_relationshipstest.cpp | 10 ++----- 4 files changed, 54 insertions(+), 26 deletions(-) diff --git a/src/xlsx/xlsxworkbook.cpp b/src/xlsx/xlsxworkbook.cpp index 87b650e..2be82f3 100755 --- a/src/xlsx/xlsxworkbook.cpp +++ b/src/xlsx/xlsxworkbook.cpp @@ -33,6 +33,7 @@ #include "xlsxworksheet_p.h" #include +#include namespace QXlsx { @@ -281,4 +282,29 @@ void Workbook::saveToXmlFile(QIODevice *device) writer.writeEndDocument(); } +QByteArray Workbook::saveToXmlData() +{ + QByteArray data; + QBuffer buffer(&data); + buffer.open(QIODevice::WriteOnly); + saveToXmlFile(&buffer); + + return data; +} + +QSharedPointer Workbook::loadFromXmlFile(QIODevice *device) +{ + + return QSharedPointer(new Workbook); +} + +QSharedPointer Workbook::loadFromXmlData(const QByteArray &data) +{ + QBuffer buffer; + buffer.setData(data); + buffer.open(QIODevice::ReadOnly); + + return loadFromXmlFile(&buffer); +} + } //namespace diff --git a/src/xlsx/xlsxworkbook.h b/src/xlsx/xlsxworkbook.h index dc55783..cdd5959 100755 --- a/src/xlsx/xlsxworkbook.h +++ b/src/xlsx/xlsxworkbook.h @@ -29,6 +29,8 @@ #include #include #include +#include + class QIODevice; namespace QXlsx { @@ -39,6 +41,8 @@ class SharedStrings; class Styles; class Package; class Drawing; +class Document; +class DocumentPrivate; class WorkbookPrivate; class Q_XLSX_EXPORT Workbook : public QObject @@ -46,7 +50,6 @@ class Q_XLSX_EXPORT Workbook : public QObject Q_OBJECT Q_DECLARE_PRIVATE(Workbook) public: - Workbook(QObject *parent=0); ~Workbook(); QList worksheets() const; @@ -66,13 +69,21 @@ public: private: friend class Package; friend class Worksheet; + friend class Document; + friend class DocumentPrivate; + + Workbook(QObject *parent=0); + + void saveToXmlFile(QIODevice *device); + QByteArray saveToXmlData(); + static QSharedPointer loadFromXmlFile(QIODevice *device); + static QSharedPointer loadFromXmlData(const QByteArray &data); SharedStrings *sharedStrings(); Styles *styles(); QList images(); QList drawings(); void prepareDrawings(); - void saveToXmlFile(QIODevice *device); WorkbookPrivate * const d_ptr; }; diff --git a/tests/auto/mergecell/tst_mergecelltest.cpp b/tests/auto/mergecell/tst_mergecelltest.cpp index 6833d12..409c31c 100644 --- a/tests/auto/mergecell/tst_mergecelltest.cpp +++ b/tests/auto/mergecell/tst_mergecelltest.cpp @@ -2,7 +2,7 @@ #include #include "xlsxworksheet.h" -#include "xlsxworkbook.h" +#include "xlsxdocument.h" class MergeCellTest : public QObject { @@ -23,45 +23,42 @@ MergeCellTest::MergeCellTest() void MergeCellTest::testWithoutMerge() { - QXlsx::Workbook book; - QXlsx::Worksheet *sheet = book.addWorksheet("Sheet1"); - sheet->write("B1", "Hello"); + QXlsx::Document xlsx; + xlsx.write("B1", "Hello"); QByteArray xmldata; QBuffer buffer(&xmldata); buffer.open(QIODevice::WriteOnly); - sheet->saveToXmlFile(&buffer); + xlsx.activedWorksheet()->saveToXmlFile(&buffer); QVERIFY2(!xmldata.contains("write("B1", "Test Merged Cell"); - sheet->mergeCells("B1:B5"); + QXlsx::Document xlsx; + xlsx.write("B1", "Test Merged Cell"); + xlsx.mergeCells("B1:B5"); QByteArray xmldata; QBuffer buffer(&xmldata); buffer.open(QIODevice::WriteOnly); - sheet->saveToXmlFile(&buffer); + xlsx.activedWorksheet()->saveToXmlFile(&buffer); QVERIFY2(xmldata.contains(""), ""); } void MergeCellTest::testUnMerge() { - QXlsx::Workbook book; - QXlsx::Worksheet *sheet = book.addWorksheet("Sheet1"); - sheet->write("B1", "Test Merged Cell"); - sheet->mergeCells("B1:B5"); - sheet->unmergeCells("B1:B5"); + QXlsx::Document xlsx; + xlsx.write("B1", "Test Merged Cell"); + xlsx.mergeCells("B1:B5"); + xlsx.unmergeCells("B1:B5"); QByteArray xmldata; QBuffer buffer(&xmldata); buffer.open(QIODevice::WriteOnly); - sheet->saveToXmlFile(&buffer); + xlsx.activedWorksheet()->saveToXmlFile(&buffer); QVERIFY2(!xmldata.contains(""), ""); } @@ -38,11 +35,8 @@ void RelationshipsTest::testLoadXml() "" "" ""); - QBuffer buffer(&xmldata); - buffer.open(QIODevice::ReadOnly); - QXlsx::Relationships rels; - rels.loadFromXmlFile(&buffer); + QXlsx::Relationships rels = QXlsx::Relationships::loadFromXmlData(xmldata); QCOMPARE(rels.documentRelationships("/officeDocument").size(), 1); }