bool MessageFolder::insertMessage(QMailMessageMetaData &message) { message.setParentFolderId(mFolder.id()); if (message.id().isValid()) { return QMailStore::instance()->updateMessage(&message); } else { return QMailStore::instance()->addMessage(&message); } }
void tst_QMailMessagePart::setHeaderField() { QString addr1("*****@*****.**"); QString addr2("*****@*****.**"); QString ownHdr("hello"); QMailMessage m; m.setHeaderField("To", addr2); QCOMPARE(m.headerFieldText("to"), addr2); QCOMPARE(m.headerField("to").content(), addr2.toLatin1()); // Ensure overwrite m.setHeaderField("To", addr1); m.setHeaderField("X-My-Own-Header", ownHdr); QCOMPARE(m.headerFieldText("to"), addr1); QCOMPARE(m.headerField("to").content(), addr1.toLatin1()); QCOMPARE(m.headerFieldText("X-My-Own-Header"), ownHdr); QCOMPARE(m.headerField("X-My-Own-Header").content(), ownHdr.toLatin1()); QCOMPARE(m.to(), (QList<QMailAddress>() << QMailAddress(addr1))); QCOMPARE(m.recipients(), (QList<QMailAddress>() << QMailAddress(addr1))); QMailMessageMetaData mtdata = *static_cast<QMailMessageMetaData*>(&m); QCOMPARE(mtdata.recipients(), (QList<QMailAddress>() << QMailAddress(addr1))); m.setHeaderField("Cc", addr2); QCOMPARE(m.recipients(), (QList<QMailAddress>() << QMailAddress(addr1) << QMailAddress(addr2))); mtdata = *static_cast<QMailMessageMetaData*>(&m); QCOMPARE(mtdata.recipients(), (QList<QMailAddress>() << QMailAddress(addr1) << QMailAddress(addr2))); QCOMPARE(m.cc(), (QList<QMailAddress>() << QMailAddress(addr2))); QString addr3("*****@*****.**"); m.setHeaderField("Bcc", addr3); QCOMPARE(m.recipients(), (QList<QMailAddress>() << QMailAddress(addr1) << QMailAddress(addr2) << QMailAddress(addr3))); mtdata = *static_cast<QMailMessageMetaData*>(&m); QCOMPARE(mtdata.recipients(), (QList<QMailAddress>() << QMailAddress(addr1) << QMailAddress(addr2) << QMailAddress(addr3))); QCOMPARE(m.bcc(), (QList<QMailAddress>() << QMailAddress(addr3))); QString rfc822 = m.toRfc2822(); QMailMessage m2 = QMailMessage::fromRfc2822(rfc822.toLatin1()); QCOMPARE(m2.headerFieldText("to"), addr1); QCOMPARE(m2.headerField("to").content(), addr1.toLatin1()); QCOMPARE(m2.headerFieldText("X-My-Own-Header"), ownHdr); QCOMPARE(m2.headerField("X-My-Own-Header").content(), ownHdr.toLatin1()); QCOMPARE(m2.to(), (QList<QMailAddress>() << QMailAddress(addr1))); m2.setTo(QList<QMailAddress>() << QMailAddress(addr2)); QCOMPARE(m2.headerFieldText("to"), addr2); QCOMPARE(m2.headerField("to").content(), addr2.toLatin1()); QCOMPARE(m2.to(), (QList<QMailAddress>() << QMailAddress(addr2))); }
/*! \internal */ QVariant QMailMessageModelBase::data(const QMailMessageMetaData &message, int role) const { static QIcon outgoingIcon(":icon/sendmail"); static QIcon incomingIcon(":icon/getmail"); static QIcon readIcon(":icon/flag_normal"); static QIcon unreadIcon(":icon/flag_unread"); static QIcon toGetIcon(":icon/flag_toget"); static QIcon toSendIcon(":icon/flag_tosend"); static QIcon unfinishedIcon(":icon/flag_unfinished"); static QIcon removedIcon(":icon/flag_removed"); /* No longer used... static QIcon noPresenceIcon(":icon/presence-none"); static QIcon offlineIcon(":icon/presence-offline"); static QIcon awayIcon(":icon/presence-away"); static QIcon busyIcon(":icon/presence-busy"); static QIcon onlineIcon(":icon/presence-online"); static QIcon messageIcon(":icon/txt"); static QIcon mmsIcon(":icon/multimedia"); static QIcon emailIcon(":icon/email"); static QIcon instantMessageIcon(":icon/im"); */ bool sent(message.status() & QMailMessage::Sent); bool incoming(message.status() & QMailMessage::Incoming); switch(role) { case Qt::DisplayRole: case MessageAddressTextRole: return messageAddressText(message,incoming); break; case MessageSizeTextRole: return messageSizeText(message); break; case MessageTimeStampTextRole: { QString action; if (incoming) { action = qApp->translate("QMailMessageModelBase", "Received"); } else { if (sent) { action = qApp->translate("QMailMessageModelBase", "Sent"); } else { action = qApp->translate("QMailMessageModelBase", "Last edited"); } } QDateTime messageTime(message.date().toLocalTime()); QString date(messageTime.date().toString("dd MMM")); QString time(messageTime.time().toString("h:mm")); QString sublabel(QString("%1 %2 %3").arg(action).arg(date).arg(time)); return sublabel; } break; case MessageSubjectTextRole: return message.subject(); break; case MessageFilterTextRole: return messageAddressText(message,incoming) + " " + message.subject(); break; case Qt::DecorationRole: case MessageTypeIconRole: { // Not currently implemented... return QIcon(); } break; case MessageDirectionIconRole: { QIcon mainIcon = incoming ? incomingIcon : outgoingIcon; return mainIcon; } break; case MessageStatusIconRole: { if (incoming) { quint64 status = message.status(); if ( status & QMailMessage::Removed ) { return removedIcon; } else if ( status & QMailMessage::PartialContentAvailable ) { if ( status & QMailMessage::Read || status & QMailMessage::ReadElsewhere ) { return readIcon; } else { return unreadIcon; } } else { return toGetIcon; } } else { if (sent) { return readIcon; } else if ( message.to().isEmpty() ) { // Not strictly true - there could be CC or BCC addressees return unfinishedIcon; } else { return toSendIcon; } } } break; case MessagePresenceIconRole: { // Not currently implemented... return QIcon(); } break; case MessageBodyTextRole: { if ((message.messageType() == QMailMessage::Instant) && !message.subject().isEmpty()) { // For IMs that contain only text, the body is replicated in the subject return message.subject(); } else { QMailMessage fullMessage(message.id()); // Some items require the entire message data if (fullMessage.hasBody()) return fullMessage.body().data(); return QString(); } } break; } return QVariant(); }