Show away users when joining the room. This is not finished yet, polling has to be implemented to refresh the list of away users
This commit is contained in:
parent
75ad2ddfc5
commit
4eeeb84652
2 changed files with 17 additions and 35 deletions
|
@ -48,6 +48,8 @@ void MyIrcSession::on_connected() {
|
|||
}
|
||||
}
|
||||
|
||||
sendCommand(IrcCommand::createCapability("REQ", QStringList("away-notify")));
|
||||
|
||||
for(AutoJoinMap::iterator it = m_autoJoin.begin(); it != m_autoJoin.end(); it++) {
|
||||
sendCommand(IrcCommand::createJoin(FROM_UTF8(it->second->getChannel()), FROM_UTF8(it->second->getPassword())));
|
||||
}
|
||||
|
@ -86,8 +88,8 @@ void MyIrcSession::on_joined(IrcMessage *message) {
|
|||
bool flags = 0;
|
||||
std::string nickname = TO_UTF8(m->sender().name());
|
||||
flags = correctNickname(nickname);
|
||||
np->handleParticipantChanged(user, nickname, TO_UTF8(m->channel()), (int) flags, pbnetwork::STATUS_ONLINE);
|
||||
LOG4CXX_INFO(logger, user << ": Joined " << TO_UTF8(m->parameters()[0]));
|
||||
np->handleParticipantChanged(user, nickname, TO_UTF8(m->channel()) + suffix, (int) flags, pbnetwork::STATUS_ONLINE);
|
||||
LOG4CXX_INFO(logger, user << ": " << nickname << " joined " << TO_UTF8(m->channel()) + suffix);
|
||||
}
|
||||
|
||||
|
||||
|
@ -193,6 +195,8 @@ void MyIrcSession::on_numericMessageReceived(IrcMessage *message) {
|
|||
|
||||
IrcNumericMessage *m = (IrcNumericMessage *) message;
|
||||
switch (m->code()) {
|
||||
case 301:
|
||||
break;
|
||||
case 332:
|
||||
m_topicData = TO_UTF8(m->parameters().value(2));
|
||||
break;
|
||||
|
@ -206,6 +210,13 @@ void MyIrcSession::on_numericMessageReceived(IrcMessage *message) {
|
|||
}
|
||||
np->handleSubject(user, TO_UTF8(m->parameters().value(1)) + suffix, m_topicData, nick);
|
||||
break;
|
||||
case 352:
|
||||
channel = m->parameters().value(1);
|
||||
nick = TO_UTF8(m->parameters().value(5));
|
||||
if (m->parameters().value(6).toUpper().startsWith("G")) {
|
||||
np->handleParticipantChanged(user, nick, TO_UTF8(channel) + suffix, m_modes[TO_UTF8(channel) + nick], pbnetwork::STATUS_AWAY);
|
||||
}
|
||||
break;
|
||||
case 353:
|
||||
channel = m->parameters().value(2);
|
||||
members = m->parameters().value(3).split(" ");
|
||||
|
@ -218,6 +229,9 @@ void MyIrcSession::on_numericMessageReceived(IrcMessage *message) {
|
|||
m_modes[TO_UTF8(channel) + nickname] = flags;
|
||||
np->handleParticipantChanged(user, nickname, TO_UTF8(channel) + suffix,(int) flags, pbnetwork::STATUS_ONLINE);
|
||||
}
|
||||
|
||||
// ask /who to get away states
|
||||
sendCommand(IrcCommand::createWho(channel));
|
||||
break;
|
||||
case 432:
|
||||
np->handleDisconnected(user, pbnetwork::CONNECTION_ERROR_INVALID_USERNAME, "Erroneous Nickname");
|
||||
|
|
|
@ -41,6 +41,7 @@ public:
|
|||
|
||||
MyIrcSession(const std::string &user, IRCNetworkPlugin *np, const std::string &suffix = "", QObject* parent = 0);
|
||||
std::map<std::string, bool> m_modes;
|
||||
std::map<std::string, bool> m_away;
|
||||
std::string suffix;
|
||||
int rooms;
|
||||
|
||||
|
@ -89,37 +90,4 @@ protected:
|
|||
std::list<std::string> m_names;
|
||||
};
|
||||
|
||||
//class MyIrcBuffer : public Irc::Buffer
|
||||
//{
|
||||
// Q_OBJECT
|
||||
|
||||
//public:
|
||||
// MyIrcBuffer(const QString& receiver, const std::string &user, NetworkPlugin *np, const std::string &suffix, Irc::Session* parent);
|
||||
// NetworkPlugin *np;
|
||||
// std::string user;
|
||||
// MyIrcSession *p;
|
||||
// std::string m_topicData;
|
||||
// std::string suffix;
|
||||
|
||||
//protected Q_SLOTS:
|
||||
// void on_receiverChanged(const QString& receiver);
|
||||
// void on_joined(const QString& origin);
|
||||
// void on_parted(const QString& origin, const QString& message);
|
||||
// void on_quit(const QString& origin, const QString& message);
|
||||
// void on_nickChanged(const QString& origin, const QString& nick);
|
||||
// void on_modeChanged(const QString& origin, const QString& mode, const QString& args);
|
||||
// void on_topicChanged(const QString& origin, const QString& topic);
|
||||
// void on_invited(const QString& origin, const QString& receiver, const QString& channel);
|
||||
// void on_kicked(const QString& origin, const QString& nick, const QString& message);
|
||||
// void on_messageReceived(const QString& origin, const QString& message, Irc::Buffer::MessageFlags flags);
|
||||
// void on_noticeReceived(const QString& origin, const QString& notice, Irc::Buffer::MessageFlags flags);
|
||||
// void on_ctcpRequestReceived(const QString& origin, const QString& request, Irc::Buffer::MessageFlags flags);
|
||||
// void on_ctcpReplyReceived(const QString& origin, const QString& reply, Irc::Buffer::MessageFlags flags);
|
||||
// void on_ctcpActionReceived(const QString& origin, const QString& action, Irc::Buffer::MessageFlags flags);
|
||||
// void on_numericMessageReceived(const QString& origin, uint code, const QStringList& params);
|
||||
// void on_unknownMessageReceived(const QString& origin, const QStringList& params);
|
||||
|
||||
// bool correctNickname(std::string &nickname);
|
||||
//};
|
||||
|
||||
#endif // SESSION_H
|
||||
|
|
Loading…
Add table
Reference in a new issue