diff options
Diffstat (limited to 'src/pdf/qpdfbookmarkmodel.cpp')
-rw-r--r-- | src/pdf/qpdfbookmarkmodel.cpp | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/src/pdf/qpdfbookmarkmodel.cpp b/src/pdf/qpdfbookmarkmodel.cpp index 50e1f88ba..93dbf5d1f 100644 --- a/src/pdf/qpdfbookmarkmodel.cpp +++ b/src/pdf/qpdfbookmarkmodel.cpp @@ -50,7 +50,7 @@ public: int childCount() const { - return m_childNodes.count(); + return m_childNodes.size(); } int row() const @@ -172,21 +172,11 @@ struct QPdfBookmarkModelPrivate const int titleLength = int(FPDFBookmark_GetTitle(bookmark, nullptr, 0)); QList<char16_t> titleBuffer(titleLength); - FPDFBookmark_GetTitle(bookmark, titleBuffer.data(), quint32(titleBuffer.length())); + FPDFBookmark_GetTitle(bookmark, titleBuffer.data(), quint32(titleBuffer.size())); const FPDF_DEST dest = FPDFBookmark_GetDest(document, bookmark); const int pageNumber = FPDFDest_GetDestPageIndex(document, dest); - double pageHeight = 11.69 * 72; // A4 height - { - // get actual page height - const QPdfMutexLocker lock; - FPDF_PAGE pdfPage = FPDF_LoadPage(document, pageNumber); - if (pdfPage) - pageHeight = FPDF_GetPageHeight(pdfPage); - else - qCWarning(qLcBM) << "failed to load page" << pageNumber; - } - + const qreal pageHeight = m_document->pagePointSize(pageNumber).height(); FPDF_BOOL hasX, hasY, hasZoom; FS_FLOAT x, y, zoom; bool ok = FPDFDest_GetLocationInPage(dest, &hasX, &hasY, &hasZoom, &x, &y, &zoom); @@ -219,6 +209,7 @@ struct QPdfBookmarkModelPrivate QScopedPointer<BookmarkNode> m_rootNode; QPointer<QPdfDocument> m_document; + QHash<int, QByteArray> m_roleNames; }; @@ -243,7 +234,7 @@ struct QPdfBookmarkModelPrivate \value Page The page number of the destination (int). \value Location The position of the destination (QPointF). \value Zoom The suggested zoom level (qreal). - \omitvalue _Count + \omitvalue NRoles */ /*! @@ -253,10 +244,10 @@ QPdfBookmarkModel::QPdfBookmarkModel(QObject *parent) : QAbstractItemModel(parent), d(new QPdfBookmarkModelPrivate) { d->q = this; - m_roleNames = QAbstractItemModel::roleNames(); + d->m_roleNames = QAbstractItemModel::roleNames(); QMetaEnum rolesMetaEnum = metaObject()->enumerator(metaObject()->indexOfEnumerator("Role")); - for (int r = Qt::UserRole; r < int(Role::_Count); ++r) - m_roleNames.insert(r, QByteArray(rolesMetaEnum.valueToKey(r)).toLower()); + for (int r = Qt::UserRole; r < int(Role::NRoles); ++r) + d->m_roleNames.insert(r, QByteArray(rolesMetaEnum.valueToKey(r)).toLower()); } /*! @@ -269,6 +260,10 @@ QPdfDocument* QPdfBookmarkModel::document() const return d->m_document; } +/*! + \property QPdfBookmarkModel::document + \brief the PDF document in which bookmarks are to be found. +*/ void QPdfBookmarkModel::setDocument(QPdfDocument *document) { if (d->m_document == document) @@ -300,7 +295,7 @@ int QPdfBookmarkModel::columnCount(const QModelIndex &parent) const */ QHash<int, QByteArray> QPdfBookmarkModel::roleNames() const { - return m_roleNames; + return d->m_roleNames; } /*! @@ -323,7 +318,7 @@ QVariant QPdfBookmarkModel::data(const QModelIndex &index, int role) const return node->location(); case Role::Zoom: return node->zoom(); - case Role::_Count: + case Role::NRoles: break; } if (role == Qt::DisplayRole) |