Hello community,

here is the log from the commit of package akonadi-search for openSUSE:Factory 
checked in at 2016-08-29 14:30:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/akonadi-search (Old)
 and      /work/SRC/openSUSE:Factory/.akonadi-search.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "akonadi-search"

Changes:
--------
--- /work/SRC/openSUSE:Factory/akonadi-search/akonadi-search.changes    
2016-08-08 13:57:19.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.akonadi-search.new/akonadi-search.changes       
2016-08-29 14:30:20.000000000 +0200
@@ -1,0 +2,16 @@
+Fri Aug 12 10:00:27 UTC 2016 - [email protected]
+
+- Update to KDE Applications 16.08.0
+   * KDE Applications 16.08.0
+   * https://www.kde.org/announcements/announce-applications-16.08.0.php
+
+
+-------------------------------------------------------------------
+Mon Aug  8 14:20:08 UTC 2016 - [email protected]
+
+- Update to KDE Applications 16.07.90
+   * KDE Applications 16.07.90 (16.08-RC)
+   * https://www.kde.org/announcements/announce-applications-16.07.90.php
+
+
+-------------------------------------------------------------------

Old:
----
  akonadi-search-16.04.3.tar.xz

New:
----
  akonadi-search-16.08.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ akonadi-search.spec ++++++
--- /var/tmp/diff_new_pack.X6Mx8E/_old  2016-08-29 14:30:22.000000000 +0200
+++ /var/tmp/diff_new_pack.X6Mx8E/_new  2016-08-29 14:30:22.000000000 +0200
@@ -17,15 +17,15 @@
 
 
 Name:           akonadi-search
-Version:        16.04.3
+Version:        16.08.0
 Release:        0
 Summary:        Framework for searching and managing PIM metadata
 License:        GPL-2.0+ and LGPL-2.1+ and LGPL-3.0
 Group:          System/GUI/KDE
 Url:            http://www.kde.org
 Source0:        %{name}-%{version}.tar.xz
-BuildRequires:  akonadi-mime-devel
-BuildRequires:  akonadi-server-devel
+BuildRequires:  akonadi-mime-devel = %{version}
+BuildRequires:  akonadi-server-devel = %{version}
 BuildRequires:  extra-cmake-modules >= 5.17.0
 BuildRequires:  kcalcore-devel
 BuildRequires:  kcmutils-devel >= 5.19.0

++++++ akonadi-search-16.04.3.tar.xz -> akonadi-search-16.08.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-search-16.04.3/.gitignore 
new/akonadi-search-16.08.0/.gitignore
--- old/akonadi-search-16.04.3/.gitignore       1970-01-01 01:00:00.000000000 
+0100
+++ new/akonadi-search-16.08.0/.gitignore       2016-08-06 20:08:58.000000000 
+0200
@@ -0,0 +1,3 @@
+# Ignore the following files
+/build/
+CMakeLists.txt.user*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-search-16.04.3/CMakeLists.txt 
new/akonadi-search-16.08.0/CMakeLists.txt
--- old/akonadi-search-16.04.3/CMakeLists.txt   2016-06-15 06:34:51.000000000 
+0200
+++ new/akonadi-search-16.08.0/CMakeLists.txt   2016-08-06 20:08:58.000000000 
+0200
@@ -3,7 +3,8 @@
 project(AkonadiSearch)
 
 # ECM setup
-find_package(ECM 5.17.0 REQUIRED NO_MODULE)
+set(KF5_VERSION "5.23.0")
+find_package(ECM ${KF5_VERSION} REQUIRED NO_MODULE)
 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
 
 include(GenerateExportHeader)
@@ -19,14 +20,15 @@
 include(ECMQtDeclareLoggingCategory)
 
 
-set(AKONADISEARCH_VERSION "5.2.3")
-set(KF5_VERSION "5.19.0")
+set(PIM_VERSION "5.3.0")
 
-set(AKONADI_VERSION "5.2.0")
-set(KDEPIMLIBS_LIB_VERSION "5.2.0")
-set(KCONTACTS_LIB_VERSION "5.2.0")
-set(KCALENDARCORE_LIB_VERSION "5.2.0")
-set(KMIME_LIB_VERSION "5.2.0")
+set(AKONADISEARCH_VERSION ${PIM_VERSION})
+
+set(AKONADI_VERSION "5.3.0")
+set(AKONADI_MIMELIB_VERSION "5.3.0")
+set(KCONTACTS_LIB_VERSION "5.3.0")
+set(KCALENDARCORE_LIB_VERSION "5.3.0")
+set(KMIME_LIB_VERSION "5.3.0")
 
 
 find_package(Qt5 REQUIRED NO_MODULE COMPONENTS Core Test)
@@ -43,7 +45,7 @@
 find_package(KF5Akonadi ${AKONADI_VERSION} CONFIG REQUIRED)
 find_package(KF5Contacts ${KCONTACTS_LIB_VERSION} CONFIG REQUIRED)
 find_package(KF5Mime ${KMIME_LIB_VERSION} CONFIG REQUIRED)
-find_package(KF5AkonadiMime ${KDEPIMLIBS_LIB_VERSION} CONFIG REQUIRED)
+find_package(KF5AkonadiMime ${AKONADI_MIMELIB_VERSION} CONFIG REQUIRED)
 find_package(KF5CalendarCore ${KCALENDARCORE_LIB_VERSION} CONFIG REQUIRED)
 
 ecm_setup_version(${AKONADISEARCH_VERSION}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-search-16.04.3/agent/CMakeLists.txt 
new/akonadi-search-16.08.0/agent/CMakeLists.txt
--- old/akonadi-search-16.04.3/agent/CMakeLists.txt     2016-06-15 
06:34:51.000000000 +0200
+++ new/akonadi-search-16.08.0/agent/CMakeLists.txt     2016-08-06 
20:08:58.000000000 +0200
@@ -37,6 +37,7 @@
     KF5::AkonadiAgentBase
     KF5::CalendarCore
     KF5::AkonadiSearchXapian
+    KF5::AkonadiSearchPIM
 )
 
 install(TARGETS akonadi_indexing_agent ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-search-16.04.3/agent/agent.cpp 
new/akonadi-search-16.08.0/agent/agent.cpp
--- old/akonadi-search-16.04.3/agent/agent.cpp  2016-06-15 06:34:51.000000000 
+0200
+++ new/akonadi-search-16.08.0/agent/agent.cpp  2016-08-06 20:08:58.000000000 
+0200
@@ -117,7 +117,7 @@
 
 void AkonadiIndexingAgent::reindexAll()
 {
-    //qCDebug(AKONADI_INDEXER_AGENT_LOG) << "Reindexing everything";
+    qCDebug(AKONADI_INDEXER_AGENT_LOG) << "Reindexing everything";
     m_scheduler.abort();
     m_index.removeDatabase();
     m_index.createIndexers();
@@ -126,11 +126,18 @@
 
 void AkonadiIndexingAgent::reindexCollection(const qlonglong id)
 {
-
-    //qCDebug(AKONADI_INDEXER_AGENT_LOG) << "Reindexing collection " << id;
+    qCDebug(AKONADI_INDEXER_AGENT_LOG) << "Reindexing collection " << id;
     m_scheduler.scheduleCollection(Akonadi::Collection(id), true);
 }
 
+void AkonadiIndexingAgent::reindexCollections(const QList<qlonglong> &ids)
+{
+    qCDebug(AKONADI_INDEXER_AGENT_LOG) << "Reindexing collections " << ids;
+    Q_FOREACH(qlonglong id, ids) {
+        m_scheduler.scheduleCollection(Akonadi::Collection(id), true);
+    }
+}
+
 qlonglong AkonadiIndexingAgent::indexedItems(const qlonglong id)
 {
     return m_index.indexedItems(id);
@@ -186,6 +193,7 @@
 void AkonadiIndexingAgent::collectionAdded(const Akonadi::Collection 
&collection,
                                            const Akonadi::Collection &parent)
 {
+    Q_UNUSED(parent);
     m_index.index(collection);
     m_index.scheduleCommit();
 }
@@ -222,6 +230,9 @@
                                            const Akonadi::Collection 
&collectionSource,
                                            const Akonadi::Collection 
&collectionDestination)
 {
+    Q_UNUSED(collectionSource);
+    Q_UNUSED(collectionDestination);
+
     m_index.remove(collection);
     CollectionUpdateJob *job = new CollectionUpdateJob(m_index, collection, 
this);
     job->start();
@@ -233,6 +244,11 @@
     Akonadi::AgentBase::cleanup();
 }
 
+int AkonadiIndexingAgent::numberOfCollectionQueued()
+{
+    return m_scheduler.numberOfCollectionQueued();
+}
+
 void AkonadiIndexingAgent::onAbortRequested()
 {
     KConfig config(QStringLiteral("baloorc"));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-search-16.04.3/agent/agent.h 
new/akonadi-search-16.08.0/agent/agent.h
--- old/akonadi-search-16.04.3/agent/agent.h    2016-06-15 06:34:51.000000000 
+0200
+++ new/akonadi-search-16.08.0/agent/agent.h    2016-08-06 20:08:58.000000000 
+0200
@@ -51,7 +51,9 @@
 
     void reindexAll();
     void reindexCollection(const qlonglong id);
+    void reindexCollections(const QList<qlonglong> &ids);
     qlonglong indexedItems(const qlonglong id);
+    int numberOfCollectionQueued();
 
     void itemAdded(const Akonadi::Item &item, const Akonadi::Collection 
&collection) Q_DECL_OVERRIDE;
     void itemChanged(const Akonadi::Item &item, const QSet<QByteArray> 
&partIdentifiers) Q_DECL_OVERRIDE;
@@ -72,6 +74,7 @@
     // Remove the entire db
     void cleanup() Q_DECL_OVERRIDE;
 
+
 private Q_SLOTS:
     void onAbortRequested();
     void onOnlineChanged(bool online);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/akonadi-search-16.04.3/agent/autotests/unittestenv/xdgconfig/kdebugrc 
new/akonadi-search-16.08.0/agent/autotests/unittestenv/xdgconfig/kdebugrc
--- old/akonadi-search-16.04.3/agent/autotests/unittestenv/xdgconfig/kdebugrc   
2016-06-15 06:34:51.000000000 +0200
+++ new/akonadi-search-16.08.0/agent/autotests/unittestenv/xdgconfig/kdebugrc   
1970-01-01 01:00:00.000000000 +0100
@@ -1,80 +0,0 @@
-DisableAll=false
-
-[0]
-AbortFatal=true
-ErrorFilename[$e]=kdebug.dbg
-ErrorOutput=2
-FatalFilename[$e]=kdebug.dbg
-FatalOutput=2
-InfoFilename[$e]=kdebug.dbg
-InfoOutput=2
-WarnFilename[$e]=kdebug.dbg
-WarnOutput=2
-
-[264]
-AbortFatal=true
-ErrorFilename[$e]=kdebug.dbg
-ErrorOutput=4
-FatalFilename[$e]=kdebug.dbg
-FatalOutput=4
-InfoFilename[$e]=kdebug.dbg
-WarnFilename[$e]=kdebug.dbg
-WarnOutput=4
-
-[5250]
-InfoOutput=2
-
-[7009]
-AbortFatal=true
-ErrorFilename[$e]=kdebug.dbg
-ErrorOutput=4
-FatalFilename[$e]=kdebug.dbg
-FatalOutput=4
-InfoFilename[$e]=kdebug.dbg
-InfoOutput=4
-WarnFilename[$e]=kdebug.dbg
-WarnOutput=4
-
-[7011]
-AbortFatal=true
-ErrorFilename[$e]=kdebug.dbg
-ErrorOutput=4
-FatalFilename[$e]=kdebug.dbg
-FatalOutput=4
-InfoFilename[$e]=kdebug.dbg
-InfoOutput=4
-WarnFilename[$e]=kdebug.dbg
-WarnOutput=4
-
-[7012]
-AbortFatal=true
-ErrorFilename[$e]=kdebug.dbg
-ErrorOutput=4
-FatalFilename[$e]=kdebug.dbg
-FatalOutput=4
-InfoFilename[$e]=kdebug.dbg
-InfoOutput=4
-WarnFilename[$e]=kdebug.dbg
-WarnOutput=4
-
-[7014]
-AbortFatal=true
-ErrorFilename[$e]=kdebug.dbg
-ErrorOutput=0
-FatalFilename[$e]=kdebug.dbg
-FatalOutput=0
-InfoFilename[$e]=kdebug.dbg
-InfoOutput=0
-WarnFilename[$e]=kdebug.dbg
-WarnOutput=0
-
-[7021]
-AbortFatal=true
-ErrorFilename[$e]=kdebug.dbg
-ErrorOutput=4
-FatalFilename[$e]=kdebug.dbg
-FatalOutput=4
-InfoFilename[$e]=kdebug.dbg
-InfoOutput=4
-WarnFilename[$e]=kdebug.dbg
-WarnOutput=4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/akonadi-search-16.04.3/agent/autotests/unittestenv/xdgconfig/kdedrc 
new/akonadi-search-16.08.0/agent/autotests/unittestenv/xdgconfig/kdedrc
--- old/akonadi-search-16.04.3/agent/autotests/unittestenv/xdgconfig/kdedrc     
2016-06-15 06:34:51.000000000 +0200
+++ new/akonadi-search-16.08.0/agent/autotests/unittestenv/xdgconfig/kdedrc     
1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-[General]
-CheckSycoca=false
-CheckFileStamps=false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-search-16.04.3/agent/calendarindexer.cpp 
new/akonadi-search-16.08.0/agent/calendarindexer.cpp
--- old/akonadi-search-16.04.3/agent/calendarindexer.cpp        2016-06-15 
06:34:51.000000000 +0200
+++ new/akonadi-search-16.08.0/agent/calendarindexer.cpp        2016-08-06 
20:08:58.000000000 +0200
@@ -163,14 +163,19 @@
 void CalendarIndexer::indexJournalItem(const Akonadi::Item &item, const 
KCalCore::Journal::Ptr &journal)
 {
     //TODO
+    Q_UNUSED(item);
+    Q_UNUSED(journal);
 }
 
 void CalendarIndexer::indexTodoItem(const Akonadi::Item &item, const 
KCalCore::Todo::Ptr &todo)
 {
     //TODO
+    Q_UNUSED(item);
+    Q_UNUSED(todo);
 }
 
 void CalendarIndexer::updateIncidenceItem(const KCalCore::Incidence::Ptr 
&calInc)
 {
     //TODO
+    Q_UNUSED(calInc);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-search-16.04.3/agent/collectionindexer.cpp 
new/akonadi-search-16.08.0/agent/collectionindexer.cpp
--- old/akonadi-search-16.04.3/agent/collectionindexer.cpp      2016-06-15 
06:34:51.000000000 +0200
+++ new/akonadi-search-16.08.0/agent/collectionindexer.cpp      2016-08-06 
20:08:58.000000000 +0200
@@ -23,10 +23,6 @@
 #include <QString>
 #include <QStringList>
 #include <xapian.h>
-#include <xapian/database.h>
-#include <xapian/query.h>
-#include <xapian/enquire.h>
-#include <xapian/termgenerator.h>
 #include <AkonadiCore/collectionidentificationattribute.h>
 #include <AkonadiCore/AttributeFactory>
 #include <xapiandocument.h>
@@ -159,6 +155,8 @@
                              const Akonadi::Collection &from,
                              const Akonadi::Collection &to)
 {
+    Q_UNUSED(from);
+    Q_UNUSED(to);
     index(collection);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/akonadi-search-16.04.3/agent/collectionindexingjob.cpp 
new/akonadi-search-16.08.0/agent/collectionindexingjob.cpp
--- old/akonadi-search-16.04.3/agent/collectionindexingjob.cpp  2016-06-15 
06:34:51.000000000 +0200
+++ new/akonadi-search-16.08.0/agent/collectionindexingjob.cpp  2016-08-06 
20:08:58.000000000 +0200
@@ -94,6 +94,7 @@
 
 void CollectionIndexingJob::indexItems(const QList<Akonadi::Item::Id> &itemIds)
 {
+    qCDebug(AKONADI_INDEXER_AGENT_LOG) << 
"collectionIndexingJob::indexItems(const QList<Akonadi::Item::Id> &itemIds) 
count " << itemIds.count();
     Akonadi::Item::List items;
     items.reserve(itemIds.size());
     Q_FOREACH (const Akonadi::Item::Id id, itemIds) {
@@ -121,7 +122,9 @@
 
 void CollectionIndexingJob::slotPendingItemsReceived(const Akonadi::Item::List 
&items)
 {
+    qCDebug(AKONADI_INDEXER_AGENT_LOG)<<" 
CollectionIndexingJob::slotPendingItemsReceived " <<items.count();
     Q_FOREACH (const Akonadi::Item &item, items) {
+         qCDebug(AKONADI_INDEXER_AGENT_LOG)<<" void 
CollectionIndexingJob::slotPendingItemsReceived(const Akonadi::Item::List 
&items)"<<item.id();
         m_index.index(item);
     }
     m_progressCounter++;
@@ -130,6 +133,7 @@
 
 void CollectionIndexingJob::slotPendingIndexed(KJob *job)
 {
+    qCDebug(AKONADI_INDEXER_AGENT_LOG)<<" 
CollectionIndexingJob::slotPendingIndexed ";
     if (job->error()) {
         qCWarning(AKONADI_INDEXER_AGENT_LOG) << "Failed to fetch items: " << 
job->errorString();
         setError(KJob::UserDefinedError);
@@ -152,11 +156,14 @@
     const qlonglong indexedItemsCount = 
m_index.indexedItems(m_collection.id());
     qCDebug(AKONADI_INDEXER_AGENT_LOG) << "Indexed items count took (ms): " << 
m_time.elapsed() - start;
     qCDebug(AKONADI_INDEXER_AGENT_LOG) << "In index: " << indexedItemsCount;
-    qCDebug(AKONADI_INDEXER_AGENT_LOG) << "In collection: " << 
m_collection.statistics().count();
+    qCDebug(AKONADI_INDEXER_AGENT_LOG) << "Number of Items in collection: " << 
m_collection.statistics().count() << " In collection "<< m_collection.id();
+    
     if (m_collection.statistics().count() == indexedItemsCount) {
         qCDebug(AKONADI_INDEXER_AGENT_LOG) << "Index up to date";
         emitResult();
         return;
+    } else {
+       qCDebug(AKONADI_INDEXER_AGENT_LOG) << "Need to find unindexed items";
     }
 
     findUnindexed();
@@ -168,7 +175,7 @@
     m_needsIndexing.clear();
     const int start = m_time.elapsed();
     m_index.findIndexed(m_indexedItems, m_collection.id());
-    qCDebug(AKONADI_INDEXER_AGENT_LOG) << "Found " << m_indexedItems.size() << 
" indexed items. Took (ms): " << m_time.elapsed() - start;
+    qCDebug(AKONADI_INDEXER_AGENT_LOG) << "Found " << m_indexedItems.size() << 
" indexed items. Took (ms): " << m_time.elapsed() - start << " collection id 
:"<<m_collection.id();
 
     Akonadi::ItemFetchJob *job = new Akonadi::ItemFetchJob(m_collection, this);
     job->fetchScope().fetchFullPayload(false);
@@ -187,6 +194,7 @@
 
 void CollectionIndexingJob::slotUnindexedItemsReceived(const 
Akonadi::Item::List &items)
 {
+    //qCDebug(AKONADI_INDEXER_AGENT_LOG) << 
"CollectionIndexingJob::slotUnindexedItemsReceived found number items 
:"<<items.count();
     Q_FOREACH (const Akonadi::Item &item, items) {
         if (!m_indexedItems.remove(item.id())) {
             m_needsIndexing << item.id();
@@ -196,6 +204,7 @@
 
 void CollectionIndexingJob::slotFoundUnindexed(KJob *job)
 {
+    qCDebug(AKONADI_INDEXER_AGENT_LOG) << 
"CollectionIndexingJob::slotFoundUnindexed :m_needsIndexing.isEmpty() : " << 
m_needsIndexing.isEmpty() << " count :"<< m_needsIndexing.count() << " 
m_reindexingLock :"<<m_reindexingLock << "m_collection.id() 
"<<m_collection.id();
     if (job->error()) {
         qCWarning(AKONADI_INDEXER_AGENT_LOG) << "Failed to fetch items: " << 
job->errorString();
         setError(KJob::UserDefinedError);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-search-16.04.3/agent/emailindexer.cpp 
new/akonadi-search-16.08.0/agent/emailindexer.cpp
--- old/akonadi-search-16.04.3/agent/emailindexer.cpp   2016-06-15 
06:34:51.000000000 +0200
+++ new/akonadi-search-16.08.0/agent/emailindexer.cpp   2016-08-06 
20:08:58.000000000 +0200
@@ -74,6 +74,7 @@
 
 void EmailIndexer::index(const Akonadi::Item &item)
 {
+    qCDebug(AKONADI_INDEXER_AGENT_LOG) << "Indexing item" << item.id();
     if (!m_db) {
         return;
     }
@@ -116,6 +117,7 @@
 
     m_doc = 0;
     m_termGen = 0;
+    qCDebug(AKONADI_INDEXER_AGENT_LOG) << "DONE Indexing item" << item.id();
 }
 
 void EmailIndexer::insert(const QByteArray &key, KMime::Headers::Base 
*unstructured)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-search-16.04.3/agent/index.cpp 
new/akonadi-search-16.08.0/agent/index.cpp
--- old/akonadi-search-16.04.3/agent/index.cpp  2016-06-15 06:34:51.000000000 
+0200
+++ new/akonadi-search-16.08.0/agent/index.cpp  2016-08-06 20:08:58.000000000 
+0200
@@ -24,18 +24,19 @@
 #include "contactindexer.h"
 #include "akonotesindexer.h"
 #include "calendarindexer.h"
+
+#include "indexeditems.h"
 #include <AkonadiCore/ServerManager>
 #include <QDir>
 #include <QStandardPaths>
-#include <xapian/error.h>
-#include <xapian/database.h>
-#include <xapian/query.h>
-#include <xapian/enquire.h>
+#include <xapian.h>
 
+using namespace Akonadi::Search::PIM;
 Index::Index(QObject *parent)
     : QObject(parent),
       m_collectionIndexer(Q_NULLPTR)
 {
+    m_indexedItems = new IndexedItems(this);
     m_commitTimer.setInterval(1000);
     m_commitTimer.setSingleShot(true);
     connect(&m_commitTimer, &QTimer::timeout, this, &Index::commit);
@@ -72,12 +73,12 @@
     m_indexer.clear();
 
     qCDebug(AKONADI_INDEXER_AGENT_LOG) << "Removing database";
-    removeDir(emailIndexingPath());
-    removeDir(contactIndexingPath());
-    removeDir(emailContactsIndexingPath());
-    removeDir(akonotesIndexingPath());
-    removeDir(calendarIndexingPath());
-    removeDir(collectionIndexingPath());
+    removeDir(m_indexedItems->emailIndexingPath());
+    removeDir(m_indexedItems->contactIndexingPath());
+    removeDir(m_indexedItems->emailContactsIndexingPath());
+    removeDir(m_indexedItems->akonotesIndexingPath());
+    removeDir(m_indexedItems->calendarIndexingPath());
+    removeDir(m_indexedItems->collectionIndexingPath());
 }
 
 AbstractIndexer *Index::indexerForItem(const Akonadi::Item &item) const
@@ -106,6 +107,7 @@
 {
     AbstractIndexer *indexer = indexerForItem(item);
     if (!indexer) {
+        qCWarning(AKONADI_INDEXER_AGENT_LOG) << " No indexer found for item";
         return;
     }
 
@@ -233,9 +235,9 @@
 {
     AbstractIndexer *indexer = Q_NULLPTR;
     try {
-        QDir().mkpath(emailIndexingPath());
-        QDir().mkpath(emailContactsIndexingPath());
-        indexer = new EmailIndexer(emailIndexingPath(), 
emailContactsIndexingPath());
+        QDir().mkpath(m_indexedItems->emailIndexingPath());
+        QDir().mkpath(m_indexedItems->emailContactsIndexingPath());
+        indexer = new EmailIndexer(m_indexedItems->emailIndexingPath(), 
m_indexedItems->emailContactsIndexingPath());
         addIndexer(indexer);
     } catch (const Xapian::DatabaseError &e) {
         delete indexer;
@@ -246,8 +248,8 @@
     }
 
     try {
-        QDir().mkpath(contactIndexingPath());
-        indexer = new ContactIndexer(contactIndexingPath());
+        QDir().mkpath(m_indexedItems->contactIndexingPath());
+        indexer = new ContactIndexer(m_indexedItems->contactIndexingPath());
         addIndexer(indexer);
     } catch (const Xapian::DatabaseError &e) {
         delete indexer;
@@ -258,8 +260,8 @@
     }
 
     try {
-        QDir().mkpath(akonotesIndexingPath());
-        indexer = new AkonotesIndexer(akonotesIndexingPath());
+        QDir().mkpath(m_indexedItems->akonotesIndexingPath());
+        indexer = new AkonotesIndexer(m_indexedItems->akonotesIndexingPath());
         addIndexer(indexer);
     } catch (const Xapian::DatabaseError &e) {
         delete indexer;
@@ -270,8 +272,8 @@
     }
 
     try {
-        QDir().mkpath(calendarIndexingPath());
-        indexer = new CalendarIndexer(calendarIndexingPath());
+        QDir().mkpath(m_indexedItems->calendarIndexingPath());
+        indexer = new CalendarIndexer(m_indexedItems->calendarIndexingPath());
         addIndexer(indexer);
     } catch (const Xapian::DatabaseError &e) {
         delete indexer;
@@ -282,8 +284,8 @@
     }
 
     try {
-        QDir().mkpath(collectionIndexingPath());
-        m_collectionIndexer = new CollectionIndexer(collectionIndexingPath());
+        QDir().mkpath(m_indexedItems->collectionIndexingPath());
+        m_collectionIndexer = new 
CollectionIndexer(m_indexedItems->collectionIndexingPath());
     } catch (const Xapian::DatabaseError &e) {
         delete m_collectionIndexer;
         m_collectionIndexer = Q_NULLPTR;
@@ -316,118 +318,17 @@
     }
 }
 
-void Index::findIndexedInDatabase(QSet<Akonadi::Item::Id> &indexed, 
Akonadi::Collection::Id collectionId, const QString &dbPath)
-{
-    Xapian::Database db;
-    try {
-        db = Xapian::Database(QFile::encodeName(dbPath).constData());
-    } catch (const Xapian::DatabaseError &e) {
-        qCCritical(AKONADI_INDEXER_AGENT_LOG) << "Failed to open database" << 
dbPath << ":" << QString::fromStdString(e.get_msg());
-        return;
-    }
-    const std::string term = 
QString::fromLatin1("C%1").arg(collectionId).toStdString();
-    Xapian::Query query(term);
-    Xapian::Enquire enquire(db);
-    enquire.set_query(query);
-
-    Xapian::MSet mset = enquire.get_mset(0, UINT_MAX);
-    Xapian::MSetIterator it = mset.begin();
-    for (; it != mset.end(); it++) {
-        indexed << *it;
-    }
-}
-
 void Index::findIndexed(QSet<Akonadi::Item::Id> &indexed, 
Akonadi::Collection::Id collectionId)
 {
-    findIndexedInDatabase(indexed, collectionId, emailIndexingPath());
-    findIndexedInDatabase(indexed, collectionId, contactIndexingPath());
-    findIndexedInDatabase(indexed, collectionId, akonotesIndexingPath());
-    findIndexedInDatabase(indexed, collectionId, calendarIndexingPath());
+    m_indexedItems->findIndexed(indexed, collectionId);
 }
 
 qlonglong Index::indexedItems(const qlonglong id)
 {
-    const std::string term = QString::fromLatin1("C%1").arg(id).toStdString();
-    return indexedItemsInDatabase(term, emailIndexingPath())
-           + indexedItemsInDatabase(term, contactIndexingPath())
-           + indexedItemsInDatabase(term, akonotesIndexingPath())
-           + indexedItemsInDatabase(term, calendarIndexingPath());
-}
-
-qlonglong Index::indexedItemsInDatabase(const std::string &term, const QString 
&dbPath) const
-{
-    Xapian::Database db;
-    try {
-        db = Xapian::Database(QFile::encodeName(dbPath).constData());
-    } catch (const Xapian::DatabaseError &e) {
-        qCCritical(AKONADI_INDEXER_AGENT_LOG) << "Failed to open database" << 
dbPath << ":" << QString::fromStdString(e.get_msg());
-        return 0;
-    }
-    return db.get_termfreq(term);
+    return m_indexedItems->indexedItems(id);
 }
 
 void Index::setOverrideDbPrefixPath(const QString &path)
 {
-    m_overridePrefixPath = path;
-}
-
-QString Index::dbPath(const QString &dbName) const
-{
-    if (!m_overridePrefixPath.isEmpty()) {
-        return QString::fromLatin1("%1/%2/").arg(m_overridePrefixPath, dbName);
-    }
-
-    // First look into the old location from Baloo times in 
~/.local/share/baloo,
-    // because we don't migrate the database files automatically.
-    QString basePath;
-    if (Akonadi::ServerManager::hasInstanceIdentifier()) {
-        basePath = 
QStringLiteral("baloo/instances/%1").arg(Akonadi::ServerManager::instanceIdentifier());
-    } else {
-        basePath = QStringLiteral("baloo");
-    }
-    QString dbPath = 
QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + 
QStringLiteral("/%1/%2/").arg(basePath, dbName);
-    if (QDir(dbPath).exists()) {
-        return dbPath;
-    }
-
-    // If the database does not exist in old Baloo folders, than use the new
-    // location in Akonadi's datadir in ~/.local/share/akonadi/search_db.
-    if (Akonadi::ServerManager::hasInstanceIdentifier()) {
-        basePath = 
QStringLiteral("akonadi/instance/%1/search_db").arg(Akonadi::ServerManager::instanceIdentifier());
-    } else {
-        basePath = QStringLiteral("akonadi/search_db");
-    }
-    dbPath = 
QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + 
QStringLiteral("/%1/%2/").arg(basePath, dbName);
-    QDir().mkpath(dbPath);
-    return dbPath;
-}
-
-QString Index::emailIndexingPath() const
-{
-    return dbPath(QStringLiteral("email"));
-}
-
-QString Index::contactIndexingPath() const
-{
-    return dbPath(QStringLiteral("contacts"));
-}
-
-QString Index::emailContactsIndexingPath() const
-{
-    return dbPath(QStringLiteral("emailContacts"));
-}
-
-QString Index::akonotesIndexingPath() const
-{
-    return dbPath(QStringLiteral("notes"));
-}
-
-QString Index::calendarIndexingPath() const
-{
-    return dbPath(QStringLiteral("calendars"));
-}
-
-QString Index::collectionIndexingPath() const
-{
-    return dbPath(QStringLiteral("collections"));
+    m_indexedItems->setOverrideDbPrefixPath(path);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-search-16.04.3/agent/index.h 
new/akonadi-search-16.08.0/agent/index.h
--- old/akonadi-search-16.04.3/agent/index.h    2016-06-15 06:34:51.000000000 
+0200
+++ new/akonadi-search-16.08.0/agent/index.h    2016-08-06 20:08:58.000000000 
+0200
@@ -28,7 +28,16 @@
 #include <AkonadiCore/item.h>
 #include "abstractindexer.h"
 #include "collectionindexer.h"
-
+namespace Akonadi
+{
+namespace Search
+{
+namespace PIM
+{
+class IndexedItems;
+}
+}
+}
 /**
  * Maintains the variuous indexers and databases
  */
@@ -74,20 +83,10 @@
     void addIndexer(AbstractIndexer *indexer);
     AbstractIndexer *indexerForItem(const Akonadi::Item &item) const;
     QList<AbstractIndexer *> indexersForMimetypes(const QStringList 
&mimeTypes) const;
-    virtual qlonglong indexedItemsInDatabase(const std::string &term, const 
QString &dbPath) const;
-    virtual void findIndexedInDatabase(QSet<Akonadi::Item::Id> &indexed, 
Akonadi::Collection::Id collectionId, const QString &dbPath);
-
-    QString dbPath(const QString &dbName) const;
-    QString emailIndexingPath() const;
-    QString contactIndexingPath() const;
-    QString emailContactsIndexingPath() const;
-    QString akonotesIndexingPath() const;
-    QString calendarIndexingPath() const;
-    QString collectionIndexingPath() const;
-    QString m_overridePrefixPath;
 
     QList<AbstractIndexer *> m_listIndexer;
     QHash<QString, AbstractIndexer *> m_indexer;
+    Akonadi::Search::PIM::IndexedItems *m_indexedItems;
     QTimer m_commitTimer;
     CollectionIndexer *m_collectionIndexer;
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/akonadi-search-16.04.3/agent/org.freedesktop.Akonadi.Indexer.xml 
new/akonadi-search-16.08.0/agent/org.freedesktop.Akonadi.Indexer.xml
--- old/akonadi-search-16.04.3/agent/org.freedesktop.Akonadi.Indexer.xml        
2016-06-15 06:34:51.000000000 +0200
+++ new/akonadi-search-16.08.0/agent/org.freedesktop.Akonadi.Indexer.xml        
2016-08-06 20:08:58.000000000 +0200
@@ -10,5 +10,13 @@
             <arg name="item" type="x" direction="in"/>
             <arg type="x" direction="out"/>
         </method>
+        <method name="numberOfCollectionQueued" >
+           <arg type="i" direction="out"/>
+        </method>
+        <method name="reindexCollections">
+          <arg name="ids" type="ax" direction="in"/>
+          <annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="const 
QList&lt;qlonglong&gt; &amp;"/>
+        </method>
+
     </interface>
 </node>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-search-16.04.3/agent/scheduler.cpp 
new/akonadi-search-16.08.0/agent/scheduler.cpp
--- old/akonadi-search-16.04.3/agent/scheduler.cpp      2016-06-15 
06:34:51.000000000 +0200
+++ new/akonadi-search-16.08.0/agent/scheduler.cpp      2016-08-06 
20:08:58.000000000 +0200
@@ -87,13 +87,19 @@
     m_busyTimeout = timeout;
 }
 
+int Scheduler::numberOfCollectionQueued() const
+{
+    return m_collectionQueue.count();
+}
+
 void Scheduler::collectDirtyCollections()
 {
     KConfig 
config(Akonadi::ServerManager::addNamespace(QStringLiteral("baloorc")));
     KConfigGroup group = config.group("Akonadi");
     //Store collections where we did not manage to index all, we'll need to do 
a full sync for them the next time
-    QHash<Akonadi::Collection::Id, QQueue<Akonadi::Item::Id>>::iterator it = 
m_queues.begin();
-    for (; it != m_queues.end(); it++) {
+    QHash<Akonadi::Collection::Id, QQueue<Akonadi::Item::Id>>::ConstIterator 
it = m_queues.constBegin();
+    QHash<Akonadi::Collection::Id, QQueue<Akonadi::Item::Id>>::ConstIterator 
end = m_queues.constEnd();
+    for (; it != end; ++it) {
         if (!it.value().isEmpty()) {
             m_dirtyCollections.insert(it.key());
         }
@@ -236,7 +242,9 @@
     if (job->error()) {
         qCWarning(AKONADI_INDEXER_AGENT_LOG) << "Indexing failed: " << 
job->errorString();
     } else {
-        
m_dirtyCollections.remove(job->property("collection").value<Akonadi::Collection::Id>());
+        const Akonadi::Collection::Id collectionId = 
job->property("collection").value<Akonadi::Collection::Id>();
+        m_dirtyCollections.remove(collectionId);
+        status(Akonadi::AgentBase::Idle, i18n("Collection \"%1\" indexed", 
collectionId));
     }
     m_currentJob = 0;
     m_processTimer.start();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-search-16.04.3/agent/scheduler.h 
new/akonadi-search-16.08.0/agent/scheduler.h
--- old/akonadi-search-16.04.3/agent/scheduler.h        2016-06-15 
06:34:51.000000000 +0200
+++ new/akonadi-search-16.08.0/agent/scheduler.h        2016-08-06 
20:08:58.000000000 +0200
@@ -63,6 +63,8 @@
      */
     void setBusyTimeout(int);
 
+    int numberOfCollectionQueued() const;
+
 Q_SIGNALS:
     void status(int status, const QString &message = QString());
     void percent(int);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-search-16.04.3/akonadi-search.categories 
new/akonadi-search-16.08.0/akonadi-search.categories
--- old/akonadi-search-16.04.3/akonadi-search.categories        2016-06-15 
06:34:51.000000000 +0200
+++ new/akonadi-search-16.08.0/akonadi-search.categories        2016-08-06 
20:08:58.000000000 +0200
@@ -2,3 +2,4 @@
 log_akonadiplugin_indexer (akonadi plugin indexer)
 log_akonadi_search_xapian (akonadi indexer xapian)
 log_akonadi_krunner_plugin (akonadi plugin krunner)
+log_akonadi_search_pim (akonadi pim lib)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-search-16.04.3/lib/CMakeLists.txt 
new/akonadi-search-16.08.0/lib/CMakeLists.txt
--- old/akonadi-search-16.04.3/lib/CMakeLists.txt       2016-06-15 
06:34:51.000000000 +0200
+++ new/akonadi-search-16.08.0/lib/CMakeLists.txt       2016-08-06 
20:08:58.000000000 +0200
@@ -11,10 +11,13 @@
     notequery.cpp
     contactcompleter.cpp
     collectionquery.cpp
+    indexeditems.cpp
 
     ../search/email/agepostingsource.cpp
 )
 
+ecm_qt_declare_logging_category(AKONADI_SEARCH_PIM_LIB_SRCS HEADER 
akonadi_search_pim_debug.h IDENTIFIER AKONADI_SEARCH_PIM_LOG CATEGORY_NAME 
log_akonadi_search_pim)
+
 add_library(KF5AkonadiSearchPIM ${AKONADI_SEARCH_PIM_LIB_SRCS})
 add_library(KF5::AkonadiSearchPIM ALIAS KF5AkonadiSearchPIM)
 
@@ -46,6 +49,7 @@
     contactcompleter.h
     notequery.h
     collectionquery.h
+    indexeditems.h
 
     resultiterator.h
     ${CMAKE_CURRENT_BINARY_DIR}/search_pim_export.h
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-search-16.04.3/lib/indexeditems.cpp 
new/akonadi-search-16.08.0/lib/indexeditems.cpp
--- old/akonadi-search-16.04.3/lib/indexeditems.cpp     1970-01-01 
01:00:00.000000000 +0100
+++ new/akonadi-search-16.08.0/lib/indexeditems.cpp     2016-08-06 
20:08:58.000000000 +0200
@@ -0,0 +1,237 @@
+/*
+ * This file is part of the KDE Akonadi Search Project
+ * Copyright (C) 2016 Laurent Montel <[email protected]>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) version 3, or any
+ * later version accepted by the membership of KDE e.V. (or its
+ * successor approved by the membership of KDE e.V.), which shall
+ * act as a proxy defined in Section 6 of version 3 of the license.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library.  If not, see 
<http://www.gnu.org/licenses/>.
+ *
+ */
+#include "indexeditems.h"
+#include "akonadi_search_pim_debug.h"
+#include <QStandardPaths>
+#include <QHash>
+#include <QDir>
+#include <AkonadiCore/ServerManager>
+#include <xapian.h>
+
+
+using namespace Akonadi::Search::PIM;
+
+class Akonadi::Search::PIM::IndexedItemsPrivate
+{
+public:
+    IndexedItemsPrivate()
+    {
+
+    }
+    QString dbPath(const QString &dbName) const;
+    QString emailIndexingPath() const;
+    QString collectionIndexingPath() const;
+    QString calendarIndexingPath() const;
+    QString akonotesIndexingPath() const;
+    QString emailContactsIndexingPath() const;
+    QString contactIndexingPath() const;
+
+    mutable QHash<QString, QString> m_cachePath;
+    QString m_overridePrefixPath;
+    qlonglong indexedItems(const qlonglong id);
+    qlonglong indexedItemsInDatabase(const std::string &term, const QString 
&dbPath) const;
+    void findIndexedInDatabase(QSet<Akonadi::Item::Id> &indexed, 
Akonadi::Collection::Id collectionId, const QString &dbPath);
+    void findIndexed(QSet<Akonadi::Item::Id> &indexed, Akonadi::Collection::Id 
collectionId);
+};
+
+
+QString IndexedItemsPrivate::dbPath(const QString &dbName) const
+{
+    const QString cachedPath = m_cachePath.value(dbName);
+    if (!cachedPath.isEmpty()) {
+        return cachedPath;
+    }
+    if (!m_overridePrefixPath.isEmpty()) {
+        const QString path = 
QString::fromLatin1("%1/%2/").arg(m_overridePrefixPath, dbName);
+        m_cachePath.insert(dbName, path);
+        return path;
+    }
+
+    // First look into the old location from Baloo times in 
~/.local/share/baloo,
+    // because we don't migrate the database files automatically.
+    QString basePath;
+    if (Akonadi::ServerManager::hasInstanceIdentifier()) {
+        basePath = 
QStringLiteral("baloo/instances/%1").arg(Akonadi::ServerManager::instanceIdentifier());
+    } else {
+        basePath = QStringLiteral("baloo");
+    }
+    QString dbPath = 
QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + 
QStringLiteral("/%1/%2/").arg(basePath, dbName);
+    if (QDir(dbPath).exists()) {
+        m_cachePath.insert(dbName, dbPath);
+        return dbPath;
+    }
+
+    // If the database does not exist in old Baloo folders, than use the new
+    // location in Akonadi's datadir in ~/.local/share/akonadi/search_db.
+    if (Akonadi::ServerManager::hasInstanceIdentifier()) {
+        basePath = 
QStringLiteral("akonadi/instance/%1/search_db").arg(Akonadi::ServerManager::instanceIdentifier());
+    } else {
+        basePath = QStringLiteral("akonadi/search_db");
+    }
+    dbPath = 
QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + 
QStringLiteral("/%1/%2/").arg(basePath, dbName);
+    QDir().mkpath(dbPath);
+    m_cachePath.insert(dbName, dbPath);
+    return dbPath;
+}
+
+QString IndexedItemsPrivate::emailIndexingPath() const
+{
+    return dbPath(QStringLiteral("email"));
+}
+
+QString IndexedItemsPrivate::contactIndexingPath() const
+{
+    return dbPath(QStringLiteral("contacts"));
+}
+
+QString IndexedItemsPrivate::emailContactsIndexingPath() const
+{
+    return dbPath(QStringLiteral("emailContacts"));
+}
+
+QString IndexedItemsPrivate::akonotesIndexingPath() const
+{
+    return dbPath(QStringLiteral("notes"));
+}
+
+QString IndexedItemsPrivate::calendarIndexingPath() const
+{
+    return dbPath(QStringLiteral("calendars"));
+}
+
+QString IndexedItemsPrivate::collectionIndexingPath() const
+{
+    return dbPath(QStringLiteral("collections"));
+}
+
+qlonglong IndexedItemsPrivate::indexedItemsInDatabase(const std::string &term, 
const QString &dbPath) const
+{
+    Xapian::Database db;
+    try {
+        db = Xapian::Database(QFile::encodeName(dbPath).constData());
+    } catch (const Xapian::DatabaseError &e) {
+        qCCritical(AKONADI_SEARCH_PIM_LOG) << "Failed to open database" << 
dbPath << ":" << QString::fromStdString(e.get_msg());
+        return 0;
+    }
+    return db.get_termfreq(term);
+}
+
+qlonglong IndexedItemsPrivate::indexedItems(const qlonglong id)
+{
+    const std::string term = QString::fromLatin1("C%1").arg(id).toStdString();
+    return indexedItemsInDatabase(term, emailIndexingPath())
+           + indexedItemsInDatabase(term, contactIndexingPath())
+           + indexedItemsInDatabase(term, akonotesIndexingPath())
+           + indexedItemsInDatabase(term, calendarIndexingPath());
+}
+
+void IndexedItemsPrivate::findIndexedInDatabase(QSet<Akonadi::Item::Id> 
&indexed, Akonadi::Collection::Id collectionId, const QString &dbPath)
+{
+    Xapian::Database db;
+    try {
+        db = Xapian::Database(QFile::encodeName(dbPath).constData());
+    } catch (const Xapian::DatabaseError &e) {
+        qCCritical(AKONADI_SEARCH_PIM_LOG) << "Failed to open database" << 
dbPath << ":" << QString::fromStdString(e.get_msg());
+        return;
+    }
+    const std::string term = 
QString::fromLatin1("C%1").arg(collectionId).toStdString();
+    Xapian::Query query(term);
+    Xapian::Enquire enquire(db);
+    enquire.set_query(query);
+
+    Xapian::MSet mset = enquire.get_mset(0, UINT_MAX);
+    Xapian::MSetIterator it = mset.begin();
+    for (; it != mset.end(); it++) {
+        indexed << *it;
+    }
+}
+
+void IndexedItemsPrivate::findIndexed(QSet<Akonadi::Item::Id> &indexed, 
Akonadi::Collection::Id collectionId)
+{
+    findIndexedInDatabase(indexed, collectionId, emailIndexingPath());
+    findIndexedInDatabase(indexed, collectionId, contactIndexingPath());
+    findIndexedInDatabase(indexed, collectionId, akonotesIndexingPath());
+    findIndexedInDatabase(indexed, collectionId, calendarIndexingPath());
+}
+
+IndexedItems::IndexedItems(QObject *parent)
+    : QObject(parent),
+      d(new Akonadi::Search::PIM::IndexedItemsPrivate())
+{
+
+}
+
+IndexedItems::~IndexedItems()
+{
+    delete d;
+}
+
+void IndexedItems::setOverrideDbPrefixPath(const QString &path)
+{
+    d->m_overridePrefixPath = path;
+    d->m_cachePath.clear();
+}
+
+qlonglong IndexedItems::indexedItems(const qlonglong id)
+{
+    return d->indexedItems(id);
+}
+
+void IndexedItems::findIndexedInDatabase(QSet<Akonadi::Item::Id> &indexed, 
Akonadi::Collection::Id collectionId, const QString &dbPath)
+{
+    d->findIndexedInDatabase(indexed, collectionId, dbPath);
+}
+
+void IndexedItems::findIndexed(QSet<Akonadi::Item::Id> &indexed, 
Akonadi::Collection::Id collectionId)
+{
+    d->findIndexed(indexed, collectionId);
+}
+
+QString IndexedItems::emailIndexingPath() const
+{
+    return d->emailIndexingPath();
+}
+
+QString IndexedItems::collectionIndexingPath() const
+{
+    return d->collectionIndexingPath();
+}
+
+QString IndexedItems::calendarIndexingPath() const
+{
+    return d->calendarIndexingPath();
+}
+
+QString IndexedItems::akonotesIndexingPath() const
+{
+    return d->akonotesIndexingPath();
+}
+
+QString IndexedItems::emailContactsIndexingPath() const
+{
+    return d->emailContactsIndexingPath();
+}
+
+QString IndexedItems::contactIndexingPath() const
+{
+    return d->contactIndexingPath();
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-search-16.04.3/lib/indexeditems.h 
new/akonadi-search-16.08.0/lib/indexeditems.h
--- old/akonadi-search-16.04.3/lib/indexeditems.h       1970-01-01 
01:00:00.000000000 +0100
+++ new/akonadi-search-16.08.0/lib/indexeditems.h       2016-08-06 
20:08:58.000000000 +0200
@@ -0,0 +1,63 @@
+/*
+ * This file is part of the KDE Akonadi Search Project
+ * Copyright (C) 2016 Laurent Montel <[email protected]>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) version 3, or any
+ * later version accepted by the membership of KDE e.V. (or its
+ * successor approved by the membership of KDE e.V.), which shall
+ * act as a proxy defined in Section 6 of version 3 of the license.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library.  If not, see 
<http://www.gnu.org/licenses/>.
+ *
+ */
+#ifndef INDEXEDITEMS_H
+#define INDEXEDITEMS_H
+
+#include <QObject>
+#include "search_pim_export.h"
+#include <AkonadiCore/Item>
+
+namespace Akonadi
+{
+namespace Search
+{
+namespace PIM
+{
+class IndexedItemsPrivate;
+class AKONADI_SEARCH_PIM_EXPORT IndexedItems : public QObject
+{
+    Q_OBJECT
+public:
+    explicit IndexedItems(QObject *parent = Q_NULLPTR);
+    ~IndexedItems();
+
+    void setOverrideDbPrefixPath(const QString &path);
+
+    qlonglong indexedItems(const qlonglong id);
+
+    void findIndexedInDatabase(QSet<Akonadi::Item::Id> &indexed, 
Akonadi::Collection::Id collectionId, const QString &dbPath);
+    void findIndexed(QSet<Akonadi::Item::Id> &indexed, Akonadi::Collection::Id 
collectionId);
+
+    QString emailIndexingPath() const;
+    QString collectionIndexingPath() const;
+    QString calendarIndexingPath() const;
+    QString akonotesIndexingPath() const;
+    QString emailContactsIndexingPath() const;
+    QString contactIndexingPath() const;
+
+private:
+    IndexedItemsPrivate *const d;
+};
+}
+}
+}
+#endif // INDEXEDITEMS_H


Reply via email to