summaryrefslogtreecommitdiffstats
path: root/src/pdf/qpdfbookmarkmodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/pdf/qpdfbookmarkmodel.cpp')
-rw-r--r--src/pdf/qpdfbookmarkmodel.cpp33
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)