From 326a0d0783c8ecffb6a7bae02fd74f66bd4242fa Mon Sep 17 00:00:00 2001 From: Johannes Huber Date: Fri, 7 May 2010 13:43:38 +0200 Subject: [PATCH] handle incoming invite, fixes #961 --- data/stylesheets/default.qss | 1 + src/common/message.h | 1 + src/core/ircserverhandler.cpp | 15 +++++++++++++++ src/core/ircserverhandler.h | 1 + src/qtui/qtuistyle.cpp | 1 + src/uisupport/qssparser.cpp | 2 ++ src/uisupport/uistyle.cpp | 7 +++++++ src/uisupport/uistyle.h | 1 + 8 files changed, 29 insertions(+) diff --git a/data/stylesheets/default.qss b/data/stylesheets/default.qss index cebcfb49..792442c9 100644 --- a/data/stylesheets/default.qss +++ b/data/stylesheets/default.qss @@ -91,6 +91,7 @@ ChatLine#daychange { foreground: #916409; } ChatLine#topic { foreground: #960096; } ChatLine#netsplit-join { foreground: #960096; } ChatLine#netsplit-quit { foreground: #960096; } +ChatLine#invite { foreground: #916409; } // BufferView Colors ChatListItem[state="inactive"] { foreground: #a0a0a4; } diff --git a/src/common/message.h b/src/common/message.h index 938bf434..96ac10ea 100644 --- a/src/common/message.h +++ b/src/common/message.h @@ -50,6 +50,7 @@ public: Topic = 0x04000, NetsplitJoin = 0x08000, NetsplitQuit = 0x10000, + Invite = 0x20000, }; // DO NOT CHANGE without knowing what you do, some of these flags are stored in the database diff --git a/src/core/ircserverhandler.cpp b/src/core/ircserverhandler.cpp index 534229c0..033d6c8d 100644 --- a/src/core/ircserverhandler.cpp +++ b/src/core/ircserverhandler.cpp @@ -197,6 +197,21 @@ void IrcServerHandler::defaultHandler(QString cmd, const QString &prefix, const //******************************/ // IRC SERVER HANDLER //******************************/ +void IrcServerHandler::handleInvite(const QString &prefix, const QList ¶ms) { + if(!checkParamCount("IrcServerHandler::handleInvite()", params, 2)) + return; +// qDebug() << "IrcServerHandler::handleInvite()" << prefix << params; + + IrcUser *ircuser = network()->updateNickFromMask(prefix); + if(!ircuser) { + return; + } + + QString channel = serverDecode(params[1]); + + emit displayMsg(Message::Invite, BufferInfo::StatusBuffer, "", tr("%1 invited you to channel %2").arg(ircuser->nick()).arg(channel)); +} + void IrcServerHandler::handleJoin(const QString &prefix, const QList ¶ms) { if(!checkParamCount("IrcServerHandler::handleJoin()", params, 1)) return; diff --git a/src/core/ircserverhandler.h b/src/core/ircserverhandler.h index df5fcbec..652c808e 100644 --- a/src/core/ircserverhandler.h +++ b/src/core/ircserverhandler.h @@ -34,6 +34,7 @@ public: void handleServerMsg(QByteArray rawMsg); public slots: + void handleInvite(const QString &prefix, const QList ¶ms); void handleJoin(const QString &prefix, const QList ¶ms); void handleKick(const QString &prefix, const QList ¶ms); void handleMode(const QString &prefix, const QList ¶ms); diff --git a/src/qtui/qtuistyle.cpp b/src/qtui/qtuistyle.cpp index 2fa8aeba..cc5fa262 100644 --- a/src/qtui/qtuistyle.cpp +++ b/src/qtui/qtuistyle.cpp @@ -85,6 +85,7 @@ void QtUiStyle::generateSettingsQss() const { << msgTypeQss("topic", "CommandMsg", s) << msgTypeQss("netsplit-join", "CommandMsg", s) << msgTypeQss("netsplit-quit", "CommandMsg", s) + << msgTypeQss("invite", "CommandMsg", s) << "\n"; } diff --git a/src/uisupport/qssparser.cpp b/src/uisupport/qssparser.cpp index 06e4db2d..f6927e42 100644 --- a/src/uisupport/qssparser.cpp +++ b/src/uisupport/qssparser.cpp @@ -230,6 +230,8 @@ quint64 QssParser::parseFormatType(const QString &decl) { fmtType |= UiStyle::NetsplitJoinMsg; else if(msgType == "netsplit-quit") fmtType |= UiStyle::NetsplitQuitMsg; + else if(msgType == "invite") + fmtType |= UiStyle::InviteMsg; else { qWarning() << Q_FUNC_INFO << tr("Invalid message type in %1").arg(decl); } diff --git a/src/uisupport/uistyle.cpp b/src/uisupport/uistyle.cpp index 3739fe97..b08134b1 100644 --- a/src/uisupport/uistyle.cpp +++ b/src/uisupport/uistyle.cpp @@ -406,6 +406,8 @@ UiStyle::FormatType UiStyle::formatType(Message::Type msgType) { return NetsplitJoinMsg; case Message::NetsplitQuit: return NetsplitQuitMsg; + case Message::Invite: + return InviteMsg; } //Q_ASSERT(false); // we need to handle all message types qWarning() << Q_FUNC_INFO << "Unknown message type:" << msgType; @@ -658,6 +660,9 @@ void UiStyle::StyledMessage::style() const { t.append(tr("%DN%1%DN (%2 more)").arg(static_cast(users.mid(0, maxNetsplitNicks)).join(", ")).arg(users.count() - maxNetsplitNicks)); } break; + case Message::Invite: + //: Invite Message + t = tr("%1").arg(txt); break; default: t = tr("[%1]").arg(txt); } @@ -728,6 +733,8 @@ QString UiStyle::StyledMessage::decoratedSender() const { return tr("=>"); break; case Message::NetsplitQuit: return tr("<="); break; + case Message::Invite: + return tr("->"); break; default: return tr("%1").arg(plainSender()); } diff --git a/src/uisupport/uistyle.h b/src/uisupport/uistyle.h index dcda30a8..db82c1aa 100644 --- a/src/uisupport/uistyle.h +++ b/src/uisupport/uistyle.h @@ -72,6 +72,7 @@ public: TopicMsg = 0x0000000f, NetsplitJoinMsg = 0x00000010, NetsplitQuitMsg = 0x00000020, + InviteMsg = 0x00000030, // Standard Formats Bold = 0x00000100, -- 2.20.1