diff options
author | Tobias Koenig <tobias.koenig@kdab.com> | 2017-02-27 13:34:23 +0100 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2019-11-25 12:01:39 +0100 |
commit | 44abdb16fcff4898dc81ea3ed4b65b92c4f19d7a (patch) | |
tree | 25cf680b25afdfb59a1d49bd001f01e3011919fb /src/pdf/qpdfdocument.cpp | |
parent | e15148e389256f1fd0f41b16a236bc51f6aab2ca (diff) |
Fix emission of QPdfDocument::pageCountChanged signal
Emit the signal whenever the amount of pages changes on
loading/closing the document.
Change-Id: I0555a9cad93cb1f125ded19889eda91e08725592
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/pdf/qpdfdocument.cpp')
-rw-r--r-- | src/pdf/qpdfdocument.cpp | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/pdf/qpdfdocument.cpp b/src/pdf/qpdfdocument.cpp index 7381a927e..c737ca036 100644 --- a/src/pdf/qpdfdocument.cpp +++ b/src/pdf/qpdfdocument.cpp @@ -59,6 +59,7 @@ QPdfDocumentPrivate::QPdfDocumentPrivate() , loadComplete(false) , status(QPdfDocument::Null) , lastError(QPdfDocument::NoError) + , pageCount(0) { asyncBuffer.setData(QByteArray()); asyncBuffer.open(QIODevice::ReadWrite); @@ -105,6 +106,11 @@ void QPdfDocumentPrivate::clear() avail = nullptr; lock.unlock(); + if (pageCount != 0) { + pageCount = 0; + emit q->pageCountChanged(pageCount); + } + loadComplete = false; asyncBuffer.close(); @@ -266,7 +272,8 @@ void QPdfDocumentPrivate::checkComplete() QPdfMutexLocker lock; - for (int i = 0, count = FPDF_GetPageCount(doc); i < count; ++i) { + const int newPageCount = FPDF_GetPageCount(doc); + for (int i = 0; i < newPageCount; ++i) { int result = PDF_DATA_NOTAVAIL; while (result == PDF_DATA_NOTAVAIL) { result = FPDFAvail_IsPageAvail(avail, i, this); @@ -278,8 +285,14 @@ void QPdfDocumentPrivate::checkComplete() lock.unlock(); - if (loadComplete) + if (loadComplete) { + if (newPageCount != pageCount) { + pageCount = newPageCount; + emit q->pageCountChanged(pageCount); + } + setStatus(QPdfDocument::Ready); + } } void QPdfDocumentPrivate::setStatus(QPdfDocument::Status documentStatus) @@ -518,12 +531,7 @@ void QPdfDocument::close() int QPdfDocument::pageCount() const { - if (!d->doc) - return 0; - - const QPdfMutexLocker lock; - - return FPDF_GetPageCount(d->doc); + return d->pageCount; } QSizeF QPdfDocument::pageSize(int page) const |