23 #include "irc/configuration/ircconfig.h"
24 #include "irc/ircglobal.h"
25 #include "irc/ircmessageclass.h"
26 #include "irc/ircnetworkadapter.h"
27 #include "irc/ircuserinfo.h"
28 #include "irc/ircuserlist.h"
29 #include "ircchanneladapter.h"
31 IRCChannelAdapter::IRCChannelAdapter(
IRCNetworkAdapter *pNetwork,
const QString &recipient)
37 IRCChannelAdapter::~IRCChannelAdapter()
39 if (this->pNetwork !=
nullptr)
40 sendMessage(
"/part " + this->recipientName +
" " + gIRCConfig.personal.quitMessage);
47 const QString &myNickname = pNetwork->myNickname();
62 for (
const QString &name : names)
70 pNetwork->
banUser(nickname, reason, this->recipientName);
75 emit nameListUpdated(*users);
83 QString actualSenderName = sender;
84 if (pUserInfo !=
nullptr)
89 const QString &myNickname = pNetwork->myNickname();
90 if (content.contains(myNickname, Qt::CaseInsensitive)
91 && sender.compare(myNickname, Qt::CaseInsensitive) != 0)
99 bool IRCChannelAdapter::hasUser(
const QString &nickname)
101 return users->hasUser(nickname);
107 if (pUser !=
nullptr)
108 return pUser->isOp();
115 if (hasUser(nickname))
118 this->sendMessage(QString(
"/kick %1 %2 %3").arg(this->recipientName, cleanNickname, reason));
127 emit error(QString(R
"(Attempted to remove name "%1" from the "%2" channel's name list but no such name is on the list.)").arg(name, this->recipientName));
129 emit nameRemoved(user);
134 pNetwork->
setChannelMode(this->recipientName, nickname,
"h", bSet);
139 pNetwork->
setChannelMode(this->recipientName, nickname,
"o", bSet);
144 pNetwork->
setChannelMode(this->recipientName, nickname,
"v", bSet);
149 if (hasUser(oldNickname))
154 emit nameRemoved(oldName);
155 emit nameAdded(users->
userCopy(newNickname));
157 emit messageWithClass(tr(
"%1 is now known as %2").arg(oldNickname, newNickname),
158 IRCMessageClass::ChannelAction);
166 emit messageWithClass(tr(
"User %1 [%2] has joined the channel.").arg(nickname, fullSignature),
167 IRCMessageClass::ChannelAction);
172 if (!hasUser(nickname))
182 case IRCChatAdapter::ChannelPart:
183 emit messageWithClass(tr(
"User %1 has left the channel. (PART: %2)").arg(nickname, farewellMessage),
184 IRCMessageClass::ChannelAction);
187 case IRCChatAdapter::NetworkKill:
188 emit messageWithClass(tr(
"Connection for user %1 has been killed. (KILL: %2)").arg(nickname, farewellMessage),
189 IRCMessageClass::NetworkAction);
192 case IRCChatAdapter::NetworkQuit:
193 emit messageWithClass(tr(
"User %1 has quit the network. (QUIT: %2)").arg(nickname, farewellMessage),
194 IRCMessageClass::NetworkAction);
198 emit error(tr(
"Unknown quit type from user %1.").arg(nickname));
204 const QList<char> &addedFlags,
const QList<char> &removedFlags)
206 const IRCUserInfo *pUserInfo = this->users->user(nickname);
207 if (pUserInfo !=
nullptr)
210 for (
char mode : addedFlags)
212 newUserInfo.setMode(mode);
214 for (
char mode : removedFlags)
216 newUserInfo.unsetMode(mode);
219 this->users->setUserModes(nickname, newUserInfo.modes());
220 emit nameUpdated(newUserInfo);