#include "fbbrowser.h" #include "JSObject.h" #include "DownloadManager.h" #include #include #include #include #include // ------------------------------------------------------------------------------------------- fbbrowser::fbbrowser() { // Initialise Browser Window. mw = new QMainWindow(this); view = new QWebView(mw); // Prepare loading of baseURL. // Maybe possible to let DM take care of these steps? manager = new QNetworkAccessManager(this); request.setUrl(baseURL); reply = manager->get(request); // TODO: error differentiation if(reply->error() == QNetworkReply::NoError) { qDebug() << "Loading: " << baseURL.toString(); view->load(baseURL); } else { qDebug() << "QNetworkReply error code is: " << reply->error(); qDebug() << "Error occured, loading error page..."; view->load(QUrl("qrc:/html/errorPage.html")); } // Enable Javascript through JSObject. qwf = view->page()->mainFrame(); jso = new JSObject(qwf); QObject::connect(qwf, SIGNAL(javaScriptWindowObjectCleared()), jso, SLOT(attachToDOM())); QObject::connect(jso, SIGNAL(getMAC()), this, SLOT(getMAC())); QObject::connect(this, SIGNAL(printMAC(QString&)), jso, SLOT(printMAC(QString&))); QObject::connect(jso, SIGNAL(getTime()), this, SLOT(getTime())); QObject::connect(this, SIGNAL(printTime(QString&)), jso, SLOT(printTime(QString&))); QObject::connect(jso, SIGNAL(requestFile(QString&)), this, SLOT(forwardDownloadRequest(QString&))); QObject::connect(this, SIGNAL(updateProgress(int)), jso, SLOT(updateProgress(int))); QObject::connect(jso, SIGNAL(signalQuitAll()), this, SLOT(quit())); // Initialize Download Manager. dm = new DownloadManager(); QObject::connect(this, SIGNAL(downloadFile(QUrl&)), dm, SLOT(downloadFile(QUrl&))); QObject::connect(dm, SIGNAL(updateProgress(int)), this, SLOT(forwardUpdateProgress(int))); // Remove the window decoration, form to fullscreen, central view? mw->setWindowFlags(Qt::SplashScreen); mw->showFullScreen(); mw->setCentralWidget(view); } // ------------------------------------------------------------------------------------------- fbbrowser::~fbbrowser() { delete mw; delete view; delete manager; delete dm; delete jso; } // ------------------------------------------------------------------------------------------- void fbbrowser::forwardDownloadRequest(QString& filename) { // Forge URL for filename from baseURL QUrl fileUrl; fileUrl = baseURL.resolved(QUrl(filename)); emit downloadFile(fileUrl); } // ------------------------------------------------------------------------------------------- void fbbrowser::forwardUpdateProgress(int progress) { emit updateProgress(progress); } // ------------------------------------------------------------------------------------------- void fbbrowser::getMAC() { QNetworkInterface *qNetI = new QNetworkInterface(); QList list; list=qNetI->allInterfaces(); QString str; QString macAddress; for (int i = 0; i < list.size(); ++i) { str = list.at(i).name(); macAddress = list.at(i).hardwareAddress(); qDebug() << str; qDebug() << macAddress; } emit printMAC(macAddress); } // ------------------------------------------------------------------------------------------- void fbbrowser::getTime() { qDebug() << "---- call: showTime_Slot"; QString time = QTime::currentTime().toString("hh:mm:ss"); emit printTime(time); } // ------------------------------------------------------------------------------------------- void fbbrowser::quit() { emit killApp(); }