X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcommon%2Fnetwork.h;h=eaa427c34a38c6e59581f14c0af254ca0352c48f;hb=1e40fc6bc04df8f658f677ca5be4c970f150dc10;hp=8a810216bfa2a2a4b70801669e45861e435e5780;hpb=13a1c223286e5cc174177810d30298cf843f0973;p=quassel.git diff --git a/src/common/network.h b/src/common/network.h index 8a810216..eaa427c3 100644 --- a/src/common/network.h +++ b/src/common/network.h @@ -1,5 +1,5 @@ /*************************************************************************** - * 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 * @@ -204,6 +204,41 @@ public : } /**@}*/ + /** + * 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)); } @@ -295,7 +330,7 @@ public : * * 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 @@ -723,44 +758,42 @@ private: //! Stores all editable information about a network (as opposed to runtime state). -struct NetworkInfo { - // set some default values, note that this does not initialize e.g. name and id - NetworkInfo(); - - NetworkId networkId; +struct NetworkInfo +{ QString networkName; - IdentityId identity; - - bool useCustomEncodings; // not used! - QByteArray codecForServer; - QByteArray codecForEncoding; - QByteArray codecForDecoding; Network::ServerList serverList; - bool useRandomServer; - QStringList perform; - bool useAutoIdentify; - QString autoIdentifyService; + QString autoIdentifyService{"NickServ"}; QString autoIdentifyPassword; - bool useSasl; QString saslAccount; QString saslPassword; - bool useAutoReconnect; - quint32 autoReconnectInterval; - quint16 autoReconnectRetries; - bool unlimitedReconnectRetries; - bool rejoinChannels; + QByteArray codecForServer; + QByteArray codecForEncoding; + QByteArray codecForDecoding; - // Custom rate limiting - bool useCustomMessageRate; /// If true, use custom rate limits, otherwise use defaults - quint32 messageRateBurstSize; /// Maximum number of messages to send without any delays - quint32 messageRateDelay; /// Delay in ms. for messages when max. burst messages sent - bool unlimitedMessageRate; /// If true, disable rate limiting, otherwise apply limits + NetworkId networkId {0}; + IdentityId identity {1}; + + quint32 messageRateBurstSize {5}; ///< Maximum number of messages to send without any delays + quint32 messageRateDelay {2200}; ///< Delay in ms. for messages when max. burst messages sent + + quint32 autoReconnectInterval {60}; + quint16 autoReconnectRetries {20}; + + bool rejoinChannels {true}; + bool useRandomServer {false}; + bool useAutoIdentify {false}; + bool useSasl {false}; + bool useAutoReconnect {true}; + bool unlimitedReconnectRetries {false}; + bool useCustomMessageRate {false}; ///< If true, use custom rate limits, otherwise use defaults + bool unlimitedMessageRate {false}; ///< If true, disable rate limiting, otherwise apply limits +public: bool operator==(const NetworkInfo &other) const; bool operator!=(const NetworkInfo &other) const; };