summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMorten Sørvig <msorvig@trolltech.com>2009-03-20 11:44:44 +0100
committerMorten Sørvig <msorvig@trolltech.com>2009-03-20 11:44:44 +0100
commitebb80b63c73aaa9f1c47813488006b2f96165513 (patch)
treec5edb16ce54b312fe7910b335745451de0ec1b4f /src
parente067fd7c2b2dd92e787316d9dd4bd9a372e74bd5 (diff)
Combine the single and multi-user clases into a single WebClient class
Diffstat (limited to 'src')
-rwxr-xr-xsrc/sessionserver.cpp (renamed from src/multiuserserver.cpp)25
-rwxr-xr-xsrc/sessionserver.h (renamed from src/multiuserserver.h)16
-rwxr-xr-xsrc/singleuserserver.cpp52
-rwxr-xr-xsrc/singleuserserver.h22
-rw-r--r--src/webclient.cpp28
-rw-r--r--src/webclient.h23
6 files changed, 59 insertions, 107 deletions
diff --git a/src/multiuserserver.cpp b/src/sessionserver.cpp
index 5e7ca7b..9489aa6 100755
--- a/src/multiuserserver.cpp
+++ b/src/sessionserver.cpp
@@ -1,4 +1,3 @@
-#include "multiuserserver.h"
#include "webclient.h"
#include <json.h>
@@ -10,7 +9,7 @@ SessionServer::SessionServer(QWidget *widget, Session *session)
rootWidget = widget;
widgetEventHandler = new WidgetEventHandler(rootWidget);
- rootWidget->setAttribute(Qt::WA_DontShowOnScreen);
+// rootWidget->setAttribute(Qt::WA_DontShowOnScreen);
rootWidget->show();
// Make the initial show non-special by processing the show events
@@ -26,6 +25,11 @@ SessionServer::SessionServer(QWidget *widget, Session *session)
this, SLOT(handleRequest(HttpRequest *, HttpResponse *)));
}
+SessionServer::~SessionServer()
+{
+ delete widgetEventHandler;
+}
+
void SessionServer::handleRequest(HttpRequest *request, HttpResponse *response)
{
DEBUG << "SingleUserServer::handleRequest!" << request->path();
@@ -36,21 +40,4 @@ void SessionServer::handleRequest(HttpRequest *request, HttpResponse *response)
}
}
-MultiUserServer::MultiUserServer()
-{
- connect(&server, SIGNAL(sessionBegin(Session *)),
- this, SLOT(newSession_internal(Session *)));
-}
-
-void MultiUserServer::newSession_internal(Session *session)
-{
- QWidget *rootWidget = 0;
- emit newSession(&rootWidget, session);
- if (rootWidget == 0) {
- qWarning("rootWidget is NULL.");
- return;
- }
-
- new SessionServer(rootWidget, session);
-}
diff --git a/src/multiuserserver.h b/src/sessionserver.h
index 996381b..9f844e7 100755
--- a/src/multiuserserver.h
+++ b/src/sessionserver.h
@@ -10,24 +10,12 @@ class SessionServer : public FileServer
Q_OBJECT
public:
SessionServer(QWidget *widget, Session *session);
+ ~SessionServer();
+
void handleRequest(HttpRequest *request, HttpResponse *response);
QWidget *rootWidget;
WidgetEventHandler *widgetEventHandler;
};
-
-class MultiUserServer : public QObject
-{
-Q_OBJECT
-public:
- MultiUserServer();
-signals:
- void newSession(QWidget **rootWidget, Session *session);
-private slots:
- void newSession_internal(Session *session);
-private:
- Server server;
-};
-
#endif
diff --git a/src/singleuserserver.cpp b/src/singleuserserver.cpp
deleted file mode 100755
index a01d75e..0000000
--- a/src/singleuserserver.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-#include "singleuserserver.h"
-#include "webclient.h"
-
-#include <json.h>
-#include <eventqueue.h>
-#include <webclientserver.h>
-
-void SingleUserServer::setRootWidget(QWidget *widget)
-{
- rootWidget = widget;
-// rootWidget->setAttribute(Qt::WA_DontShowOnScreen);
- rootWidget->show();
-
- // Make the initial show non-special by processing the show events
- // before enabling the event handler. We want to support refreshing
- // the ui, every request of "/content" should give a complete ui refresh.
- qApp->processEvents();
- qApp->processEvents();
-
- connect(&server, SIGNAL(sessionBegin(Session *)),
- this, SLOT(newSession(Session *)));
-
- widgetEventHandler = new WidgetEventHandler(rootWidget);
- widgetEventHandler->setRootWidget(rootWidget);
-}
-
-
-void SingleUserServer::newSession(Session *session)
-{
- if (widgetEventHandler->session()) {
- // session already active, refuse connection.
- // return;
- }
-
- DEBUG << "new session";
-
- widgetEventHandler->setSession(session);
-
- connect(session, SIGNAL(requestContent(HttpRequest *, HttpResponse *)),
- this, SLOT(handleRequest(HttpRequest *, HttpResponse *)));
-}
-
-void SingleUserServer::handleRequest(HttpRequest *request, HttpResponse *response)
-{
- widgetEventHandler->handleRequest(request, response);
-
- // Call the file sever if the request wasn't handled.
- if (response->body == QByteArray()) {
- FileServer::handleRequest(request, response);
- }
-}
-
diff --git a/src/singleuserserver.h b/src/singleuserserver.h
deleted file mode 100755
index 65a35eb..0000000
--- a/src/singleuserserver.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef SINGLEUSER_H
-#define SINGLEUSER_H
-
-#include <QtGui>
-#include <webclientserver.h>
-#include <widgeteventhandler.h>
-
-class SingleUserServer : public FileServer
-{
-Q_OBJECT
-public:
- void setRootWidget(QWidget *widget);
-private slots:
- void newSession(Session *session);
- void handleRequest(HttpRequest *request, HttpResponse *response);
-private:
- WidgetEventHandler *widgetEventHandler;
- Server server;
- QWidget *rootWidget;
-};
-
-#endif
diff --git a/src/webclient.cpp b/src/webclient.cpp
new file mode 100644
index 0000000..786a1a8
--- /dev/null
+++ b/src/webclient.cpp
@@ -0,0 +1,28 @@
+#include "webclient.h"
+
+WebClient::WebClient()
+{
+ connect(&server, SIGNAL(sessionBegin(Session *)),
+ this, SLOT(newSession_internal(Session *)));
+}
+
+void WebClient::setRootWidget(QWidget *widget)
+{
+ globalRootWidget = widget;
+}
+
+void WebClient::newSession_internal(Session *session)
+{
+ QWidget *rootWidget = 0;
+ emit newSession(&rootWidget, session);
+
+ if (rootWidget == 0)
+ rootWidget = globalRootWidget;
+
+ if (rootWidget == 0) {
+ qWarning("rootWidget is NULL.");
+ return;
+ }
+
+ new SessionServer(rootWidget, session);
+}
diff --git a/src/webclient.h b/src/webclient.h
index 9e94bfc..3ddfd57 100644
--- a/src/webclient.h
+++ b/src/webclient.h
@@ -1,9 +1,32 @@
#ifndef QT_WEBCLIENT_H
+#include <sessionserver.h>
+#include <webclientserver.h>
+
#ifdef QT_WEBCLIENT_DEBUG
#define DEBUG qDebug()
#else
#define DEBUG if (0) qDebug()
#endif
+
+class WebClient : public QObject
+{
+Q_OBJECT
+public:
+ WebClient();
+ void setRootWidget(QWidget *widget);
+signals:
+ void newSession(QWidget **rootWidget, Session *session);
+private slots:
+ void newSession_internal(Session *session);
+private:
+ Server server;
+ QWidget *globalRootWidget;
+};
+
+
+
#endif QT_WEBCLIENT_H
+
+