Branch 'kolab/integration/4.13.0' - 2 commits - akonadi/collection.cpp akonadi/collectiondialog_desktop.cpp akonadi/collection.h akonadi/collection_p.h akonadi/collectionsync.cpp akonadi/specialcollectionshelperjobs.cpp
Christian Mollekopf
mollekopf at kolabsys.com
Fri Sep 5 10:39:48 CEST 2014
akonadi/collection.cpp | 14 ++++++++++++++
akonadi/collection.h | 11 +++++++++++
akonadi/collection_p.h | 2 ++
akonadi/collectiondialog_desktop.cpp | 1 +
akonadi/collectionsync.cpp | 8 ++++----
akonadi/specialcollectionshelperjobs.cpp | 1 +
6 files changed, 33 insertions(+), 4 deletions(-)
New commits:
commit 14d6bab3c0875aad0ff0a2a2be1d4e051974de84
Author: Christian Mollekopf <chrigi_1 at fastmail.fm>
Date: Thu Sep 4 22:43:34 2014 +0200
Set a listfilter for the folder-selection.
diff --git a/akonadi/collectiondialog_desktop.cpp b/akonadi/collectiondialog_desktop.cpp
index a4bb0af..778503e 100644
--- a/akonadi/collectiondialog_desktop.cpp
+++ b/akonadi/collectiondialog_desktop.cpp
@@ -89,6 +89,7 @@ public:
EntityTreeModel *model = new EntityTreeModel(mMonitor, mParent);
model->setItemPopulationStrategy(EntityTreeModel::NoItemPopulation);
+ model->setListFilter(CollectionFetchScope::Display);
baseModel = model;
}
diff --git a/akonadi/specialcollectionshelperjobs.cpp b/akonadi/specialcollectionshelperjobs.cpp
index 1475bca..e94baaf 100644
--- a/akonadi/specialcollectionshelperjobs.cpp
+++ b/akonadi/specialcollectionshelperjobs.cpp
@@ -210,6 +210,7 @@ void ResourceScanJob::doStart()
CollectionFetchJob::Recursive, this);
fetchJob->fetchScope().setResource(d->mResourceId);
fetchJob->fetchScope().setIncludeStatistics(true);
+ fetchJob->fetchScope().setListFilter(CollectionFetchScope::Display);
connect(fetchJob, SIGNAL(result(KJob*)), this, SLOT(fetchResult(KJob*)));
}
commit 52b45af09b8bb6fa198f5d4e687b62e85ad08383
Author: Christian Mollekopf <chrigi_1 at fastmail.fm>
Date: Wed Sep 3 14:03:44 2014 +0200
Per collection setKeepLocalChanges
diff --git a/akonadi/collection.cpp b/akonadi/collection.cpp
index 701fb6a..3dc5203 100644
--- a/akonadi/collection.cpp
+++ b/akonadi/collection.cpp
@@ -350,4 +350,18 @@ bool Collection::referenced() const
return d->referenced;
}
+void Collection::setKeepLocalChanges(const QSet<QByteArray> &parts)
+{
+ Q_D(Collection);
+
+ d->keepLocalChanges = parts;
+}
+
+QSet<QByteArray> Collection::keepLocalChanges() const
+{
+ Q_D(const Collection);
+
+ return d->keepLocalChanges;
+}
+
AKONADI_DEFINE_PRIVATE(Akonadi::Collection)
diff --git a/akonadi/collection.h b/akonadi/collection.h
index 0c6d6c8..6361650 100644
--- a/akonadi/collection.h
+++ b/akonadi/collection.h
@@ -397,6 +397,17 @@ public:
*/
bool referenced() const;
+ /**
+ * Set during sync to indicate that the provided parts are only default values;
+ * @since 4.15
+ */
+ void setKeepLocalChanges(const QSet<QByteArray> &parts);
+
+ /**
+ * Returns what parts are only default values.
+ */
+ QSet<QByteArray> keepLocalChanges() const;
+
private:
AKONADI_DECLARE_PRIVATE(Collection)
friend class CollectionFetchJob;
diff --git a/akonadi/collection_p.h b/akonadi/collection_p.h
index 2a1bb53..8503047 100644
--- a/akonadi/collection_p.h
+++ b/akonadi/collection_p.h
@@ -69,6 +69,7 @@ public:
listPreferenceChanged = other.listPreferenceChanged;
referenced = other.referenced;
referencedChanged = other.referencedChanged;
+ keepLocalChanges = other.keepLocalChanges;
}
~CollectionPrivate()
@@ -116,6 +117,7 @@ public:
bool listPreferenceChanged;
bool referenced;
bool referencedChanged;
+ QSet<QByteArray> keepLocalChanges;
};
#endif
diff --git a/akonadi/collectionsync.cpp b/akonadi/collectionsync.cpp
index ff16d7f..ea70fc4 100644
--- a/akonadi/collectionsync.cpp
+++ b/akonadi/collectionsync.cpp
@@ -386,7 +386,7 @@ public:
const Collection &localCollection = localNode->collection;
const Collection &remoteCollection = remoteNode->collection;
- if (!keepLocalChanges.contains(CONTENTMIMETYPES)) {
+ if (!keepLocalChanges.contains(CONTENTMIMETYPES) && !remoteCollection.keepLocalChanges().contains(CONTENTMIMETYPES)) {
if (localCollection.contentMimeTypes().size() != remoteCollection.contentMimeTypes().size()) {
return true;
} else {
@@ -421,7 +421,7 @@ public:
// CollectionModifyJob adds the remote attributes to the local collection
foreach (const Attribute *attr, remoteCollection.attributes()) {
const Attribute *localAttr = localCollection.attribute(attr->type());
- if (localAttr && keepLocalChanges.contains(attr->type())) {
+ if (localAttr && (keepLocalChanges.contains(attr->type()) || remoteCollection.keepLocalChanges().contains(CONTENTMIMETYPES))) {
continue;
}
// The attribute must both exist and have equal contents
@@ -442,11 +442,11 @@ public:
Q_ASSERT(!upd.remoteId().isEmpty());
Q_ASSERT(currentTransaction);
upd.setId(localNode->collection.id());
- if (keepLocalChanges.contains(CONTENTMIMETYPES)) {
+ if (keepLocalChanges.contains(CONTENTMIMETYPES) || remoteNode->collection.keepLocalChanges().contains(CONTENTMIMETYPES)) {
upd.setContentMimeTypes(localNode->collection.contentMimeTypes());
}
foreach (Attribute *remoteAttr, upd.attributes()) {
- if (keepLocalChanges.contains(remoteAttr->type()) && localNode->collection.hasAttribute(remoteAttr->type())) {
+ if ((keepLocalChanges.contains(remoteAttr->type()) || remoteNode->collection.keepLocalChanges().contains(remoteAttr->type()))&& localNode->collection.hasAttribute(remoteAttr->type())) {
//We don't want to overwrite the attribute changes with the defaults provided by the resource.
Attribute *localAttr = localNode->collection.attribute(remoteAttr->type());
upd.removeAttribute(localAttr->type());
More information about the commits
mailing list