+void CoreUserInputHandler::handleDelkey(const BufferInfo &bufferInfo, const QString &msg) {
+ #ifdef HAVE_QCA2
+ if (!bufferInfo.isValid())
+ return;
+
+ QStringList parms = msg.split(' ', QString::SkipEmptyParts);
+
+ if(parms.isEmpty() && !bufferInfo.bufferName().isEmpty())
+ parms.prepend(bufferInfo.bufferName());
+
+ if(parms.isEmpty()) {
+ QString message = tr("[usage] /delkey <nick|channel> deletes the encryption key for nick or channel or just /delkey when in a channel or query.");
+
+ if(bufferInfo.bufferName().isEmpty())
+ emit displayMsg(Message::Info, BufferInfo::StatusBuffer, "", message);
+ else
+ emit displayMsg(Message::Info, bufferInfo.bufferName(), message);
+ return;
+ }
+
+ if(network()->bufferKey(parms[0]).isEmpty()) {
+ QString message = tr("No key has been set for %1.").arg(parms[0]);
+
+ if(bufferInfo.bufferName().isEmpty())
+ emit displayMsg(Message::Info, BufferInfo::StatusBuffer, "", message);
+ else
+ emit displayMsg(Message::Info, bufferInfo.bufferName(), message);
+ return;
+ }
+
+ network()->setBufferKey(parms[0], "");
+
+ if(network()->isChannelName(parms[0]) && network()->channels().contains(parms[0])) {
+ network()->ircChannel(parms[0])->setEncrypted(false);
+ }
+ else if(network()->nicks().contains(parms[0])) {
+ network()->ircUser(parms[0])->setEncrypted(false);
+ }
+
+ QString message = tr("The key for %1 has been deleted.").arg(parms[0]);
+
+ if(bufferInfo.bufferName().isEmpty())
+ emit displayMsg(Message::Info, BufferInfo::StatusBuffer, "", message);
+ else
+ emit displayMsg(Message::Info, bufferInfo.bufferName(), message);
+
+ #else
+ emit displayMsg(Message::Error, BufferInfo::StatusBuffer, "", tr("Error: Setting an encryption key requires Quassel to have been built "
+ "with support for the Qt Cryptographic Architecture (QCA) library. "
+ "Contact your distributor about a Quassel package with QCA "
+ "support, or rebuild Quassel with QCA present."));
+ #endif
+}
+