File indexing completed on 2024-05-12 04:33:32

0001 /*
0002     SPDX-FileCopyrightText: 2008 Pino Toscano <pino@kde.org>
0003     SPDX-FileCopyrightText: 2008 Harri Porten <porten@kde.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef OKULAR_SCRIPT_JS_DOCUMENT_P_H
0009 #define OKULAR_SCRIPT_JS_DOCUMENT_P_H
0010 
0011 #include <QJSValue>
0012 #include <QObject>
0013 
0014 namespace Okular
0015 {
0016 class DocumentPrivate;
0017 
0018 class JSDocument : public QObject
0019 {
0020     Q_OBJECT
0021     Q_PROPERTY(int numPages READ numPages CONSTANT)
0022     Q_PROPERTY(int pageNum READ pageNum WRITE setPageNum) // clazy:exclude=qproperty-without-notify
0023     Q_PROPERTY(QString documentFileName READ documentFileName CONSTANT)
0024     Q_PROPERTY(int filesize READ filesize CONSTANT)
0025     Q_PROPERTY(QString path READ path CONSTANT)
0026     Q_PROPERTY(QString URL READ URL CONSTANT)
0027     Q_PROPERTY(bool permStatusReady READ permStatusReady CONSTANT)
0028     Q_PROPERTY(QJSValue dataObjects READ dataObjects CONSTANT)
0029     Q_PROPERTY(bool external READ external CONSTANT)
0030     Q_PROPERTY(int numFields READ numFields CONSTANT)
0031 
0032     // info properties
0033     Q_PROPERTY(QJSValue info READ info CONSTANT)
0034     Q_PROPERTY(QString author READ author CONSTANT)
0035     Q_PROPERTY(QString creator READ creator CONSTANT)
0036     Q_PROPERTY(QString keywords READ keywords CONSTANT)
0037     Q_PROPERTY(QString producer READ producer CONSTANT)
0038     Q_PROPERTY(QString title READ title CONSTANT)
0039     Q_PROPERTY(QString subject READ subject CONSTANT)
0040 
0041 public:
0042     explicit JSDocument(DocumentPrivate *doc, QObject *parent = nullptr);
0043     ~JSDocument() override;
0044 
0045     int numPages() const;
0046     int pageNum() const;
0047     void setPageNum(int pageNum);
0048     QString documentFileName() const;
0049     int filesize() const;
0050     QString path() const;
0051     QString URL() const;
0052     bool permStatusReady() const;
0053     QJSValue dataObjects() const;
0054     bool external() const;
0055     int numFields() const;
0056 
0057     QJSValue info() const;
0058     QString author() const;
0059     QString creator() const;
0060     QString keywords() const;
0061     QString producer() const;
0062     QString title() const;
0063     QString subject() const;
0064 
0065     Q_INVOKABLE QJSValue getField(const QString &cName) const;
0066     Q_INVOKABLE QString getPageLabel(int nPage) const;
0067     Q_INVOKABLE int getPageRotation(int nPage) const;
0068     Q_INVOKABLE void gotoNamedDest(const QString &cName) const;
0069     Q_INVOKABLE void syncAnnotScan() const;
0070     Q_INVOKABLE QJSValue getNthFieldName(int nIndex) const;
0071     Q_INVOKABLE QJSValue getOCGs(int nPage = -1) const;
0072 
0073 private:
0074     DocumentPrivate *m_doc = nullptr;
0075 };
0076 
0077 }
0078 
0079 #endif