summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@qt.io>2022-04-20 19:42:13 +0200
committerShawn Rutledge <shawn.rutledge@qt.io>2022-04-22 07:58:01 +0200
commitd2ed1f39030d93f01d71250cb8061448c82f0404 (patch)
treee41dd8f6869662a47716a28f83d3eefb98bd0523 /src
parent350f2f5d488af018c7c1c6d97fc8ba5b40125e8f (diff)
Turn QPdfBookmarkModel::Role into an enum class
- link, search and bookmark models have similar role names now - being an enum class allows the role name to be shorter - the Role enum name is the same as the name in roleNames(), lowercased Change-Id: I2e710d7acb8479995d82ef2d324807b6cd4e10e5 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/pdf/qpdfbookmarkmodel.cpp27
-rw-r--r--src/pdf/qpdfbookmarkmodel.h10
2 files changed, 19 insertions, 18 deletions
diff --git a/src/pdf/qpdfbookmarkmodel.cpp b/src/pdf/qpdfbookmarkmodel.cpp
index 31c98a90b..c40fc0572 100644
--- a/src/pdf/qpdfbookmarkmodel.cpp
+++ b/src/pdf/qpdfbookmarkmodel.cpp
@@ -45,6 +45,7 @@
#include "third_party/pdfium/public/fpdf_doc.h"
#include "third_party/pdfium/public/fpdfview.h"
+#include <QMetaEnum>
#include <QPointer>
#include <QScopedPointer>
#include <private/qabstractitemmodel_p.h>
@@ -222,6 +223,10 @@ QPdfBookmarkModel::QPdfBookmarkModel(QObject *parent)
: QAbstractItemModel(parent), d(new QPdfBookmarkModelPrivate)
{
d->q = this;
+ 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());
}
QPdfBookmarkModel::~QPdfBookmarkModel() = default;
@@ -272,13 +277,7 @@ int QPdfBookmarkModel::columnCount(const QModelIndex &parent) const
QHash<int, QByteArray> QPdfBookmarkModel::roleNames() const
{
- QHash<int, QByteArray> names = QAbstractItemModel::roleNames();
-
- names[TitleRole] = "title";
- names[LevelRole] = "level";
- names[PageNumberRole] = "pageNumber";
-
- return names;
+ return m_roleNames;
}
QVariant QPdfBookmarkModel::data(const QModelIndex &index, int role) const
@@ -287,17 +286,17 @@ QVariant QPdfBookmarkModel::data(const QModelIndex &index, int role) const
return QVariant();
const BookmarkNode *node = static_cast<BookmarkNode*>(index.internalPointer());
- switch (role) {
- case Qt::DisplayRole:
- case TitleRole:
+ switch (Role(role)) {
+ case Role::Title:
return node->title();
- case LevelRole:
+ case Role::Level:
return node->level();
- case PageNumberRole:
+ case Role::Page:
return node->pageNumber();
- default:
- return QVariant();
+ case Role::_Count:
+ break;
}
+ return QVariant();
}
QModelIndex QPdfBookmarkModel::index(int row, int column, const QModelIndex &parent) const
diff --git a/src/pdf/qpdfbookmarkmodel.h b/src/pdf/qpdfbookmarkmodel.h
index 7db2f03da..d6166508e 100644
--- a/src/pdf/qpdfbookmarkmodel.h
+++ b/src/pdf/qpdfbookmarkmodel.h
@@ -63,11 +63,12 @@ public:
};
Q_ENUM(StructureMode)
- enum Role
+ enum class Role : int
{
- TitleRole = Qt::UserRole,
- LevelRole,
- PageNumberRole
+ Title = Qt::DisplayRole,
+ Level = Qt::UserRole,
+ Page,
+ _Count
};
Q_ENUM(Role)
@@ -93,6 +94,7 @@ Q_SIGNALS:
void structureModeChanged(QPdfBookmarkModel::StructureMode structureMode);
private:
+ QHash<int, QByteArray> m_roleNames;
std::unique_ptr<QPdfBookmarkModelPrivate> d;
Q_PRIVATE_SLOT(d, void _q_documentStatusChanged())