summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJonathan Bauer2011-03-07 17:44:05 +0100
committerJonathan Bauer2011-03-07 17:44:05 +0100
commit84bd2b0925c8825b819b7b062d9f2a351f2e96b5 (patch)
treeeab941aa6ef3e52d4a2788a2c5f8b418fb4f5f26 /src
parentwebkitTest.html local loading of jQuery stuff (diff)
downloadfbgui-84bd2b0925c8825b819b7b062d9f2a351f2e96b5.tar.gz
fbgui-84bd2b0925c8825b819b7b062d9f2a351f2e96b5.tar.xz
fbgui-84bd2b0925c8825b819b7b062d9f2a351f2e96b5.zip
Reworked code structure
Diffstat (limited to 'src')
-rw-r--r--src/DownloadManager.cpp8
-rw-r--r--src/DownloadManager.h12
-rw-r--r--src/JSObject.cpp12
-rw-r--r--src/JSObject.h8
-rw-r--r--src/fbbrowser.cpp56
-rw-r--r--src/fbbrowser.h20
-rw-r--r--src/fbgui.cpp24
-rw-r--r--src/fbgui.h11
-rw-r--r--src/main.cpp24
-rwxr-xr-xsrc/testApp.sh2
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.