23 #include "ircuserprefix.h" 33 IRCModePrefix(
char mode,
char prefix)
36 this->prefix = prefix;
44 QList<IRCModePrefix> map;
58 IRCUserPrefix::~IRCUserPrefix()
68 void IRCUserPrefix::assignPrefix(
char mode,
char prefix)
70 d->map << IRCModePrefix(mode, prefix);
73 QString IRCUserPrefix::cleanNickname(
const QString &nickname)
const 75 if (!nickname.isEmpty())
77 if (hasPrefix(nickname[0].toLatin1()))
79 return nickname.mid(1);
85 int IRCUserPrefix::compare(
char mode1,
char mode2)
const 91 foreach (
const IRCModePrefix &candidate, d->map)
93 if (candidate.mode == mode1)
97 else if (candidate.mode == mode2)
106 bool IRCUserPrefix::hasMode(
char mode)
const 108 return prefixForMode(mode) != 0;
111 bool IRCUserPrefix::hasPrefix(
char prefix)
const 113 return modeForPrefix(prefix) != 0;
119 obj.assignPrefix(
'o',
'@');
120 obj.assignPrefix(
'h',
'%');
121 obj.assignPrefix(
'v',
'+');
125 char IRCUserPrefix::modeFromNickname(
const QString &nickname)
const 127 if (!nickname.isEmpty())
129 if (hasPrefix(nickname[0].toLatin1()))
131 return modeForPrefix(nickname[0].toLatin1());
137 char IRCUserPrefix::modeForPrefix(
char prefix)
const 139 foreach (
const IRCModePrefix &candidate, d->map)
141 if (candidate.prefix == prefix)
143 return candidate.mode;
149 char IRCUserPrefix::prefixForMode(
char mode)
const 151 foreach (
const IRCModePrefix &candidate, d->map)
153 if (candidate.mode == mode)
155 return candidate.prefix;
164 foreach (
char candidate, candidates)
166 if (compare(highest, candidate) > 0)
char topMostMode(const QList< char > &candidates) const
Out of list of possible modes picks mode with highest priority.
static IRCUserPrefix mkDefault()
User modes: op, half-op and voice.
One-to-one association of visible prefixes to user mode.