/* * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include #include #include #include #include #include #include #include #include namespace Swift { QtEvent::QtEvent(std::shared_ptr event, bool active) : event_(event) { active_ = active; } QVariant QtEvent::data(int role) { switch (role) { case Qt::ToolTipRole: return QVariant(text()).toString() + "\n" + B2QDATE(event_->getTime()).toString(); case Qt::DisplayRole: return QVariant(text()); case Qt::TextColorRole: return QColor(active_ ? Qt::black : Qt::darkGray); case Qt::BackgroundColorRole: return QColor(active_ ? Qt::white : Qt::lightGray); case SenderRole: return QVariant(sender()); /*case StatusTextRole: return statusText_; case AvatarRole: return avatar_; case PresenceIconRole: return getPresenceIcon();*/ default: return QVariant(); } } QString QtEvent::sender() { std::shared_ptr messageEvent = std::dynamic_pointer_cast(event_); if (messageEvent) { return P2QSTRING(messageEvent->getStanza()->getFrom().toString()); } std::shared_ptr subscriptionRequestEvent = std::dynamic_pointer_cast(event_); if (subscriptionRequestEvent) { return P2QSTRING(subscriptionRequestEvent->getJID().toBare().toString()); } std::shared_ptr errorEvent = std::dynamic_pointer_cast(event_); if (errorEvent) { return P2QSTRING(errorEvent->getJID().toBare().toString()); } std::shared_ptr mucInviteEvent = std::dynamic_pointer_cast(event_); if (mucInviteEvent) { return P2QSTRING(mucInviteEvent->getInviter().toString()); } std::shared_ptr incomingFTEvent = std::dynamic_pointer_cast(event_); if (incomingFTEvent) { return P2QSTRING(incomingFTEvent->getSender().toString()); } return ""; } QString QtEvent::text() { std::shared_ptr messageEvent = std::dynamic_pointer_cast(event_); if (messageEvent) { return P2QSTRING(messageEvent->getStanza()->getBody().get_value_or("")); } std::shared_ptr subscriptionRequestEvent = std::dynamic_pointer_cast(event_); if (subscriptionRequestEvent) { std::string reason = subscriptionRequestEvent->getReason(); QString message; if (reason.empty()) { message = QString(QObject::tr("%1 would like to add you to their contact list.")).arg(subscriptionRequestEvent->getJID().toBare().toString().c_str()); } else { message = QString(QObject::tr("%1 would like to add you to their contact list, saying '%2'")).arg(subscriptionRequestEvent->getJID().toBare().toString().c_str()).arg(reason.c_str()); } return message; } std::shared_ptr errorEvent = std::dynamic_pointer_cast(event_); if (errorEvent) { return P2QSTRING(errorEvent->getText()); } std::shared_ptr mucInviteEvent = std::dynamic_pointer_cast(event_); if (mucInviteEvent) { QString message = QString(QObject::tr("%1 has invited you to enter the %2 room.")).arg(P2QSTRING(mucInviteEvent->getInviter().toBare().toString())).arg(P2QSTRING(mucInviteEvent->getRoomJID().toString())); return message; } std::shared_ptr incomingFTEvent = std::dynamic_pointer_cast(event_); if (incomingFTEvent) { QString message = QString(QObject::tr("%1 would like to send a file to you.")).arg(P2QSTRING(incomingFTEvent->getSender().toBare().toString())); return message; } return ""; } }