Hello community,

here is the log from the commit of package kdepim4-runtime for openSUSE:Factory 
checked in at 2014-11-19 20:24:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kdepim4-runtime (Old)
 and      /work/SRC/openSUSE:Factory/.kdepim4-runtime.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kdepim4-runtime"

Changes:
--------
--- /work/SRC/openSUSE:Factory/kdepim4-runtime/kdepim4-runtime.changes  
2014-10-16 18:11:43.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.kdepim4-runtime.new/kdepim4-runtime.changes     
2014-11-19 20:27:04.000000000 +0100
@@ -1,0 +2,12 @@
+Mon Nov 10 02:31:00 UTC 2014 - Led <led...@gmail.com>
+
+- fix bashisms in post/postun scripts
+
+-------------------------------------------------------------------
+Sun Nov  9 20:27:38 UTC 2014 - tittiatc...@gmail.com
+
+- Update to 4.14.3
+   * KDE 4.14.3 SC Bugfix Release
+   * See http://www.kde.org/announcements/announce-4.14.3.php
+
+-------------------------------------------------------------------

Old:
----
  kdepim-runtime-4.14.2.tar.xz

New:
----
  kdepim-runtime-4.14.3.tar.xz

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

Other differences:
------------------
++++++ kdepim4-runtime.spec ++++++
--- /var/tmp/diff_new_pack.45Qhmu/_old  2014-11-19 20:27:05.000000000 +0100
+++ /var/tmp/diff_new_pack.45Qhmu/_new  2014-11-19 20:27:05.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           kdepim4-runtime
-Version:        4.14.2
+Version:        4.14.3
 Release:        0
 Summary:        Base package of kdepim
 License:        LGPL-2.1+
@@ -74,11 +74,11 @@
 
 %post
 /sbin/ldconfig
-%{_kde4_bindir}/update-mime-database %{_kde4_datadir}/mime &> /dev/null || :
+%{_kde4_bindir}/update-mime-database %{_kde4_datadir}/mime > /dev/null 2>&1 || 
:
 
 %postun
 /sbin/ldconfig
-%{_kde4_bindir}/update-mime-database %{_kde4_datadir}/mime &> /dev/null || :
+%{_kde4_bindir}/update-mime-database %{_kde4_datadir}/mime > /dev/null 2>&1 || 
:
 
 %files
 %defattr(-,root,root)

++++++ kdepim-runtime-4.14.2.tar.xz -> kdepim-runtime-4.14.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepim-runtime-4.14.2/CMakeLists.txt 
new/kdepim-runtime-4.14.3/CMakeLists.txt
--- old/kdepim-runtime-4.14.2/CMakeLists.txt    2014-10-09 18:42:34.000000000 
+0200
+++ new/kdepim-runtime-4.14.3/CMakeLists.txt    2014-11-04 08:55:43.000000000 
+0100
@@ -36,7 +36,7 @@
     set(KDEPIM_RUNTIME_DEV_VERSION "")
 endif()
 
-set(KDEPIM_RUNTIME_VERSION "4.14.2${KDEPIM_RUNTIME_DEV_VERSION}")
+set(KDEPIM_RUNTIME_VERSION "4.14.3${KDEPIM_RUNTIME_DEV_VERSION}")
 
 configure_file(kdepim-runtime-version.h.cmake 
${CMAKE_CURRENT_BINARY_DIR}/kdepim-runtime-version.h @ONLY)
 
@@ -53,7 +53,7 @@
 include(KDE4Defaults)
 
 # KdepimLibs
-find_package(KdepimLibs 4.14.2)
+find_package(KdepimLibs 4.14.3)
 set_package_properties(KdepimLibs PROPERTIES DESCRIPTION "The KDEPIM 
libraries" URL "http://www.kde.org"; TYPE REQUIRED)
 
 #Boost
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/agents/newmailnotifier/newmailnotifiersettingsdialog.cpp
 
new/kdepim-runtime-4.14.3/agents/newmailnotifier/newmailnotifiersettingsdialog.cpp
--- 
old/kdepim-runtime-4.14.2/agents/newmailnotifier/newmailnotifiersettingsdialog.cpp
  2014-10-09 18:42:34.000000000 +0200
+++ 
new/kdepim-runtime-4.14.3/agents/newmailnotifier/newmailnotifiersettingsdialog.cpp
  2014-11-04 08:55:43.000000000 +0100
@@ -117,6 +117,7 @@
 
     QLabel *howIsItWork = new QLabel(i18n( "<a href=\"whatsthis\">How does 
this work?</a>" ));
     howIsItWork->setTextInteractionFlags(Qt::LinksAccessibleByMouse);
+    howIsItWork->setContextMenuPolicy(Qt::NoContextMenu);
     vbox->addWidget(howIsItWork);
     connect(howIsItWork, 
SIGNAL(linkActivated(QString)),SLOT(slotHelpLinkClicked(QString)) );
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/agents/newmailnotifier/specialnotifierjob.cpp 
new/kdepim-runtime-4.14.3/agents/newmailnotifier/specialnotifierjob.cpp
--- old/kdepim-runtime-4.14.2/agents/newmailnotifier/specialnotifierjob.cpp     
2014-10-09 18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/agents/newmailnotifier/specialnotifierjob.cpp     
2014-11-04 08:55:43.000000000 +0100
@@ -85,7 +85,7 @@
             deleteLater();
         }
     } else {
-        kdWarning()<<" Found item different from 1: "<<lst.count();
+        kWarning()<<" Found item different from 1: "<<lst.count();
         deleteLater();
         return;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/facebook/serializer/akonadi_serializer_socialnotification.desktop
 
new/kdepim-runtime-4.14.3/resources/facebook/serializer/akonadi_serializer_socialnotification.desktop
--- 
old/kdepim-runtime-4.14.2/resources/facebook/serializer/akonadi_serializer_socialnotification.desktop
       2014-10-09 18:42:34.000000000 +0200
+++ 
new/kdepim-runtime-4.14.3/resources/facebook/serializer/akonadi_serializer_socialnotification.desktop
       2014-11-04 08:55:43.000000000 +0100
@@ -3,7 +3,7 @@
 Name[bs]=Serializator Facebook poruka
 Name[ca]=Serialitzador de notificacions de Facebook
 Name[ca@valencia]=Serialitzador de notificacions de Facebook
-Name[cs]=Seřazovač upomínek Facebooku
+Name[cs]=Řadič upomínek Facebooku
 Name[da]=Facebook-notifikation-serializer
 Name[de]=Facebook-Benachrichtigungs-Serialisierung
 Name[el]=Σειριακοποιητής ειδοποιήσεων Facebook
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/folderarchivesettings/CMakeLists.txt 
new/kdepim-runtime-4.14.3/resources/folderarchivesettings/CMakeLists.txt
--- old/kdepim-runtime-4.14.2/resources/folderarchivesettings/CMakeLists.txt    
2014-10-09 18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/folderarchivesettings/CMakeLists.txt    
2014-11-04 08:55:43.000000000 +0100
@@ -27,4 +27,5 @@
 set_target_properties(folderarchivesettings PROPERTIES VERSION 
${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} )
 
 install(TARGETS folderarchivesettings ${INSTALL_TARGETS_DEFAULT_ARGS})
+add_subdirectory(autotests)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/folderarchivesettings/autotests/CMakeLists.txt
 
new/kdepim-runtime-4.14.3/resources/folderarchivesettings/autotests/CMakeLists.txt
--- 
old/kdepim-runtime-4.14.2/resources/folderarchivesettings/autotests/CMakeLists.txt
  1970-01-01 01:00:00.000000000 +0100
+++ 
new/kdepim-runtime-4.14.3/resources/folderarchivesettings/autotests/CMakeLists.txt
  2014-11-04 08:55:43.000000000 +0100
@@ -0,0 +1,10 @@
+
+# Convenience macro to add unit tests.
+macro( folderarchive_kmail _source )
+  set( _test ${_source} ../folderarchiveaccountinfo.cpp )
+  get_filename_component( _name ${_source} NAME_WE )
+  kde4_add_unit_test( ${_name} TESTNAME folderarchive-${_name} ${_test} )
+  target_link_libraries( ${_name} ${QT_QTTEST_LIBRARY} ${QT_QTCORE_LIBRARY} 
${KDE4_KDEUI_LIBS} ${KDEPIMLIBS_AKONADI_LIBS})
+endmacro()
+
+folderarchive_kmail(folderarchiveaccountinfotest.cpp)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/folderarchivesettings/autotests/folderarchiveaccountinfotest.cpp
 
new/kdepim-runtime-4.14.3/resources/folderarchivesettings/autotests/folderarchiveaccountinfotest.cpp
--- 
old/kdepim-runtime-4.14.2/resources/folderarchivesettings/autotests/folderarchiveaccountinfotest.cpp
        1970-01-01 01:00:00.000000000 +0100
+++ 
new/kdepim-runtime-4.14.3/resources/folderarchivesettings/autotests/folderarchiveaccountinfotest.cpp
        2014-11-04 08:55:43.000000000 +0100
@@ -0,0 +1,74 @@
+/*
+  Copyright (c) 2014 Montel Laurent <mon...@kde.org>
+
+  This program is free software; you can redistribute it and/or modify it
+  under the terms of the GNU General Public License, version 2, as
+  published by the Free Software Foundation.
+
+  This program 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
+  General Public License for more details.
+
+  You should have received a copy of the GNU General Public License along
+  with this program; if not, write to the Free Software Foundation, Inc.,
+  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+#include "folderarchiveaccountinfotest.h"
+#include "../folderarchiveaccountinfo.h"
+#include <KGlobal>
+#include <Akonadi/Collection>
+#include <qtest_kde.h>
+
+
+FolderArchiveAccountInfoTest::FolderArchiveAccountInfoTest(QObject *parent)
+    : QObject(parent)
+{
+
+}
+
+FolderArchiveAccountInfoTest::~FolderArchiveAccountInfoTest()
+{
+
+}
+
+void FolderArchiveAccountInfoTest::shouldHaveDefaultValue()
+{
+    FolderArchiveAccountInfo info;
+    QVERIFY(info.instanceName().isEmpty());
+    QCOMPARE(info.archiveTopLevel(), Akonadi::Collection(-1).id());
+    QCOMPARE(info.folderArchiveType(), FolderArchiveAccountInfo::UniqueFolder);
+    QCOMPARE(info.enabled(), false);
+    QCOMPARE(info.keepExistingStructure(), false);
+    QCOMPARE(info.isValid(), false);
+
+}
+
+void FolderArchiveAccountInfoTest::shouldBeValid()
+{
+    FolderArchiveAccountInfo info;
+    QVERIFY(!info.isValid());
+    info.setArchiveTopLevel(Akonadi::Collection(42).id());
+    QVERIFY(!info.isValid());
+    info.setInstanceName(QLatin1String("FOO"));
+    QVERIFY(info.isValid());
+}
+
+void FolderArchiveAccountInfoTest::shouldRestoreFromSettings()
+{
+    FolderArchiveAccountInfo info;
+    info.setInstanceName(QLatin1String("FOO1"));
+    info.setArchiveTopLevel(Akonadi::Collection(42).id());
+    info.setFolderArchiveType(FolderArchiveAccountInfo::FolderByMonths);
+    info.setEnabled(true);
+    info.setKeepExistingStructure(true);
+
+    KConfigGroup grp(KGlobal::config(), "testsettings");
+    info.writeConfig(grp);
+
+    FolderArchiveAccountInfo restoreInfo(grp);
+    QCOMPARE(info, restoreInfo);
+}
+
+QTEST_KDEMAIN(FolderArchiveAccountInfoTest, NoGUI)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/folderarchivesettings/autotests/folderarchiveaccountinfotest.h
 
new/kdepim-runtime-4.14.3/resources/folderarchivesettings/autotests/folderarchiveaccountinfotest.h
--- 
old/kdepim-runtime-4.14.2/resources/folderarchivesettings/autotests/folderarchiveaccountinfotest.h
  1970-01-01 01:00:00.000000000 +0100
+++ 
new/kdepim-runtime-4.14.3/resources/folderarchivesettings/autotests/folderarchiveaccountinfotest.h
  2014-11-04 08:55:43.000000000 +0100
@@ -0,0 +1,40 @@
+/*
+  Copyright (c) 2014 Montel Laurent <mon...@kde.org>
+
+  This program is free software; you can redistribute it and/or modify it
+  under the terms of the GNU General Public License, version 2, as
+  published by the Free Software Foundation.
+
+  This program 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
+  General Public License for more details.
+
+  You should have received a copy of the GNU General Public License along
+  with this program; if not, write to the Free Software Foundation, Inc.,
+  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+#ifndef FOLDERARCHIVEACCOUNTINFOTEST_H
+#define FOLDERARCHIVEACCOUNTINFOTEST_H
+
+#include <QObject>
+
+
+class FolderArchiveAccountInfoTest : public QObject
+{
+    Q_OBJECT
+public:
+    explicit FolderArchiveAccountInfoTest(QObject *parent = 0);
+    ~FolderArchiveAccountInfoTest();
+
+private Q_SLOTS:
+    void shouldHaveDefaultValue();
+    void shouldBeValid();
+    void shouldRestoreFromSettings();
+};
+
+
+
+#endif // FOLDERARCHIVEACCOUNTINFOTEST_H
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/folderarchivesettings/folderarchiveaccountinfo.cpp
 
new/kdepim-runtime-4.14.3/resources/folderarchivesettings/folderarchiveaccountinfo.cpp
--- 
old/kdepim-runtime-4.14.2/resources/folderarchivesettings/folderarchiveaccountinfo.cpp
      2014-10-09 18:42:34.000000000 +0200
+++ 
new/kdepim-runtime-4.14.3/resources/folderarchivesettings/folderarchiveaccountinfo.cpp
      2014-11-04 08:55:43.000000000 +0100
@@ -42,7 +42,7 @@
 
 bool FolderArchiveAccountInfo::isValid() const
 {
-    return (mArchiveTopLevelCollectionId > -1);
+    return (mArchiveTopLevelCollectionId > -1) && (!mInstanceName.isEmpty());
 }
 
 void 
FolderArchiveAccountInfo::setFolderArchiveType(FolderArchiveAccountInfo::FolderArchiveType
 type)
@@ -116,3 +116,12 @@
     config.writeEntry(QLatin1String("enabled"), mEnabled);
     config.writeEntry("keepExistingStructure", mKeepExistingStructure);
 }
+
+bool FolderArchiveAccountInfo::operator==( const FolderArchiveAccountInfo& 
other ) const
+{
+    return (mInstanceName == other.instanceName())
+            && (mArchiveTopLevelCollectionId == other.archiveTopLevel())
+            && (mArchiveType == other.folderArchiveType())
+            && (mEnabled == other.enabled())
+            && (mKeepExistingStructure == other.keepExistingStructure());
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/folderarchivesettings/folderarchiveaccountinfo.h
 
new/kdepim-runtime-4.14.3/resources/folderarchivesettings/folderarchiveaccountinfo.h
--- 
old/kdepim-runtime-4.14.2/resources/folderarchivesettings/folderarchiveaccountinfo.h
        2014-10-09 18:42:34.000000000 +0200
+++ 
new/kdepim-runtime-4.14.3/resources/folderarchivesettings/folderarchiveaccountinfo.h
        2014-11-04 08:55:43.000000000 +0100
@@ -54,6 +54,8 @@
     void writeConfig(KConfigGroup &config );
     void readConfig(const KConfigGroup &config);
 
+    bool operator==( const FolderArchiveAccountInfo& other ) const;
+
 private:
     FolderArchiveAccountInfo::FolderArchiveType mArchiveType;
     Akonadi::Collection::Id mArchiveTopLevelCollectionId;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/folderarchivesettings/folderarchivesettingpage.cpp
 
new/kdepim-runtime-4.14.3/resources/folderarchivesettings/folderarchivesettingpage.cpp
--- 
old/kdepim-runtime-4.14.2/resources/folderarchivesettings/folderarchivesettingpage.cpp
      2014-10-09 18:42:34.000000000 +0200
+++ 
new/kdepim-runtime-4.14.3/resources/folderarchivesettings/folderarchivesettingpage.cpp
      2014-11-04 08:55:43.000000000 +0100
@@ -32,6 +32,9 @@
 #include <QHBoxLayout>
 #include <QLabel>
 #include <QComboBox>
+#include <QDBusReply>
+#include <QDBusInterface>
+#include <QDBusConnectionInterface>
 
 static const KCatalogLoader loader( QLatin1String("libfolderarchivesettings") 
);
 
@@ -146,5 +149,14 @@
 
     mInfo->setFolderArchiveType(mArchiveNamed->type());
     mInfo->writeConfig(grp);
+
+    //Update cache from KMail
+    const QString kmailInterface = QLatin1String("org.kde.kmail");
+    QDBusReply<bool> reply = 
QDBusConnection::sessionBus().interface()->isServiceRegistered(kmailInterface);
+    if (!reply.isValid() || !reply.value()) {
+        return;
+    }
+    QDBusInterface kmail(kmailInterface, QLatin1String("/KMail"), 
QLatin1String("org.kde.kmail.kmail"));
+    kmail.asyncCall(QLatin1String("reloadFolderArchiveConfig"));
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/folderarchivesettings/folderarchiveutil.cpp 
new/kdepim-runtime-4.14.3/resources/folderarchivesettings/folderarchiveutil.cpp
--- 
old/kdepim-runtime-4.14.2/resources/folderarchivesettings/folderarchiveutil.cpp 
    2014-10-09 18:42:34.000000000 +0200
+++ 
new/kdepim-runtime-4.14.3/resources/folderarchivesettings/folderarchiveutil.cpp 
    2014-11-04 08:55:43.000000000 +0100
@@ -26,5 +26,5 @@
 
 QString FolderArchiveUtil::configFileName()
 {
-    return QLatin1String(QLatin1String("foldermailarchiverc"));
+    return QLatin1String("foldermailarchiverc");
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/ical/icalresource.desktop 
new/kdepim-runtime-4.14.3/resources/ical/icalresource.desktop
--- old/kdepim-runtime-4.14.2/resources/ical/icalresource.desktop       
2014-10-09 18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/ical/icalresource.desktop       
2014-11-04 08:55:43.000000000 +0100
@@ -5,7 +5,7 @@
 Name[bs]=ICal kalendar datoteka
 Name[ca]=Fitxer de calendari ICal
 Name[ca@valencia]=Fitxer de calendari ICal
-Name[cs]=Soubor s iCal kalendářem
+Name[cs]=Soubor s kalendářem iCal
 Name[da]=iCal-kalenderfil
 Name[de]=ICal-Kalenderdatei
 Name[el]=Αρχείο ημερολογίου ICal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/ical/wizard/icalwizard.desktop 
new/kdepim-runtime-4.14.3/resources/ical/wizard/icalwizard.desktop
--- old/kdepim-runtime-4.14.2/resources/ical/wizard/icalwizard.desktop  
2014-10-09 18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/ical/wizard/icalwizard.desktop  
2014-11-04 08:55:43.000000000 +0100
@@ -5,7 +5,7 @@
 Name[bs]=ICal kalendar datoteka
 Name[ca]=Fitxer de calendari ICal
 Name[ca@valencia]=Fitxer de calendari ICal
-Name[cs]=Soubor s iCal kalendářem
+Name[cs]=Soubor s kalendářem iCal
 Name[da]=iCal-kalenderfil
 Name[de]=ICal-Kalenderdatei
 Name[el]=Αρχείο ημερολογίου ICal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/imap/batchfetcher.cpp 
new/kdepim-runtime-4.14.3/resources/imap/batchfetcher.cpp
--- old/kdepim-runtime-4.14.2/resources/imap/batchfetcher.cpp   2014-10-09 
18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/imap/batchfetcher.cpp   2014-11-04 
08:55:43.000000000 +0100
@@ -36,7 +36,8 @@
     m_messageHelper(messageHelper),
     m_fetchInProgress(false),
     m_continuationRequested(false),
-    m_gmailEnabled(false)
+    m_gmailEnabled(false),
+    m_searchInChunks(false)
 {
 }
 
@@ -49,9 +50,15 @@
     m_uidBased = uidBased;
 }
 
-void BatchFetcher::setSearchTerm(const KIMAP::Term &searchTerm)
+void BatchFetcher::setSearchUids(const KIMAP::ImapInterval &intervall)
 {
-    m_searchTerm = searchTerm;
+    m_searchUidInterval = intervall;
+
+    //We look up the UIDs ourselves
+    m_currentSet = KIMAP::ImapSet();
+
+    //MS Exchange can't handle big results so we have to split the search into 
small chunks
+    m_searchInChunks = m_session->serverGreeting().contains("Microsoft 
Exchange");
 }
 
 void BatchFetcher::setGmailExtensionsEnabled(bool enable)
@@ -59,13 +66,30 @@
     m_gmailEnabled = enable;
 }
 
+static const int maxAmountOfUidToSearchInOneTime = 2000;
+
 void BatchFetcher::start()
 {
-    if (!m_searchTerm.isNull()) {
+    if (m_searchUidInterval.size()) {
+        //Search in chunks also Exchange can handle
+        const KIMAP::ImapInterval::Id firstUidToSearch = 
m_searchUidInterval.begin();
+        const KIMAP::ImapInterval::Id lastUidToSearch  = m_searchInChunks
+            ? qMin(firstUidToSearch + maxAmountOfUidToSearchInOneTime - 1, 
m_searchUidInterval.end())
+            : m_searchUidInterval.end();
+
+        //Prepare next chunk
+        const KIMAP::ImapInterval::Id intervalBegin = lastUidToSearch + 1;
+        //Or are we already done?
+        if (intervalBegin > m_searchUidInterval.end()) {
+            m_searchUidInterval = KIMAP::ImapInterval();
+        } else {
+            m_searchUidInterval.setBegin(intervalBegin);
+        }
+
         //Resolve the uid to sequence numbers
         KIMAP::SearchJob *search = new KIMAP::SearchJob(m_session);
         search->setUidBased(true);
-        search->setTerm(m_searchTerm);
+        search->setTerm(KIMAP::Term(KIMAP::Term::Uid, 
KIMAP::ImapSet(firstUidToSearch, lastUidToSearch)));
         connect(search, SIGNAL(result(KJob*)), this, 
SLOT(onUidSearchDone(KJob*)));
         search->start();
     } else {
@@ -81,13 +105,13 @@
         emitResult();
         return;
     }
+
     KIMAP::SearchJob *search = static_cast<KIMAP::SearchJob*>(job);
     m_uidBased = search->isUidBased();
+    m_currentSet.add(search->results());
 
-    KIMAP::ImapSet set;
-    set.add(search->results());
-    m_currentSet = set;
-    fetchNextBatch();
+    //More to search?
+    start();
 }
 
 void BatchFetcher::fetchNextBatch()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepim-runtime-4.14.2/resources/imap/batchfetcher.h 
new/kdepim-runtime-4.14.3/resources/imap/batchfetcher.h
--- old/kdepim-runtime-4.14.2/resources/imap/batchfetcher.h     2014-10-09 
18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/imap/batchfetcher.h     2014-11-04 
08:55:43.000000000 +0100
@@ -43,7 +43,7 @@
     virtual void start();
     void fetchNextBatch();
     void setUidBased(bool);
-    void setSearchTerm(const KIMAP::Term &);
+    void setSearchUids(const KIMAP::ImapInterval &);
     void setGmailExtensionsEnabled(bool enable);
 
 Q_SIGNALS:
@@ -70,8 +70,9 @@
     const MessageHelper::Ptr m_messageHelper;
     bool m_fetchInProgress;
     bool m_continuationRequested;
-    KIMAP::Term m_searchTerm;
+    KIMAP::ImapInterval m_searchUidInterval;
     bool m_gmailEnabled;
+    bool m_searchInChunks;
 };
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/imap/imapresource.cpp 
new/kdepim-runtime-4.14.3/resources/imap/imapresource.cpp
--- old/kdepim-runtime-4.14.2/resources/imap/imapresource.cpp   2014-10-09 
18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/imap/imapresource.cpp   2014-11-04 
08:55:43.000000000 +0100
@@ -70,3 +70,8 @@
   }
   dlg->deleteLater();
 }
+
+void ImapResource::cleanup()
+{
+    settings()->cleanup();
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepim-runtime-4.14.2/resources/imap/imapresource.h 
new/kdepim-runtime-4.14.3/resources/imap/imapresource.h
--- old/kdepim-runtime-4.14.2/resources/imap/imapresource.h     2014-10-09 
18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/imap/imapresource.h     2014-11-04 
08:55:43.000000000 +0100
@@ -38,6 +38,7 @@
     virtual ~ImapResource();
 
     virtual KDialog *createConfigureDialog ( WId windowId );
+    virtual void cleanup();
 
 protected:
     virtual QString defaultName() const;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/imap/imapresourcebase.cpp 
new/kdepim-runtime-4.14.3/resources/imap/imapresourcebase.cpp
--- old/kdepim-runtime-4.14.2/resources/imap/imapresourcebase.cpp       
2014-10-09 18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/imap/imapresourcebase.cpp       
2014-11-04 08:55:43.000000000 +0100
@@ -321,6 +321,9 @@
   case SessionPool::NoAvailableSessionError:
     kFatal() << "Shouldn't happen";
     return;
+  case SessionPool::CancelledError:
+    kWarning() << "Session login cancelled";
+    return;
   }
 }
 
@@ -424,63 +427,19 @@
   startTask(new RetrieveCollectionsTask( createResourceState(TaskArguments()), 
this ));
 }
 
-void ImapResourceBase::triggerCollectionExtraInfoJobs( const QVariant 
&collectionVariant )
+void ImapResourceBase::retrieveCollectionAttributes( const Akonadi::Collection 
&col )
 {
-  const Collection collection( collectionVariant.value<Collection>() );
-  emit status( AgentBase::Running, i18nc( "@info:status", "Retrieving extra 
folder information for '%1'", collection.name() ) );
-
-  //The collection that we received is potentially outdated.
-  //Using it would overwrite attributes with old values.
-  //FIXME: because this is async and not part of the resourcetask, it can't be 
killed. ResourceBase should just provide an up-to date copy of the collection.
-  Akonadi::CollectionFetchJob *fetchJob = new 
Akonadi::CollectionFetchJob(collection, CollectionFetchJob::Base, this);
-  fetchJob->fetchScope().setAncestorRetrieval( CollectionFetchScope::All );
-  fetchJob->fetchScope().setIncludeStatistics( true );
-  fetchJob->fetchScope().setIncludeUnsubscribed( true );
-  connect(fetchJob, SIGNAL(result(KJob*)), this, 
SLOT(onMetadataCollectionFetchDone(KJob*)));
-}
-
-void ImapResourceBase::onMetadataCollectionFetchDone(KJob *job)
-{
-  if (job->error()) {
-    kWarning() << "Failed to retrieve collection before 
RetrieveCollectionMetadataTask " << job->errorString();
-    cancelTask(i18n("Failed to collect metadata."));
-    return;
-  }
-
-  Akonadi::CollectionFetchJob *fetchJob = 
static_cast<Akonadi::CollectionFetchJob*>(job);
-  Q_ASSERT(fetchJob->collections().size() == 1);
-
-  startTask(new RetrieveCollectionMetadataTask( 
createResourceState(TaskArguments(fetchJob->collections().first())), this ));
+  emit status( AgentBase::Running, i18nc( "@info:status", "Retrieving extra 
folder information for '%1'", col.name() ) );
+  startTask(new RetrieveCollectionMetadataTask( 
createResourceState(TaskArguments(col)), this ));
 }
 
 void ImapResourceBase::retrieveItems( const Collection &col )
 {
-  scheduleCustomTask( this, "triggerCollectionExtraInfoJobs", 
QVariant::fromValue( col ), ResourceBase::Append );
-
-  //The collection that we receive was fetched when the task was scheduled, it 
is therefore possible that it is outdated.
-  //We refetch the collection since we rely on up-to-date annotations.
-  //FIXME: because this is async and not part of the resourcetask, it can't be 
killed. ResourceBase should just provide an up-to date copy of the collection.
-  Akonadi::CollectionFetchJob *fetchJob = new Akonadi::CollectionFetchJob(col, 
CollectionFetchJob::Base, this);
-  fetchJob->fetchScope().setAncestorRetrieval( CollectionFetchScope::All );
-  fetchJob->fetchScope().setIncludeStatistics( true );
-  fetchJob->fetchScope().setIncludeUnsubscribed( true );
-  connect(fetchJob, SIGNAL(result(KJob*)), this, 
SLOT(onItemRetrievalCollectionFetchDone(KJob*)));
-}
-
-void ImapResourceBase::onItemRetrievalCollectionFetchDone(KJob *job)
-{
-  if (job->error()) {
-    kWarning() << "Failed to retrieve collection before RetrieveItemsTask: " 
<< job->errorString();
-    cancelTask(i18n("Failed to retrieve items."));
-    return;
-  }
-
-  Akonadi::CollectionFetchJob *fetchJob = 
static_cast<Akonadi::CollectionFetchJob*>(job);
-  Q_ASSERT(fetchJob->collections().size() == 1);
+  synchronizeCollectionAttributes(col.id());
 
   setItemStreamingEnabled( true );
 
-  RetrieveItemsTask *task = new RetrieveItemsTask( 
createResourceState(TaskArguments(fetchJob->collections().first())), this);
+  RetrieveItemsTask *task = new RetrieveItemsTask( 
createResourceState(TaskArguments(col)), this);
   connect(task, SIGNAL(status(int,QString)), SIGNAL(status(int,QString)));
   connect(this, SIGNAL(retrieveNextItemSyncBatch(int)), task, 
SLOT(onReadyForNextBatch(int)));
   startTask(task);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/imap/imapresourcebase.h 
new/kdepim-runtime-4.14.3/resources/imap/imapresourcebase.h
--- old/kdepim-runtime-4.14.2/resources/imap/imapresourcebase.h 2014-10-09 
18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/imap/imapresourcebase.h 2014-11-04 
08:55:43.000000000 +0100
@@ -84,6 +84,7 @@
   void abortActivity();
 
   virtual void retrieveCollections();
+  void retrieveCollectionAttributes( const Akonadi::Collection &col );
 
   virtual void retrieveItems( const Akonadi::Collection &col );
   virtual bool retrieveItem( const Akonadi::Item &item, const QSet<QByteArray> 
&parts );
@@ -129,15 +130,11 @@
 
 
   void onIdleCollectionFetchDone( KJob *job );
-  void onItemRetrievalCollectionFetchDone( KJob *job );
-  void onMetadataCollectionFetchDone( KJob *job );
 
   void onExpungeCollectionFetchDone( KJob *job );
   void triggerCollectionExpunge( const QVariant &collectionVariant );
 
 
-  void triggerCollectionExtraInfoJobs( const QVariant &collection );
-
   void taskDestroyed( QObject *task );
 
   void showError( const QString &message );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/imap/resourcestate.cpp 
new/kdepim-runtime-4.14.3/resources/imap/resourcestate.cpp
--- old/kdepim-runtime-4.14.2/resources/imap/resourcestate.cpp  2014-10-09 
18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/imap/resourcestate.cpp  2014-11-04 
08:55:43.000000000 +0100
@@ -161,12 +161,7 @@
 
 void ResourceState::collectionAttributesRetrieved( const Akonadi::Collection 
&collection )
 {
-    //TODO use collection attributes retrieved properly. (Currently we're only 
emulating the behaviour)
-//   m_resource->collectionAttributesRetrieved( collection );
-  if (collection.isValid() || !collection.remoteId().isEmpty()) {
-    applyCollectionChanges(collection);
-  }
-  taskDone();
+  m_resource->collectionAttributesRetrieved( collection );
 }
 
 void ResourceState::itemRetrieved( const Akonadi::Item &item )
@@ -218,10 +213,7 @@
 
       if ( !c.hasAttribute<NoSelectAttribute>()
         && !oldMailBoxes.contains( mailBox ) ) {
-        m_resource->scheduleCustomTask( m_resource,
-                                        "triggerCollectionExtraInfoJobs",
-                                        QVariant::fromValue( c ),
-                                        Akonadi::ResourceBase::Append );
+        m_resource->synchronizeCollectionAttributes(c.id());
       }
 
       newMailBoxes << mailBox;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/imap/resourcetask.cpp 
new/kdepim-runtime-4.14.3/resources/imap/resourcetask.cpp
--- old/kdepim-runtime-4.14.2/resources/imap/resourcetask.cpp   2014-10-09 
18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/imap/resourcetask.cpp   2014-11-04 
08:55:43.000000000 +0100
@@ -36,7 +36,8 @@
     m_sessionRequestId( 0 ),
     m_session( 0 ),
     m_actionIfNoSession( action ),
-    m_resource( resource )
+    m_resource( resource ),
+    mCancelled( false )
 {
 
 }
@@ -247,100 +248,136 @@
 
 void ResourceTask::setIdleCollection( const Akonadi::Collection &collection )
 {
-  m_resource->setIdleCollection( collection );
+  if (!mCancelled) {
+    m_resource->setIdleCollection( collection );
+  }
 }
 
 void ResourceTask::applyCollectionChanges( const Akonadi::Collection 
&collection )
 {
-  m_resource->applyCollectionChanges( collection );
+  if (!mCancelled) {
+    m_resource->applyCollectionChanges( collection );
+  }
 }
 
 void ResourceTask::itemRetrieved( const Akonadi::Item &item )
 {
-  m_resource->itemRetrieved( item );
-  emitPercent(100);
+  if (!mCancelled) {
+    m_resource->itemRetrieved( item );
+    emitPercent(100);
+  }
   deleteLater();
 }
 
 void ResourceTask::itemsRetrieved( const Akonadi::Item::List &items )
 {
-  m_resource->itemsRetrieved( items );
+  if (!mCancelled) {
+    m_resource->itemsRetrieved( items );
+  }
 }
 
 void ResourceTask::itemsRetrievedIncremental( const Akonadi::Item::List 
&changed,
                                               const Akonadi::Item::List 
&removed )
 {
-  m_resource->itemsRetrievedIncremental( changed, removed );
+  if (!mCancelled) {
+    m_resource->itemsRetrievedIncremental( changed, removed );
+  }
 }
 
 void ResourceTask::itemsRetrievalDone()
 {
-  m_resource->itemsRetrievalDone();
+  if (!mCancelled) {
+    m_resource->itemsRetrievalDone();
+  }
   deleteLater();
 }
 
 void ResourceTask::setTotalItems(int totalItems)
 {
-  m_resource->setTotalItems(totalItems);
+  if (!mCancelled) {
+    m_resource->setTotalItems(totalItems);
+  }
 }
 
 void ResourceTask::changeCommitted( const Akonadi::Item &item )
 {
-  m_resource->itemChangeCommitted( item );
+  if (!mCancelled) {
+    m_resource->itemChangeCommitted( item );
+  }
   deleteLater();
 }
 
 void ResourceTask::changesCommitted(const Akonadi::Item::List& items)
 {
-  m_resource->itemsChangesCommitted( items );
+  if (!mCancelled) {
+    m_resource->itemsChangesCommitted( items );
+  }
   deleteLater();
 }
 
 void ResourceTask::searchFinished( const QVector<qint64> &result, bool isRid )
 {
-  m_resource->searchFinished( result, isRid );
+  if (!mCancelled) {
+    m_resource->searchFinished( result, isRid );
+  }
   deleteLater();
 }
 
 void ResourceTask::collectionsRetrieved( const Akonadi::Collection::List 
&collections )
 {
-  m_resource->collectionsRetrieved( collections );
+  if (!mCancelled) {
+    m_resource->collectionsRetrieved( collections );
+  }
   deleteLater();
 }
 
 void ResourceTask::collectionAttributesRetrieved(const Akonadi::Collection& 
col)
 {
-  m_resource->collectionAttributesRetrieved( col );
+  if (!mCancelled) {
+    m_resource->collectionAttributesRetrieved( col );
+  }
   deleteLater();
 }
 
 void ResourceTask::changeCommitted( const Akonadi::Collection &collection )
 {
-  m_resource->collectionChangeCommitted( collection );
+  if (!mCancelled) {
+    m_resource->collectionChangeCommitted( collection );
+  }
   deleteLater();
 }
 
 void ResourceTask::changeProcessed()
 {
-  m_resource->changeProcessed();
+  if (!mCancelled) {
+    m_resource->changeProcessed();
+  }
   deleteLater();
 }
 
 void ResourceTask::cancelTask( const QString &errorString )
 {
-  m_resource->cancelTask( errorString );
+  if (!mCancelled) {
+    mCancelled = true;
+    m_resource->cancelTask( errorString );
+  }
   deleteLater();
 }
 
 void ResourceTask::deferTask()
 {
-  m_resource->deferTask();
+  if (!mCancelled) {
+    mCancelled = true;
+    m_resource->deferTask();
+  }
   deleteLater();
 }
 
 void ResourceTask::restartItemRetrieval(Akonadi::Entity::Id col)
 {
-  m_resource->restartItemRetrieval(col);
+  if (!mCancelled) {
+    m_resource->restartItemRetrieval(col);
+  }
   deleteLater();
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepim-runtime-4.14.2/resources/imap/resourcetask.h 
new/kdepim-runtime-4.14.3/resources/imap/resourcetask.h
--- old/kdepim-runtime-4.14.2/resources/imap/resourcetask.h     2014-10-09 
18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/imap/resourcetask.h     2014-11-04 
08:55:43.000000000 +0100
@@ -158,6 +158,7 @@
   KIMAP::Session *m_session;
   ActionIfNoSession m_actionIfNoSession;
   ResourceStateInterface::Ptr m_resource;
+  bool mCancelled;
 };
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/imap/retrieveitemstask.cpp 
new/kdepim-runtime-4.14.3/resources/imap/retrieveitemstask.cpp
--- old/kdepim-runtime-4.14.2/resources/imap/retrieveitemstask.cpp      
2014-10-09 18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/imap/retrieveitemstask.cpp      
2014-11-04 08:55:43.000000000 +0100
@@ -467,7 +467,7 @@
     m_batchFetcher = createBatchFetcher(resourceState()->messageHelper(), set, 
scope, batchSize(), m_session);
     m_batchFetcher->setUidBased(m_uidBasedFetch);
     if (m_uidBasedFetch && set.intervals().size() == 1) {
-        m_batchFetcher->setSearchTerm(KIMAP::Term(KIMAP::Term::Uid, set));
+        m_batchFetcher->setSearchUids(set.intervals().front());
     }
     m_batchFetcher->setProperty("alreadyFetched", 
set.intervals().first().begin());
     connect(m_batchFetcher, SIGNAL(itemsRetrieved(Akonadi::Item::List)),
@@ -551,7 +551,7 @@
   m_batchFetcher = createBatchFetcher(resourceState()->messageHelper(), set, 
scope, 10 * batchSize(), m_session);
   m_batchFetcher->setUidBased(m_uidBasedFetch);
   if (m_uidBasedFetch && scope.changedSince == 0 && set.intervals().size() == 
1) {
-      m_batchFetcher->setSearchTerm(KIMAP::Term(KIMAP::Term::Uid, set));
+      m_batchFetcher->setSearchUids(set.intervals().front());
   }
   connect(m_batchFetcher, SIGNAL(itemsRetrieved(Akonadi::Item::List)),
           this, SLOT(onItemsRetrieved(Akonadi::Item::List)));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepim-runtime-4.14.2/resources/imap/sessionpool.cpp 
new/kdepim-runtime-4.14.3/resources/imap/sessionpool.cpp
--- old/kdepim-runtime-4.14.2/resources/imap/sessionpool.cpp    2014-10-09 
18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/imap/sessionpool.cpp    2014-11-04 
08:55:43.000000000 +0100
@@ -197,6 +197,13 @@
 
 void SessionPool::declareSessionReady( KIMAP::Session *session )
 {
+  //This can happen if we happen to disconnect while capabilities and 
namespace are being retrieved,
+  //resulting in us keeping a dangling pointer to a deleted session
+  if (!m_connectingPool.contains( session )) {
+    kWarning() << "Tried to declare a removed session ready";
+    return;
+  }
+
   m_pendingInitialSession = 0;
 
   if ( !m_initialConnectDone ) {
@@ -331,6 +338,7 @@
     session = m_pendingInitialSession;
   } else {
     session = new KIMAP::Session( m_account->server(), m_account->port(), this 
);
+    QObject::connect(session, SIGNAL(destroyed(QObject*)), this, 
SLOT(onSessionDestroyed(QObject*)));
     session->setUiProxy( m_sessionUiProxy );
     session->setTimeout( m_account->timeout() );
     m_connectingPool << session;
@@ -353,6 +361,11 @@
 void SessionPool::onLoginDone( KJob *job )
 {
   KIMAP::LoginJob *login = static_cast<KIMAP::LoginJob*>( job );
+  //Can happen if we disonnected meanwhile
+  if (!m_connectingPool.contains(login->session())) {
+    emit connectDone( CancelledError, i18n( "Disconnected from server during 
login.") );
+    return;
+  }
 
   if ( job->error() == 0 ) {
     if ( m_initialConnectDone ) {
@@ -389,6 +402,11 @@
 void SessionPool::onCapabilitiesTestDone( KJob *job )
 {
   KIMAP::CapabilitiesJob *capJob = qobject_cast<KIMAP::CapabilitiesJob*>( job 
);
+  //Can happen if we disonnected meanwhile
+  if (!m_connectingPool.contains(capJob->session())) {
+    emit connectDone( CancelledError, i18n( "Disconnected from server during 
login.") );
+    return;
+  }
 
   if ( job->error() ) {
     if ( m_account ) {
@@ -443,6 +461,11 @@
 void SessionPool::onNamespacesTestDone( KJob *job )
 {
   KIMAP::NamespaceJob *nsJob = qobject_cast<KIMAP::NamespaceJob*>( job );
+  // Can happen if we disconnect meanwhile
+  if (!m_connectingPool.contains(nsJob->session())) {
+    emit connectDone( CancelledError, i18n( "Disconnected from server during 
login.") );
+    return;
+  }
 
   if ( nsJob->containsEmptyNamespace() ) {
     // When we got the empty namespace here, we assume that the other
@@ -495,3 +518,16 @@
       m_pendingInitialSession = 0;
 }
 
+void SessionPool::onSessionDestroyed(QObject *object)
+{
+  //Safety net for bugs that cause dangling session pointers
+  KIMAP::Session *session = static_cast<KIMAP::Session*>(object);
+  if (m_unusedPool.contains(session) || m_reservedPool.contains(session) || 
m_connectingPool.contains(session)) {
+    kWarning() << "Session destroyed while still in pool" << session;
+    m_unusedPool.removeAll(session);
+    m_reservedPool.removeAll(session);
+    m_connectingPool.removeAll(session);
+    Q_ASSERT(false);
+  }
+}
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepim-runtime-4.14.2/resources/imap/sessionpool.h 
new/kdepim-runtime-4.14.3/resources/imap/sessionpool.h
--- old/kdepim-runtime-4.14.2/resources/imap/sessionpool.h      2014-10-09 
18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/imap/sessionpool.h      2014-11-04 
08:55:43.000000000 +0100
@@ -52,7 +52,8 @@
     CapabilitiesTestError,
     IncompatibleServerError,
     NoAvailableSessionError,
-    CouldNotConnectError
+    CouldNotConnectError,
+    CancelledError
   };
 
   enum SessionTermination {
@@ -99,6 +100,7 @@
   void onNamespacesTestDone( KJob *job );
 
   void onSessionStateChanged(KIMAP::Session::State newState, 
KIMAP::Session::State oldState);
+  void onSessionDestroyed(QObject*);
 
 private:
   void onConnectionLost();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/imap/tests/testsessionpool.cpp 
new/kdepim-runtime-4.14.3/resources/imap/tests/testsessionpool.cpp
--- old/kdepim-runtime-4.14.2/resources/imap/tests/testsessionpool.cpp  
2014-10-09 18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/imap/tests/testsessionpool.cpp  
2014-11-04 08:55:43.000000000 +0100
@@ -461,13 +461,45 @@
     server.quit();
   }
 
+  void shouldCleanupOnClosingDuringLogin_data()
+  {
+    QTest::addColumn< QList<QByteArray> >( "scenario" );
+
+    {
+        QList<QByteArray> scenario;
+        scenario << FakeServer::greeting()
+                << "C: A000001 LOGIN \"t...@kdab.com\" \"foobar\"";
+
+        QTest::newRow( "during login" ) << scenario;
+    }
+    {
+        QList<QByteArray> scenario;
+        scenario << FakeServer::greeting()
+                << "C: A000001 LOGIN \"t...@kdab.com\" \"foobar\""
+                << "S: A000001 OK User Logged in"
+                << "C: A000002 CAPABILITY";
+
+        QTest::newRow( "during capability" ) << scenario;
+    }
+    {
+        QList<QByteArray> scenario;
+        scenario << FakeServer::greeting()
+                << "C: A000001 LOGIN \"t...@kdab.com\" \"foobar\""
+                << "S: A000001 OK User Logged in"
+                << "C: A000002 CAPABILITY"
+                << "S: * CAPABILITY IMAP4 IMAP4rev1 NAMESPACE UIDPLUS IDLE"
+                << "S: A000002 OK Completed"
+                << "C: A000003 NAMESPACE";
+        QTest::newRow( "during namespace" ) << scenario;
+    }
+  }
+
   void shouldCleanupOnClosingDuringLogin()
   {
+    QFETCH( QList<QByteArray>, scenario );
+
     FakeServer server;
-    server.addScenario( QList<QByteArray>()
-                        << FakeServer::greeting()
-                        << "C: A000001 LOGIN \"t...@kdab.com\" \"foobar\""
-    );
+    server.addScenario(scenario);
 
     server.startAndWait();
 
@@ -493,7 +525,7 @@
 
     QTest::qWait( 100 );
     QCOMPARE( connectSpy.count(), 1 ); // We're informed that connect failed
-    QCOMPARE( connectSpy.at( 0 ).at( 0 ).toInt(), 
int(SessionPool::CouldNotConnectError) );
+    QCOMPARE( connectSpy.at( 0 ).at( 0 ).toInt(), 
int(SessionPool::CancelledError) );
     QCOMPARE( lostSpy.count(), 0 ); // We're not supposed to know the session 
pointer, so no connectionLost emitted
 
     // Make the session->deleteLater work, it can't happen in qWait (nested 
event loop)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/imap/wizard/imapwizard.desktop 
new/kdepim-runtime-4.14.3/resources/imap/wizard/imapwizard.desktop
--- old/kdepim-runtime-4.14.2/resources/imap/wizard/imapwizard.desktop  
2014-10-09 18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/imap/wizard/imapwizard.desktop  
2014-11-04 08:55:43.000000000 +0100
@@ -50,7 +50,7 @@
 Comment[bs]=Imap nalog
 Comment[ca]=Compte Imap
 Comment[ca@valencia]=Compte Imap
-Comment[cs]=Imap účet
+Comment[cs]=Účet IMAP
 Comment[da]=IMAP-konto
 Comment[de]=IMAP-Zugang
 Comment[el]=Λογαριασμός imap
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/kalarm/kalarmdir/kalarmdirresource.cpp 
new/kdepim-runtime-4.14.3/resources/kalarm/kalarmdir/kalarmdirresource.cpp
--- old/kdepim-runtime-4.14.2/resources/kalarm/kalarmdir/kalarmdirresource.cpp  
2014-10-09 18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/kalarm/kalarmdir/kalarmdirresource.cpp  
2014-11-04 08:55:43.000000000 +0100
@@ -482,6 +482,11 @@
         return KAEvent();
     }
     const Event::List events = calendar->events();
+    if ( events.isEmpty() )
+    {
+        kDebug() << "Empty calendar in file" << path;
+        return KAEvent();
+    }
     if (events.count() > 1)
     {
         kWarning() << "Deleting" << events.count() - 1 << "excess events found 
in file" << path;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/kolab/kolabresource.cpp 
new/kdepim-runtime-4.14.3/resources/kolab/kolabresource.cpp
--- old/kdepim-runtime-4.14.2/resources/kolab/kolabresource.cpp 2014-10-09 
18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/kolab/kolabresource.cpp 2014-11-04 
08:55:43.000000000 +0100
@@ -95,7 +95,7 @@
         (!col.attribute<TimestampAttribute>() ||
         col.attribute<TimestampAttribute>()->timestamp() < 
QDateTime::currentDateTime().addSecs(-60).toTime_t())) {
         updatedCollections.insert(col.id());
-        scheduleCustomTask(this, "triggerCollectionExtraInfoJobs", 
QVariant::fromValue(col), Akonadi::ResourceBase::Prepend);
+        synchronizeCollectionAttributes(col.id());
         deferTask();
         return;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/mbox/mboxresource.desktop 
new/kdepim-runtime-4.14.3/resources/mbox/mboxresource.desktop
--- old/kdepim-runtime-4.14.2/resources/mbox/mboxresource.desktop       
2014-10-09 18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/mbox/mboxresource.desktop       
2014-11-04 08:55:43.000000000 +0100
@@ -4,7 +4,7 @@
 Name[bs]=Mbox
 Name[ca]=Mbox
 Name[ca@valencia]=Mbox
-Name[cs]=Mbox
+Name[cs]=MBox
 Name[da]=Mbox
 Name[de]=Mbox
 Name[el]=Mbox
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/mixedmaildir/mixedmaildirresource.desktop 
new/kdepim-runtime-4.14.3/resources/mixedmaildir/mixedmaildirresource.desktop
--- 
old/kdepim-runtime-4.14.2/resources/mixedmaildir/mixedmaildirresource.desktop   
    2014-10-09 18:42:34.000000000 +0200
+++ 
new/kdepim-runtime-4.14.3/resources/mixedmaildir/mixedmaildirresource.desktop   
    2014-11-04 08:55:43.000000000 +0100
@@ -45,7 +45,7 @@
 Comment[bs]=Učitava podatke iz lokalne fascikle KMail pošte
 Comment[ca]=Carrega les dades des d'una carpeta local de correu del KMail
 Comment[ca@valencia]=Carrega dades des d'una carpeta local de correu del KMail
-Comment[cs]=Načítá data z místní složky pošty  KMail
+Comment[cs]=Načítá data z místní složky pošty KMail
 Comment[da]=Indlæser data fra en lokal KMail mail-mappe
 Comment[de]=Daten werden aus einem lokalen KMail-Mailordner geladen
 Comment[el]=Φορτώνει δεδομένα από έναν τοπικό φάκελο αλληλογραφίας του KMail
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/vcard/vcardresource.desktop 
new/kdepim-runtime-4.14.3/resources/vcard/vcardresource.desktop
--- old/kdepim-runtime-4.14.2/resources/vcard/vcardresource.desktop     
2014-10-09 18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/vcard/vcardresource.desktop     
2014-11-04 08:55:43.000000000 +0100
@@ -43,7 +43,7 @@
 Comment[bs]=Učitava podatke iz VCard datoteke
 Comment[ca]=Carrega les dades des d'un fitxer vCard
 Comment[ca@valencia]=Carrega dades des d'un fitxer vCard
-Comment[cs]=Načítá data ze souboru vizitek (vCard)
+Comment[cs]=Načítá data ze souboru vizitek
 Comment[da]=Indlæser data fra en vCard-fil
 Comment[de]=Daten werden aus einer vCard-Datei geladen
 Comment[el]=Φορτώνει δεδομένα από ένα αρχείο VCard
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/vcard/wizard/vcardwizard.desktop 
new/kdepim-runtime-4.14.3/resources/vcard/wizard/vcardwizard.desktop
--- old/kdepim-runtime-4.14.2/resources/vcard/wizard/vcardwizard.desktop        
2014-10-09 18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/vcard/wizard/vcardwizard.desktop        
2014-11-04 08:55:43.000000000 +0100
@@ -36,7 +36,7 @@
 Comment=Loads contact from VCard File
 Comment[ca]=Carrega contactes des d'un fitxer vCard
 Comment[ca@valencia]=Carrega contactes des d'un fitxer vCard
-Comment[cs]=Načítá data ze souboru vizitek (vCard)
+Comment[cs]=Načítá data ze souboru vizitek
 Comment[da]=Indlæs kontakt fra VCard-fil
 Comment[de]=Lädt Kontakte aus einer vCard-Datei
 Comment[en_GB]=Loads contact from VCard File
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/vcarddir/vcarddirresource.desktop 
new/kdepim-runtime-4.14.3/resources/vcarddir/vcarddirresource.desktop
--- old/kdepim-runtime-4.14.2/resources/vcarddir/vcarddirresource.desktop       
2014-10-09 18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/vcarddir/vcarddirresource.desktop       
2014-11-04 08:55:43.000000000 +0100
@@ -42,7 +42,7 @@
 Comment[bs]=Učitava podakte iz direktorija sa VCards
 Comment[ca]=Carrega les dades des d'un directori amb vCard
 Comment[ca@valencia]=Carrega dades des d'un directori amb vCard
-Comment[cs]=Načítá data z adresáře vizitek (vCard)
+Comment[cs]=Načítá data z adresáře vizitek
 Comment[da]=Indlæser data fra en mappe med vCards
 Comment[de]=Daten werden aus einem Ordner mit vCard-Dateien geladen
 Comment[el]=Φορτώνει δεδομένα από έναν κατάλογο που περιέχει κάρτες VCard
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepim-runtime-4.14.2/resources/vcarddir/wizard/vcarddirwizard.desktop 
new/kdepim-runtime-4.14.3/resources/vcarddir/wizard/vcarddirwizard.desktop
--- old/kdepim-runtime-4.14.2/resources/vcarddir/wizard/vcarddirwizard.desktop  
2014-10-09 18:42:34.000000000 +0200
+++ new/kdepim-runtime-4.14.3/resources/vcarddir/wizard/vcarddirwizard.desktop  
2014-11-04 08:55:43.000000000 +0100
@@ -36,7 +36,7 @@
 Comment=Loads contact from VCard Directory
 Comment[ca]=Carrega contactes des d'un directori amb vCard
 Comment[ca@valencia]=Carrega contactes des d'un directori amb vCard
-Comment[cs]=Načítá data z adresáře vizitek (vCard)
+Comment[cs]=Načítá data z adresáře vizitek
 Comment[da]=Indlæser kontakt fra VCard-mappe
 Comment[de]=Lädt Kontakte aus einem vCard-Ordner
 Comment[en_GB]=Loads contact from VCard Directory

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to