void MessageFolder::openMailbox() { if (QMailStore* store = QMailStore::instance()) { if (!mFolder.id().isValid()) { QMailFolderKey key(QMailFolderKey::Name,mailbox()); key &= QMailFolderKey(QMailFolderKey::ParentId,QMailFolderId()); QMailFolderIdList folderIdList = QMailStore::instance()->queryFolders(key); if(folderIdList.isEmpty()) { // create folder QMailFolder newFolder(mailbox()); if(!QMailStore::instance()->addFolder(&newFolder)) qWarning() << "Failed to add folder " << mailbox(); mFolder = newFolder; } else { // load folder QMailFolderId folderId = folderIdList.first(); mFolder = QMailFolder(folderId); } //set the folder key mParentFolderKey = QMailMessageKey(QMailMessageKey::ParentFolderId,mFolder.id()); } // notify when our content is reported to have changed connect(store, SIGNAL(folderContentsModified(QMailFolderIdList)), this, SLOT(folderContentsModified(QMailFolderIdList))); } }
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); }