void RoomHandler::HandleErrorPresence (const QXmppPresence& pres, const QString& nick) { const QString& errorText = pres.error ().text (); QString hrText; switch (pres.error ().condition ()) { case QXmppStanza::Error::Conflict: hrText = tr ("nickname already taken"); break; case QXmppStanza::Error::Forbidden: case QXmppStanza::Error::NotAllowed: hrText = tr ("access forbidden"); break; case QXmppStanza::Error::NotAuthorized: hrText = tr ("password required"); break; case QXmppStanza::Error::JidMalformed: hrText = tr ("malformed JID"); break; case QXmppStanza::Error::RegistrationRequired: hrText = tr ("only registered users can enter this room"); break; default: hrText = tr ("unknown condition %1 (please report to developers)") .arg (pres.error ().condition ()); break; } const QString& text = tr ("Error for %1: %2 (original message: %3)") .arg (nick) .arg (hrText) .arg (errorText.isEmpty () ? tr ("no message") : errorText); RoomPublicMessage *message = new RoomPublicMessage (text, IMessage::DIn, CLEntry_, IMessage::MTEventMessage, IMessage::MSTOther); CLEntry_->HandleMessage (message); switch (pres.error ().condition ()) { case QXmppStanza::Error::Conflict: HandleNickConflict (); break; case QXmppStanza::Error::NotAuthorized: HandlePasswordRequired (); break; default: break; } }