summaryrefslogtreecommitdiffstats
path: root/src/javascriptinterface.cpp
blob: 49eef82f67c2bbd7bfd7544f6ead4744d9797478 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include "fbgui.h"
#include "javascriptinterface.h"
#include "sysinfo.h"


//-------------------------------------------------------------------------------------------------------
//                                         Initialisation
//-------------------------------------------------------------------------------------------------------
JavascriptInterface::JavascriptInterface(QWebFrame *parent){
	qxtLog->debug() << "Initializing javascript interface...";
	_parent = parent;
}
//-------------------------------------------------------------------------------------------------------
JavascriptInterface::~JavascriptInterface() { /* destructor dummy */ }
//-------------------------------------------------------------------------------------------------------
void JavascriptInterface::attachToDOM(){
	_parent->addToJavaScriptWindowObject(QString("fbgui"), this);
	loadJQuery();
}
//-------------------------------------------------------------------------------------------------------
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();
            }
        }
    }
}
//-------------------------------------------------------------------------------------------------------
//                                Javascript functions for webpage
//-------------------------------------------------------------------------------------------------------
void JavascriptInterface::getSession(const QString& session){
    qxtLog->debug() << "[jsi] 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::setCallbackOnFinished(const QString& function){
    qxtLog->debug() << "[jsi] Callback set: " << function;
    _callbackOnDownloadsFinished = QString(function);
}
//-------------------------------------------------------------------------------------------------------
const QString JavascriptInterface::getSysInfo(const QString& info){
    SysInfo si;
    return si.getInfo(info);
}
//-------------------------------------------------------------------------------------------------------
void JavascriptInterface::quit(){
    emit quitFbgui();
}
//-------------------------------------------------------------------------------------------------------
//                            Download Manager information exchange
//-------------------------------------------------------------------------------------------------------
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::notify(const QString& msg){
    qxtLog->debug() << "[jsi] Notifying: " << msg;
    QString code = QString("notify('\%1')").arg(msg);
    _parent->evaluateJavaScript(code);
}
//-------------------------------------------------------------------------------------------------------
void JavascriptInterface::callbackOnFinished(){
	QString code = QString("\%1").arg(_callbackOnDownloadsFinished);
	_parent->evaluateJavaScript(code);
}
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------
void JavascriptInterface::trigger(){
    QFile file(fileToTriggerURL);
    if (file.open(QIODevice::WriteOnly)){
        file.write("data\n");
        qxtLog->debug() << "[jsi] *trigger watcher*";
    }
    file.close();
}