+ // IRCv3 capability negotiation (can be connected to signals)
+
+ /**
+ * Marks a capability as accepted, providing an optional value.
+ *
+ * Removes it from queue of pending capabilities and triggers any capability-specific
+ * activation.
+ *
+ * @param[in] capability Name of the capability
+ * @param[in] value
+ * @parblock
+ * Optional value of the capability, e.g. sasl=plain. If left empty, will be copied from the
+ * pending capability.
+ * @endparblock
+ */
+ void addCap(const QString &capability, const QString &value = QString());
+
+ /**
+ * Marks a capability as denied.
+ *
+ * Removes it from the queue of pending capabilities and triggers any capability-specific
+ * deactivation.
+ *
+ * @param[in] capability Name of the capability
+ */
+ void removeCap(const QString &capability);
+
+ /**
+ * Queues a capability as available but not yet accepted or denied.
+ *
+ * Capabilities should be queued when registration pauses for CAP LS for capabilities are only
+ * requested during login.
+ *
+ * @param[in] capability Name of the capability
+ * @param[in] value Optional value of the capability, e.g. sasl=plain
+ */
+ void queuePendingCap(const QString &capability, const QString &value = QString());
+
+ void setAutoWhoEnabled(bool enabled);
+ void setAutoWhoInterval(int interval);
+ void setAutoWhoDelay(int delay);
+
+ bool setAutoWhoDone(const QString &channel);
+
+ void updateIssuedModes(const QString &requestedModes);
+ void updatePersistentModes(QString addModes, QString removeModes);
+ void resetPersistentModes();
+
+ Server usedServer() const;
+
+ inline void resetPingTimeout() { _pingCount = 0; }
+
+ inline void displayMsg(Message::Type msgType, BufferInfo::Type bufferType, const QString &target, const QString &text, const QString &sender = "", Message::Flags flags = Message::None)
+ {
+ emit displayMsg(networkId(), msgType, bufferType, target, text, sender, flags);
+ }