diff options
author | Morten Sørvig <msorvig@trolltech.com> | 2009-03-20 11:44:44 +0100 |
---|---|---|
committer | Morten Sørvig <msorvig@trolltech.com> | 2009-03-20 11:44:44 +0100 |
commit | ebb80b63c73aaa9f1c47813488006b2f96165513 (patch) | |
tree | c5edb16ce54b312fe7910b335745451de0ec1b4f /src | |
parent | e067fd7c2b2dd92e787316d9dd4bd9a372e74bd5 (diff) |
Combine the single and multi-user clases into a single WebClient class
Diffstat (limited to 'src')
-rwxr-xr-x | src/sessionserver.cpp (renamed from src/multiuserserver.cpp) | 25 | ||||
-rwxr-xr-x | src/sessionserver.h (renamed from src/multiuserserver.h) | 16 | ||||
-rwxr-xr-x | src/singleuserserver.cpp | 52 | ||||
-rwxr-xr-x | src/singleuserserver.h | 22 | ||||
-rw-r--r-- | src/webclient.cpp | 28 | ||||
-rw-r--r-- | src/webclient.h | 23 |
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 + + |