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