registerAction(NickCtcpVersion, tr("Version"));
registerAction(NickCtcpTime, tr("Time"));
registerAction(NickCtcpPing, tr("Ping"));
- registerAction(NickCtcpFinger, tr("Finger"));
+ registerAction(NickCtcpClientinfo, tr("Client info"));
registerAction(NickIgnoreCustom, tr("Custom..."));
// these texts are only dummies! don't think about tr() here!
registerAction(NickOp, SmallIcon("irc-operator"), tr("Give Operator Status"));
registerAction(NickDeop, SmallIcon("irc-remove-operator"), tr("Take Operator Status"));
+ registerAction(NickHalfop, SmallIcon("irc-voice"), tr("Give Half-Operator Status"));
+ registerAction(NickDehalfop, SmallIcon("irc-unvoice"), tr("Take Half-Operator Status"));
registerAction(NickVoice, SmallIcon("irc-voice"), tr("Give Voice"));
registerAction(NickDevoice, SmallIcon("irc-unvoice"), tr("Take Voice"));
registerAction(NickKick, SmallIcon("im-kick-user"), tr("Kick From Channel"));
nickCtcpMenu->addAction(action(NickCtcpPing));
nickCtcpMenu->addAction(action(NickCtcpVersion));
nickCtcpMenu->addAction(action(NickCtcpTime));
- nickCtcpMenu->addAction(action(NickCtcpFinger));
+ nickCtcpMenu->addAction(action(NickCtcpClientinfo));
_nickCtcpMenuAction = new Action(tr("CTCP"), 0);
_nickCtcpMenuAction->setMenu(nickCtcpMenu);
QMenu *nickModeMenu = new QMenu();
nickModeMenu->addAction(action(NickOp));
nickModeMenu->addAction(action(NickDeop));
+ // this is where the halfops will be placed if available
+ nickModeMenu->addAction(action(NickHalfop));
+ nickModeMenu->addAction(action(NickDehalfop));
nickModeMenu->addAction(action(NickVoice));
nickModeMenu->addAction(action(NickDevoice));
nickModeMenu->addSeparator();
IrcUser *ircUser = qobject_cast<IrcUser *>(index.data(NetworkModel::IrcUserRole).value<QObject *>());
if(ircUser) {
+ Network *network = ircUser->network();
+ // only show entries for usermode +h if server supports it
+ if(network && network->prefixModes().contains('h')) {
+ action(NickHalfop)->setVisible(true);
+ action(NickDehalfop)->setVisible(true);
+ }
+ else {
+ action(NickHalfop)->setVisible(false);
+ action(NickDehalfop)->setVisible(false);
+ }
// ignoreliststuff
QString bufferName;
BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value<BufferInfo>();
QString ident = userFromMask(hostmask);
QString host = hostFromMask(hostmask);
QString domain = host;
- QRegExp domainRx = QRegExp("(\\.[^.]+\\.\\w+)$");
+ QRegExp domainRx = QRegExp("(\\.[^.]+\\.\\w+\\D)$");
if(domainRx.indexIn(host) != -1)
domain = domainRx.cap(1);
// we can't rely on who-data
ignoreMenu->addAction(action(NickIgnoreUser));
if(!ignoreMap.contains(action(NickIgnoreHost)->property("ignoreRule").toString()))
ignoreMenu->addAction(action(NickIgnoreHost));
- if(!ignoreMap.contains(action(NickIgnoreDomain)->property("ignoreRule").toString()))
+ // we only add that NickIgnoreDomain if it isn't the same as NickIgnoreUser
+ // as happens with @foobar.com hostmasks and ips
+ if(!ignoreMap.contains(action(NickIgnoreDomain)->property("ignoreRule").toString())
+ && action(NickIgnoreUser)->property("ignoreRule").toString() != action(NickIgnoreDomain)->property("ignoreRule").toString())
ignoreMenu->addAction(action(NickIgnoreDomain));
}