void CanonicalTXSet::insert (std::shared_ptr<STTx const> const& txn) { map_.insert ( std::make_pair ( Key ( accountKey (txn->getAccountID(sfAccount)), txn->getSequence (), txn->getTransactionID ()), txn)); }
void QMFStorePrivate::createNonexistentFolder(QMailStore *store, const QString &path, quint64 status) { QMailFolderKey pathKey(QMailFolderKey::path(path)); QMailFolderKey accountKey(QMailFolderKey::parentAccountId(QMailAccountId())); if (store->countFolders(pathKey & accountKey) == 0) { QMailFolder folder; folder.setPath(path); folder.setStatus(status); if (!store->addFolder(&folder)) { qWarning() << "Unable to add folder for:" << path; } } }
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(); }
std::vector<std::shared_ptr<STTx const>> CanonicalTXSet::prune(AccountID const& account, std::uint32_t const seq) { auto effectiveAccount = accountKey (account); Key keyLow(effectiveAccount, seq, beast::zero); Key keyHigh(effectiveAccount, seq+1, beast::zero); auto range = boost::make_iterator_range( map_.lower_bound(keyLow), map_.lower_bound(keyHigh)); auto txRange = boost::adaptors::transform(range, [](auto const& p) { return p.second; }); std::vector<std::shared_ptr<STTx const>> result( txRange.begin(), txRange.end()); map_.erase(range.begin(), range.end()); return result; }
bool detectStandardFolder(const QMailAccountId &accountId, StandardFolderInfo standardFolderInfo) { QMailFolderId folderId; QMailAccount account = QMailAccount(accountId); QMailFolderKey accountKey(QMailFolderKey::parentAccountId(accountId)); QStringList paths = standardFolderInfo._paths; QMailFolder::StandardFolder standardFolder(standardFolderInfo._standardFolder); quint64 messageFlag(standardFolderInfo._messageFlag); quint64 flag(standardFolderInfo._flag); QMailFolderIdList folders; if (!paths.isEmpty()) { QMailFolderKey exactMatchKey = QMailFolderKey::displayName(paths, QMailDataComparator::Includes); folders = QMailStore::instance()->queryFolders(exactMatchKey & accountKey); if (folders.isEmpty()) { QMailFolderKey pathKey; foreach (const QString& path, paths) { pathKey |= QMailFolderKey::displayName(path, QMailDataComparator::Includes); }
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(); }