/*! \reimp */ QVariant QMailMessageModelBase::data(const QModelIndex& index, int role) const { if (!index.isValid()) return QVariant(); QMailMessageId id = idFromIndex(index); if (!id.isValid()) return QVariant(); // Some items can be processed without loading the message data switch(role) { case MessageIdRole: return id; break; case Qt::CheckStateRole: return impl()->checkState(index); break; default: break; } // Otherwise, load the message data return data(QMailMessageMetaData(id), role); }
QMessageContentContainerId QMessageContentContainerIdPrivate::bodyId(const QMailMessageId &id) { QMessageContentContainerId result; result.d_ptr->_body = true; if (id.isValid()) { result.d_ptr->_location.setContainingMessageId(id); } return result; }
QModelIndex QMailMessageListModelPrivate::indexFromId(const QMailMessageId& id) const { init(); if (id.isValid()) { int row = indexOf(id); if (row != -1) return _model.generateIndex(row, 0, 0); } return QModelIndex(); }
QVariant EmailMessageListModel::data(const QModelIndex & index, int role) const { if (!index.isValid() || index.row() > rowCount(parent(index))) { qWarning() << Q_FUNC_INFO << "Invalid Index"; return QVariant(); } if (role == MessageSortByRole) { return m_sortBy; } QMailMessageId msgId = idFromIndex(index); if (role == QMailMessageModelBase::MessageBodyTextRole) { QMailMessage message (msgId); return EmailAgent::instance()->bodyPlainText(message); } else if (role == MessageHtmlBodyRole) { QMailMessage message (msgId); return bodyHtmlText(message); } else if (role == MessageQuotedBodyRole) { QMailMessage message (msgId); QString body = EmailAgent::instance()->bodyPlainText(message); body.prepend('\n'); body.replace('\n', "\n>"); body.truncate(body.size() - 1); // remove the extra ">" put there by QString.replace return body; } else if (role == MessageIdRole) { return msgId.toULongLong(); } else if (role == MessageToRole) { QMailMessage message (msgId); return QMailAddress::toStringList(message.to()); } else if (role == MessageCcRole) { QMailMessage message (msgId); return QMailAddress::toStringList(message.cc()); } else if (role == MessageBccRole) { QMailMessage message (msgId); return QMailAddress::toStringList(message.bcc()); } else if (role == MessageSelectModeRole) { int selected = 0; if (m_selectedMsgIds.contains(msgId) == true) selected = 1; return (selected); } QMailMessageMetaData messageMetaData(msgId); if (role == QMailMessageModelBase::MessageTimeStampTextRole) { QDateTime timeStamp = messageMetaData.date().toLocalTime(); return (timeStamp.toString("hh:mm MM/dd/yyyy")); } else if (role == MessageAttachmentCountRole) { // return number of attachments if (!messageMetaData.status() & QMailMessageMetaData::HasAttachments) return 0; QMailMessage message(msgId); const QList<QMailMessagePart::Location> &attachmentLocations = message.findAttachmentLocations(); return attachmentLocations.count(); } else if (role == MessageAttachmentsRole) { // return a stringlist of attachments if (!messageMetaData.status() & QMailMessageMetaData::HasAttachments) return QStringList(); QMailMessage message(msgId); QStringList attachments; foreach (const QMailMessagePart::Location &location, message.findAttachmentLocations()) { const QMailMessagePart &attachmentPart = message.partAt(location); attachments << attachmentPart.displayName(); } return attachments; } else if (role == MessageRecipientsRole) {
QMessageId convert(const QMailMessageId &id) { return QMessageId(prefixIdentifier(QString::number(id.toULongLong()))); }