File indexing completed on 2024-04-28 15:51:38
0001 /* 0002 SPDX-FileCopyrightText: 2006 Pino Toscano <pino@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef ANNOTATIONMODEL_H 0008 #define ANNOTATIONMODEL_H 0009 0010 #include <QAbstractItemModel> 0011 0012 namespace Okular 0013 { 0014 class Annotation; 0015 class Document; 0016 } 0017 0018 class AnnotationModelPrivate; 0019 0020 class AnnotationModel : public QAbstractItemModel 0021 { 0022 Q_OBJECT 0023 0024 public: 0025 enum { AuthorRole = Qt::UserRole + 1000, PageRole }; 0026 0027 explicit AnnotationModel(Okular::Document *document, QObject *parent = nullptr); 0028 ~AnnotationModel() override; 0029 0030 // reimplementations from QAbstractItemModel 0031 int columnCount(const QModelIndex &parent = QModelIndex()) const override; 0032 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0033 bool hasChildren(const QModelIndex &parent = QModelIndex()) const override; 0034 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; 0035 QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; 0036 QModelIndex parent(const QModelIndex &index) const override; 0037 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0038 0039 bool isAnnotation(const QModelIndex &index) const; 0040 Okular::Annotation *annotationForIndex(const QModelIndex &index) const; 0041 0042 private: 0043 // storage 0044 friend class AnnotationModelPrivate; 0045 AnnotationModelPrivate *const d; 0046 }; 0047 0048 #endif