summaryrefslogblamecommitdiffstats
path: root/src/fbbrowser.cpp
blob: 535907efe6e91a1f98c90968443e41e15c6372d3 (plain) (tree)
1
2
3
4
5
6
7
8
                      
                     
                            


                    

                   





                                                                                              


                                      
                      
                                                                                 
                                                  
                                                           
                            
                                                                  
                                  
                                      


                                                                           

                                                    
                                                               



                                
                                                                          


                                                                   
 






                                                                              

                                          

                                                                                              


                                               

                                

                               
                                                                                              

                       



                       
 
#include "fbbrowser.h"
#include "JSObject.h"
#include "DownloadManager.h"

#include <QFile>
#include <QFileInfo>
#include <QtWebKit>

// -------------------------------------------------------------------------------------------
void fbbrowser::quit()
{
	emit killApp();
}
// -------------------------------------------------------------------------------------------
fbbrowser::fbbrowser(const QUrl & url)
{
	view = new QWebView(this);
 	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
        // reply->error() returns 0 even for invalid URL.
        // A possibility to check for validity, is to listen to readyRead()
        // signal, haven't found a better way yet ...
	if(reply->error() == QNetworkReply::NoError)
	{
		//qDebug() << "No error, loading given URL...";
		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);
	QObject::connect(qwf, SIGNAL(javaScriptWindowObjectCleared()),
					 jso, SLOT(enableJavascriptAccess()));
	QObject::connect(jso, SIGNAL(signalQuitAll()), this, SLOT(quit()));

	// Initialize Download Manager.
	dm = new DownloadManager(baseUrl);
	QObject::connect(jso, SIGNAL(downloadFile(QString)), dm, SLOT(downloadFile(QString)));
	QObject::connect(dm, SIGNAL(updateProgress(int)), jso, SLOT(updateProgressSlot(int)));

	//remove the window decoration
	this->setWindowFlags(Qt::SplashScreen);
	//set form to fullscreen
	this->showFullScreen();
	setCentralWidget(view);
}
// -------------------------------------------------------------------------------------------
fbbrowser::~fbbrowser()
{
	delete view;
	delete manager;
	delete dm;
	delete jso;
}