diff options
Diffstat (limited to 'src/fbgui/javascriptinterface.cpp')
-rw-r--r-- | src/fbgui/javascriptinterface.cpp | 166 |
1 files changed, 35 insertions, 131 deletions
diff --git a/src/fbgui/javascriptinterface.cpp b/src/fbgui/javascriptinterface.cpp index 8260fab..72d0844 100644 --- a/src/fbgui/javascriptinterface.cpp +++ b/src/fbgui/javascriptinterface.cpp @@ -1,8 +1,8 @@ #include "fbgui.h" +#include "ndgui.h" #include "javascriptinterface.h" #include "sysinfo.h" - #include <log4cxx/logger.h> #include "qlog4cxx.h" @@ -10,7 +10,6 @@ using namespace log4cxx; using namespace log4cxx::helpers; LoggerPtr jsiLogger(Logger::getLogger("fbgui.jsi")); - //------------------------------------------------------------------------------------------------------- // Initialisation //------------------------------------------------------------------------------------------------------- @@ -21,8 +20,8 @@ LoggerPtr jsiLogger(Logger::getLogger("fbgui.jsi")); * Is of type QWebFrame. */ JavascriptInterface::JavascriptInterface(QWebFrame *parent) { - LOG4CXX_DEBUG(jsiLogger, "Initializing javascript interface..."); - _parent = parent; + LOG4CXX_DEBUG(jsiLogger, "Initializing javascript interface..."); + _targetFrame = parent; } //------------------------------------------------------------------------------------------------------- /** @@ -42,8 +41,8 @@ JavascriptInterface::~JavascriptInterface() { /* destructor dummy */ * @see JavascriptInterface::loadJQuery() */ void JavascriptInterface::attachToDOM() { - _parent->addToJavaScriptWindowObject(QString("fbgui"), this); - loadJQuery(); + _targetFrame->addToJavaScriptWindowObject(QString("fbgui"), this); + loadJQuery(); } //------------------------------------------------------------------------------------------------------- /** @@ -58,88 +57,29 @@ void JavascriptInterface::attachToDOM() { * @see JavascriptInterface::attachToDOM() */ void JavascriptInterface::loadJQuery() { - // to test if this actually works... - QString js; - QString pathToJsDir(DEFAULT_QRC_HTML_DIR); - pathToJsDir.append("/js"); + // to test if this actually works... + QString js; + QString pathToJsDir(DEFAULT_QRC_HTML_DIR); + pathToJsDir.append("/js"); - QDir qrcJSDir(pathToJsDir); - QFileInfoList fiList = qrcJSDir.entryInfoList(); - QFileInfo fi; -foreach(fi, fiList) -{ - if (fi.suffix() == "js") { - //qDebug()<< fi.fileName(); - //LOG4CXX_DEBUG(jsiLogger, fi.fileName()); - if (fi.fileName() != "test.js") { - QFile file; - file.setFileName(pathToJsDir + "/" + fi.fileName()); - file.open(QIODevice::ReadOnly); - js = file.readAll(); - file.close(); + QDir qrcJSDir(pathToJsDir); + QFileInfoList fiList = qrcJSDir.entryInfoList(); + QFileInfo fi; - _parent->evaluateJavaScript(js); - //LOG4CXX_DEBUG(jsiLogger, "evaluated " + fi.fileName()); - } - } -} -} -//------------------------------------------------------------------------------------------------------- -// Javascript functions for webpage -//------------------------------------------------------------------------------------------------------- -/** - * This method start a download. - * - * This method start a download. - * Can be called from inside a JavaScript function of the HTML page. - * Emits the JavascriptInterface::requestFile(const QString) signal. - */ -void JavascriptInterface::startDownload(const QString& filename) { - // ignore if empty filename - if (filename.isEmpty()) { - _parent->evaluateJavaScript("alert(\"No filename!\")"); - return; - } - emit requestFile(filename); -} -//------------------------------------------------------------------------------------------------------- -/** - * This method start a download. - * - * This method start a download. - * Can be called from inside a JavaScript function of the HTML page. - * - * @todo add some more informations - */ -void JavascriptInterface::setCallbackOnFinished(const QString& function) { - LOG4CXX_DEBUG(jsiLogger, "Callback set: " << function); - _callbackOnDownloadsFinished = QString(function); -} -//------------------------------------------------------------------------------------------------------- -/** - * This method delivers system informations. - * - * This method delivers system informations. Type of informations, are defined by - * the parameter. The output of this method depends on the parameter. - * Can be called from inside a JavaScript function of the HTML page. - * - * @param infoName - * Is of type QString. Defines which method will be called. Possible values are: - * - mac - * - ip - * - mbserial - * - usb - * - * @return QString - * the output of the called method or "info_error" if an error occurred - * (e. g. invalid parameter). - * - * @see SysInfo::getInfo(const QString& infoName) - */ -const QString JavascriptInterface::getSysInfo(const QString& info) { - SysInfo si; - return si.getInfo(info); + foreach(fi, fiList) { + if (fi.suffix() == "js") { + QFile file; + file.setFileName(pathToJsDir + "/" + fi.fileName()); + file.open(QIODevice::ReadOnly); + js = file.readAll(); + file.close(); + + _targetFrame->evaluateJavaScript(js); + //LOG4CXX_DEBUG(jsiLogger, "evaluated " + fi.fileName()); + } + } } + //------------------------------------------------------------------------------------------------------- /** * This method quits the whole program. @@ -149,7 +89,7 @@ const QString JavascriptInterface::getSysInfo(const QString& info) { * Emits JavascriptInterface::quitFbgui() signal */ void JavascriptInterface::quit() { - emit quitFbgui(); + emit quitFbgui(); } //------------------------------------------------------------------------------------------------------- @@ -163,7 +103,7 @@ void JavascriptInterface::quit() { * @see fbgui::performShutDown() */ void JavascriptInterface::shutDown() { - emit shutDownClient(); + emit shutDownClient(); } //------------------------------------------------------------------------------------------------------- /** @@ -176,56 +116,20 @@ void JavascriptInterface::shutDown() { * @see fbgui::performReboot() */ void JavascriptInterface::reboot() { - emit rebootClient(); -} -//------------------------------------------------------------------------------------------------------- -// Download Manager information exchange -//------------------------------------------------------------------------------------------------------- -/** - * This method delivers some informations about the downloading file. - * - * This method delivers some informations about the downloading file. - * - * @todo add some more informations - */ -void JavascriptInterface::downloadInfo(const QString& filename, - const double& filesize) { - QString code = QString("downloadInfo('\%1', \%2)").arg(filename).arg( - filesize); - _parent->evaluateJavaScript(code); -} -//------------------------------------------------------------------------------------------------------- -/** - * This method updates the progress bar. - * - * This method calls a Javascript function to update the progress bar of the download. - * Javascript must have a function called "updateProgress" to receive this information. - * - * @todo add some more informations - */ -void JavascriptInterface::updateProgressBar(const int& percent, - const double& speed, const QString& unit) { - if (percent == 0) - return; - QString code = QString("updateProgress(\%1, \%2, '\%3')").arg(percent).arg( - speed).arg(unit); - _parent->evaluateJavaScript(code); + emit rebootClient(); } + //------------------------------------------------------------------------------------------------------- /** * This method sends out messages to Javascript. A corresponding function must be implemented * on the webpage to receive these. */ void JavascriptInterface::notify(const QString& msg) { - LOG4CXX_DEBUG(jsiLogger, "Notifying: " << msg); - QString code = QString("notify('\%1')").arg(msg); - _parent->evaluateJavaScript(code); +LOG4CXX_DEBUG(jsiLogger, "Notifying: " << msg); +QString code = QString("notify('\%1')").arg(msg); +_targetFrame->evaluateJavaScript(code); } + +//------------------------------------------------------------------------------------------------------- +// Network Discovery Communication //------------------------------------------------------------------------------------------------------- -/** - * Sets a callback function for when downloads are finished (will be called when the queue is empty). - */ -void JavascriptInterface::callbackOnFinished() { - QString code = QString("\%1").arg(_callbackOnDownloadsFinished); - _parent->evaluateJavaScript(code); -} |