QVariant EmailMessageListModel::data(const QModelIndex & index, int role) const { if (!index.isValid() || index.row() > rowCount(parent(index))) return QVariant(); QMailMessageId msgId = idFromIndex(index); 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) {
/*! \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); }
StampedJournalEntry StampedJournalEntry::makeFromQuest (const std::string& topic, int index, const MWWorld::Ptr& actor) { int day = MWBase::Environment::get().getWorld()->getGlobalInt ("dayspassed"); int month = MWBase::Environment::get().getWorld()->getGlobalInt ("month"); int dayOfMonth = MWBase::Environment::get().getWorld()->getGlobalInt ("day"); return StampedJournalEntry (topic, idFromIndex (topic, index), day, month, dayOfMonth, actor); }
StampedJournalEntry StampedJournalEntry::makeFromQuest (const std::string& topic, int index) { int day = MWBase::Environment::get().getWorld()->getGlobalVariable ("dayspassed").mLong; int month = MWBase::Environment::get().getWorld()->getGlobalVariable ("day").mLong; int dayOfMonth = MWBase::Environment::get().getWorld()->getGlobalVariable ("month").mLong; return StampedJournalEntry (topic, idFromIndex (topic, index), day, month, dayOfMonth); }
QVariant EmailMessageListModel::data(const QModelIndex & index, int role) const { if (!index.isValid() || index.row() > rowCount(parent(index))) return QVariant(); if (role == QMailMessageModelBase::MessageTimeStampTextRole) { QMailMessageId msgId = idFromIndex(index); QMailMessageMetaData message(msgId); QDateTime timeStamp = message.date().toLocalTime(); return (timeStamp.toString("hh:mm MM/dd/yyyy")); } else if (role == MessageAttachmentCountRole) { // return number of attachments QMailMessage messageMetaData(idFromIndex(index)); if (!messageMetaData.status() & QMailMessageMetaData::HasAttachments) return 0; // TODO: can we satisfy this from metadata too? QMailMessage message(idFromIndex(index)); int numberOfAttachments = 0; for (uint i = 1; i < message.partCount(); i++) { QMailMessagePart sourcePart = message.partAt(i); if (!(sourcePart.multipartType() == QMailMessagePartContainer::MultipartNone)) continue; QMailMessageContentType contentType = sourcePart.contentType(); if (sourcePart.hasBody() && contentType.type().toLower() == "text" && contentType.subType().toLower() == "plain") continue; if (i == 1 && contentType.type().toLower() == "text" && contentType.subType().toLower() == "html") continue; numberOfAttachments += 1; } return numberOfAttachments; } else if (role == MessageAttachmentsRole) { // return a stringlist of attachments QMailMessage messageMetaData(idFromIndex(index)); if (!messageMetaData.status() & QMailMessageMetaData::HasAttachments) return QStringList(); QMailMessage message(idFromIndex(index)); QStringList attachments; for (uint i = 1; i < message.partCount(); i++) { QMailMessagePart sourcePart = message.partAt(i); if (!(sourcePart.multipartType() == QMailMessagePartContainer::MultipartNone)) continue; QMailMessageContentType contentType = sourcePart.contentType(); if (sourcePart.hasBody() && contentType.type().toLower() == "text" && contentType.subType().toLower() == "plain") continue; if (i == 1 && contentType.type().toLower() == "text" && contentType.subType().toLower() == "html") continue; attachments << sourcePart.displayName(); } return attachments; } else if (role == MessageRecipientsRole) { // TODO: metadata? QMailMessage message (idFromIndex(index)); QStringList recipients; QList<QMailAddress> addresses = message.to(); foreach (const QMailAddress &address, addresses) { recipients << address.address(); } return recipients; }
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) {
JournalEntry JournalEntry::makeFromQuest (const std::string& topic, int index) { return JournalEntry (topic, idFromIndex (topic, index), MWWorld::Ptr()); }