# HG changeset patch # User unc0rr # Date 1196512695 0 # Node ID 373353eaa742d9beee6252a1a238226ca72984b6 # Parent e7673b036db5e2dda8d74e55673dc9d441bda4e2 Sample WWW server list class diff -r e7673b036db5 -r 373353eaa742 QTfrontend/CMakeLists.txt --- a/QTfrontend/CMakeLists.txt Fri Nov 30 18:31:41 2007 +0000 +++ b/QTfrontend/CMakeLists.txt Sat Dec 01 12:38:15 2007 +0000 @@ -62,6 +62,7 @@ newnetclient.cpp netudpserver.cpp netudpwidget.cpp + netwwwwidget.cpp chatwidget.cpp binds.cpp SDLs.cpp @@ -98,6 +99,7 @@ newnetclient.h netudpserver.h netudpwidget.h + netwwwwidget.h chatwidget.h SDLs.h playrecordpage.h diff -r e7673b036db5 -r 373353eaa742 QTfrontend/hedgewars.pro --- a/QTfrontend/hedgewars.pro Fri Nov 30 18:31:41 2007 +0000 +++ b/QTfrontend/hedgewars.pro Sat Dec 01 12:38:15 2007 +0000 @@ -38,6 +38,7 @@ newnetclient.h \ netudpserver.h \ netudpwidget.h \ + netwwwwidget.h \ chatwidget.h \ SDLs.h \ playrecordpage.h \ @@ -72,6 +73,7 @@ newnetclient.cpp \ netudpserver.cpp \ netudpwidget.cpp \ + netwwwwidget.h \ chatwidget.cpp \ SDLs.cpp \ playrecordpage.cpp \ diff -r e7673b036db5 -r 373353eaa742 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Fri Nov 30 18:31:41 2007 +0000 +++ b/QTfrontend/hwform.cpp Sat Dec 01 12:38:15 2007 +0000 @@ -42,6 +42,7 @@ #include "gamecfgwidget.h" #include "netudpserver.h" #include "netudpwidget.h" +#include "netwwwwidget.h" #include "chatwidget.h" #include "playrecordpage.h" diff -r e7673b036db5 -r 373353eaa742 QTfrontend/netwwwwidget.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QTfrontend/netwwwwidget.cpp Sat Dec 01 12:38:15 2007 +0000 @@ -0,0 +1,68 @@ +/* + * Hedgewars, a worms-like game + * Copyright (c) 2007 Andrey Korotaev + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include +#include +#include + +#include "netwwwwidget.h" +#include "hwconsts.h" + +HWNetWwwWidget::HWNetWwwWidget(QWidget* parent) : + QWidget(parent), mainLayout(this) +{ + serversList = new QListWidget(this); + mainLayout.setMargin(0); + mainLayout.addWidget(serversList); + + http = new QHttp(this); + http->setHost("www.hedgewars.org", 80); + connect(http, SIGNAL(requestFinished(int, bool)), this, SLOT(onClientRead(int, bool))); + updateList(); +} +// http://hedgewars.org/games/create +// http://www.hedgewars.org/games/update_game?id=1&key=pufidzuk +// http://www.hedgewars.org/games/destroy_game?id=5&key=wrdeough +void HWNetWwwWidget::updateList() +{ + http->abort(); +// example for adding game to server list +/* QString request = QString("game[title]=%1&game[port]=%2&game[password]=%3&game[protocol_version]=%4") + .arg("hedgewarsserver") + .arg(46631) + .arg(false ? "true" : "false") + .arg(*cProtoVer); + http->post("/games/create", request.toUtf8()); +*/ +// query game list + QString request = QString("protocol_version=%1") + .arg(*cProtoVer); + http->post("/games/list_games", request.toUtf8()); + + serversList->clear(); +} + +void HWNetWwwWidget::onClientRead(int id, bool error) +{ + if (error) + { + QMessageBox::critical(this, tr("Error"), http->errorString()); + return; + } + serversList->addItem(http->readAll()); +} diff -r e7673b036db5 -r 373353eaa742 QTfrontend/netwwwwidget.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QTfrontend/netwwwwidget.h Sat Dec 01 12:38:15 2007 +0000 @@ -0,0 +1,49 @@ +/* + * Hedgewars, a worms-like game + * Copyright (c) 2007 Andrey Korotaev + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#ifndef _NET_WWWWIDGET_INCLUDED +#define _NET_WWWWIDGET_INCLUDED + +#include +#include + +class QListWidget; +class QHttp; + +class HWNetWwwWidget : public QWidget +{ + Q_OBJECT + +public: + HWNetWwwWidget(QWidget *parent = 0); + + QListWidget* serversList; + +public slots: + void updateList(); + +private slots: + void onClientRead(int id, bool error); + +private: + QVBoxLayout mainLayout; + QHttp * http; + +}; + +#endif // _NET_WWWWIDGET_INCLUDED