#include "fbbrowser.h" #include "JSObject.h" #include "DownloadManager.h" #include #include #include // ------------------------------------------------------------------------------------------- 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::quit() { emit killApp(); } // ------------------------------------------------------------------------------------------- fbbrowser::fbbrowser(const QUrl & url) { mw = new QMainWindow(this); view = new QWebView(mw); baseUrl = url; // Create QNetworkAccessManager which is needed to send/receive requests. manager = new QNetworkAccessManager(this); // Create a QNetworkRequest object and set its URL. request.setUrl(url); // Let the manager send the request and receive the reply. reply = manager->get(request); // TODO: error differentiation if(reply->error() == QNetworkReply::NoError) { qDebug() << "Loading: " << url.toString(); view->load(url); } 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); //jso->setParent(qwf); QObject::connect(qwf, SIGNAL(javaScriptWindowObjectCleared()), jso, SLOT(attachToDOM())); 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; }