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