Raymond Wooninck 2015-10-12 07:26:36 +00:00 committed by Git OBS Bridge
parent f4fe90ab7d
commit 646db8e2c1

@ -1,133 +0,0 @@
diff -urNB kdepim-runtime-15.08.1/resources/imap/autotests/dummyresourcestate.cpp b/resources/imap/autotests/dummyresourcestate.cpp
--- kdepim-runtime-15.08.1/resources/imap/autotests/dummyresourcestate.cpp 2015-09-02 13:41:03.000000000 +0200
+++ b/resources/imap/autotests/dummyresourcestate.cpp 2015-09-15 21:53:04.173988388 +0200
@@ -27,7 +27,8 @@
DummyResourceState::DummyResourceState()
: m_automaticExpunge(true), m_subscriptionEnabled(true),
- m_disconnectedMode(true), m_intervalCheckTime(-1)
+ m_disconnectedMode(true), m_intervalCheckTime(-1),
+ m_mergeMode(Akonadi::ItemSync::RIDMerge)
{
qRegisterMetaType<QList<qint64> >();
qRegisterMetaType<QVector<qint64> >();
@@ -428,6 +429,11 @@
return 10;
}
+void DummyResourceState::setItemMergingMode(Akonadi::ItemSync::MergeMode mergeMode)
+{
+ m_mergeMode = mergeMode;
+}
+
MessageHelper::Ptr DummyResourceState::messageHelper() const
{
return MessageHelper::Ptr(new MessageHelper());
diff -urNB kdepim-runtime-15.08.1/resources/imap/autotests/dummyresourcestate.h b/resources/imap/autotests/dummyresourcestate.h
--- kdepim-runtime-15.08.1/resources/imap/autotests/dummyresourcestate.h 2015-09-02 13:41:03.000000000 +0200
+++ b/resources/imap/autotests/dummyresourcestate.h 2015-09-15 21:53:04.173988388 +0200
@@ -143,6 +143,7 @@
virtual void showInformationDialog(const QString &message, const QString &title, const QString &dontShowAgainName);
virtual int batchSize() const;
+ virtual void setItemMergingMode(Akonadi::ItemSync::MergeMode mergeMode);
virtual MessageHelper::Ptr messageHelper() const;
@@ -163,6 +164,8 @@
int m_intervalCheckTime;
QChar m_separator;
+ Akonadi::ItemSync::MergeMode m_mergeMode;
+
Akonadi::Collection m_collection;
Akonadi::Item::List m_items;
diff -urNB kdepim-runtime-15.08.1/resources/imap/resourcestate.cpp b/resources/imap/resourcestate.cpp
--- kdepim-runtime-15.08.1/resources/imap/resourcestate.cpp 2015-09-02 13:41:03.000000000 +0200
+++ b/resources/imap/resourcestate.cpp 2015-09-15 22:01:43.978412302 +0200
@@ -362,3 +362,9 @@
{
m_resource->relationsRetrieved(relations);
}
+
+void ResourceState::setItemMergingMode(Akonadi::ItemSync::MergeMode mode)
+{
+ m_resource->setItemMergingMode(mode);
+}
+
diff -urNB kdepim-runtime-15.08.1/resources/imap/resourcestate.h b/resources/imap/resourcestate.h
--- kdepim-runtime-15.08.1/resources/imap/resourcestate.h 2015-09-02 13:41:03.000000000 +0200
+++ b/resources/imap/resourcestate.h 2015-09-15 21:53:04.175988397 +0200
@@ -153,6 +153,8 @@
MessageHelper::Ptr messageHelper() const Q_DECL_OVERRIDE;
+ void setItemMergingMode(Akonadi::ItemSync::MergeMode mergeMode);
+
private:
ImapResourceBase *m_resource;
const TaskArguments m_arguments;
diff -urNB kdepim-runtime-15.08.1/resources/imap/resourcestateinterface.h b/resources/imap/resourcestateinterface.h
--- kdepim-runtime-15.08.1/resources/imap/resourcestateinterface.h 2015-09-02 13:41:03.000000000 +0200
+++ b/resources/imap/resourcestateinterface.h 2015-09-15 21:53:04.175988397 +0200
@@ -26,6 +26,7 @@
#include <Collection>
#include <Item>
+#include <ItemSync>
#include <kimap/listjob.h>
@@ -125,6 +126,8 @@
virtual Akonadi::Relation::List addedRelations() const = 0;
virtual Akonadi::Relation::List removedRelations() const = 0;
+
+ virtual void setItemMergingMode(Akonadi::ItemSync::MergeMode mergeMode) = 0;
};
#endif
diff -urNB kdepim-runtime-15.08.1/resources/imap/resourcetask.cpp b/resources/imap/resourcetask.cpp
--- kdepim-runtime-15.08.1/resources/imap/resourcetask.cpp 2015-09-02 13:41:03.000000000 +0200
+++ b/resources/imap/resourcetask.cpp 2015-09-15 22:02:14.109552807 +0200
@@ -591,3 +591,8 @@
}
return KIMAP::Acl::None;
}
+
+void ResourceTask::setItemMergingMode(Akonadi::ItemSync::MergeMode mode)
+{
+ m_resource->setItemMergingMode(mode);
+}
diff -urNB kdepim-runtime-15.08.1/resources/imap/resourcetask.h b/resources/imap/resourcetask.h
--- kdepim-runtime-15.08.1/resources/imap/resourcetask.h 2015-09-02 13:41:03.000000000 +0200
+++ b/resources/imap/resourcetask.h 2015-09-15 21:53:04.177988407 +0200
@@ -140,6 +140,7 @@
virtual bool serverSupportsCondstore() const;
int batchSize() const;
+ void setItemMergingMode(Akonadi::ItemSync::MergeMode mode);
ResourceStateInterface::Ptr resourceState();
diff -urNB kdepim-runtime-15.08.1/resources/imap/retrieveitemstask.cpp b/resources/imap/retrieveitemstask.cpp
--- kdepim-runtime-15.08.1/resources/imap/retrieveitemstask.cpp 2015-09-02 13:41:03.000000000 +0200
+++ b/resources/imap/retrieveitemstask.cpp 2015-09-15 21:53:04.177988407 +0200
@@ -89,6 +89,16 @@
m_session = session;
const Akonadi::Collection col = collection();
+ // Only with emails we can be sure that RID is persistent and thus we can use
+ // it for merging. For other potential content types (like Kolab events etc.)
+ // use GID instead.
+ QStringList cts = col.contentMimeTypes();
+ cts.removeOne(Akonadi::Collection::mimeType());
+ cts.removeOne(KMime::Message::mimeType());
+ if (!cts.isEmpty()) {
+ setItemMergingMode(Akonadi::ItemSync::GIDMerge);
+ }
+
if (m_fetchMissingBodies && col.cachePolicy()
.localParts().contains(QLatin1String(Akonadi::MessagePart::Body))) { //disconnected mode, make sure we really have the body cached