From 9cbc1db9c20aba934c2184cb3496aec854e19dbc Mon Sep 17 00:00:00 2001 From: Markus Mittendrein Date: Fri, 30 Oct 2015 15:24:53 +0100 Subject: Use communi's automatic reconnecting for IRC and join channels in connected()-slot --- src/crsm.cpp | 31 ++++++++++++------------------- src/crsm.hpp | 2 +- 2 files changed, 13 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/crsm.cpp b/src/crsm.cpp index c1fa131..ec1bf46 100644 --- a/src/crsm.cpp +++ b/src/crsm.cpp @@ -507,16 +507,20 @@ void CRSM::ircMessageReceived(IrcMessage *message) } } -void CRSM::ircDisconnected() +void CRSM::ircConnected() { - if(connection != nullptr) + IrcConnection* conn = (IrcConnection*)sender(); + Q_ASSERT(conn == connection); + connection->sendCommand(IrcCommand::createMode(Config.IRC.Nick, "+B")); + connection->sendCommand(IrcCommand::createJoin(Config.IRC.Channel)); + if(Config.IRC.UseIngameChat && !Config.IRC.IngameChannel.isEmpty()) { - delete connection; + connection->sendCommand(IrcCommand::createJoin(Config.IRC.IngameChannel)); + ircSetIngameChannelTopic(); } - connection = nullptr; - if(!finish && Config.IRC.Use) + else { - QTimer::singleShot(Config.IRC.ReconnectDelay * 1000, this, SLOT(reconnectIrc())); + Session.IRC.UseIngameChat = Config.IRC.UseIngameChat = false; } } @@ -1557,21 +1561,10 @@ void CRSM::prepareAndConnectIrc() connection->setNickName(Config.IRC.Nick); connection->setRealName(Config.IRC.RealName); connection->setReconnectDelay(Config.IRC.ReconnectDelay); - connection->sendCommand(IrcCommand::createMode(Config.IRC.Nick, "+B")); - connection->sendCommand(IrcCommand::createJoin(Config.IRC.Channel)); - if(Config.IRC.UseIngameChat && !Config.IRC.IngameChannel.isEmpty()) - { - connection->sendCommand(IrcCommand::createJoin(Config.IRC.IngameChannel)); - ircSetIngameChannelTopic(); - } - else - { - Session.IRC.UseIngameChat = Config.IRC.UseIngameChat = false; - } - connection->setPassword(Config.IRC.Password); + connect(connection, SIGNAL(messageReceived(IrcMessage*)), this, SLOT(ircMessageReceived(IrcMessage*))); - connect(connection, SIGNAL(disconnected()), this, SLOT(ircDisconnected())); + connect(connection, SIGNAL(connected()), this, SLOT(ircConnected())); connection->open(); } diff --git a/src/crsm.hpp b/src/crsm.hpp index 18a3b7c..0466245 100644 --- a/src/crsm.hpp +++ b/src/crsm.hpp @@ -128,7 +128,7 @@ private slots: void nextScen(); void scenarioFinished(); void ircMessageReceived(IrcMessage* message); - void ircDisconnected(); + void ircConnected(); void greet(QString pcName); void newManagementConnection(); -- cgit v1.2.3-54-g00ecf