From b80286d7b79aa6ffb8f2e0653492dc68b5e89980 Mon Sep 17 00:00:00 2001 From: Debao Zhang Date: Fri, 30 Aug 2013 13:37:55 +0800 Subject: [PATCH] Return false when save() failed --- src/xlsx/xlsxpackage.cpp | 2 ++ src/xlsx/xlsxworkbook.cpp | 4 ++-- src/xlsx/xlsxworkbook.h | 2 +- src/xlsx/xlsxzipwriter.cpp | 5 +++++ src/xlsx/xlsxzipwriter_p.h | 1 + 5 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/xlsx/xlsxpackage.cpp b/src/xlsx/xlsxpackage.cpp index c7515d0..773b656 100644 --- a/src/xlsx/xlsxpackage.cpp +++ b/src/xlsx/xlsxpackage.cpp @@ -88,6 +88,8 @@ Package::Package(Workbook *workbook) : bool Package::createPackage(const QString &packageName) { ZipWriter zipWriter(packageName); + if (zipWriter.error()) + return false; m_workbook->styles()->clearExtraFormatInfo(); //These info will be generated when write the worksheet data. writeWorksheetFiles(zipWriter); diff --git a/src/xlsx/xlsxworkbook.cpp b/src/xlsx/xlsxworkbook.cpp index 8fd6b28..62296e3 100755 --- a/src/xlsx/xlsxworkbook.cpp +++ b/src/xlsx/xlsxworkbook.cpp @@ -62,7 +62,7 @@ Workbook::~Workbook() delete d_ptr; } -void Workbook::save(const QString &name) +bool Workbook::save(const QString &name) { Q_D(Workbook); @@ -79,7 +79,7 @@ void Workbook::save(const QString &name) //Create the package based on current workbook Package package(this); - package.createPackage(name); + return package.createPackage(name); } bool Workbook::isDate1904() const diff --git a/src/xlsx/xlsxworkbook.h b/src/xlsx/xlsxworkbook.h index cfa4d96..c8fefcf 100755 --- a/src/xlsx/xlsxworkbook.h +++ b/src/xlsx/xlsxworkbook.h @@ -61,7 +61,7 @@ public: bool isStringsToNumbersEnabled() const; void setStringsToNumbersEnabled(bool enable=true); - void save(const QString &name); + bool save(const QString &name); private: friend class Package; diff --git a/src/xlsx/xlsxzipwriter.cpp b/src/xlsx/xlsxzipwriter.cpp index d93bf20..3bd91e3 100644 --- a/src/xlsx/xlsxzipwriter.cpp +++ b/src/xlsx/xlsxzipwriter.cpp @@ -40,6 +40,11 @@ ZipWriter::~ZipWriter() delete m_writer; } +bool ZipWriter::error() const +{ + return m_writer->status() != QZipWriter::NoError; +} + void ZipWriter::addFile(const QString &filePath, QIODevice *device) { m_writer->addFile(filePath, device); diff --git a/src/xlsx/xlsxzipwriter_p.h b/src/xlsx/xlsxzipwriter_p.h index 550a237..9814c6e 100644 --- a/src/xlsx/xlsxzipwriter_p.h +++ b/src/xlsx/xlsxzipwriter_p.h @@ -40,6 +40,7 @@ public: void addFile(const QString &filePath, QIODevice *device); void addFile(const QString &filePath, const QByteArray &data); + bool error() const; void close(); private: