summaryrefslogtreecommitdiff
path: root/src/pdf
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@qt.io>2022-05-23 19:20:28 +0200
committerShawn Rutledge <shawn.rutledge@qt.io>2022-05-24 14:13:36 +0200
commitbd696e466ac87f385117aa14c5d9577184e021e5 (patch)
tree8d3b90ecd475dbcf898fe654c0ea7591ce0ed56b /src/pdf
parentf3f9694142af0bfd508fc3face49b242ba6c81b0 (diff)
downloadqtwebengine-bd696e466ac87f385117aa14c5d9577184e021e5.tar.gz
QPdfDocument: use enum classes
Change-Id: Iad3f8da130abe86a464d63323920a2a39d6fa955 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'src/pdf')
-rw-r--r--src/pdf/plugins/imageformats/pdf/qpdfiohandler.cpp4
-rw-r--r--src/pdf/qpdfbookmarkmodel.cpp2
-rw-r--r--src/pdf/qpdfdocument.cpp128
-rw-r--r--src/pdf/qpdfdocument.h26
-rw-r--r--src/pdf/qpdfdocument_p.h2
-rw-r--r--src/pdf/qpdflinkmodel.cpp2
-rw-r--r--src/pdf/qpdfpagerenderer.cpp4
7 files changed, 76 insertions, 92 deletions
diff --git a/src/pdf/plugins/imageformats/pdf/qpdfiohandler.cpp b/src/pdf/plugins/imageformats/pdf/qpdfiohandler.cpp
index 5dee51b70..c563bad64 100644
--- a/src/pdf/plugins/imageformats/pdf/qpdfiohandler.cpp
+++ b/src/pdf/plugins/imageformats/pdf/qpdfiohandler.cpp
@@ -173,7 +173,7 @@ QVariant QPdfIOHandler::option(ImageOption option) const
case BackgroundColor:
return m_backColor;
case Name:
- return m_doc->metaData(QPdfDocument::Title);
+ return m_doc->metaData(QPdfDocument::MetaDataField::Title);
default:
break;
}
@@ -251,7 +251,7 @@ bool QPdfIOHandler::load(QIODevice *device)
m_doc->load(device);
qCDebug(qLcPdf) << "loading via new document instance" << m_doc;
}
- m_loaded = (m_doc->error() == QPdfDocument::DocumentError::NoError);
+ m_loaded = (m_doc->error() == QPdfDocument::Error::None);
return m_loaded;
}
diff --git a/src/pdf/qpdfbookmarkmodel.cpp b/src/pdf/qpdfbookmarkmodel.cpp
index 604c21baf..e334d8bf0 100644
--- a/src/pdf/qpdfbookmarkmodel.cpp
+++ b/src/pdf/qpdfbookmarkmodel.cpp
@@ -175,7 +175,7 @@ struct QPdfBookmarkModelPrivate
void rebuild()
{
- const bool documentAvailable = (m_document && m_document->status() == QPdfDocument::Ready);
+ const bool documentAvailable = (m_document && m_document->status() == QPdfDocument::Status::Ready);
if (documentAvailable) {
q->beginResetModel();
diff --git a/src/pdf/qpdfdocument.cpp b/src/pdf/qpdfdocument.cpp
index b5c36be49..7015236c5 100644
--- a/src/pdf/qpdfdocument.cpp
+++ b/src/pdf/qpdfdocument.cpp
@@ -49,6 +49,7 @@
#include <QFile>
#include <QHash>
#include <QLoggingCategory>
+#include <QMetaEnum>
#include <QMutex>
#include <QVector2D>
@@ -68,8 +69,8 @@ QPdfDocumentPrivate::QPdfDocumentPrivate()
: avail(nullptr)
, doc(nullptr)
, loadComplete(false)
- , status(QPdfDocument::Null)
- , lastError(QPdfDocument::NoError)
+ , status(QPdfDocument::Status::Null)
+ , lastError(QPdfDocument::Error::None)
, pageCount(0)
{
asyncBuffer.setData(QByteArray());
@@ -141,7 +142,7 @@ void QPdfDocumentPrivate::clear()
void QPdfDocumentPrivate::updateLastError()
{
if (doc) {
- lastError = QPdfDocument::NoError;
+ lastError = QPdfDocument::Error::None;
return;
}
@@ -150,16 +151,16 @@ void QPdfDocumentPrivate::updateLastError()
lock.unlock();
switch (error) {
- case FPDF_ERR_SUCCESS: lastError = QPdfDocument::NoError; break;
- case FPDF_ERR_UNKNOWN: lastError = QPdfDocument::UnknownError; break;
- case FPDF_ERR_FILE: lastError = QPdfDocument::FileNotFoundError; break;
- case FPDF_ERR_FORMAT: lastError = QPdfDocument::InvalidFileFormatError; break;
- case FPDF_ERR_PASSWORD: lastError = QPdfDocument::IncorrectPasswordError; break;
- case FPDF_ERR_SECURITY: lastError = QPdfDocument::UnsupportedSecuritySchemeError; break;
+ case FPDF_ERR_SUCCESS: lastError = QPdfDocument::Error::None; break;
+ case FPDF_ERR_UNKNOWN: lastError = QPdfDocument::Error::Unknown; break;
+ case FPDF_ERR_FILE: lastError = QPdfDocument::Error::FileNotFound; break;
+ case FPDF_ERR_FORMAT: lastError = QPdfDocument::Error::InvalidFileFormat; break;
+ case FPDF_ERR_PASSWORD: lastError = QPdfDocument::Error::IncorrectPassword; break;
+ case FPDF_ERR_SECURITY: lastError = QPdfDocument::Error::UnsupportedSecurityScheme; break;
default:
Q_UNREACHABLE();
}
- if (lastError != QPdfDocument::NoError)
+ if (lastError != QPdfDocument::Error::None)
qCDebug(qLcDoc) << "FPDF error" << error << "->" << lastError;
}
@@ -176,19 +177,19 @@ void QPdfDocumentPrivate::load(QIODevice *newDevice, bool transferDeviceOwnershi
QNetworkReply *reply = qobject_cast<QNetworkReply*>(sequentialSourceDevice);
if (!reply) {
- setStatus(QPdfDocument::Error);
+ setStatus(QPdfDocument::Status::Error);
qWarning() << "QPdfDocument: Loading from sequential devices only supported with QNetworkAccessManager.";
return;
}
if (reply->isFinished() && reply->error() != QNetworkReply::NoError) {
- setStatus(QPdfDocument::Error);
+ setStatus(QPdfDocument::Status::Error);
return;
}
QObject::connect(reply, &QNetworkReply::finished, q, [this, reply](){
if (reply->error() != QNetworkReply::NoError || reply->bytesAvailable() == 0) {
- this->setStatus(QPdfDocument::Error);
+ this->setStatus(QPdfDocument::Status::Error);
}
});
@@ -200,7 +201,7 @@ void QPdfDocumentPrivate::load(QIODevice *newDevice, bool transferDeviceOwnershi
device = newDevice;
initiateAsyncLoadWithTotalSizeKnown(device->size());
if (!avail) {
- setStatus(QPdfDocument::Error);
+ setStatus(QPdfDocument::Status::Error);
return;
}
@@ -209,7 +210,7 @@ void QPdfDocumentPrivate::load(QIODevice *newDevice, bool transferDeviceOwnershi
if (!doc) {
updateLastError();
- setStatus(QPdfDocument::Error);
+ setStatus(QPdfDocument::Status::Error);
return;
}
@@ -224,10 +225,10 @@ void QPdfDocumentPrivate::load(QIODevice *newDevice, bool transferDeviceOwnershi
// If it's a local file, and the first couple of pages are available,
// probably the whole document is available.
if (checkPageComplete(0) && (pageCount < 2 || checkPageComplete(1))) {
- setStatus(QPdfDocument::Ready);
+ setStatus(QPdfDocument::Status::Ready);
} else {
updateLastError();
- setStatus(QPdfDocument::Error);
+ setStatus(QPdfDocument::Status::Error);
}
}
}
@@ -239,13 +240,13 @@ void QPdfDocumentPrivate::_q_tryLoadingWithSizeFromContentHeader()
const QNetworkReply *networkReply = qobject_cast<QNetworkReply*>(sequentialSourceDevice);
if (!networkReply) {
- setStatus(QPdfDocument::Error);
+ setStatus(QPdfDocument::Status::Error);
return;
}
const QVariant contentLength = networkReply->header(QNetworkRequest::ContentLengthHeader);
if (!contentLength.isValid()) {
- setStatus(QPdfDocument::Error);
+ setStatus(QPdfDocument::Status::Error);
return;
}
@@ -291,10 +292,10 @@ void QPdfDocumentPrivate::tryLoadDocument()
break;
case PDF_DATA_NOTAVAIL:
qCDebug(qLcDoc) << "data not yet available";
- lastError = QPdfDocument::DataNotYetAvailableError;
+ lastError = QPdfDocument::Error::DataNotYetAvailable;
break;
case PDF_DATA_AVAIL:
- lastError = QPdfDocument::NoError;
+ lastError = QPdfDocument::Error::None;
break;
}
@@ -304,14 +305,14 @@ void QPdfDocumentPrivate::tryLoadDocument()
lock.unlock();
updateLastError();
- if (lastError != QPdfDocument::NoError)
- setStatus(QPdfDocument::Error);
+ if (lastError != QPdfDocument::Error::None)
+ setStatus(QPdfDocument::Status::Error);
- if (lastError == QPdfDocument::IncorrectPasswordError) {
+ if (lastError == QPdfDocument::Error::IncorrectPassword) {
FPDF_CloseDocument(doc);
doc = nullptr;
- setStatus(QPdfDocument::Error);
+ setStatus(QPdfDocument::Status::Error);
emit q->passwordRequired();
}
}
@@ -350,7 +351,7 @@ void QPdfDocumentPrivate::checkComplete()
emit q->pageCountChanged(pageCount);
}
- setStatus(QPdfDocument::Ready);
+ setStatus(QPdfDocument::Status::Ready);
}
}
@@ -491,18 +492,18 @@ QPdfDocument::~QPdfDocument()
/*!
Loads the document contents from \a fileName.
*/
-QPdfDocument::DocumentError QPdfDocument::load(const QString &fileName)
+QPdfDocument::Error QPdfDocument::load(const QString &fileName)
{
qCDebug(qLcDoc) << "loading" << fileName;
close();
- d->setStatus(QPdfDocument::Loading);
+ d->setStatus(QPdfDocument::Status::Loading);
std::unique_ptr<QFile> f(new QFile(fileName));
if (!f->open(QIODevice::ReadOnly)) {
- d->lastError = FileNotFoundError;
- d->setStatus(QPdfDocument::Error);
+ d->lastError = Error::FileNotFound;
+ d->setStatus(QPdfDocument::Status::Error);
} else {
d->load(f.release(), /*transfer ownership*/true);
}
@@ -553,7 +554,7 @@ void QPdfDocument::load(QIODevice *device)
{
close();
- d->setStatus(QPdfDocument::Loading);
+ d->setStatus(QPdfDocument::Status::Loading);
d->load(device, /*transfer ownership*/false);
}
@@ -610,32 +611,15 @@ QVariant QPdfDocument::metaData(MetaDataField field) const
if (!d->doc)
return QString();
+ static QMetaEnum fieldsMetaEnum = metaObject()->enumerator(metaObject()->indexOfEnumerator("MetaDataField"));
QByteArray fieldName;
switch (field) {
- case Title:
- fieldName = "Title";
- break;
- case Subject:
- fieldName = "Subject";
- break;
- case Author:
- fieldName = "Author";
- break;
- case Keywords:
- fieldName = "Keywords";
- break;
- case Producer:
- fieldName = "Producer";
- break;
- case Creator:
- fieldName = "Creator";
- break;
- case CreationDate:
- fieldName = "CreationDate";
- break;
- case ModificationDate:
+ case MetaDataField::ModificationDate:
fieldName = "ModDate";
break;
+ default:
+ fieldName = QByteArray(fieldsMetaEnum.valueToKey(int(field)));
+ break;
}
QPdfMutexLocker lock;
@@ -648,15 +632,15 @@ QVariant QPdfDocument::metaData(MetaDataField field) const
QString text = QString::fromUtf16(reinterpret_cast<const char16_t *>(buf.data()));
switch (field) {
- case Title: // fall through
- case Subject:
- case Author:
- case Keywords:
- case Producer:
- case Creator:
+ case MetaDataField::Title: // fall through
+ case MetaDataField::Subject:
+ case MetaDataField::Author:
+ case MetaDataField::Keywords:
+ case MetaDataField::Producer:
+ case MetaDataField::Creator:
return text;
- case CreationDate: // fall through
- case ModificationDate:
+ case MetaDataField::CreationDate: // fall through
+ case MetaDataField::ModificationDate:
// convert a "D:YYYYMMDDHHmmSSOHH'mm'" into "YYYY-MM-DDTHH:mm:ss+HH:mm"
if (text.startsWith(QLatin1String("D:")))
text = text.mid(2);
@@ -676,17 +660,17 @@ QVariant QPdfDocument::metaData(MetaDataField field) const
}
/*!
- \enum QPdfDocument::DocumentError
+ \enum QPdfDocument::Error
This enum describes the error while attempting the last operation on the document.
- \value NoError No error occurred.
- \value UnknownError Unknown type of error.
- \value DataNotYetAvailableError The document is still loading, it's too early to attempt the operation.
- \value FileNotFoundError The file given to load() was not found.
- \value InvalidFileFormatError The file given to load() is not a valid PDF file.
- \value IncorrectPasswordError The password given to setPassword() is not correct for this file.
- \value UnsupportedSecuritySchemeError QPdfDocument is not able to unlock this kind of PDF file.
+ \value None No error occurred.
+ \value Unknown Unknown type of error.
+ \value DataNotYetAvailable The document is still loading, it's too early to attempt the operation.
+ \value FileNotFound The file given to load() was not found.
+ \value InvalidFileFormat The file given to load() is not a valid PDF file.
+ \value IncorrectPassword The password given to setPassword() is not correct for this file.
+ \value UnsupportedSecurityScheme QPdfDocument is not able to unlock this kind of PDF file.
\sa QPdfDocument::error()
*/
@@ -695,7 +679,7 @@ QVariant QPdfDocument::metaData(MetaDataField field) const
Returns the type of error if \l status is \c Error, or \c NoError if there
is no error.
*/
-QPdfDocument::DocumentError QPdfDocument::error() const
+QPdfDocument::Error QPdfDocument::error() const
{
return d->lastError;
}
@@ -708,7 +692,7 @@ void QPdfDocument::close()
if (!d->doc)
return;
- d->setStatus(Unloading);
+ d->setStatus(Status::Unloading);
d->clear();
@@ -717,7 +701,7 @@ void QPdfDocument::close()
emit passwordChanged();
}
- d->setStatus(Null);
+ d->setStatus(Status::Null);
}
/*!
diff --git a/src/pdf/qpdfdocument.h b/src/pdf/qpdfdocument.h
index 9301be868..3a16b396d 100644
--- a/src/pdf/qpdfdocument.h
+++ b/src/pdf/qpdfdocument.h
@@ -61,7 +61,7 @@ class Q_PDF_EXPORT QPdfDocument : public QObject
Q_PROPERTY(Status status READ status NOTIFY statusChanged FINAL)
public:
- enum Status {
+ enum class Status {
Null,
Loading,
Ready,
@@ -70,18 +70,18 @@ public:
};
Q_ENUM(Status)
- enum DocumentError {
- NoError,
- UnknownError,
- DataNotYetAvailableError,
- FileNotFoundError,
- InvalidFileFormatError,
- IncorrectPasswordError,
- UnsupportedSecuritySchemeError
+ enum class Error {
+ None,
+ Unknown,
+ DataNotYetAvailable,
+ FileNotFound,
+ InvalidFileFormat,
+ IncorrectPassword,
+ UnsupportedSecurityScheme
};
- Q_ENUM(DocumentError)
+ Q_ENUM(Error)
- enum MetaDataField {
+ enum class MetaDataField {
Title,
Subject,
Author,
@@ -97,7 +97,7 @@ public:
explicit QPdfDocument(QObject *parent);
~QPdfDocument() override;
- DocumentError load(const QString &fileName);
+ Error load(const QString &fileName);
Status status() const;
@@ -107,7 +107,7 @@ public:
QVariant metaData(MetaDataField field) const;
- DocumentError error() const;
+ Error error() const;
void close();
diff --git a/src/pdf/qpdfdocument_p.h b/src/pdf/qpdfdocument_p.h
index 9c816adc4..4f8fc5993 100644
--- a/src/pdf/qpdfdocument_p.h
+++ b/src/pdf/qpdfdocument_p.h
@@ -90,7 +90,7 @@ public:
QByteArray password;
QPdfDocument::Status status;
- QPdfDocument::DocumentError lastError;
+ QPdfDocument::Error lastError;
int pageCount;
void clear();
diff --git a/src/pdf/qpdflinkmodel.cpp b/src/pdf/qpdflinkmodel.cpp
index 93d39020c..fba9c23c4 100644
--- a/src/pdf/qpdflinkmodel.cpp
+++ b/src/pdf/qpdflinkmodel.cpp
@@ -277,7 +277,7 @@ void QPdfLinkModel::onStatusChanged(QPdfDocument::Status status)
{
Q_D(QPdfLinkModel);
qCDebug(qLcLink) << "sees document statusChanged" << status;
- if (status == QPdfDocument::Ready)
+ if (status == QPdfDocument::Status::Ready)
d->update();
}
diff --git a/src/pdf/qpdfpagerenderer.cpp b/src/pdf/qpdfpagerenderer.cpp
index 9d0ff18f7..bc9e5255f 100644
--- a/src/pdf/qpdfpagerenderer.cpp
+++ b/src/pdf/qpdfpagerenderer.cpp
@@ -125,7 +125,7 @@ void RenderWorker::requestPage(quint64 requestId, int pageNumber, QSize imageSiz
{
const QMutexLocker locker(&m_mutex);
- if (!m_document || m_document->status() != QPdfDocument::Ready)
+ if (!m_document || m_document->status() != QPdfDocument::Status::Ready)
return;
const QImage image = m_document->render(pageNumber, imageSize, options);
@@ -315,7 +315,7 @@ void QPdfPageRenderer::setDocument(QPdfDocument *document)
quint64 QPdfPageRenderer::requestPage(int pageNumber, QSize imageSize,
QPdfDocumentRenderOptions options)
{
- if (!d_ptr->m_document || d_ptr->m_document->status() != QPdfDocument::Ready)
+ if (!d_ptr->m_document || d_ptr->m_document->status() != QPdfDocument::Status::Ready)
return 0;
for (const auto &request : qAsConst(d_ptr->m_pendingRequests)) {