bool MessageFolder::insertMessage(QMailMessageMetaData &message) { message.setParentFolderId(mFolder.id()); if (message.id().isValid()) { return QMailStore::instance()->updateMessage(&message); } else { return QMailStore::instance()->addMessage(&message); } }
/*! \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(); }