summaryrefslogtreecommitdiffstats
path: root/src/webengine/api/qquickwebenginescript.cpp
diff options
context:
space:
mode:
authorRobin Burchell <robin.burchell@theqtcompany.com>2015-03-10 13:44:42 +0100
committerRobin Burchell <robin.burchell@viroteck.net>2015-03-18 13:06:00 +0000
commite9c82ddc22662ffc768d37f0be5e7e3ac3599bfa (patch)
treec0eaa3f4000f1fbaee7fbfa32dc2f8705e37843e /src/webengine/api/qquickwebenginescript.cpp
parentd4ab9273dd1c61e1638f5b0376e65f7c5375ad93 (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.cpp35
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);