#include "fbgui.h" #include "javascriptinterface.h" #include "sysinfo.h" //------------------------------------------------------------------------------------------------------- JavascriptInterface::JavascriptInterface(QWebFrame *parent){ qxtLog->debug() << "Initializing javascript interface..."; _parent = parent; } //------------------------------------------------------------------------------------------------------- JavascriptInterface::~JavascriptInterface() {} //------------------------------------------------------------------------------------------------------- const QString JavascriptInterface::getSysInfo(const QString& info){ SysInfo si; return si.getInfo(info); } //------------------------------------------------------------------------------------------------------- void JavascriptInterface::attachToDOM(){ _parent->addToJavaScriptWindowObject(QString("fbgui"), this); loadJQuery(); } //------------------------------------------------------------------------------------------------------- void JavascriptInterface::notify(const QString& msg){ qxtLog->debug() << "Notifying: " << msg; QString code = QString("notify('\%1')").arg(msg); _parent->evaluateJavaScript(code); } //------------------------------------------------------------------------------------------------------- void JavascriptInterface::getSession(const QString& session){ qxtLog->debug() << "Received session id: " << session; sessionID = session; } //------------------------------------------------------------------------------------------------------- void JavascriptInterface::startDownload(const QString& filename){ // ignore if empty filename if (filename.isEmpty()){ _parent->evaluateJavaScript("alert(\"No filename!\")"); return; } emit requestFile(filename); } //------------------------------------------------------------------------------------------------------- void JavascriptInterface::downloadInfo(const QString& filename, const double& filesize){ QString code = QString("downloadInfo('\%1', \%2)").arg(filename).arg(filesize); _parent->evaluateJavaScript(code); } //------------------------------------------------------------------------------------------------------- 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); } //------------------------------------------------------------------------------------------------------- void JavascriptInterface::setCallbackOnDlQueueFinished(QString& jsFunction){ qxtLog->debug() << "Callback set: " << jsFunction; _callBackOnDownloadsFinished = jsFunction; } //------------------------------------------------------------------------------------------------------- void JavascriptInterface::callbackOnDlQueueFinished(){ QString code = QString("\%1").arg(_callBackOnDownloadsFinished); _parent->evaluateJavaScript(code); } //------------------------------------------------------------------------------------------------------- void JavascriptInterface::quit(){ emit quitFbgui(); } //------------------------------------------------------------------------------------------------------- void JavascriptInterface::loadJQuery(){ QString js; QString pathToJsDir(DEFAULT_QRC_HTML_DIR); pathToJsDir.append("/js"); QDir* qrcJSDir = new QDir(pathToJsDir); QFileInfoList fiList = qrcJSDir->entryInfoList(); QFileInfo fi; foreach(fi, fiList) { if(fi.suffix() == "js") { qDebug()<< fi.fileName(); qxtLog->debug() << fi.fileName(); if(fi.fileName()!="test.js") { QFile file; file.setFileName(pathToJsDir + "/" + fi.fileName()); file.open(QIODevice::ReadOnly); js = file.readAll(); file.close(); _parent->evaluateJavaScript(js); qDebug()<< "evaluated " + fi.fileName(); } } } }