From da33a8192bfbcff8445420c70dc4c00172f76093 Mon Sep 17 00:00:00 2001 From: Noldor Date: Sat, 12 Mar 2011 21:17:18 +0000 Subject: More work on kvs class webview git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@5568 17fca916-40b9-46aa-a4ea-0a15b648b75c --- src/modules/objects/KvsObject_webView.cpp | 50 +++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 3 deletions(-) (limited to 'src/modules/objects/KvsObject_webView.cpp') diff --git a/src/modules/objects/KvsObject_webView.cpp b/src/modules/objects/KvsObject_webView.cpp index f68013ed2..2f6f631db 100644 --- a/src/modules/objects/KvsObject_webView.cpp +++ b/src/modules/objects/KvsObject_webView.cpp @@ -27,6 +27,7 @@ #include "kvi_settings.h" #ifdef COMPILE_WEBKIT_SUPPORT #include +#include #include #include #include @@ -36,6 +37,26 @@ #include "kvi_debug.h" #include "KviLocale.h" + +const char * const webattributes_tbl[] = { + "JavaScriptEnabled", + "PluginEnabled", + "JavascriptCanOpenWindows", + "JavascriptCanAccessClipboard", + "ZoomTextOnly", + "LocalContentCanAccessFileUrls" + }; +const QWebSettings::WebAttribute webattributes_cod[] = { + QWebSettings::JavascriptEnabled, + QWebSettings::PluginsEnabled, + QWebSettings::JavascriptCanOpenWindows, + QWebSettings::JavascriptCanAccessClipboard, + QWebSettings::ZoomTextOnly, + QWebSettings::LocalContentCanAccessFileUrls +}; + +#define webattributes_num (sizeof(webattributes_tbl) / sizeof(webattributes_tbl[0])) + /* @doc: webview @keyterms: @@ -78,6 +99,7 @@ KVSO_BEGIN_REGISTERCLASS(KvsObject_webView,"webview","widget") KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_webView,makePreview) KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_webView,toPlainText) KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_webView,setAttribute) + KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_webView,setWebSetting) KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_webView,loadFinishedEvent) KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_webView,loadProgressEvent) KVSO_REGISTER_HANDLER_BY_NAME(KvsObject_webView,loadStartedEvent) @@ -95,9 +117,6 @@ KVSO_END_CONSTRUCTOR(KvsObject_webView) bool KvsObject_webView::init(KviKvsRunTimeContext * ,KviKvsVariantList *) { SET_OBJECT(QWebView); - // fixme: this is for testing purpose only - ((QWebView *)widget())->settings()->setAttribute(QWebSettings::PluginsEnabled,true); - // connect(((QWebView *)widget()),SIGNAL(loadStarted()),this,SLOT(slotLoadStarted())); connect(((QWebView *)widget()),SIGNAL(loadFinished(bool)),this,SLOT(slotLoadFinished(bool))); connect(((QWebView *)widget()),SIGNAL(loadProgress(int)),this,SLOT(slotLoadProgress(int))); @@ -257,6 +276,31 @@ KVSO_CLASS_FUNCTION(webView,setAttribute) m_currentElement.setAttribute(szName,szValue); return true; } + +KVSO_CLASS_FUNCTION(webView,setWebSetting) +{ + CHECK_INTERNAL_POINTER(widget()) + QString szName; + bool bEnabled; + KVSO_PARAMETERS_BEGIN(c) + KVSO_PARAMETER("name",KVS_PT_NONEMPTYSTRING,0,szName) + KVSO_PARAMETER("value",KVS_PT_BOOLEAN,0,bEnabled) + KVSO_PARAMETERS_END(c) + bool found=false; + unsigned int j = 0; + for(; j < webattributes_num; j++) + { + if(KviQString::equalCI(szName,webattributes_tbl[j])) + { + found=true; + break; + } + } + if (found) + ((QWebView *)widget())->settings()->setAttribute(webattributes_cod[j],bEnabled); + else c->warning(__tr2qs_ctx("Unknown web setting '%Q'","objects"),&szName); + return true; +} KVSO_CLASS_FUNCTION(webView,attribute) { CHECK_INTERNAL_POINTER(widget()) -- cgit v1.3.1-10-gc9f91