diff options
Diffstat (limited to 'examples/maildirresource/libmaildir/maildir.cpp')
-rw-r--r-- | examples/maildirresource/libmaildir/maildir.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/examples/maildirresource/libmaildir/maildir.cpp b/examples/maildirresource/libmaildir/maildir.cpp index 8d6de3e..670d4ca 100644 --- a/examples/maildirresource/libmaildir/maildir.cpp +++ b/examples/maildirresource/libmaildir/maildir.cpp | |||
@@ -706,6 +706,40 @@ QString Maildir::addEntry(const QByteArray& data) | |||
706 | return uniqueKey; | 706 | return uniqueKey; |
707 | } | 707 | } |
708 | 708 | ||
709 | QString Maildir::addEntryFromPath(const QString& path) | ||
710 | { | ||
711 | QString uniqueKey; | ||
712 | QString key; | ||
713 | QString finalKey; | ||
714 | QString curKey; | ||
715 | |||
716 | // QUuid doesn't return globally unique identifiers, therefor we query until we | ||
717 | // get one that doesn't exists yet | ||
718 | do { | ||
719 | uniqueKey = createUniqueFileName() + d->hostName; | ||
720 | key = d->path + QLatin1String("/tmp/") + uniqueKey; | ||
721 | finalKey = d->path + QLatin1String("/new/") + uniqueKey; | ||
722 | curKey = d->path + QLatin1String("/cur/") + uniqueKey; | ||
723 | } while (QFile::exists(key) || QFile::exists(finalKey) || QFile::exists(curKey)); | ||
724 | |||
725 | QFile f(path); | ||
726 | if (!f.open(QIODevice::ReadWrite)) { | ||
727 | qWarning() << f.errorString(); | ||
728 | qWarning() << "Cannot open mail file: " << key; | ||
729 | return QString(); | ||
730 | } | ||
731 | |||
732 | if (!f.rename(finalKey)) { | ||
733 | qWarning() << "Maildir: Failed to add entry: " << finalKey << "! Error: " << f.errorString(); | ||
734 | // d->lastError = i18n("Failed to create mail file %1. The error was: %2" , finalKey, f.errorString()); | ||
735 | return QString(); | ||
736 | } | ||
737 | // KeyCache *keyCache = KeyCache::self(); | ||
738 | // keyCache->removeKey(d->path, key); //remove all keys, be it "cur" or "new" first | ||
739 | // keyCache->addNewKey(d->path, key); //and add a key for "new", as the mail was moved there | ||
740 | return uniqueKey; | ||
741 | } | ||
742 | |||
709 | bool Maildir::removeEntry(const QString& key) | 743 | bool Maildir::removeEntry(const QString& key) |
710 | { | 744 | { |
711 | QString realKey(d->findRealKey(key)); | 745 | QString realKey(d->findRealKey(key)); |