# HG changeset patch # User displacer # Date 1170961403 0 # Node ID 595d8663254da3957c5f6e3a49bba40828dc93db # Parent d6d3a6a473a3a391004576e58edb8205d3d0ddca update button for udp servers list diff -r d6d3a6a473a3 -r 595d8663254d QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Thu Feb 08 16:29:33 2007 +0000 +++ b/QTfrontend/hwform.cpp Thu Feb 08 19:03:23 2007 +0000 @@ -38,6 +38,7 @@ #include "newnetclient.h" #include "gamecfgwidget.h" #include "netudpserver.h" +#include "netudpwidget.h" HWForm::HWForm(QWidget *parent) : QMainWindow(parent), pnetserver(0), pUdpServer(0) @@ -78,6 +79,8 @@ connect(ui.pageNet->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack())); connect(ui.pageNet->BtnNetConnect, SIGNAL(clicked()), this, SLOT(NetConnect())); connect(ui.pageNet->BtnNetSvrStart, SIGNAL(clicked()), this, SLOT(NetStartServer())); + connect(ui.pageNet->pUpdateUdpButt, SIGNAL(clicked()), ui.pageNet->pUdpClient, SLOT(updateList())); + connect(ui.pageNet->pUdpClient->serversList, SIGNAL(doubleClicked (const QModelIndex &)), this, SLOT(NetConnectServer())); connect(ui.pageNetGame->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack())); connect(ui.pageNetGame->BtnGo, SIGNAL(clicked()), this, SLOT(NetStartGame())); @@ -241,6 +244,19 @@ game->PlayDemo(cfgdir->absolutePath() + "/Demos/" + curritem->text() + ".hwd_" + cProtoVer); } +void HWForm::NetConnectServer() +{ + QListWidgetItem * curritem = ui.pageNet->pUdpClient->serversList->currentItem(); + if (!curritem) { + QMessageBox::critical(this, + tr("Error"), + tr("Please, select server from the list above"), + tr("OK")); + return ; + } + _NetConnect(curritem->text(), 46631, ui.pageNet->editNetNick->text()); +} + void HWForm::_NetConnect(const QString & hostName, quint16 port, const QString & nick) { hwnet = new HWNewNet(config, ui.pageNetGame->pGameCFG, ui.pageNetGame->pNetTeamsWidget); diff -r d6d3a6a473a3 -r 595d8663254d QTfrontend/hwform.h --- a/QTfrontend/hwform.h Thu Feb 08 16:29:33 2007 +0000 +++ b/QTfrontend/hwform.h Thu Feb 08 19:03:23 2007 +0000 @@ -60,6 +60,7 @@ void SimpleGame(); void PlayDemo(); void NetConnect(); + void NetConnectServer(); void NetStartServer(); void NetDisconnect(); void NetJoin(); diff -r d6d3a6a473a3 -r 595d8663254d QTfrontend/netudpwidget.cpp --- a/QTfrontend/netudpwidget.cpp Thu Feb 08 16:29:33 2007 +0000 +++ b/QTfrontend/netudpwidget.cpp Thu Feb 08 19:03:23 2007 +0000 @@ -12,8 +12,14 @@ mainLayout.addWidget(serversList); pUdpSocket = new QUdpSocket(this); - pUdpSocket->bind(46632); + pUdpSocket->bind(46632, QUdpSocket::ShareAddress); connect(pUdpSocket, SIGNAL(readyRead()), this, SLOT(onClientRead())); + updateList(); +} + +void HWNetUdpWidget::updateList() +{ + serversList->clear(); pUdpSocket->writeDatagram("hedgewars client", QHostAddress::Broadcast, 46631); } diff -r d6d3a6a473a3 -r 595d8663254d QTfrontend/netudpwidget.h --- a/QTfrontend/netudpwidget.h Thu Feb 08 16:29:33 2007 +0000 +++ b/QTfrontend/netudpwidget.h Thu Feb 08 19:03:23 2007 +0000 @@ -14,13 +14,17 @@ public: HWNetUdpWidget(QWidget *parent = 0); + QListWidget* serversList; + + public slots: + void updateList(); + private slots: void onClientRead(); private: QVBoxLayout mainLayout; QUdpSocket* pUdpSocket; - QListWidget* serversList; }; #endif // _NET_UDPWIDGET_INCLUDED diff -r d6d3a6a473a3 -r 595d8663254d QTfrontend/pages.cpp --- a/QTfrontend/pages.cpp Thu Feb 08 16:29:33 2007 +0000 +++ b/QTfrontend/pages.cpp Thu Feb 08 19:03:23 2007 +0000 @@ -397,7 +397,7 @@ NNGroupBox = new QGroupBox(this); NNGroupBox->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed); NNGroupBox->setTitle(QGroupBox::tr("Net options")); - pageLayout->addWidget(NNGroupBox, 0, 1); + pageLayout->addWidget(NNGroupBox, 0, 1, 1, 2); pageLayout->addWidget(new QWidget(), 1, 1); @@ -419,18 +419,23 @@ editIP->setMaxLength(50); GBNlayout->addWidget(editIP, 1, 1); - HWNetUdpWidget* pUdpClient=new HWNetUdpWidget(this); - pageLayout->addWidget(pUdpClient, 2, 1); + pUdpClient=new HWNetUdpWidget(this); + pageLayout->addWidget(pUdpClient, 2, 1, 1, 2); BtnNetConnect = new QPushButton(this); BtnNetConnect->setFont(*font14); BtnNetConnect->setText(QPushButton::tr("Connect")); - pageLayout->addWidget(BtnNetConnect, 3, 2); + pageLayout->addWidget(BtnNetConnect, 3, 3); + + pUpdateUdpButt = new QPushButton(this); + pUpdateUdpButt->setFont(*font14); + pUpdateUdpButt->setText(QPushButton::tr("Update")); + pageLayout->addWidget(pUpdateUdpButt, 3, 1); BtnNetSvrStart = new QPushButton(this); BtnNetSvrStart->setFont(*font14); BtnNetSvrStart->setText(QPushButton::tr("Start server")); - pageLayout->addWidget(BtnNetSvrStart, 3, 1); + pageLayout->addWidget(BtnNetSvrStart, 3, 2); BtnBack = new QPushButton(this); BtnBack->setFont(*font14); diff -r d6d3a6a473a3 -r 595d8663254d QTfrontend/pages.h --- a/QTfrontend/pages.h Thu Feb 08 16:29:33 2007 +0000 +++ b/QTfrontend/pages.h Thu Feb 08 19:03:23 2007 +0000 @@ -39,6 +39,7 @@ class About; class QSpinBox; class FPSEdit; +class HWNetUdpWidget; class PageMain : public QWidget { @@ -159,6 +160,8 @@ public: PageNet(QWidget* parent = 0); + QPushButton* pUpdateUdpButt; + HWNetUdpWidget* pUdpClient; QPushButton *BtnBack; QPushButton *BtnNetConnect; QPushButton* BtnNetSvrStart;