Hello community,

here is the log from the commit of package kdepimlibs4 for openSUSE:Factory 
checked in at 2013-08-16 13:38:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kdepimlibs4 (Old)
 and      /work/SRC/openSUSE:Factory/.kdepimlibs4.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kdepimlibs4"

Changes:
--------
--- /work/SRC/openSUSE:Factory/kdepimlibs4/kdepimlibs4.changes  2013-07-30 
16:00:33.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.kdepimlibs4.new/kdepimlibs4.changes     
2013-08-16 13:38:49.000000000 +0200
@@ -1,0 +2,7 @@
+Thu Aug  8 14:56:31 UTC 2013 - [email protected]
+
+- Update to 4.11.0
+   * KDE 4.11 Final release
+   * See http://www.kde.org/announcements/4.11/
+
+-------------------------------------------------------------------

Old:
----
  kdepimlibs-4.10.97.tar.xz

New:
----
  kdepimlibs-4.11.0.tar.xz

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

Other differences:
------------------
++++++ kdepimlibs4.spec ++++++
--- /var/tmp/diff_new_pack.bj92d5/_old  2013-08-16 13:38:50.000000000 +0200
+++ /var/tmp/diff_new_pack.bj92d5/_new  2013-08-16 13:38:50.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           kdepimlibs4
-Version:        4.10.97
+Version:        4.11.0
 Release:        0
 Summary:        KDE PIM Libraries
 License:        LGPL-2.1+

++++++ kdepimlibs-4.10.97.tar.xz -> kdepimlibs-4.11.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/CMakeLists.txt 
new/kdepimlibs-4.11.0/CMakeLists.txt
--- old/kdepimlibs-4.10.97/CMakeLists.txt       2013-07-24 00:20:07.000000000 
+0200
+++ new/kdepimlibs-4.11.0/CMakeLists.txt        2013-08-06 23:51:42.000000000 
+0200
@@ -6,8 +6,8 @@
 
 ############### The kdepimlibs version (used e.g. in KdepimLibsConfig.cmake) 
###############
 set(KDEPIMLIBS_VERSION_MAJOR 4)
-set(KDEPIMLIBS_VERSION_MINOR 10)
-set(KDEPIMLIBS_VERSION_PATCH 97)
+set(KDEPIMLIBS_VERSION_MINOR 11)
+set(KDEPIMLIBS_VERSION_PATCH 0)
 set(KDEPIMLIBS_VERSION 
${KDEPIMLIBS_VERSION_MAJOR}.${KDEPIMLIBS_VERSION_MINOR}.${KDEPIMLIBS_VERSION_PATCH})
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/calendar/calendarbase.cpp 
new/kdepimlibs-4.11.0/akonadi/calendar/calendarbase.cpp
--- old/kdepimlibs-4.10.97/akonadi/calendar/calendarbase.cpp    2013-07-10 
01:12:36.000000000 +0200
+++ new/kdepimlibs-4.11.0/akonadi/calendar/calendarbase.cpp     2013-08-06 
14:46:05.000000000 +0200
@@ -49,6 +49,7 @@
 CalendarBasePrivate::CalendarBasePrivate( CalendarBase *qq ) : QObject()
                                                              , 
mIncidenceChanger( new IncidenceChanger() )
                                                              , 
mBatchInsertionCancelled( false )
+                                                             , 
mListensForNewItems( false )
                                                              , q( qq )
 {
   connect( mIncidenceChanger,
@@ -217,7 +218,7 @@
 {
   Q_UNUSED( changeId );
   Q_UNUSED( item );
-  if ( resultCode == IncidenceChanger::ResultCodeSuccess ) {
+  if ( resultCode == IncidenceChanger::ResultCodeSuccess && 
!mListensForNewItems) {
     Q_ASSERT( item.isValid() );
     Q_ASSERT( item.hasPayload<KCalCore::Incidence::Ptr>() );
     internalInsert( item );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/calendar/calendarbase_p.h 
new/kdepimlibs-4.11.0/akonadi/calendar/calendarbase_p.h
--- old/kdepimlibs-4.10.97/akonadi/calendar/calendarbase_p.h    2013-07-10 
01:12:36.000000000 +0200
+++ new/kdepimlibs-4.11.0/akonadi/calendar/calendarbase_p.h     2013-08-06 
14:46:05.000000000 +0200
@@ -68,6 +68,7 @@
   QWeakPointer<CalendarBase> mWeakPointer;
   Akonadi::Collection mCollectionForBatchInsertion;
   bool mBatchInsertionCancelled;
+  bool mListensForNewItems; // does this model detect new item creations ?
 
 private:
   CalendarBase *const q;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/calendar/etmcalendar.cpp 
new/kdepimlibs-4.11.0/akonadi/calendar/etmcalendar.cpp
--- old/kdepimlibs-4.10.97/akonadi/calendar/etmcalendar.cpp     2013-07-10 
01:12:36.000000000 +0200
+++ new/kdepimlibs-4.11.0/akonadi/calendar/etmcalendar.cpp      2013-08-06 
14:46:05.000000000 +0200
@@ -55,6 +55,7 @@
                                                           , 
mCollectionFilteringEnabled( true )
                                                           , q( qq )
 {
+  mListensForNewItems = true;
 }
 
 void ETMCalendarPrivate::init()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/entitycache_p.h 
new/kdepimlibs-4.11.0/akonadi/entitycache_p.h
--- old/kdepimlibs-4.10.97/akonadi/entitycache_p.h      2013-07-14 
12:02:21.000000000 +0200
+++ new/kdepimlibs-4.11.0/akonadi/entitycache_p.h       2013-08-06 
14:46:05.000000000 +0200
@@ -311,7 +311,7 @@
     }
 
     if ( !toRequest.isEmpty() ) {
-      request( toRequest, scope );
+      request( toRequest, scope, ids );
       return false;
     }
 
@@ -355,10 +355,10 @@
     a token to indicate which request has been finished in the
     dataAvailable() signal.
   */
-  void request( const QList<Entity::Id> &ids, const FetchScope &scope )
+  void request( const QList<Entity::Id> &ids, const FetchScope &scope, const 
QList<Entity::Id> &preserveIds = QList<Entity::Id>() )
   {
     Q_ASSERT( isNotRequested( ids ) );
-    shrinkCache();
+    shrinkCache( preserveIds );
     foreach( Entity::Id id, ids ) {
       EntityListCacheNode<T> *node = new EntityListCacheNode<T>( id );
       mCache.insert( id, node );
@@ -393,12 +393,12 @@
 
 private:
   /** Tries to reduce the cache size until at least one more object fits in. */
-  void shrinkCache()
+  void shrinkCache( const QList<Entity::Id> &preserveIds )
   {
     typename
     QHash< Entity::Id, EntityListCacheNode<T>* >::Iterator iter = 
mCache.begin();
     while ( iter != mCache.end() && mCache.size() >= mCapacity ) {
-      if ( iter.value()->pending ) {
+      if ( iter.value()->pending || preserveIds.contains( iter.key() ) ) {
         ++iter;
         continue;
       }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/item.h 
new/kdepimlibs-4.11.0/akonadi/item.h
--- old/kdepimlibs-4.10.97/akonadi/item.h       2013-07-10 01:12:36.000000000 
+0200
+++ new/kdepimlibs-4.11.0/akonadi/item.h        2013-08-06 14:46:05.000000000 
+0200
@@ -417,6 +417,7 @@
     //@cond PRIVATE
     friend class ItemCreateJob;
     friend class ItemModifyJob;
+    friend class ItemModifyJobPrivate;
     friend class ItemSync;
     friend class ProtocolHelper;
     PayloadBase* payloadBase() const;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/itemmodifyjob.cpp 
new/kdepimlibs-4.11.0/akonadi/itemmodifyjob.cpp
--- old/kdepimlibs-4.10.97/akonadi/itemmodifyjob.cpp    2013-07-10 
01:12:36.000000000 +0200
+++ new/kdepimlibs-4.11.0/akonadi/itemmodifyjob.cpp     2013-08-06 
14:46:05.000000000 +0200
@@ -99,6 +99,16 @@
 }
 
 
+QString ItemModifyJobPrivate::jobDebuggingString() const
+{
+  try {
+    return QString::fromUtf8( fullCommand() );
+  } catch ( const Exception &e ) {
+    return QString::fromUtf8( e.what() );
+  }
+}
+
+
 ItemModifyJob::ItemModifyJob( const Item &item, QObject * parent )
   : Job( new ItemModifyJobPrivate( this ), parent )
 {
@@ -134,13 +144,11 @@
 {
 }
 
-void ItemModifyJob::doStart()
+QByteArray ItemModifyJobPrivate::fullCommand() const
 {
-  Q_D( ItemModifyJob );
-
-  const Akonadi::Item item = d->mItems.first();
+  const Akonadi::Item item = mItems.first();
   QList<QByteArray> changes;
-  foreach ( int op, d->mOperations ) {
+  foreach ( int op, mOperations ) {
     switch ( op ) {
       case ItemModifyJobPrivate::RemoteId:
         if ( !item.remoteId().isNull() ) {
@@ -187,23 +195,14 @@
   }
 
   // nothing to do
-  if ( changes.isEmpty() && d->mParts.isEmpty() && item.attributes().isEmpty() 
) {
-    emitResult();
-    return;
+  if ( changes.isEmpty() && mParts.isEmpty() && item.attributes().isEmpty() ) {
+    return QByteArray();
   }
 
-  d->mTag = d->newTag();
-  QByteArray command = d->mTag;
-  try {
-    command += ProtocolHelper::entitySetToByteArray( d->mItems, "STORE" );
-  } catch ( const Exception &e ) {
-    setError( Job::Unknown );
-    setErrorText( QString::fromUtf8( e.what() ) );
-    emitResult();
-    return;
-  }
+  QByteArray command;
+  command += ProtocolHelper::entitySetToByteArray( mItems, "STORE" ); // can 
throw an exception
   command += ' ';
-  if ( !d->mRevCheck || item.revision() < 0 ) {
+  if ( !mRevCheck || item.revision() < 0 ) {
     command += "NOREV ";
   } else {
     command += "REV " + QByteArray::number( item.revision() ) + ' ';
@@ -216,7 +215,32 @@
   const QByteArray attrs = ProtocolHelper::attributesToByteArray( item, true );
   if ( !attrs.isEmpty() )
     command += ' ' + attrs;
+  return command;
+}
+
+void ItemModifyJob::doStart()
+{
+  Q_D( ItemModifyJob );
+
+  QByteArray command;
+  try {
+    command = d->fullCommand();
+  } catch ( const Exception &e ) {
+    setError( Job::Unknown );
+    setErrorText( QString::fromUtf8( e.what() ) );
+    emitResult();
+    return;
+  }
+  if ( command.isEmpty() ) {
+    emitResult();
+    return;
+  }
+
+  d->mTag = d->newTag();
+  command.prepend( d->mTag );
+
   command += d->nextPartHeader();
+
   d->writeData( command );
   d->newTag(); // hack to circumvent automatic response handling
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/itemmodifyjob_p.h 
new/kdepimlibs-4.11.0/akonadi/itemmodifyjob_p.h
--- old/kdepimlibs-4.10.97/akonadi/itemmodifyjob_p.h    2013-07-10 
01:12:36.000000000 +0200
+++ new/kdepimlibs-4.11.0/akonadi/itemmodifyjob_p.h     2013-08-06 
14:46:05.000000000 +0200
@@ -47,6 +47,9 @@
 
     void doUpdateItemRevision( Entity::Id, int oldRevision, int newRevision );
 
+    QString jobDebuggingString() const /*Q_DECL_OVERRIDE*/;
+    QByteArray fullCommand() const;
+
     Q_DECLARE_PUBLIC( ItemModifyJob )
 
     QSet<int> mOperations;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/monitor_p.cpp 
new/kdepimlibs-4.11.0/akonadi/monitor_p.cpp
--- old/kdepimlibs-4.10.97/akonadi/monitor_p.cpp        2013-07-10 
01:12:36.000000000 +0200
+++ new/kdepimlibs-4.11.0/akonadi/monitor_p.cpp 2013-08-06 14:46:05.000000000 
+0200
@@ -118,10 +118,13 @@
     || ( op == NotificationMessageV2::Remove && q_ptr->receivers( 
SIGNAL(itemRemoved(Akonadi::Item)) ) == 0
                                              && q_ptr->receivers( 
SIGNAL(itemsRemoved(Akonadi::Item::List)) ) == 0 )
     || ( op == NotificationMessageV2::Modify && q_ptr->receivers( 
SIGNAL(itemChanged(Akonadi::Item,QSet<QByteArray>)) ) == 0 )
-    || ( op == NotificationMessageV2::ModifyFlags && q_ptr->receivers( 
SIGNAL(itemsFlagsChanged(Akonadi::Item::List,QSet<QByteArray>,QSet<QByteArray>))
 ) == 0 )
+    || ( op == NotificationMessageV2::ModifyFlags &&
+         ( q_ptr->receivers( 
SIGNAL(itemsFlagsChanged(Akonadi::Item::List,QSet<QByteArray>,QSet<QByteArray>))
 ) == 0
         // Newly delivered ModifyFlags notifications will be converted to
         // itemChanged(item, "FLAGS") for legacy clients.
-    || ( op == NotificationMessageV2::ModifyFlags && ( 
!allowModifyFlagsConversion || q_ptr->receivers( 
SIGNAL(itemChanged(Akonadi::Item,QSet<QByteArray>)) ) == 0 ) )
+          && ( !allowModifyFlagsConversion || q_ptr->receivers( 
SIGNAL(itemChanged(Akonadi::Item,QSet<QByteArray>)) ) == 0 )
+          )
+       )
     || ( op == NotificationMessageV2::Move && q_ptr->receivers( 
SIGNAL(itemMoved(Akonadi::Item,Akonadi::Collection,Akonadi::Collection)) ) == 0
                                            && q_ptr->receivers( 
SIGNAL(itemsMoved(Akonadi::Item::List,Akonadi::Collection,Akonadi::Collection)) 
) == 0 )
     || ( op == NotificationMessageV2::Link && q_ptr->receivers( 
SIGNAL(itemLinked(Akonadi::Item,Akonadi::Collection)) ) == 0
@@ -547,11 +550,15 @@
         const int appended = translateAndCompress( pendingNotifications, msg );
         if ( appended > 0 ) {
           appendedMessages += appended;
-          // translateAndCompress can remove an existing "modify" when msg is 
a "delete". We need to detect that, for ChangeRecorder.
-          if ( pendingNotifications.count() != oldSize + 1 )
-            ++erasedMessages;
-        } else
+        } else {
           ++modifiedMessages;
+        }
+        // translateAndCompress can remove an existing "modify" when msg is a 
"delete".
+        // Or it can merge two ModifyFlags and return false.
+        // We need to detect such removals, for ChangeRecorder.
+        if ( pendingNotifications.count() != oldSize + appended ) {
+          ++erasedMessages; // this count isn't exact, but it doesn't matter
+        }
       } else if ( needsSplit ) {
         // If it's not queued at least make sure we fetch all the items from 
split
         // notifications in one go.
@@ -572,7 +579,7 @@
   }
 
   // tell ChangeRecorder (even if 0 appended, the compression could have made 
changes to existing messages)
-  if ( appendedMessages > 0 || modifiedMessages > 0 ) {
+  if ( appendedMessages > 0 || modifiedMessages > 0 || erasedMessages > 0 ) {
     if ( erasedMessages > 0 )
       notificationsErased();
     else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/tests/entitycachetest.cpp 
new/kdepimlibs-4.11.0/akonadi/tests/entitycachetest.cpp
--- old/kdepimlibs-4.10.97/akonadi/tests/entitycachetest.cpp    2013-07-10 
01:12:36.000000000 +0200
+++ new/kdepimlibs-4.11.0/akonadi/tests/entitycachetest.cpp     2013-08-06 
14:46:05.000000000 +0200
@@ -150,6 +150,25 @@
       QCOMPARE( item.id(), 1ll );
       QVERIFY( item.hasPayload<QByteArray>() );
     }
+
+    void testListCache_ensureCached()
+    {
+      ItemFetchScope scope;
+
+      EntityListCache<Item, ItemFetchJob, ItemFetchScope> cache( 3 );
+      QSignalSpy spy( &cache, SIGNAL(dataAvailable()) );
+      QVERIFY( spy.isValid() );
+
+      cache.request( QList<Entity::Id>() << 1 << 2 << 3, scope );
+      QTest::qWait( 1000 );
+      QCOMPARE( spy.count(), 1 );
+      QVERIFY( cache.isCached( QList<Entity::Id>() << 1 << 2 << 3 ) );
+
+      cache.ensureCached( QList<Entity::Id>() << 1 << 2 << 3 << 4, scope );
+      QTest::qWait( 1000 );
+      QCOMPARE( spy.count(), 2 );
+      QVERIFY( cache.isCached( QList<Entity::Id>() << 1 << 2 << 3 << 4 ) );
+    }
 };
 
 QTEST_AKONADIMAIN( EntityCacheTest, NoGUI )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/kabc/plugins/dir/dir.desktop 
new/kdepimlibs-4.11.0/kabc/plugins/dir/dir.desktop
--- old/kdepimlibs-4.10.97/kabc/plugins/dir/dir.desktop 2013-07-23 
11:00:40.000000000 +0200
+++ new/kdepimlibs-4.11.0/kabc/plugins/dir/dir.desktop  2013-08-06 
14:46:05.000000000 +0200
@@ -62,6 +62,7 @@
 Comment[fr]=Fournit un accès aux contacts dont chacun est enregistré dans un 
fichier, dans le dossier indiqué. Le format « vCard » et d'autres formats sont 
pris en charge selon les modules externes disponibles.
 Comment[hu]=Névjegyek elérését biztosítja. Minden névjegy külön fájlban 
található, egy adott mappában. Támogatja a szabványos vCard fájlt és az 
elérhető bővítményektől függően más formátumokat.
 Comment[ia]=Il provide accessos a contactos, cata un immagazinate in un 
singule file, in un date dossier. Il supporta file de standard VCard e altere 
formatos dependente ab le disponibilitate de plugins.
+Comment[it]=Fornisce accesso a contatti, ciascuno dei quali memorizzato in un 
singolo file in una cartella data. Gestisce file in standard vCard e altri 
formati in base alle estensioni disponibili.
 Comment[kk]=Көрсетілген қапшықта, әрбірі бөлек файлда сақталған контакттарға 
қатынау мүмкіндігін береді. Плагині бар-жоғына қарай, vCard және басқа да 
пішімдерді тани алады.
 Comment[nb]=Gir tilgang til kontakter, lagret hver for seg i en enkelt fil, i 
en gitt mappe. Støtter standard vCard og andre formater avhengig av 
tilgjengelige programtillegg.
 Comment[nl]=Geeft toegang tot contactpersonen, elk opgeslagen in een enkel 
bestand in een opgegeven map. Ondersteunt standaard vCard-bestand en andere van 
beschikbare plug-ins afhankelijke formaten
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/kabc/plugins/file/file.desktop 
new/kdepimlibs-4.11.0/kabc/plugins/file/file.desktop
--- old/kdepimlibs-4.10.97/kabc/plugins/file/file.desktop       2013-07-23 
11:00:40.000000000 +0200
+++ new/kdepimlibs-4.11.0/kabc/plugins/file/file.desktop        2013-08-06 
14:46:05.000000000 +0200
@@ -67,6 +67,7 @@
 Comment[fr]=Fournit un accès aux contacts enregistrés dans un unique fichier 
local. Le format « vCard » et d'autres formats sont pris en charge selon les 
modules externes disponibles.
 Comment[hu]=Névjegyek elérését biztosítja. Minden névjegy egy közös helyi 
fájlban található. Támogatja a szabványos vCard fájlt és az elérhető 
bővítményektől függően más formátumokat.
 Comment[ia]=Il provide accessos a contactos immagazinate in un singule file 
local. Il supporta files de standard VCard e altere formatos in dependentia de 
plugins disponibile.
+Comment[it]=Fornisce accesso a contatti memorizzati in un singolo file locale. 
Gestisce file in standard vCard e altri formati in base alle estensioni 
disponibili.
 Comment[kk]=Бір файлда сақталған контакттарға қатынау мүмкіндігін береді. 
Плагині бар-жоғына қарай, vCard және басқа да пішімдерді тани алады.
 Comment[nb]=Gir tilgang til kontakter, lagret i en enkelt lokal fil. Støtter 
standard vCard og andre formater avhengig av tilgjengelige programtillegg.
 Comment[nl]=Geeft toegang tot in een enkel lokaal bestand opgeslagen 
contactpersonen. Ondersteunt standaard vCard-bestanden en andere van 
beschikbare plug-ins afhankelijke formaten.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/kabc/plugins/net/net.desktop 
new/kdepimlibs-4.11.0/kabc/plugins/net/net.desktop
--- old/kdepimlibs-4.10.97/kabc/plugins/net/net.desktop 2013-07-23 
11:00:40.000000000 +0200
+++ new/kdepimlibs-4.11.0/kabc/plugins/net/net.desktop  2013-08-06 
14:46:05.000000000 +0200
@@ -67,6 +67,7 @@
 Comment[fr]=Fournit un accès aux contacts enregistrés dans des fichiers 
distants en utilisant le mécanisme réseau KIO de KDE. Le format « vCard » et 
d'autres formats sont pris en charge selon les modules externes disponibles.
 Comment[hu]=Távoli fájlokban található névjegyek elérését biztosítja a KDE KIO 
hálózati keretrendszeren keresztül. Támogatja a szabványos vCard fájlt és az 
elérhető bővítményektől függően más formátumokat.
 Comment[ia]=Il provide accesso a contactos in files remote usante le schema de 
rete de KDE KIO. Il suppporta files de standard VCard e altere formatos in 
dependentia de plugins disponibile.
+Comment[it]=Fornisce accesso a contatti su file remoti usando KIO, 
l'infrastruttura di rete di KDE. Gestisce file in standard vCard e altri 
formati in base alle estensioni disponibili.
 Comment[kk]=KDE-нің KIO желі құрылымы арқылы қашықтағы файлдарда сақталған 
контакттарға қатынау мүмкіндігін береді. Плагині бар-жоғына қарай, vCard және 
басқа да пішімдерді тани алады.
 Comment[nb]=Gir tilgang til kontakter i nettverksfiler, ved bruk av KDEs 
rammeverk KIO for nettverk. Støtter standard vCard og andre formater avhengig 
av tilgjengelige programtillegg.
 Comment[nl]=Geeft toegang tot contactpersonen in externe bestanden 
gebruikmakend van KIO, een netwerkonderdeel van KDE. Ondersteunt standaard 
vCard-bestanden en andere van beschikbare plug-ins afhankelijke formaten.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/kblog/CMakeLists.txt 
new/kdepimlibs-4.11.0/kblog/CMakeLists.txt
--- old/kdepimlibs-4.10.97/kblog/CMakeLists.txt 2013-07-10 01:12:36.000000000 
+0200
+++ new/kdepimlibs-4.11.0/kblog/CMakeLists.txt  2013-08-07 17:01:35.000000000 
+0200
@@ -2,7 +2,7 @@
 
 include_directories(${Boost_INCLUDE_DIR})
 
-add_subdirectory( tests )
+#add_subdirectory( tests )
 
 ########### next target ###############
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/kcal/CMakeLists.txt 
new/kdepimlibs-4.11.0/kcal/CMakeLists.txt
--- old/kdepimlibs-4.10.97/kcal/CMakeLists.txt  2013-07-10 01:12:36.000000000 
+0200
+++ new/kdepimlibs-4.11.0/kcal/CMakeLists.txt   2013-08-07 17:01:35.000000000 
+0200
@@ -13,9 +13,9 @@
 
 include (ConfigureChecks.cmake)
 
-if(KDE4_BUILD_TESTS)
-  add_definitions(-DCOMPILING_TESTS)
-endif()
+#if(KDE4_BUILD_TESTS)
+# add_definitions(-DCOMPILING_TESTS)
+#endif()
 
 include_directories(
   ${LIBICAL_INCLUDE_DIRS}
@@ -142,7 +142,7 @@
 install(TARGETS kcal_localdir  DESTINATION ${PLUGIN_INSTALL_DIR})
 endif()
 
-add_subdirectory( tests )
+#add_subdirectory( tests )
 
 ########### install files ###############
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/kcalcore/tests/readandwrite.cpp 
new/kdepimlibs-4.11.0/kcalcore/tests/readandwrite.cpp
--- old/kdepimlibs-4.10.97/kcalcore/tests/readandwrite.cpp      2013-07-10 
01:12:36.000000000 +0200
+++ new/kdepimlibs-4.11.0/kcalcore/tests/readandwrite.cpp       2013-08-07 
21:56:57.000000000 +0200
@@ -23,6 +23,7 @@
 #include "../icalformat.h"
 #include "../memorycalendar.h"
 #include "../vcalformat.h"
+#include "../config-kcalcore.h"
 
 #include <kaboutdata.h>
 #include <kdebug.h>
@@ -65,6 +66,16 @@
   kDebug() << "Input file:" << input;
   kDebug() << "Output file:" << output;
 
+#ifdef USE_ICAL_0_46
+  // Jenkins is still running a old libical version.
+  // Add a workaround here since sysadmins don't have time to install libical 
1.x before
+  // the 4.11 KDE release.
+  if (outputFileInfo.fileName() == 
QLatin1String("KOrganizer_3.1.ics.ical.out") ||
+      outputFileInfo.fileName() == 
QLatin1String("KOrganizer_3.2.ics.ical.out")) {
+    return 0;
+  }
+#endif
+
   MemoryCalendar::Ptr cal( new MemoryCalendar( KDateTime::UTC ) );
   FileStorage instore( cal, input );
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/kcalutils/incidenceformatter.cpp 
new/kdepimlibs-4.11.0/kcalutils/incidenceformatter.cpp
--- old/kdepimlibs-4.10.97/kcalutils/incidenceformatter.cpp     2013-07-10 
01:12:36.000000000 +0200
+++ new/kdepimlibs-4.11.0/kcalutils/incidenceformatter.cpp      2013-08-06 
14:46:05.000000000 +0200
@@ -3805,7 +3805,7 @@
                                         KDateTime::Spec spec )
 {
   ToolTipVisitor v;
-  if ( v.act( sourceName, incidence, date, richText, spec ) ) {
+  if ( incidence && v.act( sourceName, incidence, date, richText, spec ) ) {
     return v.result();
   } else {
     return QString();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/kimap/searchjob.cpp 
new/kdepimlibs-4.11.0/kimap/searchjob.cpp
--- old/kdepimlibs-4.10.97/kimap/searchjob.cpp  2013-07-10 01:12:37.000000000 
+0200
+++ new/kdepimlibs-4.11.0/kimap/searchjob.cpp   2013-08-06 14:46:05.000000000 
+0200
@@ -123,9 +123,9 @@
   }
 
   if ( d->logic == SearchJob::Not ) {
-    searchKey += "NOT";
-  } else if ( d->logic == SearchJob::Or ) {
-    searchKey += "OR";
+    searchKey += "NOT ";
+  } else if ( d->logic == SearchJob::Or && d->criterias.size() > 1 ) {
+    searchKey += "OR ";
   }
 
   if ( d->logic == SearchJob::And ) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/kimap/tests/CMakeLists.txt 
new/kdepimlibs-4.11.0/kimap/tests/CMakeLists.txt
--- old/kdepimlibs-4.10.97/kimap/tests/CMakeLists.txt   2013-07-10 
01:12:37.000000000 +0200
+++ new/kdepimlibs-4.11.0/kimap/tests/CMakeLists.txt    2013-08-06 
14:46:05.000000000 +0200
@@ -42,6 +42,7 @@
   imapsettest
   idlejobtest
   quotarootjobtest
+  searchjobtest
 )
 
 ###########   manual tests  ###############
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdepimlibs-4.10.97/kimap/tests/searchjobtest.cpp 
new/kdepimlibs-4.11.0/kimap/tests/searchjobtest.cpp
--- old/kdepimlibs-4.10.97/kimap/tests/searchjobtest.cpp        1970-01-01 
01:00:00.000000000 +0100
+++ new/kdepimlibs-4.11.0/kimap/tests/searchjobtest.cpp 2013-08-06 
14:46:05.000000000 +0200
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2013  Daniel Vrátil <[email protected]>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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 <qtest_kde.h>
+
+#include "kimaptest/fakeserver.h"
+#include "kimap/loginjob.h"
+#include "kimap/session.h"
+#include "kimap/searchjob.h"
+
+#include <QTcpSocket>
+#include <QtTest>
+#include <KDebug>
+
+typedef QPair< KIMAP::SearchJob::SearchCriteria, QByteArray > 
SearchCriteriaValuePair;
+
+Q_DECLARE_METATYPE(QList<SearchCriteriaValuePair>)
+Q_DECLARE_METATYPE(KIMAP::SearchJob::SearchLogic)
+
+#define searchPair(a,b) qMakePair<KIMAP::SearchJob::SearchCriteria, 
QByteArray>( a, b )
+
+class SearchJobTest: public QObject {
+  Q_OBJECT
+
+private Q_SLOTS:
+
+void testSearch_data() {
+  QTest::addColumn<QList<QByteArray> >( "scenario" );
+  QTest::addColumn<bool>( "uidbased" );
+  QTest::addColumn<int>( "expectedResultsCount" );
+  QTest::addColumn<KIMAP::SearchJob::SearchLogic>( "searchLogic" );
+  QTest::addColumn<QList<SearchCriteriaValuePair> >( "searchCriteria" );
+
+  QList<QByteArray> scenario;
+  QList<SearchCriteriaValuePair> criteria;
+  scenario << FakeServer::preauth()
+           << "C: A000001 UID SEARCH HEADER Message-Id <[email protected]>"
+           << "S: * SEARCH 10 12"
+           << "S: A000001 OK search done";
+
+  criteria << searchPair( KIMAP::SearchJob::Header, "Message-Id 
<[email protected]>" );
+  QTest::newRow( "uidbased header search") << scenario << true << 2 << 
KIMAP::SearchJob::And << criteria;
+
+  scenario.clear();
+  criteria.clear();
+  scenario << FakeServer::preauth()
+           << "C: A000001 SEARCH OR (NEW) (HEADER Message-Id 
<[email protected]>)"
+           << "S: * SEARCH"
+           << "S: A000001 OK search done";
+
+  criteria << searchPair( KIMAP::SearchJob::New, QByteArray() )
+           << searchPair( KIMAP::SearchJob::Header, "Message-Id 
<[email protected]>" );
+  QTest::newRow( "OR search with no results") << scenario << false << 0 << 
KIMAP::SearchJob::Or << criteria;
+
+  scenario.clear();
+  criteria.clear();
+  scenario << FakeServer::preauth()
+           << "C: A000001 SEARCH TO  {25}\r\n<[email protected]>"
+           << "S: * SEARCH 1"
+           << "S: A000001 OK search done";
+  criteria << searchPair( KIMAP::SearchJob::To, "<[email protected]>" );
+  QTest::newRow( "literal data search") << scenario << false << 1 << 
KIMAP::SearchJob::And << criteria;
+
+  scenario.clear();
+  criteria.clear();
+  scenario << FakeServer::preauth()
+           << "C: A000001 UID SEARCH NOT (NEW)"
+           << "S: * SEARCH 1 2 3 4 5 6"
+           << "S: A000001 OK search done";
+  criteria << searchPair( KIMAP::SearchJob::New, QByteArray() );
+  QTest::newRow( "uidbased NOT NEW search") << scenario << true << 6 << 
KIMAP::SearchJob::Not << criteria;
+}
+
+void testSearch()
+{
+    QFETCH( QList<QByteArray>, scenario );
+    QFETCH( bool, uidbased );
+    QFETCH( int, expectedResultsCount );
+    QFETCH( KIMAP::SearchJob::SearchLogic, searchLogic );
+    QFETCH( QList<SearchCriteriaValuePair>, searchCriteria );
+
+    FakeServer fakeServer;
+    fakeServer.setScenario( scenario );
+    fakeServer.startAndWait();
+
+    KIMAP::Session session( "127.0.0.1", 5989 );
+
+    KIMAP::SearchJob *job = new KIMAP::SearchJob( &session );
+    job->setUidBased( uidbased );
+    job->setSearchLogic( searchLogic );
+    Q_FOREACH ( const SearchCriteriaValuePair &pair, searchCriteria ) {
+      if ( pair.second.isEmpty() ) {
+        job->addSearchCriteria( pair.first );
+      } else {
+        job->addSearchCriteria( pair.first, pair.second );
+      }
+    }
+
+    bool result = job->exec();
+    QVERIFY( result );
+    if ( result ) {
+      QList<qint64> foundItems = job->results();
+      QCOMPARE( foundItems.size(), expectedResultsCount );
+    }
+
+    fakeServer.quit();
+}
+
+};
+
+QTEST_KDEMAIN_CORE( SearchJobTest )
+
+#include "searchjobtest.moc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdepimlibs-4.10.97/kpimtextedit/insertimagewidget.cpp 
new/kdepimlibs-4.11.0/kpimtextedit/insertimagewidget.cpp
--- old/kdepimlibs-4.10.97/kpimtextedit/insertimagewidget.cpp   2013-07-10 
01:12:37.000000000 +0200
+++ new/kdepimlibs-4.11.0/kpimtextedit/insertimagewidget.cpp    2013-08-06 
14:46:05.000000000 +0200
@@ -138,7 +138,6 @@
 
 void InsertImageWidgetPrivate::_k_slotUrlChanged( const QString &text )
 {
-  q->enableButtonOk( !text.isEmpty() );
   QImage image( text );
   if ( !image.isNull() ) {
     height->setValue( image.height() );
@@ -150,7 +149,7 @@
     preview->clear();
     imageRatio = -1;
   }
-  q->enableButtonOk( !text.isEmpty() && !image.isNull() );
+  q->enableButtonOk( !text.isEmpty() );
 }
 
 void InsertImageWidgetPrivate::_k_slotImageWidthChanged( int value )

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to