diff --git a/resources/kolab/kolabhelpers.h b/resources/kolab/kolabhelpers.h --- a/resources/kolab/kolabhelpers.h +++ b/resources/kolab/kolabhelpers.h @@ -30,7 +30,7 @@ static Akonadi::Item translateFromImap(Kolab::FolderType folderType, const Akonadi::Item &item, bool &ok); static Akonadi::Item::List translateToImap(const Akonadi::Item::List &items, bool &ok); static Akonadi::Item translateToImap(const Akonadi::Item &item, bool &ok); - static Kolab::FolderType folderTypeFromString( const QByteArray &folderTypeName ); + static Kolab::FolderType folderTypeFromString( QByteArray folderTypeName ); static QByteArray getFolderTypeAnnotation( const QMap &annotations); static void setFolderTypeAnnotation( QMap &annotations, const QByteArray &value); static Kolab::ObjectType getKolabTypeFromMimeType(const QString &type); diff --git a/resources/kolab/kolabhelpers.cpp b/resources/kolab/kolabhelpers.cpp --- a/resources/kolab/kolabhelpers.cpp +++ b/resources/kolab/kolabhelpers.cpp @@ -412,15 +412,21 @@ return contentTypes; } -Kolab::FolderType KolabHelpers::folderTypeFromString(const QByteArray& folderTypeName) +Kolab::FolderType KolabHelpers::folderTypeFromString(QByteArray folderTypeName) { - return Kolab::folderTypeFromString( std::string(folderTypeName.data(), folderTypeName.size()) ); + const QList parts = folderTypeName.split(QLatin1Char('.').toLatin1()); + if (parts.count() > 1) { + folderTypeName = parts.first(); + } + return Kolab::folderTypeFromString(std::string(folderTypeName.data(), folderTypeName.size())); } QByteArray KolabHelpers::getFolderTypeAnnotation(const QMap< QByteArray, QByteArray > &annotations) { - if (annotations.contains("/shared" KOLAB_FOLDER_TYPE_ANNOTATION)) { - return annotations.value( "/shared" KOLAB_FOLDER_TYPE_ANNOTATION); + if (annotations.contains("/shared" KOLAB_FOLDER_TYPE_ANNOTATION) && !annotations.value("/shared" KOLAB_FOLDER_TYPE_ANNOTATION).isEmpty()) { + return annotations.value("/shared" KOLAB_FOLDER_TYPE_ANNOTATION); + }else if (annotations.contains("/private" KOLAB_FOLDER_TYPE_ANNOTATION) && !annotations.value("/private" KOLAB_FOLDER_TYPE_ANNOTATION).isEmpty()) { + return annotations.value("/private" KOLAB_FOLDER_TYPE_ANNOTATION); } return annotations.value(KOLAB_FOLDER_TYPE_ANNOTATION); } diff --git a/resources/kolab/kolabretrievecollectionstask.cpp b/resources/kolab/kolabretrievecollectionstask.cpp --- a/resources/kolab/kolabretrievecollectionstask.cpp +++ b/resources/kolab/kolabretrievecollectionstask.cpp @@ -475,10 +475,10 @@ const QMap metadata = metadataMap.value(mailbox); if (mMailCollections.contains(mailbox)) { Akonadi::Collection &collection = mMailCollections[mailbox]; - // kDebug() << "setting metadata: " << mailbox << metadata; collection.attribute(Akonadi::Collection::AddIfMissing)->setAnnotations(metadata); const QByteArray type = KolabHelpers::getFolderTypeAnnotation(metadata); const Kolab::FolderType folderType = KolabHelpers::folderTypeFromString(type); + // kDebug() << mailbox << metadata << type << folderType << KolabHelpers::getContentMimeTypes(folderType); collection.setContentMimeTypes(KolabHelpers::getContentMimeTypes(folderType)); QSet keepLocalChanges = collection.keepLocalChanges(); keepLocalChanges.remove(cContentMimeTypes);