bool Handler::eventFilter(QObject *obj, QEvent *event) { if (event->type() == Reply::eventType()) { Authorization::Reply *reply = static_cast<Authorization::Reply*>(event); if (reply->replyType() == Reply::New) { QString reason; Message pseudoMessage(reply->body()); pseudoMessage.setChatUnit(reply->contact()); pseudoMessage.setIncoming(false); bool accepted = true; doHandle(pseudoMessage).connect(this, [&accepted, reply] (Result result, const QString &reason) { if (Error == result) { NotificationRequest request(Notification::BlockedMessage); request.setObject(reply->contact()); request.setText(reason); request.send(); } accepted = (result == Accept); }); if (accepted) return true; } } return QObject::eventFilter(obj, event); }
/* * Handle a result. * An exception may be thrown by a derived class. * * @param x A value that needs to be handled. */ void handle(const T& x) { doHandle(x); }