diff options
author | Robin Burchell <robin.burchell@theqtcompany.com> | 2015-03-10 13:44:42 +0100 |
---|---|---|
committer | Robin Burchell <robin.burchell@viroteck.net> | 2015-03-18 13:06:00 +0000 |
commit | e9c82ddc22662ffc768d37f0be5e7e3ac3599bfa (patch) | |
tree | c0eaa3f4000f1fbaee7fbfa32dc2f8705e37843e /src/webengine/api/qquickwebenginescript.cpp | |
parent | d4ab9273dd1c61e1638f5b0376e65f7c5375ad93 (diff) |
QQuickWebEngineScript: Add a sourceUrl property to complement sourceCode.
QtQuick doesn't have a convenient interface to interact with files, and even if
that were the case, it would either be more awkward (and with increased overhead
-- the price of an extra QObject, property, signal, etc) just to fetch the
contents.
So, we provide a convenience to allow fetching a user script from a file.
Setting the sourceCode directly will reset sourceUrl (if it is set), and setting
sourceUrl will ultimately result in a sourceCode change signal, too.
Change-Id: Iee5abc0d719e2aeeacf1265f695b5a7efee9e0e8
Reviewed-by: Andras Becsi <andras.becsi@theqtcompany.com>
Diffstat (limited to 'src/webengine/api/qquickwebenginescript.cpp')
-rw-r--r-- | src/webengine/api/qquickwebenginescript.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/webengine/api/qquickwebenginescript.cpp b/src/webengine/api/qquickwebenginescript.cpp index 6ea6d01bc..eb3a41dd5 100644 --- a/src/webengine/api/qquickwebenginescript.cpp +++ b/src/webengine/api/qquickwebenginescript.cpp @@ -37,6 +37,8 @@ #include "qquickwebenginescript_p.h" #include "qquickwebenginescript_p_p.h" +#include <QtCore/QDebug> +#include <QtCore/QFile> #include <QtCore/QStringBuilder> #include <QtCore/QTimerEvent> #include "user_script_controller_host.h" @@ -82,6 +84,11 @@ QString QQuickWebEngineScript::name() const return d->coreScript.name(); } +QUrl QQuickWebEngineScript::sourceUrl() const +{ + Q_D(const QQuickWebEngineScript); + return d->m_sourceUrl; +} QString QQuickWebEngineScript::sourceCode() const { @@ -129,11 +136,39 @@ void QQuickWebEngineScript::setSourceCode(QString arg) Q_D(QQuickWebEngineScript); if (arg == sourceCode()) return; + + // setting the source directly resets the sourceUrl + if (d->m_sourceUrl != QUrl()) { + d->m_sourceUrl = QUrl(); + Q_EMIT sourceUrlChanged(d->m_sourceUrl); + } + d->aboutToUpdateUnderlyingScript(); d->coreScript.setSourceCode(arg); Q_EMIT sourceCodeChanged(arg); } +void QQuickWebEngineScript::setSourceUrl(QUrl arg) +{ + Q_D(QQuickWebEngineScript); + if (arg == sourceUrl()) + return; + + d->m_sourceUrl = arg; + Q_EMIT sourceUrlChanged(d->m_sourceUrl); + + QFile f(arg.toLocalFile()); + if (!f.open(QIODevice::ReadOnly)) { + qWarning() << "Can't open user script " << arg; + return; + } + + d->aboutToUpdateUnderlyingScript(); + QString source = QString::fromUtf8(f.readAll()); + d->coreScript.setSourceCode(source); + Q_EMIT sourceCodeChanged(source); +} + void QQuickWebEngineScript::setInjectionPoint(QQuickWebEngineScript::InjectionPoint arg) { Q_D(QQuickWebEngineScript); |