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 FolderListModel::data(const QModelIndex &index, int role) const { if (!index.isValid() || index.row() > m_folderList.count()) return QVariant(); const FolderItem *item = static_cast<const FolderItem *>(index.internalPointer()); Q_ASSERT(item); QMailFolder folder(item->folderId); switch (role) { case FolderName: { if (item->folderId == QMailFolder::LocalStorageFolderId) { return localFolderName(item->folderType); } else { return folder.displayName(); } } case FolderId: return item->folderId.toULongLong(); case FolderUnreadCount: { return item->unreadCount; } case FolderServerCount: return (folder.serverCount()); case FolderNestingLevel: { QMailFolder tempFolder = folder; int level = 0; while (tempFolder.parentFolderId().isValid()) { tempFolder = QMailFolder(tempFolder.parentFolderId()); level++; } return level; } case FolderMessageKey: return item->messageKey; case FolderType: return item->folderType; default: return QVariant(); } }
QMessageFolderId addFolder(const Parameters ¶ms) { QString path(params["path"]); QString name(params["name"]); QString parentAccountName(params["parentAccountName"]); QString parentFolderPath(params["parentFolderPath"]); if (!path.isEmpty() && !parentAccountName.isEmpty()) { // Find the named account QMailAccountIdList accountIds(QMailStore::instance()->queryAccounts(QMailAccountKey::name(parentAccountName))); if (accountIds.count() == 1) { QMailFolder folder; folder.setPath(path); folder.setParentAccountId(accountIds.first()); if (!name.isEmpty()) { folder.setDisplayName(name); } if (!parentFolderPath.isEmpty()) { QMailFolderKey key(QMailFolderKey::path(parentFolderPath) & QMailFolderKey::parentAccountId(folder.parentAccountId())); QMailFolderIdList folderIds(QMailStore::instance()->queryFolders(key)); if (folderIds.count() == 1) { folder.setParentFolderId(folderIds.first()); } else { qWarning() << "Unable to locate parent folder:" << parentFolderPath; } } if (!QMailStore::instance()->addFolder(&folder)) { qWarning() << "Unable to addFolder:" << path; } else { return QmfHelpers::convert(folder.id()); } } else { qWarning() << "Unable to locate parent account:" << parentAccountName; } } return QMessageFolderId(); }