diff options
author | Jonathan Bauer | 2011-03-07 17:44:05 +0100 |
---|---|---|
committer | Jonathan Bauer | 2011-03-07 17:44:05 +0100 |
commit | 84bd2b0925c8825b819b7b062d9f2a351f2e96b5 (patch) | |
tree | eab941aa6ef3e52d4a2788a2c5f8b418fb4f5f26 /src | |
parent | webkitTest.html local loading of jQuery stuff (diff) | |
download | fbgui-84bd2b0925c8825b819b7b062d9f2a351f2e96b5.tar.gz fbgui-84bd2b0925c8825b819b7b062d9f2a351f2e96b5.tar.xz fbgui-84bd2b0925c8825b819b7b062d9f2a351f2e96b5.zip |
Reworked code structure
Diffstat (limited to 'src')
-rw-r--r-- | src/DownloadManager.cpp | 8 | ||||
-rw-r--r-- | src/DownloadManager.h | 12 | ||||
-rw-r--r-- | src/JSObject.cpp | 12 | ||||
-rw-r--r-- | src/JSObject.h | 8 | ||||
-rw-r--r-- | src/fbbrowser.cpp | 56 | ||||
-rw-r--r-- | src/fbbrowser.h | 20 | ||||
-rw-r--r-- | src/fbgui.cpp | 24 | ||||
-rw-r--r-- | src/fbgui.h | 11 | ||||
-rw-r--r-- | src/main.cpp | 24 | ||||
-rwxr-xr-x | src/testApp.sh | 2 |
10 files changed, 87 insertions, 90 deletions
diff --git a/src/DownloadManager.cpp b/src/DownloadManager.cpp index d010490..600fed6 100644 --- a/src/DownloadManager.cpp +++ b/src/DownloadManager.cpp @@ -1,7 +1,11 @@ #include "DownloadManager.h" -void DownloadManager::downloadFile(QUrl& fileUrl) -{ +void DownloadManager::downloadFile(QString& filename){ + QUrl fileUrl; + fileUrl = baseURL.resolved(QUrl(filename)); + this->processDownloadRequest(fileUrl); +} +void DownloadManager::downloadFile(QUrl& fileUrl){ qDebug() << "Received downloadFile signal for:" << fileUrl; this->processDownloadRequest(fileUrl); } diff --git a/src/DownloadManager.h b/src/DownloadManager.h index 9141330..6e55012 100644 --- a/src/DownloadManager.h +++ b/src/DownloadManager.h @@ -1,10 +1,14 @@ #ifndef DOWNLOADMANAGER_H #define DOWNLOADMANAGER_H -#include "fbbrowser.h" +#include "fbgui.h" #include <QObject> #include <QtNetwork> +extern bool debug; +extern QUrl baseURL; + + class DownloadManager : public QObject { Q_OBJECT @@ -12,10 +16,10 @@ class DownloadManager : public QObject public: DownloadManager(); ~DownloadManager(); - void processDownloadRequest(QUrl& url); - int downloaded; + private: + void processDownloadRequest(QUrl& url); // Object required for downloading. QNetworkAccessManager* qnam; QQueue<QUrl> dlQ; @@ -24,6 +28,7 @@ private: QFile outfile; // Download-in-progress flag. bool dip; + int downloaded; signals: @@ -32,6 +37,7 @@ signals: public slots: void downloadFile(QUrl& fileUrl); + void downloadFile(QString& fileUrl); private slots: void startNextDownload(); diff --git a/src/JSObject.cpp b/src/JSObject.cpp index 2775359..98c8d48 100644 --- a/src/JSObject.cpp +++ b/src/JSObject.cpp @@ -14,6 +14,13 @@ JSObject::JSObject(QWebFrame *parent) { //------------------------------------------------------------------------------------------------------- JSObject::~JSObject() {} //------------------------------------------------------------------------------------------------------- +/* TEST */ +void JSObject::doAction(QString action) +{ + JSAction _action = QUIT; + emit processAction(action); +} +//------------------------------------------------------------------------------------------------------- void JSObject::attachToDOM() { // Attaches itself to the DOM @@ -28,11 +35,14 @@ void JSObject::startDownload(QString filename) _parent->evaluateJavaScript("alert(\"No filename!\")"); return; } + + QUrl fileUrl; + fileUrl = baseURL.resolved(QUrl(filename)); emit requestFile(filename); } //------------------------------------------------------------------------------------------------------- -void JSObject::updateProgress(int i) +void JSObject::updateProgressBar(int i) { if (i == 0) return; diff --git a/src/JSObject.h b/src/JSObject.h index 3229def..e700ec8 100644 --- a/src/JSObject.h +++ b/src/JSObject.h @@ -21,7 +21,7 @@ typedef enum SHOW_IP_ADDRESS, SHOW_TIME, SHOW_DATE -} jsAction; +} JSAction; class fbbrowser; class QWebFrame; @@ -35,8 +35,6 @@ private: public: JSObject(QWebFrame *parent); virtual ~JSObject(); - - // no slots needed. class provides only signals // private slots: // void performAction(jsAction a); @@ -46,6 +44,7 @@ public: // the signals will be connected in the fbbrowser class with slots of the fbbrowser class signals: + void processAction(QString action); void requestFile(QString& filename); void getMAC(); void getTime(); @@ -77,11 +76,12 @@ signals: public slots: /* Slots to commucate with fbbrowser. */ void attachToDOM(); - void updateProgress(int i); + void updateProgressBar(int i); void printMAC(QString& macAddress); void printTime(QString& time); /* Slots for calling from within Javascript. */ + void doAction(QString action); void quitAll(); void startDownload(QString filename); void getMacAddress(); diff --git a/src/fbbrowser.cpp b/src/fbbrowser.cpp index 313bc64..f4c18f9 100644 --- a/src/fbbrowser.cpp +++ b/src/fbbrowser.cpp @@ -9,14 +9,19 @@ #include <QtWebKit> // ------------------------------------------------------------------------------------------- +void fbbrowser::processAction(QString action){ + // Do stuff +} +// ------------------------------------------------------------------------------------------- fbbrowser::fbbrowser() { // Initialise Browser Window. - mw = new QMainWindow(this); - view = new QWebView(mw); + QWebView* view = new QWebView(this); + + QNetworkRequest request; + QNetworkReply *reply; + QNetworkAccessManager *manager; - // 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); @@ -25,6 +30,7 @@ fbbrowser::fbbrowser() { qDebug() << "Loading: " << baseURL.toString(); view->load(baseURL); + qDebug() << "Loaded."; } else { @@ -34,50 +40,26 @@ fbbrowser::fbbrowser() } // Enable Javascript through JSObject. - qwf = view->page()->mainFrame(); - jso = new JSObject(qwf); + QWebFrame* qwf = view->page()->mainFrame(); + JSObject* jso = new JSObject(qwf); + /* ACTION TESTING */ + QObject::connect(jso, SIGNAL(processAction(QString)), this, SLOT(processAction(QString))); + 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))); + DownloadManager* dm = new DownloadManager(); + QObject::connect(jso, SIGNAL(requestFile(QString&)), dm, SLOT(downloadFile(QString&))); + QObject::connect(dm, SIGNAL(updateProgress(int)), jso, SLOT(updateProgressBar(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() { diff --git a/src/fbbrowser.h b/src/fbbrowser.h index 96a8711..023d76b 100644 --- a/src/fbbrowser.h +++ b/src/fbbrowser.h @@ -10,31 +10,14 @@ extern QUrl baseURL; -class QWebView; -class QWebFrame; -class JSObject; -class DownloadManager; - class fbbrowser : public QWidget { Q_OBJECT public: fbbrowser(); - ~fbbrowser(); private: - QMainWindow *mw; - QWebView *view; - QWebFrame* qwf; - - QNetworkRequest request; - QNetworkReply *reply; - QNetworkAccessManager *manager; - - //the jsObject. connection to the webpage for emiting signals - JSObject *jso; - DownloadManager* dm; signals: void printMAC(QString& macAddress); @@ -44,10 +27,9 @@ signals: void killApp(); public slots: + void processAction(QString action); void getMAC(); void getTime(); - void forwardUpdateProgress(int progress); - void forwardDownloadRequest(QString& filename); void quit(); }; diff --git a/src/fbgui.cpp b/src/fbgui.cpp index 8a03368..a9e3951 100644 --- a/src/fbgui.cpp +++ b/src/fbgui.cpp @@ -6,18 +6,20 @@ #include <QMap> QUrl baseURL; +bool debug; -void fbgui::startBrowser() +fbgui::fbgui(QApplication *parent) { - _fbb = new fbbrowser(); - QObject::connect(_fbb, SIGNAL(killApp()), this->parent(), SLOT(quit())); -} + /* Browser init. */ + fbbrowser* _fbb = new fbbrowser(); + setWindowFlags(Qt::SplashScreen); + showFullScreen(); + setCentralWidget(_fbb); + + /* Connect fbb with app for killing the app from browser. */ + QObject::connect(_fbb, SIGNAL(killApp()), parent, SLOT(quit())); + + + // JSO init -fbgui::fbgui() -{ - _fbb = NULL; -} -fbgui::~fbgui() -{ - delete _fbb; } diff --git a/src/fbgui.h b/src/fbgui.h index 9bf4ce0..f72db44 100644 --- a/src/fbgui.h +++ b/src/fbgui.h @@ -6,18 +6,15 @@ #define DEFAULT_URL "http://www.google.com" -class fbgui : public QObject +class fbgui : public QMainWindow { Q_OBJECT public: - fbgui(); - ~fbgui(); - void startBrowser(); + fbgui(QApplication *parent); - -private: - fbbrowser* _fbb; +signals: + void quitApp(); }; #endif // FBGUI_H diff --git a/src/main.cpp b/src/main.cpp index 25c7e03..0144b9f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6,6 +6,7 @@ #include <iostream> #include "fbgui.h" +extern bool debug; extern QUrl baseURL; void printHelp() @@ -15,11 +16,13 @@ void printHelp() qout << QObject::tr("Usage: ./fbgui [OPTIONS]") << endl; qout << QObject::tr("Options:") << endl; qout << "-u <URL>, --url=<URL> " << QObject::tr("Set which URL to load.") << endl; + qout << "-d, --debug " << QObject::tr("Activate debug mode.") << endl; qout << "-h, --help " << QObject::tr("Prints usage information.") << endl; } int main(int argc, char *argv[]) { + debug = false; QApplication app(argc, argv, QApplication::GuiServer); app.setOrganizationName("team_projekt_2011"); app.setApplicationName("fbgui"); @@ -37,6 +40,7 @@ int main(int argc, char *argv[]) static const struct option longOpts[] = { {"url", required_argument, NULL, 'u'}, + {"debug", no_argument, NULL, 'd'}, {"help", no_argument, NULL, 'h'} }; int opt = getopt_long(argc, argv, optString, longOpts, &longIndex); @@ -47,17 +51,27 @@ int main(int argc, char *argv[]) case 'u': clo.insert("url", optarg); break; + case 'd': + clo.insert("debug", "debug"); + break; case 'h': clo.insert("help", "help"); break; } opt = getopt_long(argc, argv, optString, longOpts, &longIndex); } - if (clo.contains("help")) - { + // Print help + if (clo.contains("help")){ printHelp(); exit(EXIT_SUCCESS); } + // Debug mode + if (clo.contains("debug")){ + debug = true; + qDebug() << "Debug mode activated."; + } + else + debug = false; // Read the config file, for now hardcoded expected name. QSettings confFileSettings(app.applicationDirPath() + "/fbgui.conf", QSettings::IniFormat); confFileSettings.setIniCodec("UTF-8"); @@ -70,9 +84,9 @@ int main(int argc, char *argv[]) baseURL = DEFAULT_URL; // Start fbgui. - fbgui *gui = new fbgui(); - gui->setParent(&app); - gui->startBrowser(); + fbgui gui(&app); + gui.show(); + return app.exec(); } diff --git a/src/testApp.sh b/src/testApp.sh index 18010e0..a529d7e 100755 --- a/src/testApp.sh +++ b/src/testApp.sh @@ -16,7 +16,7 @@ display_id=$(grep -n $(whoami) /etc/passwd| head -n 1|awk -F : '{print $1}') # Start QT's virtual framebuffer with proper displayID /usr/local/Trolltech/Qt-4.7.1/bin/qvfb -width 800 -height 600 -qwsdisplay :$display_id & # Wait for it to load (needed?) Probably not ;o -sleep 1 +sleep 0.1 # Start fbgui. $working_path/fbgui -display QVFb:$display_id -u $url # Check if fbbrowser is not running, if so kill the qvfb. |