summaryrefslogtreecommitdiffstats
path: root/src/pdf/api/qpdfsearchmodel.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/pdf/api/qpdfsearchmodel.h')
-rw-r--r--src/pdf/api/qpdfsearchmodel.h31
1 files changed, 27 insertions, 4 deletions
diff --git a/src/pdf/api/qpdfsearchmodel.h b/src/pdf/api/qpdfsearchmodel.h
index 02d2a20d5..cc91e214a 100644
--- a/src/pdf/api/qpdfsearchmodel.h
+++ b/src/pdf/api/qpdfsearchmodel.h
@@ -39,34 +39,57 @@
#include "qtpdfglobal.h"
#include "qpdfdocument.h"
+#include "qpdfsearchresult.h"
-#include <QObject>
+#include <QtCore/qabstractitemmodel.h>
QT_BEGIN_NAMESPACE
class QPdfSearchModelPrivate;
-class Q_PDF_EXPORT QPdfSearchModel : public QObject // TODO QAIM?
+class Q_PDF_EXPORT QPdfSearchModel : public QAbstractListModel
{
Q_OBJECT
Q_PROPERTY(QPdfDocument *document READ document WRITE setDocument NOTIFY documentChanged)
+ Q_PROPERTY(QString searchString READ searchString WRITE setSearchString NOTIFY searchStringChanged)
public:
+ enum class Role : int {
+ Page = Qt::UserRole,
+ IndexOnPage,
+ Location,
+ Context,
+ _Count
+ };
+ Q_ENUM(Role)
explicit QPdfSearchModel(QObject *parent = nullptr);
~QPdfSearchModel();
- QVector<QRectF> matches(int page, const QString &searchString);
+ QVector<QPdfSearchResult> resultsOnPage(int page) const;
+ QPdfSearchResult resultAtIndex(int index) const;
QPdfDocument *document() const;
+ QString searchString() const;
+
+ QHash<int, QByteArray> roleNames() const override;
+ int rowCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role) const override;
public Q_SLOTS:
+ void setSearchString(QString searchString);
void setDocument(QPdfDocument *document);
Q_SIGNALS:
void documentChanged();
+ void searchStringChanged();
+
+protected:
+ void updatePage(int page);
+ void timerEvent(QTimerEvent *event) override;
private:
- QScopedPointer<QPdfSearchModelPrivate> d;
+ QHash<int, QByteArray> m_roleNames;
+ Q_DECLARE_PRIVATE(QPdfSearchModel)
};
QT_END_NAMESPACE