# HG changeset patch # User unc0rr # Date 1231015717 0 # Node ID e3e37c730dc0e442100723cb24a0a860dd1be023 # Parent a02353129a41f1f648f4595e88b23ec1b5edd96c - Decrease font size in chat - Add "Info" command to nick list, which shows only client version for now diff -r a02353129a41 -r e3e37c730dc0 QTfrontend/chatwidget.cpp --- a/QTfrontend/chatwidget.cpp Sat Jan 03 19:01:50 2009 +0000 +++ b/QTfrontend/chatwidget.cpp Sat Jan 03 20:48:37 2009 +0000 @@ -1,6 +1,7 @@ /* * Hedgewars, a free turn based strategy game * Copyright (c) 2007 Igor Ulyanov + * Copyright (c) 2009 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 @@ -20,6 +21,7 @@ #include #include #include +#include #include "chatwidget.h" @@ -27,40 +29,44 @@ QWidget(parent), mainLayout(this) { - mainLayout.setSpacing(1); - mainLayout.setMargin(1); - mainLayout.setSizeConstraint(QLayout::SetMinimumSize); - mainLayout.setColumnStretch(0, 75); - mainLayout.setColumnStretch(1, 25); + mainLayout.setSpacing(1); + mainLayout.setMargin(1); + mainLayout.setSizeConstraint(QLayout::SetMinimumSize); + mainLayout.setColumnStretch(0, 75); + mainLayout.setColumnStretch(1, 25); - chatEditLine = new QLineEdit(this); - chatEditLine->setMaxLength(300); - connect(chatEditLine, SIGNAL(returnPressed()), this, SLOT(returnPressed())); + chatEditLine = new QLineEdit(this); + chatEditLine->setMaxLength(300); + connect(chatEditLine, SIGNAL(returnPressed()), this, SLOT(returnPressed())); - mainLayout.addWidget(chatEditLine, 1, 0, 1, 2); + mainLayout.addWidget(chatEditLine, 1, 0, 1, 2); - chatText = new QTextBrowser(this); - chatText->setMinimumHeight(20); - chatText->setMinimumWidth(10); - chatText->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - mainLayout.addWidget(chatText, 0, 0); + chatText = new QTextBrowser(this); + chatText->setMinimumHeight(20); + chatText->setMinimumWidth(10); + chatText->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + mainLayout.addWidget(chatText, 0, 0); - chatNicks = new QListWidget(this); - chatNicks->setMinimumHeight(10); - chatNicks->setMinimumWidth(10); - chatNicks->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - chatNicks->setContextMenuPolicy(Qt::ActionsContextMenu); - mainLayout.addWidget(chatNicks, 0, 1); + chatNicks = new QListWidget(this); + chatNicks->setMinimumHeight(10); + chatNicks->setMinimumWidth(10); + chatNicks->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + chatNicks->setContextMenuPolicy(Qt::ActionsContextMenu); + mainLayout.addWidget(chatNicks, 0, 1); - QAction * acBan = new QAction(QAction::tr("Kick"), chatNicks); - connect(acBan, SIGNAL(triggered(bool)), this, SLOT(onKick())); - chatNicks->insertAction(0, acBan); + QAction * acBan = new QAction(QAction::tr("Kick"), chatNicks); + connect(acBan, SIGNAL(triggered(bool)), this, SLOT(onKick())); + chatNicks->insertAction(0, acBan); + + QAction * acInfo = new QAction(QAction::tr("Info"), chatNicks); + connect(acInfo, SIGNAL(triggered(bool)), this, SLOT(onInfo())); + chatNicks->insertAction(0, acInfo); } void HWChatWidget::returnPressed() { - emit chatLine(chatEditLine->text()); - chatEditLine->clear(); + emit chatLine(chatEditLine->text()); + chatEditLine->clear(); } void HWChatWidget::onChatString(const QString& str) @@ -104,6 +110,13 @@ emit kick(curritem->text()); } +void HWChatWidget::onInfo() +{ + QListWidgetItem * curritem = chatNicks->currentItem(); + if (curritem) + emit info(curritem->text()); +} + void HWChatWidget::setReadyStatus(const QString & nick, bool isReady) { QList items = chatNicks->findItems(nick, Qt::MatchExactly); diff -r a02353129a41 -r e3e37c730dc0 QTfrontend/chatwidget.h --- a/QTfrontend/chatwidget.h Sat Jan 03 19:01:50 2009 +0000 +++ b/QTfrontend/chatwidget.h Sat Jan 03 20:48:37 2009 +0000 @@ -44,6 +44,7 @@ signals: void chatLine(const QString& str); void kick(const QString & str); + void info(const QString & str); private: QGridLayout mainLayout; @@ -55,6 +56,7 @@ private slots: void returnPressed(); void onKick(); + void onInfo(); }; #endif // _CHAT_WIDGET_INCLUDED diff -r a02353129a41 -r e3e37c730dc0 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Sat Jan 03 19:01:50 2009 +0000 +++ b/QTfrontend/hwform.cpp Sat Jan 03 20:48:37 2009 +0000 @@ -470,9 +470,14 @@ ui.pageNetGame->pChatWidget, SLOT(onChatString(const QString&))); connect(ui.pageNetGame->pChatWidget, SIGNAL(chatLine(const QString&)), hwnet, SLOT(chatLineToNet(const QString&))); + connect(ui.pageNetGame->BtnGo, SIGNAL(clicked()), hwnet, SLOT(ToggleReady())); + connect(ui.pageNetGame->pChatWidget, SIGNAL(kick(const QString&)), hwnet, SLOT(kickPlayer(const QString&))); - connect(ui.pageNetGame->BtnGo, SIGNAL(clicked()), hwnet, SLOT(ToggleReady())); + connect(ui.pageNetGame->pChatWidget, SIGNAL(info(const QString&)), + hwnet, SLOT(infoPlayer(const QString&))); + connect(ui.pageRoomsList->chatWidget, SIGNAL(info(const QString&)), + hwnet, SLOT(infoPlayer(const QString&))); connect(ui.pageRoomsList->chatWidget, SIGNAL(chatLine(const QString&)), hwnet, SLOT(chatLineToLobby(const QString&))); diff -r a02353129a41 -r e3e37c730dc0 QTfrontend/main.cpp --- a/QTfrontend/main.cpp Sat Jan 03 19:01:50 2009 +0000 +++ b/QTfrontend/main.cpp Sat Jan 03 20:48:37 2009 +0000 @@ -118,7 +118,7 @@ "border-color: #ffcc00;" "background-color: #0d0544;" "color: #ffcc00;" - "font: bold 14px;" +// "font: bold 14px;" "}" "QSpinBox{" diff -r a02353129a41 -r e3e37c730dc0 QTfrontend/newnetclient.cpp --- a/QTfrontend/newnetclient.cpp Sat Jan 03 19:01:50 2009 +0000 +++ b/QTfrontend/newnetclient.cpp Sat Jan 03 20:48:37 2009 +0000 @@ -269,6 +269,21 @@ return; } + if (lst[0] == "INFO") { + if(lst.size() < 2) + { + qWarning("Net: Empty INFO message"); + return; + } + QStringList tmp = lst; + tmp.removeFirst(); + if (netClientState == 2) + emit chatStringLobby(tmp.join("\n")); + else + emit chatStringFromNet(tmp.join("\n")); + return; + } + if (lst[0] == "READY") { if(lst.size() != 2) { @@ -642,6 +657,11 @@ RawSendNet(QString("KICK%1%2").arg(delimeter).arg(nick)); } +void HWNewNet::infoPlayer(const QString & nick) +{ + RawSendNet(QString("INFO%1%2").arg(delimeter).arg(nick)); +} + void HWNewNet::startGame() { RawSendNet(QString("START_GAME")); diff -r a02353129a41 -r e3e37c730dc0 QTfrontend/newnetclient.h --- a/QTfrontend/newnetclient.h Sat Jan 03 19:01:50 2009 +0000 +++ b/QTfrontend/newnetclient.h Sat Jan 03 20:48:37 2009 +0000 @@ -144,6 +144,7 @@ void askRoomsList(); void gameFinished(); void kickPlayer(const QString &); + void infoPlayer(const QString &); void startGame(); void toggleRestrictJoins(); void toggleRestrictTeamAdds(); diff -r a02353129a41 -r e3e37c730dc0 netserver/HWProto.hs --- a/netserver/HWProto.hs Sat Jan 03 19:01:50 2009 +0000 +++ b/netserver/HWProto.hs Sat Jan 03 20:48:37 2009 +0000 @@ -45,6 +45,7 @@ answerConnected = answerClientOnly ["CONNECTED", "Hedgewars server http://www.hedgewars.org/"] answerNotOwner = answerClientOnly ["ERROR", "You do not own this team"] answerCannotCreateRoom = answerClientOnly ["WARNING", "Cannot create more rooms"] +answerInfo client = answerClientOnly ["INFO", nick client, proto2ver $ protocol client] answerAbandoned = answerOthersRoom ["BYE", "Room abandoned"] answerChatString nick msg = answerOthersRoom ["CHAT_STRING", nick, msg] @@ -130,6 +131,17 @@ handleCmd _ _ _ ["ERROR", msg] = (noChangeClients, noChangeRooms, answerErrorMsg msg) +handleCmd _ clients _ ["INFO", asknick] = + if noSuchClient then + (noChangeClients, noChangeRooms, []) + else + (noChangeClients, noChangeRooms, answerInfo client) + where + maybeClient = find (\cl -> asknick == nick cl) clients + noSuchClient = isNothing maybeClient + client = fromJust maybeClient + + -- check state and call state-dependent commmand handlers handleCmd client clients rooms cmd = if null (nick client) || protocol client == 0 then diff -r a02353129a41 -r e3e37c730dc0 netserver/Miscutils.hs --- a/netserver/Miscutils.hs Sat Jan 03 19:01:50 2009 +0000 +++ b/netserver/Miscutils.hs Sat Jan 03 20:48:37 2009 +0000 @@ -181,3 +181,9 @@ team : teams else t : replaceTeam team teams + +proto2ver :: Word16 -> String +proto2ver 17 = "0.9.7-dev" +proto2ver 19 = "0.9.7" +proto2ver 20 = "0.9.8-dev" +proto2ver _ = "Unknown" \ No newline at end of file