MessageItem::MessageItem(const QMailId& id) : QStandardItem(), id(id) { static QIcon sentMessageIcon(":icon/qtmail/sendmail"); static QIcon receivedMessageIcon(":icon/qtmail/getmail"); static QIcon smsIcon(":icon/txt"); static QIcon mmsIcon(":icon/multimedia"); static QIcon emailIcon(":icon/email"); // Load the header for this message QMailMessage message(id, QMailMessage::Header); // Determine the properties we want to display QIcon* messageIcon = &smsIcon; if (message.messageType() == QMailMessage::Mms) messageIcon = &mmsIcon; if (message.messageType() == QMailMessage::Email) messageIcon = &emailIcon; bool sent(message.status() & QMailMessage::Outgoing); QDateTime messageTime(message.date().toLocalTime()); QString action(qApp->translate("MessageViewer", sent ? "Sent" : "Received")); QString date(QTimeString::localMD(messageTime.date())); QString time(QTimeString::localHM(messageTime.time(), QTimeString::Short)); QString sublabel(QString("%1 %2 %3").arg(action).arg(date).arg(time)); // Configure this item setIcon(sent ? sentMessageIcon : receivedMessageIcon); setText(message.subject()); setData(sublabel, MessageDelegate::SubLabelRole); setData(*messageIcon, MessageDelegate::SecondaryDecorationRole); }
bool CDateTimeFilter::isValid(const CMessage* message) const { // 同じ日付かどうか wxDateTime messageTime(message->getTime()); if (messageTime.IsSameDate(m_date)){ return !isAntiFilter(); } return isAntiFilter(); }
/*! \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(); }