# HG changeset patch # User unc0rr # Date 1236184536 0 # Node ID ce140b2b928a3f4bb2ea0ae0c2d14947c51a8f1a # Parent e071284b118ef75df1e8db87d7ee9bce2986d660 Some work on players lists context menus diff -r e071284b118e -r ce140b2b928a QTfrontend/chatwidget.cpp --- a/QTfrontend/chatwidget.cpp Wed Mar 04 13:55:53 2009 +0000 +++ b/QTfrontend/chatwidget.cpp Wed Mar 04 16:35:36 2009 +0000 @@ -57,12 +57,13 @@ 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 * acInfo = new QAction(QAction::tr("Info"), chatNicks); + acInfo = new QAction(QAction::tr("Info"), chatNicks); connect(acInfo, SIGNAL(triggered(bool)), this, SLOT(onInfo())); + acKick = new QAction(QAction::tr("Kick"), chatNicks); + connect(acKick, SIGNAL(triggered(bool)), this, SLOT(onKick())); + acBan = new QAction(QAction::tr("Ban"), chatNicks); + connect(acBan, SIGNAL(triggered(bool)), this, SLOT(onBan())); + chatNicks->insertAction(0, acInfo); } @@ -129,6 +130,13 @@ emit kick(curritem->text()); } +void HWChatWidget::onBan() +{ + QListWidgetItem * curritem = chatNicks->currentItem(); + if (curritem) + emit ban(curritem->text()); +} + void HWChatWidget::onInfo() { QListWidgetItem * curritem = chatNicks->currentItem(); @@ -150,3 +158,15 @@ else items[0]->setIcon(QIcon(":/res/lightbulb_off.png")); } + +void HWChatWidget::adminAccess(bool b) +{ + chatNicks->removeAction(acKick); + chatNicks->removeAction(acBan); + + if(b) + { + chatNicks->insertAction(0, acKick); + chatNicks->insertAction(0, acBan); + } +} diff -r e071284b118e -r ce140b2b928a QTfrontend/chatwidget.h --- a/QTfrontend/chatwidget.h Wed Mar 04 13:55:53 2009 +0000 +++ b/QTfrontend/chatwidget.h Wed Mar 04 16:35:36 2009 +0000 @@ -41,10 +41,12 @@ void nickRemoved(const QString& nick); void clear(); void setReadyStatus(const QString & nick, bool isReady); + void adminAccess(bool); signals: void chatLine(const QString& str); void kick(const QString & str); + void ban(const QString & str); void info(const QString & str); private: @@ -53,9 +55,13 @@ QStringList chatStrings; QListWidget* chatNicks; QLineEdit* chatEditLine; + QAction * acInfo; + QAction * acKick; + QAction * acBan; private slots: void returnPressed(); + void onBan(); void onKick(); void onInfo(); }; diff -r e071284b118e -r ce140b2b928a QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Wed Mar 04 13:55:53 2009 +0000 +++ b/QTfrontend/hwform.cpp Wed Mar 04 16:35:36 2009 +0000 @@ -484,6 +484,8 @@ ui.pageRoomsList, SLOT(setRoomsList(const QStringList&))); connect(hwnet, SIGNAL(adminAccess(bool)), ui.pageRoomsList, SLOT(setAdmin(bool))); + connect(hwnet, SIGNAL(adminAccess(bool)), + ui.pageRoomsList->chatWidget, SLOT(adminAccess(bool))); connect(hwnet, SIGNAL(serverMessage(const QString&)), ui.pageRoomsList->chatWidget, SLOT(onServerMessage(const QString&))); @@ -505,6 +507,8 @@ ui.pageNetGame->pChatWidget, SLOT(setReadyStatus(const QString &, bool))); connect(hwnet, SIGNAL(chatStringFromMe(const QString&)), ui.pageNetGame->pChatWidget, SLOT(onChatString(const QString&))); + connect(hwnet, SIGNAL(roomMaster(bool)), + ui.pageNetGame->pChatWidget, SLOT(adminAccess(bool))); connect(ui.pageNetGame->pChatWidget, SIGNAL(chatLine(const QString&)), hwnet, SLOT(chatLineToNet(const QString&))); connect(ui.pageNetGame->BtnGo, SIGNAL(clicked()), hwnet, SLOT(ToggleReady())); @@ -513,8 +517,14 @@ connect(ui.pageNetGame->pChatWidget, SIGNAL(kick(const QString&)), hwnet, SLOT(kickPlayer(const QString&))); + connect(ui.pageNetGame->pChatWidget, SIGNAL(ban(const QString&)), + hwnet, SLOT(banPlayer(const QString&))); connect(ui.pageNetGame->pChatWidget, SIGNAL(info(const QString&)), hwnet, SLOT(infoPlayer(const QString&))); + connect(ui.pageRoomsList->chatWidget, SIGNAL(kick(const QString&)), + hwnet, SLOT(kickPlayer(const QString&))); + connect(ui.pageRoomsList->chatWidget, SIGNAL(ban(const QString&)), + hwnet, SLOT(banPlayer(const QString&))); connect(ui.pageRoomsList->chatWidget, SIGNAL(info(const QString&)), hwnet, SLOT(infoPlayer(const QString&))); diff -r e071284b118e -r ce140b2b928a QTfrontend/newnetclient.cpp --- a/QTfrontend/newnetclient.cpp Wed Mar 04 13:55:53 2009 +0000 +++ b/QTfrontend/newnetclient.cpp Wed Mar 04 16:35:36 2009 +0000 @@ -357,6 +357,7 @@ { netClientState = 3; emit EnteredGame(); + emit roomMaster(isChief); if (isChief) ConfigAsked(); } @@ -734,6 +735,11 @@ return QString("%1: %2").arg(nick).arg(msg); } +void HWNewNet::banPlayer(const QString & nick) +{ + RawSendNet(QString("BAN%1%2").arg(delimeter).arg(nick)); +} + void HWNewNet::kickPlayer(const QString & nick) { RawSendNet(QString("KICK%1%2").arg(delimeter).arg(nick)); diff -r e071284b118e -r ce140b2b928a QTfrontend/newnetclient.h --- a/QTfrontend/newnetclient.h Wed Mar 04 13:55:53 2009 +0000 +++ b/QTfrontend/newnetclient.h Wed Mar 04 16:35:36 2009 +0000 @@ -100,6 +100,7 @@ void nickRemovedLobby(const QString& nick); void FromNet(const QByteArray & buf); void adminAccess(bool); + void roomMaster(bool); void AddNetTeam(const HWTeam&); void seedChanged(const QString & seed); @@ -155,6 +156,7 @@ void CreateRoom(const QString & room); void askRoomsList(); void gameFinished(); + void banPlayer(const QString &); void kickPlayer(const QString &); void infoPlayer(const QString &); void startGame();