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()))
78 return nickname.mid(1);
83 int IRCUserPrefix::compare(
char mode1,
char mode2)
const
87 for (
const IRCModePrefix &candidate : d->map)
89 if (candidate.mode == mode1)
91 else if (candidate.mode == mode2)
98 bool IRCUserPrefix::hasMode(
char mode)
const
100 return prefixForMode(mode) != 0;
103 bool IRCUserPrefix::hasPrefix(
char prefix)
const
105 return modeForPrefix(prefix) != 0;
111 obj.assignPrefix(
'o',
'@');
112 obj.assignPrefix(
'h',
'%');
113 obj.assignPrefix(
'v',
'+');
117 char IRCUserPrefix::modeFromNickname(
const QString &nickname)
const
119 if (!nickname.isEmpty())
121 if (hasPrefix(nickname[0].toLatin1()))
122 return modeForPrefix(nickname[0].toLatin1());
127 char IRCUserPrefix::modeForPrefix(
char prefix)
const
129 for (
const IRCModePrefix &candidate : d->map)
131 if (candidate.prefix == prefix)
132 return candidate.mode;
137 char IRCUserPrefix::prefixForMode(
char mode)
const
139 for (
const IRCModePrefix &candidate : d->map)
141 if (candidate.mode == mode)
142 return candidate.prefix;
150 for (
char candidate : candidates)
152 if (compare(highest, candidate) > 0)