bool PrivilegeSet::hasPrivileges(const std::vector<Privilege>& desiredPrivileges) { for (std::vector<Privilege>::const_iterator iter = desiredPrivileges.begin(), end = desiredPrivileges.end(); iter != end; ++iter) { if (!hasPrivilege(*iter)) return false; } return true; }
/*! \details An user as changed a nick \param s is the string from Irc server */ void IrcChannel::userNickChange(QString s) { // :[email protected] NICK :dddtre QRegExp r (":([^!]+).*\\sNICK\\s:(.*)"); if(r.exactMatch(s)) { QStringList l = r.capturedTexts(); QListWidgetItem *it = findUser(l.at(1)); if(it) { it->setText( hasPrivilege(it->text()) + l.at(2)); mTextEdit->appendHtml("<font color=\"#ff0000\">User " + l.at(1) + " is now know as " + l.at(2) + "</font>"); } } }
/*! \details Modify the current privilege for one user in this channel. \param s is the string from Irc server */ void IrcChannel::setUserPrivilege(QString s) { // :[email protected] MODE #testmonkeystudio +o xiantia // * after sets mode: +o xiantia QRegExp r (":([^!]+).*\\sMODE\\s([^ ]+)\\s([^ ]+)\\s([^ ]+).*"); if(r.exactMatch(s)) { QStringList t = r.capturedTexts(); if(t.at(2).toLower() == name()) { QListWidgetItem *it = findUser(t.at(4)); if(it) { mTextEdit->appendHtml("<font color=\"#00ff00\">* " + t.at(1) + " sets mode : " + t.at(3) + " " + t.at(4) + "</font>"); QString n = userPrefix.value(t.at(3)); // get the corresponding tag og privilege QString u = it->text(); if(hasPrivilege(u).isEmpty()) // user haven't privilege, add this it->setText( n + u); else it->setText( u.replace(0,1, n) ); // user have privilege, modify this } } } }