diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2022-04-20 19:42:13 +0200 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2022-04-22 07:58:01 +0200 |
commit | d2ed1f39030d93f01d71250cb8061448c82f0404 (patch) | |
tree | e41dd8f6869662a47716a28f83d3eefb98bd0523 /src | |
parent | 350f2f5d488af018c7c1c6d97fc8ba5b40125e8f (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.cpp | 27 | ||||
-rw-r--r-- | src/pdf/qpdfbookmarkmodel.h | 10 |
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()) |