Changeset View
Changeset View
Standalone View
Standalone View
resources/kolab/kolabretrievecollectionstask.cpp
Show All 27 Lines | |||||
#include <noinferiorsattribute.h> | #include <noinferiorsattribute.h> | ||||
#include <collectionannotationsattribute.h> | #include <collectionannotationsattribute.h> | ||||
#include <collectionmetadatahelper.h> | #include <collectionmetadatahelper.h> | ||||
#include <imapaclattribute.h> | #include <imapaclattribute.h> | ||||
#include <kimap/getmetadatajob.h> | #include <kimap/getmetadatajob.h> | ||||
#include <kimap/myrightsjob.h> | #include <kimap/myrightsjob.h> | ||||
#include <akonadi/cachepolicy.h> | #include <akonadi/cachepolicy.h> | ||||
#include <akonadi/collectioncolorattribute.h> | |||||
#include <akonadi/entitydisplayattribute.h> | #include <akonadi/entitydisplayattribute.h> | ||||
#include <akonadi/kmime/messageparts.h> | #include <akonadi/kmime/messageparts.h> | ||||
#include <akonadi/collectionidentificationattribute.h> | #include <akonadi/collectionidentificationattribute.h> | ||||
#include <akonadi/calendar/blockalarmsattribute.h> | #include <akonadi/calendar/blockalarmsattribute.h> | ||||
#include <kmime/kmime_message.h> | #include <kmime/kmime_message.h> | ||||
#include <KDE/KDebug> | #include <KDE/KDebug> | ||||
#include <KDE/KLocale> | #include <KDE/KLocale> | ||||
#include <QColor> | |||||
bool isNamespaceFolder(const QString &path, const QList<KIMAP::MailBoxDescriptor> &namespaces, bool matchCompletePath = false) | bool isNamespaceFolder(const QString &path, const QList<KIMAP::MailBoxDescriptor> &namespaces, bool matchCompletePath = false) | ||||
{ | { | ||||
Q_FOREACH (const KIMAP::MailBoxDescriptor &desc, namespaces) { | Q_FOREACH (const KIMAP::MailBoxDescriptor &desc, namespaces) { | ||||
if (path.startsWith(desc.name.left(desc.name.size() - 1))) { //Namespace ends with path separator and pathPart doesn't | if (path.startsWith(desc.name.left(desc.name.size() - 1))) { //Namespace ends with path separator and pathPart doesn't | ||||
if (!matchCompletePath || path.size() - desc.name.size() <= 1) { //We want to match only for the complete path | if (!matchCompletePath || path.size() - desc.name.size() <= 1) { //We want to match only for the complete path | ||||
return true; | return true; | ||||
▲ Show 20 Lines • Show All 138 Lines • ▼ Show 20 Lines | KolabRetrieveCollectionsTask::KolabRetrieveCollectionsTask(ResourceStateInterface::Ptr resource, QObject* parent) | ||||
, cImapAcl("imapacl") | , cImapAcl("imapacl") | ||||
, cCollectionAnnotations("collectionannotations") | , cCollectionAnnotations("collectionannotations") | ||||
, cDefaultKeepLocalChanges(QSet<QByteArray>() << cContentMimeTypes << cAccessRights << cImapAcl << cCollectionAnnotations) | , cDefaultKeepLocalChanges(QSet<QByteArray>() << cContentMimeTypes << cAccessRights << cImapAcl << cCollectionAnnotations) | ||||
, cDefaultMimeTypes(QStringList() << Akonadi::Collection::mimeType() << QLatin1String("application/x-kolab-objects")) | , cDefaultMimeTypes(QStringList() << Akonadi::Collection::mimeType() << QLatin1String("application/x-kolab-objects")) | ||||
, cCollectionOnlyContentMimeTypes(QStringList() << Akonadi::Collection::mimeType()) | , cCollectionOnlyContentMimeTypes(QStringList() << Akonadi::Collection::mimeType()) | ||||
{ | { | ||||
mRequestedMetadata << "/shared/vendor/kolab/folder-type"; | mRequestedMetadata << "/shared/vendor/kolab/folder-type"; | ||||
mRequestedMetadata << "/private/vendor/kolab/folder-type"; | mRequestedMetadata << "/private/vendor/kolab/folder-type"; | ||||
mRequestedMetadata << "/shared" KOLAB_COLOR_ANNOTATION | |||||
<< "/private" KOLAB_COLOR_ANNOTATION; | |||||
} | } | ||||
KolabRetrieveCollectionsTask::~KolabRetrieveCollectionsTask() | KolabRetrieveCollectionsTask::~KolabRetrieveCollectionsTask() | ||||
{ | { | ||||
} | } | ||||
void KolabRetrieveCollectionsTask::doStart(KIMAP::Session *session) | void KolabRetrieveCollectionsTask::doStart(KIMAP::Session *session) | ||||
▲ Show 20 Lines • Show All 268 Lines • ▼ Show 20 Lines | Q_FOREACH(const QString &mailbox, metadataMap.keys()) { | ||||
const QMap<QByteArray, QByteArray> metadata = metadataMap.value(mailbox); | const QMap<QByteArray, QByteArray> metadata = metadataMap.value(mailbox); | ||||
if (mMailCollections.contains(mailbox)) { | if (mMailCollections.contains(mailbox)) { | ||||
Akonadi::Collection &collection = mMailCollections[mailbox]; | Akonadi::Collection &collection = mMailCollections[mailbox]; | ||||
collection.attribute<Akonadi::CollectionAnnotationsAttribute>(Akonadi::Collection::AddIfMissing)->setAnnotations(metadata); | collection.attribute<Akonadi::CollectionAnnotationsAttribute>(Akonadi::Collection::AddIfMissing)->setAnnotations(metadata); | ||||
const QByteArray type = KolabHelpers::getFolderTypeAnnotation(metadata); | const QByteArray type = KolabHelpers::getFolderTypeAnnotation(metadata); | ||||
const Kolab::FolderType folderType = KolabHelpers::folderTypeFromString(type); | const Kolab::FolderType folderType = KolabHelpers::folderTypeFromString(type); | ||||
// kDebug() << mailbox << metadata << type << folderType << KolabHelpers::getContentMimeTypes(folderType); | // kDebug() << mailbox << metadata << type << folderType << KolabHelpers::getContentMimeTypes(folderType); | ||||
collection.setContentMimeTypes(KolabHelpers::getContentMimeTypes(folderType)); | collection.setContentMimeTypes(KolabHelpers::getContentMimeTypes(folderType)); | ||||
const QColor color = KolabHelpers::getFolderColor(metadata); | |||||
if (color.isValid()) { | |||||
collection.attribute<Akonadi::CollectionColorAttribute>(Akonadi::Collection::AddIfMissing)->setColor(color); | |||||
} | |||||
QSet<QByteArray> keepLocalChanges = collection.keepLocalChanges(); | QSet<QByteArray> keepLocalChanges = collection.keepLocalChanges(); | ||||
keepLocalChanges.remove(cContentMimeTypes); | keepLocalChanges.remove(cContentMimeTypes); | ||||
collection.setKeepLocalChanges(keepLocalChanges); | collection.setKeepLocalChanges(keepLocalChanges); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
void KolabRetrieveCollectionsTask::onMetadataRetrieved(KJob *job) | void KolabRetrieveCollectionsTask::onMetadataRetrieved(KJob *job) | ||||
▲ Show 20 Lines • Show All 45 Lines • Show Last 20 Lines |