QVariant FolderListModel::data(const QModelIndex &index, int role) const { if (!index.isValid() || index.row() > m_mailFolderIds.count()) return QVariant(); QMailFolder folder(m_mailFolderIds[index.row()]); if (role == FolderName) { return folder.displayName(); } else if (role == FolderId) { return m_mailFolderIds[index.row()]; } else if (role == FolderUnreadCount) { QMailMessageKey parentFolderKey(QMailMessageKey::parentFolderId(m_mailFolderIds[index.row()])); QMailMessageKey unreadKey(QMailMessageKey::status(QMailMessage::Read, QMailDataComparator::Excludes)); return (QMailStore::instance()->countMessages(parentFolderKey & unreadKey)); } else if (role == FolderServerCount) { return (folder.serverCount()); } return QVariant(); }
QStringList FolderListModel::folderNames() { QStringList folderNames; foreach (QMailFolderId fId, m_mailFolderIds) { QMailFolder folder(fId); QMailMessageKey parentFolderKey(QMailMessageKey::parentFolderId(fId)); QMailMessageKey unreadKey(QMailMessageKey::status(QMailMessage::Read, QMailDataComparator::Excludes)); int numberOfMessages = QMailStore::instance()->countMessages(parentFolderKey & unreadKey); QString displayName = folder.displayName(); if (numberOfMessages > 0) { displayName = displayName + " (" + QString::number(numberOfMessages) + ")"; } folderNames << displayName; }
QVariant EmailAccountListModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); QMailAccountId accountId = QMailAccountListModel::idFromIndex(index); QMailAccount account(accountId); if (role == DisplayName) { return QMailAccountListModel::data(index, QMailAccountListModel::NameTextRole); } if (role == EmailAddress) { return account.fromAddress().address(); } if (role == MailServer) { QString address = account.fromAddress().address(); int index = address.indexOf("@"); QString server = address.right(address.size() - index - 1); index = server.indexOf(".com", Qt::CaseInsensitive); return server.left(index); } if (role == UnreadCount) { QMailFolderKey key = QMailFolderKey::parentAccountId(accountId); QMailFolderSortKey sortKey = QMailFolderSortKey::serverCount(Qt::DescendingOrder); QMailFolderIdList folderIds = QMailStore::instance()->queryFolders(key, sortKey); QMailMessageKey accountKey(QMailMessageKey::parentAccountId(accountId)); QMailMessageKey folderKey(QMailMessageKey::parentFolderId(folderIds)); QMailMessageKey unreadKey(QMailMessageKey::status(QMailMessage::Read, QMailDataComparator::Excludes)); return (QMailStore::instance()->countMessages(accountKey & folderKey & unreadKey)); } if (role == MailAccountId) { return accountId; } return QVariant(); }
QVariant EmailAccountListModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); if (role == DisplayName) { return QMailAccountListModel::data(index, QMailAccountListModel::NameTextRole); } QMailAccountId accountId = QMailAccountListModel::idFromIndex(index); if (role == MailAccountId) { return accountId.toULongLong(); } if (role == UnreadCount) { QMailFolderKey key = QMailFolderKey::parentAccountId(accountId); QMailFolderSortKey sortKey = QMailFolderSortKey::serverCount(Qt::DescendingOrder); QMailFolderIdList folderIds = QMailStore::instance()->queryFolders(key, sortKey); QMailMessageKey accountKey(QMailMessageKey::parentAccountId(accountId)); QMailMessageKey folderKey(QMailMessageKey::parentFolderId(folderIds)); QMailMessageKey unreadKey(QMailMessageKey::status(QMailMessage::Read, QMailDataComparator::Excludes)); return (QMailStore::instance()->countMessages(accountKey & folderKey & unreadKey)); } QMailAccount account(accountId); if (role == EmailAddress) { return account.fromAddress().address(); } if (role == MailServer) { QString address = account.fromAddress().address(); int index = address.indexOf("@"); QString server = address.right(address.size() - index - 1); index = server.indexOf(".com", Qt::CaseInsensitive); return server.left(index); } if (role == LastSynchronized) { if (account.lastSynchronized().isValid()) { return account.lastSynchronized().toLocalTime(); } else { //Account was never synced, return zero return 0; } } if (role == StandardFoldersRetrieved) { quint64 standardFoldersMask = QMailAccount::statusMask("StandardFoldersRetrieved"); return account.status() & standardFoldersMask; } if (role == Signature) { return account.signature(); } if (role == IconPath) { return account.iconPath(); } return QVariant(); }