From 4b1aa2bb278fb0d023f843151ab1559321288aa2 Mon Sep 17 00:00:00 2001 From: Debao Zhang Date: Thu, 30 Oct 2014 22:52:01 +0800 Subject: [PATCH] Don't use QMap::firstKey() and lastKey(), which introduced in Qt5.2 --- src/xlsx/xlsxworksheet.cpp | 37 ++++++++++++++++++------------------- src/xlsx/xlsxworksheet.h | 1 - src/xlsx/xlsxworksheet_p.h | 1 + 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/xlsx/xlsxworksheet.cpp b/src/xlsx/xlsxworksheet.cpp index a407fa3..a3fef12 100755 --- a/src/xlsx/xlsxworksheet.cpp +++ b/src/xlsx/xlsxworksheet.cpp @@ -2297,39 +2297,38 @@ bool Worksheet::loadFromXmlFile(QIODevice *device) } } - validateDimension(); + d->validateDimension(); return true; } -void Worksheet::validateDimension() +/* + * Documents imported from Google Docs does not contain dimension data. + */ +void WorksheetPrivate::validateDimension() { - Q_D(Worksheet); - - if (d->dimension.isValid() || d->cellTable.isEmpty()) + if (dimension.isValid() || cellTable.isEmpty()) return; - int firstRow = d->cellTable.firstKey(); - int lastRow = d->cellTable.lastKey(); - int firstCell = -1; - int lastCell = -1; + int firstRow = cellTable.constBegin().key(); + int lastRow = (cellTable.constEnd()-1).key(); + int firstColumn = -1; + int lastColumn = -1; - for (QMap > >::const_iterator it = d->cellTable.begin(), - lim = d->cellTable.end(); it != lim; ++it) + for (QMap > >::const_iterator it = cellTable.begin(); it != cellTable.end(); ++it) { - if (it.value().isEmpty()) - continue; + Q_ASSERT(!it.value().isEmpty()); - if (firstCell == -1 || it.value().firstKey() < firstCell) - firstCell = it.value().firstKey(); + if (firstColumn == -1 || it.value().constBegin().key() < firstColumn) + firstColumn = it.value().constBegin().key(); - if (lastCell == -1 || it.value().lastKey() > lastCell) - lastCell = it.value().lastKey(); + if (lastColumn == -1 || (it.value().constEnd()-1).key() > lastColumn) + lastColumn = (it.value().constEnd()-1).key(); } - CellRange cr(firstRow, firstCell, lastRow, lastCell); + CellRange cr(firstRow, firstColumn, lastRow, lastColumn); if (cr.isValid()) - d->dimension = cr; + dimension = cr; } /*! diff --git a/src/xlsx/xlsxworksheet.h b/src/xlsx/xlsxworksheet.h index d2ed80c..6883370 100755 --- a/src/xlsx/xlsxworksheet.h +++ b/src/xlsx/xlsxworksheet.h @@ -152,7 +152,6 @@ private: void saveToXmlFile(QIODevice *device) const; bool loadFromXmlFile(QIODevice *device); - void validateDimension(); }; QT_END_NAMESPACE_XLSX diff --git a/src/xlsx/xlsxworksheet_p.h b/src/xlsx/xlsxworksheet_p.h index 2930969..b3f5849 100644 --- a/src/xlsx/xlsxworksheet_p.h +++ b/src/xlsx/xlsxworksheet_p.h @@ -160,6 +160,7 @@ public: QString generateDimensionString() const; void calculateSpans() const; void splitColsInfo(int colFirst, int colLast); + void validateDimension(); void saveXmlSheetData(QXmlStreamWriter &writer) const; void saveXmlCellData(QXmlStreamWriter &writer, int row, int col, QSharedPointer cell) const;