summaryrefslogtreecommitdiffstats
path: root/src/pdfquick/qquickpdfdocument.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/pdfquick/qquickpdfdocument.cpp')
-rw-r--r--src/pdfquick/qquickpdfdocument.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/pdfquick/qquickpdfdocument.cpp b/src/pdfquick/qquickpdfdocument.cpp
index 368725a8e..9770900db 100644
--- a/src/pdfquick/qquickpdfdocument.cpp
+++ b/src/pdfquick/qquickpdfdocument.cpp
@@ -8,6 +8,7 @@
#include <QtQml/qqmlcontext.h>
#include <QtQml/qqmlengine.h>
#include <QtQuick/qquickitem.h>
+#include <QtQml/qqmlfile.h>
QT_BEGIN_NAMESPACE
@@ -35,15 +36,18 @@ QQuickPdfDocument::QQuickPdfDocument(QObject *parent)
/*!
\internal
*/
-QQuickPdfDocument::~QQuickPdfDocument() = default;
+QQuickPdfDocument::~QQuickPdfDocument()
+{
+ delete m_carrierFile;
+};
void QQuickPdfDocument::classBegin()
{
m_doc = static_cast<QPdfDocument *>(qmlExtendedObject(this));
Q_ASSERT(m_doc);
- connect(m_doc, &QPdfDocument::passwordChanged, this, [this]() {
- if (resolvedSource().isValid() && resolvedSource().isLocalFile())
- m_doc->load(resolvedSource().path());
+ connect(m_doc, &QPdfDocument::passwordChanged, this, [this]() -> void {
+ if (resolvedSource().isValid())
+ m_doc->load(QQmlFile::urlToLocalFileOrQrc(resolvedSource()));
});
connect(m_doc, &QPdfDocument::statusChanged, this, [this] (QPdfDocument::Status status) {
emit errorChanged();
@@ -68,15 +72,14 @@ void QQuickPdfDocument::setSource(QUrl source)
m_source = source;
m_maxPageWidthHeight = QSizeF();
- m_carrierFile->deleteLater();
+ if (m_carrierFile)
+ m_carrierFile->deleteLater();
m_carrierFile = nullptr;
emit sourceChanged();
const QQmlContext *context = qmlContext(this);
m_resolvedSource = context ? context->resolvedUrl(source) : source;
- if (source.scheme() == QLatin1String("qrc"))
- m_doc->load(QLatin1Char(':') + m_resolvedSource.path());
- else
- m_doc->load(m_resolvedSource.toLocalFile());
+ if (m_resolvedSource.isValid())
+ m_doc->load(QQmlFile::urlToLocalFileOrQrc(m_resolvedSource));
}
/*!