- QString m = "-"; for (int i = 0; i < nicks.count(); i++) m += 'v';
- QStringList params;
- params << bufferInfo.bufferName() << m << nicks;
- emit putCmd("MODE", serverEncode(params));
+ doMode(bufferInfo, '-', 'v', nicks);
+}
+
+void CoreUserInputHandler::handleHalfop(const BufferInfo &bufferInfo, const QString &msg)
+{
+ QStringList nicks = msg.split(' ', QString::SkipEmptyParts);
+ doMode(bufferInfo, '+', 'h', nicks);
+}
+
+void CoreUserInputHandler::handleOp(const BufferInfo &bufferInfo, const QString &msg) {
+ QStringList nicks;
+ if (msg == "*") {
+ const QList<IrcUser*> users = network()->ircChannel(bufferInfo.bufferName())->ircUsers();
+ foreach(IrcUser *user, users) {
+ if (!network()->ircChannel(bufferInfo.bufferName())->userModes(user).contains("o"))
+ nicks.append(user->nick());
+ }
+ } else {
+ nicks = msg.split(' ', QString::SkipEmptyParts);
+ }
+ doMode(bufferInfo, '+', 'o', nicks);