IRC polishing work - kicks are shown, error messages are displayed. Rename somehow buggy still.
This commit is contained in:
@@ -129,5 +129,9 @@ void ServerGuiWrapper::SignalNetServerError(int errorID, int osErrorID) { if (my
|
|||||||
void ServerGuiWrapper::SignalIrcConnect(const string &server) { if (myIrccb) myIrccb->SignalIrcConnect(server); }
|
void ServerGuiWrapper::SignalIrcConnect(const string &server) { if (myIrccb) myIrccb->SignalIrcConnect(server); }
|
||||||
void ServerGuiWrapper::SignalIrcSelfJoined(const string &nickName, const std::string &channel) { if (myIrccb) myIrccb->SignalIrcSelfJoined(nickName, channel); }
|
void ServerGuiWrapper::SignalIrcSelfJoined(const string &nickName, const std::string &channel) { if (myIrccb) myIrccb->SignalIrcSelfJoined(nickName, channel); }
|
||||||
void ServerGuiWrapper::SignalIrcPlayerJoined(const string &nickName) { if (myIrccb) myIrccb->SignalIrcPlayerJoined(nickName); }
|
void ServerGuiWrapper::SignalIrcPlayerJoined(const string &nickName) { if (myIrccb) myIrccb->SignalIrcPlayerJoined(nickName); }
|
||||||
|
void ServerGuiWrapper::SignalIrcPlayerChanged(const string &oldNick, const string &newNick) { if (myIrccb) myIrccb->SignalIrcPlayerChanged(oldNick, newNick); }
|
||||||
|
void ServerGuiWrapper::SignalIrcPlayerKicked(const string &nickName, const string &byWhom, const string &reason) { if (myIrccb) myIrccb->SignalIrcPlayerKicked(nickName, byWhom, reason); }
|
||||||
void ServerGuiWrapper::SignalIrcPlayerLeft(const string &nickName) { if (myIrccb) myIrccb->SignalIrcPlayerLeft(nickName); }
|
void ServerGuiWrapper::SignalIrcPlayerLeft(const string &nickName) { if (myIrccb) myIrccb->SignalIrcPlayerLeft(nickName); }
|
||||||
void ServerGuiWrapper::SignalIrcChatMsg(const string &nickName, const string &msg) { if (myIrccb) myIrccb->SignalIrcChatMsg(nickName, msg); }
|
void ServerGuiWrapper::SignalIrcChatMsg(const string &nickName, const string &msg) { if (myIrccb) myIrccb->SignalIrcChatMsg(nickName, msg); }
|
||||||
|
void ServerGuiWrapper::SignalIrcError(int errorCode) { if (myIrccb) myIrccb->SignalIrcError(errorCode); }
|
||||||
|
void ServerGuiWrapper::SignalIrcServerError(int errorCode) {if (myIrccb) myIrccb->SignalIrcServerError(errorCode); }
|
||||||
|
|||||||
@@ -114,8 +114,12 @@ public:
|
|||||||
void SignalIrcConnect(const std::string &server);
|
void SignalIrcConnect(const std::string &server);
|
||||||
void SignalIrcSelfJoined(const std::string &nickName, const std::string &channel);
|
void SignalIrcSelfJoined(const std::string &nickName, const std::string &channel);
|
||||||
void SignalIrcPlayerJoined(const std::string &nickName);
|
void SignalIrcPlayerJoined(const std::string &nickName);
|
||||||
|
void SignalIrcPlayerChanged(const std::string &oldNick, const std::string &newNick);
|
||||||
|
void SignalIrcPlayerKicked(const std::string &nickName, const std::string &byWhom, const std::string &reason);
|
||||||
void SignalIrcPlayerLeft(const std::string &nickName);
|
void SignalIrcPlayerLeft(const std::string &nickName);
|
||||||
void SignalIrcChatMsg(const std::string &nickName, const std::string &msg);
|
void SignalIrcChatMsg(const std::string &nickName, const std::string &msg);
|
||||||
|
void SignalIrcError(int errorCode);
|
||||||
|
void SignalIrcServerError(int errorCode);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|||||||
@@ -36,12 +36,6 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(QWidget *parent, ConfigFile *c)
|
|||||||
connect( lineEdit_ChatInput, SIGNAL( returnPressed () ), this, SLOT( sendChatMessage() ) );
|
connect( lineEdit_ChatInput, SIGNAL( returnPressed () ), this, SLOT( sendChatMessage() ) );
|
||||||
connect( lineEdit_ChatInput, SIGNAL( textChanged (QString) ), this, SLOT( checkChatInputLength(QString) ) );
|
connect( lineEdit_ChatInput, SIGNAL( textChanged (QString) ), this, SLOT( checkChatInputLength(QString) ) );
|
||||||
|
|
||||||
connect( this, SIGNAL( signalChatConnect(QString) ), myChat, SLOT( connected (QString) ) );
|
|
||||||
connect( this, SIGNAL( signalChatSelfJoined(QString, QString) ), myChat, SLOT( selfJoined (QString, QString) ) );
|
|
||||||
connect( this, SIGNAL( signalChatPlayerJoined (QString) ), myChat, SLOT( playerJoined (QString) ) );
|
|
||||||
connect( this, SIGNAL( signalChatPlayerLeft (QString) ), myChat, SLOT( playerLeft (QString) ) );
|
|
||||||
connect( this, SIGNAL( signalChatMessage (QString, QString) ), myChat, SLOT( displayMessage (QString, QString) ) );
|
|
||||||
|
|
||||||
clearDialog();
|
clearDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,18 +40,13 @@ public:
|
|||||||
|
|
||||||
void exec();
|
void exec();
|
||||||
|
|
||||||
|
LobbyChat *getLobbyChat() { return myChat; }
|
||||||
|
|
||||||
void setSession(Session *session);
|
void setSession(Session *session);
|
||||||
Session& getSession() { return *mySession; }
|
Session& getSession() { return *mySession; }
|
||||||
|
|
||||||
void setMyW ( mainWindowImpl* theValue ) { myW = theValue; }
|
void setMyW ( mainWindowImpl* theValue ) { myW = theValue; }
|
||||||
|
|
||||||
signals:
|
|
||||||
void signalChatConnect(QString server);
|
|
||||||
void signalChatSelfJoined(QString nickName, QString channel);
|
|
||||||
void signalChatPlayerJoined(QString nickName);
|
|
||||||
void signalChatPlayerLeft(QString nickName);
|
|
||||||
void signalChatMessage(QString nickName, QString msg);
|
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
||||||
void createGame();
|
void createGame();
|
||||||
|
|||||||
@@ -18,6 +18,9 @@
|
|||||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
#include "lobbychat.h"
|
#include "lobbychat.h"
|
||||||
|
#define IN_INCLUDE_LIBIRC_H
|
||||||
|
#include <core/libircclient/include/libirc_rfcnumeric.h>
|
||||||
|
#include <net/socket_msg.h>
|
||||||
|
|
||||||
#include "gamelobbydialogimpl.h"
|
#include "gamelobbydialogimpl.h"
|
||||||
#include "session.h"
|
#include "session.h"
|
||||||
@@ -71,6 +74,29 @@ void LobbyChat::playerJoined(QString playerName)
|
|||||||
myLobby->treeWidget_NickList->sortItems(0, Qt::AscendingOrder);
|
myLobby->treeWidget_NickList->sortItems(0, Qt::AscendingOrder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LobbyChat::playerChanged(QString oldNick, QString newNick)
|
||||||
|
{
|
||||||
|
QList<QTreeWidgetItem *> tmpList(myLobby->treeWidget_NickList->findItems(oldNick, Qt::MatchExactly));
|
||||||
|
if (!tmpList.empty())
|
||||||
|
tmpList.front()->setData(0, Qt::DisplayRole, newNick);
|
||||||
|
|
||||||
|
if (myNick == oldNick)
|
||||||
|
myNick = newNick;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LobbyChat::playerKicked(QString nickName, QString byWhom, QString reason)
|
||||||
|
{
|
||||||
|
if (myNick == nickName)
|
||||||
|
{
|
||||||
|
myLobby->accept();
|
||||||
|
QMessageBox::warning(myLobby, tr("Network Notification"),
|
||||||
|
tr("You were kicked from the server."),
|
||||||
|
QMessageBox::Close);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
myLobby->textBrowser_ChatDisplay->append(nickName + " " + tr("was kicked from the server by") + " " + byWhom + " (" + reason + ")");
|
||||||
|
}
|
||||||
|
|
||||||
void LobbyChat::playerLeft(QString playerName)
|
void LobbyChat::playerLeft(QString playerName)
|
||||||
{
|
{
|
||||||
QList<QTreeWidgetItem *> tmpList(myLobby->treeWidget_NickList->findItems(playerName, Qt::MatchExactly));
|
QList<QTreeWidgetItem *> tmpList(myLobby->treeWidget_NickList->findItems(playerName, Qt::MatchExactly));
|
||||||
@@ -106,3 +132,92 @@ void LobbyChat::clearChat() {
|
|||||||
// // lineEdit_ChatInput->setCompleter(completer);
|
// // lineEdit_ChatInput->setCompleter(completer);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LobbyChat::chatError(int errorCode)
|
||||||
|
{
|
||||||
|
QString errorMsg;
|
||||||
|
switch (errorCode)
|
||||||
|
{
|
||||||
|
case ERR_IRC_INTERNAL :
|
||||||
|
case ERR_IRC_SELECT_FAILED :
|
||||||
|
case ERR_IRC_RECV_FAILED :
|
||||||
|
case ERR_IRC_SEND_FAILED :
|
||||||
|
case ERR_IRC_INVALID_PARAM :
|
||||||
|
errorMsg = tr("An internal IRC error has occured:") + " " + QString::number(errorCode);
|
||||||
|
break;
|
||||||
|
case ERR_IRC_CONNECT_FAILED :
|
||||||
|
errorMsg = tr("Could not connect to the IRC server. Chat will be unavailable.");
|
||||||
|
break;
|
||||||
|
case ERR_IRC_TERMINATED :
|
||||||
|
errorMsg = tr("The IRC server terminated the connection. Chat will be unavailable.");
|
||||||
|
break;
|
||||||
|
case ERR_IRC_TIMEOUT :
|
||||||
|
errorMsg = tr("An IRC action timed out.");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (errorMsg.size())
|
||||||
|
myLobby->textBrowser_ChatDisplay->append(errorMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LobbyChat::chatServerError(int errorCode)
|
||||||
|
{
|
||||||
|
QString errorMsg;
|
||||||
|
switch (errorCode)
|
||||||
|
{
|
||||||
|
case LIBIRC_RFC_ERR_NOSUCHNICK :
|
||||||
|
case LIBIRC_RFC_ERR_NOSUCHCHANNEL :
|
||||||
|
case LIBIRC_RFC_ERR_CANNOTSENDTOCHAN :
|
||||||
|
case LIBIRC_RFC_ERR_TOOMANYCHANNELS :
|
||||||
|
case LIBIRC_RFC_ERR_WASNOSUCHNICK :
|
||||||
|
case LIBIRC_RFC_ERR_TOOMANYTARGETS :
|
||||||
|
case LIBIRC_RFC_ERR_NOSUCHSERVICE :
|
||||||
|
case LIBIRC_RFC_ERR_NOORIGIN :
|
||||||
|
case LIBIRC_RFC_ERR_NORECIPIENT :
|
||||||
|
case LIBIRC_RFC_ERR_NOTEXTTOSEND :
|
||||||
|
case LIBIRC_RFC_ERR_NOTOPLEVEL :
|
||||||
|
case LIBIRC_RFC_ERR_WILDTOPLEVEL :
|
||||||
|
case LIBIRC_RFC_ERR_BADMASK :
|
||||||
|
case LIBIRC_RFC_ERR_UNKNOWNCOMMAND :
|
||||||
|
case LIBIRC_RFC_ERR_NOMOTD :
|
||||||
|
case LIBIRC_RFC_ERR_NOADMININFO :
|
||||||
|
case LIBIRC_RFC_ERR_FILEERROR :
|
||||||
|
case LIBIRC_RFC_ERR_NONICKNAMEGIVEN :
|
||||||
|
case LIBIRC_RFC_ERR_ERRONEUSNICKNAME :
|
||||||
|
case LIBIRC_RFC_ERR_UNAVAILRESOURCE :
|
||||||
|
case LIBIRC_RFC_ERR_USERNOTINCHANNEL :
|
||||||
|
case LIBIRC_RFC_ERR_NOTONCHANNEL :
|
||||||
|
case LIBIRC_RFC_ERR_USERONCHANNEL :
|
||||||
|
case LIBIRC_RFC_ERR_NOLOGIN :
|
||||||
|
case LIBIRC_RFC_ERR_SUMMONDISABLED :
|
||||||
|
case LIBIRC_RFC_ERR_USERSDISABLED :
|
||||||
|
case LIBIRC_RFC_ERR_NOTREGISTERED :
|
||||||
|
case LIBIRC_RFC_ERR_NEEDMOREPARAMS :
|
||||||
|
case LIBIRC_RFC_ERR_ALREADYREGISTRED :
|
||||||
|
case LIBIRC_RFC_ERR_NOPERMFORHOST :
|
||||||
|
case LIBIRC_RFC_ERR_PASSWDMISMATCH :
|
||||||
|
case LIBIRC_RFC_ERR_YOUREBANNEDCREEP :
|
||||||
|
case LIBIRC_RFC_ERR_YOUWILLBEBANNED :
|
||||||
|
case LIBIRC_RFC_ERR_KEYSET :
|
||||||
|
case LIBIRC_RFC_ERR_CHANNELISFULL :
|
||||||
|
case LIBIRC_RFC_ERR_UNKNOWNMODE :
|
||||||
|
case LIBIRC_RFC_ERR_INVITEONLYCHAN :
|
||||||
|
case LIBIRC_RFC_ERR_BANNEDFROMCHAN :
|
||||||
|
case LIBIRC_RFC_ERR_BADCHANNELKEY :
|
||||||
|
case LIBIRC_RFC_ERR_BADCHANMASK :
|
||||||
|
case LIBIRC_RFC_ERR_NOCHANMODES :
|
||||||
|
case LIBIRC_RFC_ERR_BANLISTFULL :
|
||||||
|
case LIBIRC_RFC_ERR_NOPRIVILEGES :
|
||||||
|
case LIBIRC_RFC_ERR_CHANOPRIVSNEEDED :
|
||||||
|
case LIBIRC_RFC_ERR_CANTKILLSERVER :
|
||||||
|
case LIBIRC_RFC_ERR_RESTRICTED :
|
||||||
|
case LIBIRC_RFC_ERR_UNIQOPPRIVSNEEDED :
|
||||||
|
case LIBIRC_RFC_ERR_NOOPERHOST :
|
||||||
|
case LIBIRC_RFC_ERR_UMODEUNKNOWNFLAG :
|
||||||
|
case LIBIRC_RFC_ERR_USERSDONTMATCH :
|
||||||
|
errorMsg = tr("The IRC server reported an error:") + " " + QString::number(errorCode);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// if (errorMsg.size())
|
||||||
|
// myLobby->textBrowser_ChatDisplay->append(errorMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,11 +41,16 @@ public slots:
|
|||||||
void connected(QString server);
|
void connected(QString server);
|
||||||
void selfJoined(QString ownName, QString channel);
|
void selfJoined(QString ownName, QString channel);
|
||||||
void playerJoined(QString playerName);
|
void playerJoined(QString playerName);
|
||||||
|
void playerChanged(QString oldNick, QString newNick);
|
||||||
|
void playerKicked(QString nickName, QString byWhom, QString reason);
|
||||||
void playerLeft(QString playerName);
|
void playerLeft(QString playerName);
|
||||||
void displayMessage(QString playerName, QString msg);
|
void displayMessage(QString playerName, QString msg);
|
||||||
void checkInputLength(QString);
|
void checkInputLength(QString);
|
||||||
void clearChat();
|
void clearChat();
|
||||||
|
|
||||||
|
void chatError(int errorCode);
|
||||||
|
void chatServerError(int errorCode);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
gameLobbyDialogImpl *myLobby;
|
gameLobbyDialogImpl *myLobby;
|
||||||
|
|
||||||
|
|||||||
@@ -142,7 +142,11 @@ void GuiWrapper::SignalNetServerError(int errorID, int osErrorID) { myW->signalN
|
|||||||
|
|
||||||
void GuiWrapper::SignalIrcConnect(const string &server) { myW->signalIrcConnect(QString::fromUtf8(server.c_str())); }
|
void GuiWrapper::SignalIrcConnect(const string &server) { myW->signalIrcConnect(QString::fromUtf8(server.c_str())); }
|
||||||
void GuiWrapper::SignalIrcSelfJoined(const string &nickName, const string &channel) { myW->signalIrcSelfJoined(QString::fromUtf8(nickName.c_str()), QString::fromUtf8(channel.c_str())); }
|
void GuiWrapper::SignalIrcSelfJoined(const string &nickName, const string &channel) { myW->signalIrcSelfJoined(QString::fromUtf8(nickName.c_str()), QString::fromUtf8(channel.c_str())); }
|
||||||
void GuiWrapper::SignalIrcPlayerJoined(const std::string &nickName) { myW->signalIrcPlayerJoined(QString::fromUtf8(nickName.c_str())); }
|
void GuiWrapper::SignalIrcPlayerJoined(const string &nickName) { myW->signalIrcPlayerJoined(QString::fromUtf8(nickName.c_str())); }
|
||||||
|
void GuiWrapper::SignalIrcPlayerChanged(const string &oldNick, const string &newNick) { myW->signalIrcPlayerChanged(QString::fromUtf8(oldNick.c_str()), QString::fromUtf8(newNick.c_str())); }
|
||||||
|
void GuiWrapper::SignalIrcPlayerKicked(const std::string &nickName, const std::string &byWhom, const std::string &reason) { myW->signalIrcPlayerKicked(QString::fromUtf8(nickName.c_str()), QString::fromUtf8(byWhom.c_str()), QString::fromUtf8(reason.c_str())); }
|
||||||
void GuiWrapper::SignalIrcPlayerLeft(const std::string &nickName) { myW->signalIrcPlayerLeft(QString::fromUtf8(nickName.c_str())); }
|
void GuiWrapper::SignalIrcPlayerLeft(const std::string &nickName) { myW->signalIrcPlayerLeft(QString::fromUtf8(nickName.c_str())); }
|
||||||
void GuiWrapper::SignalIrcChatMsg(const std::string &nickName, const std::string &msg) { myW->signalIrcChatMessage(QString::fromUtf8(nickName.c_str()), QString::fromUtf8(msg.c_str())); }
|
void GuiWrapper::SignalIrcChatMsg(const std::string &nickName, const std::string &msg) { myW->signalIrcChatMessage(QString::fromUtf8(nickName.c_str()), QString::fromUtf8(msg.c_str())); }
|
||||||
|
void GuiWrapper::SignalIrcError(int errorCode) { myW->signalIrcError(errorCode); }
|
||||||
|
void GuiWrapper::SignalIrcServerError(int errorCode) {myW->signalIrcServerError(errorCode); }
|
||||||
|
|
||||||
|
|||||||
@@ -122,8 +122,12 @@ public:
|
|||||||
void SignalIrcConnect(const std::string &server);
|
void SignalIrcConnect(const std::string &server);
|
||||||
void SignalIrcSelfJoined(const std::string &nickName, const std::string &channel);
|
void SignalIrcSelfJoined(const std::string &nickName, const std::string &channel);
|
||||||
void SignalIrcPlayerJoined(const std::string &nickName);
|
void SignalIrcPlayerJoined(const std::string &nickName);
|
||||||
|
void SignalIrcPlayerChanged(const std::string &oldNick, const std::string &newNick);
|
||||||
|
void SignalIrcPlayerKicked(const std::string &nickName, const std::string &byWhom, const std::string &reason);
|
||||||
void SignalIrcPlayerLeft(const std::string &nickName);
|
void SignalIrcPlayerLeft(const std::string &nickName);
|
||||||
void SignalIrcChatMsg(const std::string &nickName, const std::string &msg);
|
void SignalIrcChatMsg(const std::string &nickName, const std::string &msg);
|
||||||
|
void SignalIrcError(int errorCode);
|
||||||
|
void SignalIrcServerError(int errorCode);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
#include "changehumanplayernamedialogimpl.h"
|
#include "changehumanplayernamedialogimpl.h"
|
||||||
#include "changecompleteblindsdialogimpl.h"
|
#include "changecompleteblindsdialogimpl.h"
|
||||||
#include "gamelobbydialogimpl.h"
|
#include "gamelobbydialogimpl.h"
|
||||||
|
#include "lobbychat.h"
|
||||||
|
|
||||||
#include "startsplash.h"
|
#include "startsplash.h"
|
||||||
#include "mycardspixmaplabel.h"
|
#include "mycardspixmaplabel.h"
|
||||||
@@ -678,11 +679,15 @@ mainWindowImpl::mainWindowImpl(ConfigFile *c, QMainWindow *parent)
|
|||||||
connect(this, SIGNAL(signalNetServerError(int, int)), this, SLOT(networkError(int, int)));
|
connect(this, SIGNAL(signalNetServerError(int, int)), this, SLOT(networkError(int, int)));
|
||||||
connect(this, SIGNAL(signalNetClientGameStart(boost::shared_ptr<Game>)), this, SLOT(networkStart(boost::shared_ptr<Game>)));
|
connect(this, SIGNAL(signalNetClientGameStart(boost::shared_ptr<Game>)), this, SLOT(networkStart(boost::shared_ptr<Game>)));
|
||||||
|
|
||||||
connect(this, SIGNAL(signalIrcConnect(QString)), myGameLobbyDialog, SIGNAL(signalChatConnect(QString)));
|
connect(this, SIGNAL(signalIrcConnect(QString)), myGameLobbyDialog->getLobbyChat(), SLOT(connected(QString)));
|
||||||
connect(this, SIGNAL(signalIrcSelfJoined(QString, QString)), myGameLobbyDialog, SIGNAL(signalChatSelfJoined(QString, QString)));
|
connect(this, SIGNAL(signalIrcSelfJoined(QString, QString)), myGameLobbyDialog->getLobbyChat(), SLOT(selfJoined(QString, QString)));
|
||||||
connect(this, SIGNAL(signalIrcPlayerJoined(QString)), myGameLobbyDialog, SIGNAL(signalChatPlayerJoined(QString)));
|
connect(this, SIGNAL(signalIrcPlayerJoined(QString)), myGameLobbyDialog->getLobbyChat(), SLOT(playerJoined(QString)));
|
||||||
connect(this, SIGNAL(signalIrcPlayerLeft(QString)), myGameLobbyDialog, SIGNAL(signalChatPlayerLeft(QString)));
|
connect(this, SIGNAL(signalIrcPlayerChanged(QString, QString)), myGameLobbyDialog->getLobbyChat(), SLOT(playerChanged(QString, QString)));
|
||||||
connect(this, SIGNAL(signalIrcChatMessage(QString, QString)), myGameLobbyDialog, SIGNAL(signalChatMessage(QString, QString)));
|
connect(this, SIGNAL(signalIrcPlayerKicked(QString, QString, QString)), myGameLobbyDialog->getLobbyChat(), SLOT(playerKicked(QString, QString, QString)));
|
||||||
|
connect(this, SIGNAL(signalIrcPlayerLeft(QString)), myGameLobbyDialog->getLobbyChat(), SLOT(playerLeft(QString)));
|
||||||
|
connect(this, SIGNAL(signalIrcChatMessage(QString, QString)), myGameLobbyDialog->getLobbyChat(), SLOT(displayMessage(QString, QString)));
|
||||||
|
connect(this, SIGNAL(signalIrcError(int)), myGameLobbyDialog->getLobbyChat(), SLOT(chatError(int)));
|
||||||
|
connect(this, SIGNAL(signalIrcServerError(int)), myGameLobbyDialog->getLobbyChat(), SLOT(chatServerError(int)));
|
||||||
|
|
||||||
//Sound
|
//Sound
|
||||||
mySDLPlayer = new SDLPlayer(myConfig);
|
mySDLPlayer = new SDLPlayer(myConfig);
|
||||||
|
|||||||
@@ -142,8 +142,12 @@ signals:
|
|||||||
void signalIrcConnect(QString server);
|
void signalIrcConnect(QString server);
|
||||||
void signalIrcSelfJoined(QString nickName, QString channel);
|
void signalIrcSelfJoined(QString nickName, QString channel);
|
||||||
void signalIrcPlayerJoined(QString nickName);
|
void signalIrcPlayerJoined(QString nickName);
|
||||||
|
void signalIrcPlayerChanged(QString oldNick, QString newNick);
|
||||||
|
void signalIrcPlayerKicked(QString nickName, QString byWhom, QString reason);
|
||||||
void signalIrcPlayerLeft(QString nickName);
|
void signalIrcPlayerLeft(QString nickName);
|
||||||
void signalIrcChatMessage(QString nickName, QString msg);
|
void signalIrcChatMessage(QString nickName, QString msg);
|
||||||
|
void signalIrcError(int errorCode);
|
||||||
|
void signalIrcServerError(int errorCode);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
#include <net/ircthread.h>
|
#include <net/ircthread.h>
|
||||||
|
|
||||||
#include <net/socket_helper.h>
|
#include <net/socket_helper.h>
|
||||||
|
#include <net/socket_msg.h>
|
||||||
#include <libircclient.h>
|
#include <libircclient.h>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <cctype>
|
#include <cctype>
|
||||||
@@ -78,6 +79,13 @@ void irc_notify_player_list(irc_session_t *session, const char *players)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void irc_handle_server_error(irc_session_t *session, unsigned irc_error_code)
|
||||||
|
{
|
||||||
|
IrcContext *context = (IrcContext *) irc_get_ctx(session);
|
||||||
|
|
||||||
|
context->ircThread.GetCallback().SignalIrcServerError(irc_error_code);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
irc_event_connect(irc_session_t *session, const char *irc_event, const char *origin, const char **params, unsigned count)
|
irc_event_connect(irc_session_t *session, const char *irc_event, const char *origin, const char **params, unsigned count)
|
||||||
{
|
{
|
||||||
@@ -99,6 +107,36 @@ irc_event_join(irc_session_t *session, const char *irc_event, const char *origin
|
|||||||
context->ircThread.GetCallback().SignalIrcPlayerJoined(origin);
|
context->ircThread.GetCallback().SignalIrcPlayerJoined(origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
irc_event_nick(irc_session_t *session, const char *irc_event, const char *origin, const char **params, unsigned count)
|
||||||
|
{
|
||||||
|
// someone changed his/her nick
|
||||||
|
IrcContext *context = (IrcContext *) irc_get_ctx(session);
|
||||||
|
|
||||||
|
if (context->nick != params[0]) // only act if this was not an auto-rename
|
||||||
|
{
|
||||||
|
if (context->nick == origin)
|
||||||
|
context->nick = params[0];
|
||||||
|
context->ircThread.GetCallback().SignalIrcPlayerChanged(origin, params[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
irc_event_kick(irc_session_t *session, const char *irc_event, const char *origin, const char **params, unsigned count)
|
||||||
|
{
|
||||||
|
// someone got kicked
|
||||||
|
IrcContext *context = (IrcContext *) irc_get_ctx(session);
|
||||||
|
|
||||||
|
string byWhom(origin);
|
||||||
|
string who;
|
||||||
|
string reason;
|
||||||
|
if (count >= 2)
|
||||||
|
who = params[1];
|
||||||
|
if (count >= 3)
|
||||||
|
reason = params[2];
|
||||||
|
context->ircThread.GetCallback().SignalIrcPlayerKicked(who, byWhom, reason);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
irc_event_leave(irc_session_t *session, const char *irc_event, const char *origin, const char **params, unsigned count)
|
irc_event_leave(irc_session_t *session, const char *irc_event, const char *origin, const char **params, unsigned count)
|
||||||
{
|
{
|
||||||
@@ -136,6 +174,58 @@ irc_event_numeric(irc_session_t * session, unsigned irc_event, const char *origi
|
|||||||
if (count >= 4)
|
if (count >= 4)
|
||||||
irc_notify_player_list(session, params[3]);
|
irc_notify_player_list(session, params[3]);
|
||||||
break;
|
break;
|
||||||
|
case LIBIRC_RFC_ERR_NOSUCHNICK :
|
||||||
|
case LIBIRC_RFC_ERR_NOSUCHCHANNEL :
|
||||||
|
case LIBIRC_RFC_ERR_CANNOTSENDTOCHAN :
|
||||||
|
case LIBIRC_RFC_ERR_TOOMANYCHANNELS :
|
||||||
|
case LIBIRC_RFC_ERR_WASNOSUCHNICK :
|
||||||
|
case LIBIRC_RFC_ERR_TOOMANYTARGETS :
|
||||||
|
case LIBIRC_RFC_ERR_NOSUCHSERVICE :
|
||||||
|
case LIBIRC_RFC_ERR_NOORIGIN :
|
||||||
|
case LIBIRC_RFC_ERR_NORECIPIENT :
|
||||||
|
case LIBIRC_RFC_ERR_NOTEXTTOSEND :
|
||||||
|
case LIBIRC_RFC_ERR_NOTOPLEVEL :
|
||||||
|
case LIBIRC_RFC_ERR_WILDTOPLEVEL :
|
||||||
|
case LIBIRC_RFC_ERR_BADMASK :
|
||||||
|
case LIBIRC_RFC_ERR_UNKNOWNCOMMAND :
|
||||||
|
case LIBIRC_RFC_ERR_NOMOTD :
|
||||||
|
case LIBIRC_RFC_ERR_NOADMININFO :
|
||||||
|
case LIBIRC_RFC_ERR_FILEERROR :
|
||||||
|
case LIBIRC_RFC_ERR_NONICKNAMEGIVEN :
|
||||||
|
case LIBIRC_RFC_ERR_ERRONEUSNICKNAME :
|
||||||
|
case LIBIRC_RFC_ERR_UNAVAILRESOURCE :
|
||||||
|
case LIBIRC_RFC_ERR_USERNOTINCHANNEL :
|
||||||
|
case LIBIRC_RFC_ERR_NOTONCHANNEL :
|
||||||
|
case LIBIRC_RFC_ERR_USERONCHANNEL :
|
||||||
|
case LIBIRC_RFC_ERR_NOLOGIN :
|
||||||
|
case LIBIRC_RFC_ERR_SUMMONDISABLED :
|
||||||
|
case LIBIRC_RFC_ERR_USERSDISABLED :
|
||||||
|
case LIBIRC_RFC_ERR_NOTREGISTERED :
|
||||||
|
case LIBIRC_RFC_ERR_NEEDMOREPARAMS :
|
||||||
|
case LIBIRC_RFC_ERR_ALREADYREGISTRED :
|
||||||
|
case LIBIRC_RFC_ERR_NOPERMFORHOST :
|
||||||
|
case LIBIRC_RFC_ERR_PASSWDMISMATCH :
|
||||||
|
case LIBIRC_RFC_ERR_YOUREBANNEDCREEP :
|
||||||
|
case LIBIRC_RFC_ERR_YOUWILLBEBANNED :
|
||||||
|
case LIBIRC_RFC_ERR_KEYSET :
|
||||||
|
case LIBIRC_RFC_ERR_CHANNELISFULL :
|
||||||
|
case LIBIRC_RFC_ERR_UNKNOWNMODE :
|
||||||
|
case LIBIRC_RFC_ERR_INVITEONLYCHAN :
|
||||||
|
case LIBIRC_RFC_ERR_BANNEDFROMCHAN :
|
||||||
|
case LIBIRC_RFC_ERR_BADCHANNELKEY :
|
||||||
|
case LIBIRC_RFC_ERR_BADCHANMASK :
|
||||||
|
case LIBIRC_RFC_ERR_NOCHANMODES :
|
||||||
|
case LIBIRC_RFC_ERR_BANLISTFULL :
|
||||||
|
case LIBIRC_RFC_ERR_NOPRIVILEGES :
|
||||||
|
case LIBIRC_RFC_ERR_CHANOPRIVSNEEDED :
|
||||||
|
case LIBIRC_RFC_ERR_CANTKILLSERVER :
|
||||||
|
case LIBIRC_RFC_ERR_RESTRICTED :
|
||||||
|
case LIBIRC_RFC_ERR_UNIQOPPRIVSNEEDED :
|
||||||
|
case LIBIRC_RFC_ERR_NOOPERHOST :
|
||||||
|
case LIBIRC_RFC_ERR_UMODEUNKNOWNFLAG :
|
||||||
|
case LIBIRC_RFC_ERR_USERSDONTMATCH :
|
||||||
|
irc_handle_server_error(session, irc_event);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -147,6 +237,9 @@ IrcThread::IrcThread(IrcCallback &callback)
|
|||||||
|
|
||||||
IrcThread::~IrcThread()
|
IrcThread::~IrcThread()
|
||||||
{
|
{
|
||||||
|
IrcContext &context = GetContext();
|
||||||
|
if (context.session)
|
||||||
|
irc_destroy_session(context.session);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -168,12 +261,12 @@ IrcThread::Init(const std::string &serverAddress, unsigned serverPort, bool ipv6
|
|||||||
|
|
||||||
callbacks.event_connect = irc_event_connect;
|
callbacks.event_connect = irc_event_connect;
|
||||||
callbacks.event_join = irc_event_join;
|
callbacks.event_join = irc_event_join;
|
||||||
//callbacks.event_nick
|
callbacks.event_nick = irc_event_nick;
|
||||||
callbacks.event_quit = irc_event_leave;
|
callbacks.event_quit = irc_event_leave;
|
||||||
callbacks.event_part = irc_event_leave;
|
callbacks.event_part = irc_event_leave;
|
||||||
//callbacks.event_mode
|
//callbacks.event_mode
|
||||||
//callbacks.event_topic
|
//callbacks.event_topic
|
||||||
//callbacks.event_kick
|
callbacks.event_kick = irc_event_kick;
|
||||||
callbacks.event_channel = irc_event_channel;
|
callbacks.event_channel = irc_event_channel;
|
||||||
//callbacks.event_privmsg
|
//callbacks.event_privmsg
|
||||||
//callbacks.event_notice
|
//callbacks.event_notice
|
||||||
@@ -219,7 +312,9 @@ IrcThread::Main()
|
|||||||
irc_session_t *s = context.session;
|
irc_session_t *s = context.session;
|
||||||
if (s)
|
if (s)
|
||||||
{
|
{
|
||||||
if (irc_connect(s, context.serverAddress.c_str(), context.serverPort, 0, context.nick.c_str(), 0, 0) == 0)
|
if (irc_connect(s, context.serverAddress.c_str(), context.serverPort, 0, context.nick.c_str(), 0, 0) != 0)
|
||||||
|
HandleIrcError(irc_errno(s));
|
||||||
|
else
|
||||||
{
|
{
|
||||||
// Main loop.
|
// Main loop.
|
||||||
while (irc_is_connected(s))
|
while (irc_is_connected(s))
|
||||||
@@ -251,21 +346,52 @@ IrcThread::Main()
|
|||||||
int selectResult = select(maxfd + 1, &readSet, &writeSet, 0, &timeout);
|
int selectResult = select(maxfd + 1, &readSet, &writeSet, 0, &timeout);
|
||||||
if (!IS_VALID_SELECT(selectResult))
|
if (!IS_VALID_SELECT(selectResult))
|
||||||
{
|
{
|
||||||
//todo
|
GetCallback().SignalIrcError(ERR_IRC_SELECT_FAILED);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (irc_process_select_descriptors(s, &readSet, &writeSet) != 0)
|
if (irc_process_select_descriptors(s, &readSet, &writeSet) != 0)
|
||||||
{
|
{
|
||||||
//todo
|
HandleIrcError(irc_errno(s));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
irc_destroy_session(s);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
IrcThread::HandleIrcError(int errorCode)
|
||||||
|
{
|
||||||
|
int internalErrorCode = ERR_IRC_INTERNAL;
|
||||||
|
switch(errorCode)
|
||||||
|
{
|
||||||
|
case LIBIRC_ERR_RESOLV:
|
||||||
|
case LIBIRC_ERR_SOCKET:
|
||||||
|
case LIBIRC_ERR_CONNECT:
|
||||||
|
internalErrorCode = ERR_IRC_CONNECT_FAILED;
|
||||||
|
break;
|
||||||
|
case LIBIRC_ERR_INVAL:
|
||||||
|
case LIBIRC_ERR_STATE:
|
||||||
|
internalErrorCode = ERR_IRC_INVALID_PARAM;
|
||||||
|
break;
|
||||||
|
case LIBIRC_ERR_CLOSED:
|
||||||
|
case LIBIRC_ERR_TERMINATED:
|
||||||
|
internalErrorCode = ERR_IRC_TERMINATED;
|
||||||
|
break;
|
||||||
|
case LIBIRC_ERR_READ:
|
||||||
|
internalErrorCode = ERR_IRC_RECV_FAILED;
|
||||||
|
break;
|
||||||
|
case LIBIRC_ERR_WRITE:
|
||||||
|
internalErrorCode = ERR_IRC_SEND_FAILED;
|
||||||
|
break;
|
||||||
|
case LIBIRC_ERR_TIMEOUT:
|
||||||
|
internalErrorCode = ERR_IRC_TIMEOUT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
GetCallback().SignalIrcError(internalErrorCode);
|
||||||
|
}
|
||||||
|
|
||||||
const IrcContext &
|
const IrcContext &
|
||||||
IrcThread::GetContext() const
|
IrcThread::GetContext() const
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -31,8 +31,12 @@ public:
|
|||||||
virtual void SignalIrcConnect(const std::string &server) = 0;
|
virtual void SignalIrcConnect(const std::string &server) = 0;
|
||||||
virtual void SignalIrcSelfJoined(const std::string &nickName, const std::string &channel) = 0;
|
virtual void SignalIrcSelfJoined(const std::string &nickName, const std::string &channel) = 0;
|
||||||
virtual void SignalIrcPlayerJoined(const std::string &nickName) = 0;
|
virtual void SignalIrcPlayerJoined(const std::string &nickName) = 0;
|
||||||
|
virtual void SignalIrcPlayerChanged(const std::string &oldNick, const std::string &newNick) = 0;
|
||||||
|
virtual void SignalIrcPlayerKicked(const std::string &nickName, const std::string &byWhom, const std::string &reason) = 0;
|
||||||
virtual void SignalIrcPlayerLeft(const std::string &nickName) = 0;
|
virtual void SignalIrcPlayerLeft(const std::string &nickName) = 0;
|
||||||
virtual void SignalIrcChatMsg(const std::string &nickName, const std::string &msg) = 0;
|
virtual void SignalIrcChatMsg(const std::string &nickName, const std::string &msg) = 0;
|
||||||
|
virtual void SignalIrcError(int errorCode) = 0;
|
||||||
|
virtual void SignalIrcServerError(int errorCode) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ protected:
|
|||||||
// Main function of the thread.
|
// Main function of the thread.
|
||||||
virtual void Main();
|
virtual void Main();
|
||||||
|
|
||||||
|
void HandleIrcError(int errorCode);
|
||||||
|
|
||||||
const IrcContext &GetContext() const;
|
const IrcContext &GetContext() const;
|
||||||
IrcContext &GetContext();
|
IrcContext &GetContext();
|
||||||
|
|
||||||
|
|||||||
@@ -58,6 +58,15 @@
|
|||||||
#define ERR_NET_PLAYER_KICKED 114
|
#define ERR_NET_PLAYER_KICKED 114
|
||||||
#define ERR_NET_INVALID_PLAYER_COUNT 115
|
#define ERR_NET_INVALID_PLAYER_COUNT 115
|
||||||
|
|
||||||
|
#define ERR_IRC_INTERNAL 151
|
||||||
|
#define ERR_IRC_CONNECT_FAILED 152
|
||||||
|
#define ERR_IRC_TERMINATED 153
|
||||||
|
#define ERR_IRC_SELECT_FAILED 154
|
||||||
|
#define ERR_IRC_RECV_FAILED 155
|
||||||
|
#define ERR_IRC_SEND_FAILED 156
|
||||||
|
#define ERR_IRC_INVALID_PARAM 157
|
||||||
|
#define ERR_IRC_TIMEOUT 158
|
||||||
|
|
||||||
// Notifications - removed from game
|
// Notifications - removed from game
|
||||||
#define NTF_NET_INTERNAL 201
|
#define NTF_NET_INTERNAL 201
|
||||||
#define NTF_NET_REMOVED_ON_REQUEST 202
|
#define NTF_NET_REMOVED_ON_REQUEST 202
|
||||||
|
|||||||
Reference in New Issue
Block a user