/***************************************************************************
- * Copyright (C) 2005-2016 by the Quassel Project *
+ * Copyright (C) 2005-2018 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
//Network::ConnectionState connectionState() const;
inline int connectionState() const { return _connectionState; }
+ /**@{*/
+ /**
+ * Translates a user’s prefix to the channelmode associated with it.
+ * @param prefix Prefix to be translated.
+ */
QString prefixToMode(const QString &prefix) const;
inline QString prefixToMode(const QCharRef &prefix) const { return prefixToMode(QString(prefix)); }
+ inline QString prefixesToModes(const QString &prefix) const {
+ QString modes;
+ for (QChar c : prefix) {
+ modes += prefixToMode(c);
+ }
+ return modes;
+ }
+ /**@}*/
+
+ /**@{*/
+ /**
+ * Translates a user’s prefix to the channelmode associated with it.
+ * @param prefix Prefix to be translated.
+ */
QString modeToPrefix(const QString &mode) const;
inline QString modeToPrefix(const QCharRef &mode) const { return modeToPrefix(QString(mode)); }
+ inline QString modesToPrefixes(const QString &mode) const {
+ QString prefixes;
+ for (QChar c : mode) {
+ prefixes += modeToPrefix(c);
+ }
+ return prefixes;
+ }
+ /**@}*/
+
+ /**
+ * Sorts the user channelmodes according to priority set by PREFIX
+ *
+ * Given a list of channel modes, sorts according to the order of PREFIX, putting the highest
+ * modes first. Any unknown modes are moved to the end in no given order.
+ *
+ * If prefix modes cannot be determined from the network, no changes will be made.
+ *
+ * @param modes User channelmodes
+ * @return Priority-sorted user channelmodes
+ */
+ QString sortPrefixModes(const QString &modes) const;
+
+ /**@{*/
+ /**
+ * Sorts the list of users' channelmodes according to priority set by PREFIX
+ *
+ * Maintains order of the modes list.
+ *
+ * @seealso Network::sortPrefixModes()
+ *
+ * @param modesList List of users' channel modes
+ * @return Priority-sorted list of users' channel modes
+ */
+ inline QStringList sortPrefixModes(const QStringList &modesList) const {
+ QStringList sortedModesList;
+ // Sort each individual mode string, appending back
+ // Must maintain the order received!
+ for (QString modes : modesList) {
+ sortedModesList << sortPrefixModes(modes);
+ }
+ return sortedModesList;
+ }
+ /**@}*/
ChannelModeType channelModeType(const QString &mode);
inline ChannelModeType channelModeType(const QCharRef &mode) { return channelModeType(QString(mode)); }
*
* These results aren't valid if the network is disconnected or capability negotiation hasn't
* happened, and some servers might not correctly advertise capabilities. Don't treat this as
- * a guarentee.
+ * a guarantee.
*
* @param[in] capability Name of capability
* @returns True if connected and advertised by the server, otherwise false