summaryrefslogblamecommitdiffstats
path: root/src/javascriptinterface.cpp
blob: d0fa5a9326001ac5d82dbb3063437a9099ad8767 (plain) (tree)



















                                                                                                         
                     

                                                                                                         
                                                     
                                                      




                                                                                                         
                                                                    


                                                                                                         













                                                                                                         





                                                                                                          
                                                                         
                                                              
                                                         

                                                                                                         

                                                                        





                                                                                                         

                                                                                                         
                   

                                                  
 

                                                        




                                       

                                                           
                                                    

                                           
                                                                                    




                                                                
                                                                                  



                         



                                             
                                                             


                     
#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() << "[jvi] Notifying: " << msg;
	QString code = QString("notify('\%1')").arg(msg);
	_parent->evaluateJavaScript(code);
}
//-------------------------------------------------------------------------------------------------------
void JavascriptInterface::getSession(const QString& session){
	qxtLog->debug() << "[jvi] 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::setCallbackOnFinished(const QString& function){
	qxtLog->debug() << "[jvi] Callback set: " << function;
	_callbackOnDownloadsFinished = QString(function);
}
//-------------------------------------------------------------------------------------------------------
void JavascriptInterface::callbackOnFinished(){
	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(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);
				//qxtLog->debug() << "evaluated " + fi.fileName();
			}
		}
	}
}
void JavascriptInterface::trigger(){
	QFile file(fileToTriggerURL);
	if (file.open(QIODevice::WriteOnly)){
		file.write("data\n");
		qxtLog->debug() << "[jvi] *trigger watcher*";
	}
	file.close();
}