コード例 #1
0
/*!
    This property holds the message sender.

    \par Access functions:
    \li IrcSender <b>sender</b>() const
 */
IrcSender IrcMessage::sender() const
{
    Q_D(const IrcMessage);
    return IrcSender(d->decodeData(d->parser.prefix()));
}
コード例 #2
0
QString MessageFormatter::formatNumericMessage(IrcNumericMessage* message) const
{
    if (message->code() == Irc::RPL_WELCOME)
        d.receivedCodes.clear();
    d.receivedCodes += message->code();

    if (message->code() < 300)
        return tr("[INFO] %1").arg(formatHtml(MID_(1)));
    if (QByteArray(Irc::toString(message->code())).startsWith("ERR_"))
        return tr("[ERROR] %1").arg(formatHtml(MID_(1)));

    switch (message->code())
    {
    case Irc::RPL_MOTDSTART:
    case Irc::RPL_MOTD:
        return tr("[MOTD] %1").arg(formatHtml(MID_(1)));
    case Irc::RPL_ENDOFMOTD:
        return QString();
    case Irc::RPL_AWAY:
        return tr("! %1 is away (%2)").arg(P_(1), MID_(2));
    case Irc::RPL_ENDOFWHOIS:
        return QString();
    case Irc::RPL_WHOISOPERATOR:
    case Irc::RPL_WHOISMODES: // "is using modes"
    case Irc::RPL_WHOISREGNICK: // "is a registered nick"
    case Irc::RPL_WHOISHELPOP: // "is available for help"
    case Irc::RPL_WHOISSPECIAL: // "is identified to services"
    case Irc::RPL_WHOISHOST: // nick is connecting from <...>
    case Irc::RPL_WHOISSECURE: // nick is using a secure connection
        return tr("! %1").arg(MID_(1));
    case Irc::RPL_WHOISUSER:
        return tr("! %1 is %2@%3 (%4)").arg(P_(1), P_(2), P_(3), formatHtml(MID_(5)));
    case Irc::RPL_WHOISSERVER:
        return tr("! %1 is online via %2 (%3)").arg(P_(1), P_(2), P_(3));
    case Irc::RPL_WHOISACCOUNT: // nick user is logged in as
        return tr("! %1 %3 %2").arg(P_(1), P_(2), P_(3));
    case Irc::RPL_WHOWASUSER:
        return tr("! %1 was %2@%3 %4 %5").arg(P_(1), P_(2), P_(3), P_(4), P_(5));
    case Irc::RPL_WHOISIDLE: {
        QDateTime signon = QDateTime::fromTime_t(P_(3).toInt());
        QTime idle = QTime().addSecs(P_(2).toInt());
        return tr("! %1 has been online since %2 (idle for %3)").arg(P_(1), signon.toString(), idle.toString());
    }
    case Irc::RPL_WHOISCHANNELS:
        return tr("! %1 is on channels %2").arg(P_(1), P_(2));
    case Irc::RPL_CHANNELMODEIS:
        return tr("! %1 mode is %2").arg(P_(1), P_(2));
    case Irc::RPL_CHANNEL_URL:
        return tr("! %1 url is %2").arg(P_(1), formatHtml(P_(2)));
    case Irc::RPL_CREATIONTIME: {
        QDateTime dateTime = QDateTime::fromTime_t(P_(2).toInt());
        return tr("! %1 was created %2").arg(P_(1), dateTime.toString());
    }
    case Irc::RPL_NOTOPIC:
        return tr("! %1 has no topic set").arg(P_(1));
    case Irc::RPL_TOPIC:
        return tr("! %1 topic is \"%2\"").arg(P_(1), formatHtml(P_(2)));
    case Irc::RPL_TOPICWHOTIME: {
        QDateTime dateTime = QDateTime::fromTime_t(P_(3).toInt());
        return tr("! %1 topic was set %2 by %3").arg(P_(1), dateTime.toString(), formatUser(P_(2), d.stripNicks));
    }
    case Irc::RPL_INVITING:
        return tr("! inviting %1 to %2").arg(formatUser(P_(1)), P_(2));
    case Irc::RPL_VERSION:
        return tr("! %1 version is %2").arg(formatSender(message->sender()), P_(1));
    case Irc::RPL_TIME:
        return tr("! %1 time is %2").arg(formatUser(P_(1)), P_(2));
    case Irc::RPL_UNAWAY:
    case Irc::RPL_NOWAWAY:
        return tr("! %1").arg(P_(1));

    case Irc::RPL_NAMREPLY:
        if (d.receivedCodes.contains(Irc::RPL_ENDOFNAMES))
        {
            int count = message->parameters().count();
            QString channel = message->parameters().value(count - 2);
            QStringList names;
            foreach (const QString& name, message->parameters().value(count - 1).split(" ", QString::SkipEmptyParts))
                names += IrcSender(name).name();
            return tr("! %1 users: %2").arg(channel).arg(names.join(" "));
        }
        return QString();

    case Irc::RPL_ENDOFNAMES:
        if (d.userModel && !d.receivedCodes.mid(0, d.receivedCodes.count() - 1).contains(Irc::RPL_ENDOFNAMES))
            return tr("! %1 has %2 users").arg(message->parameters().value(1)).arg(d.userModel->rowCount());
        return QString();

    default:
        return tr("[%1] %2").arg(message->code()).arg(QStringList(message->parameters().mid(1)).join(" "));
    }
コード例 #3
0
QString MessageFormatter::prettyUser(const QString& user)
{
    return prettyUser(IrcSender(user));
}