packages: kde4-kdepimlibs/kde4-kdepimlibs-branch.diff, kde4-kdepimlibs/kde4...

arekm arekm at pld-linux.org
Thu Oct 21 17:20:18 CEST 2010


Author: arekm                        Date: Thu Oct 21 15:20:18 2010 GMT
Module: packages                      Tag: HEAD
---- Log message:
- rel 2; include branch diff

---- Files affected:
packages/kde4-kdepimlibs:
   kde4-kdepimlibs-branch.diff (1.23 -> 1.24) , kde4-kdepimlibs.spec (1.123 -> 1.124) 

---- Diffs:

================================================================
Index: packages/kde4-kdepimlibs/kde4-kdepimlibs-branch.diff
diff -u packages/kde4-kdepimlibs/kde4-kdepimlibs-branch.diff:1.23 packages/kde4-kdepimlibs/kde4-kdepimlibs-branch.diff:1.24
--- packages/kde4-kdepimlibs/kde4-kdepimlibs-branch.diff:1.23	Fri Sep 24 19:53:57 2010
+++ packages/kde4-kdepimlibs/kde4-kdepimlibs-branch.diff	Thu Oct 21 17:20:13 2010
@@ -1,453 +1,962 @@
-Index: cmake/modules/FindLibical.cmake
+Index: kmime/kmime_content.h
 ===================================================================
---- cmake/modules/FindLibical.cmake	(.../tags/KDE/4.5.1/kdepimlibs)	(wersja 1179155)
-+++ cmake/modules/FindLibical.cmake	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1179155)
-@@ -70,6 +70,9 @@
-       set(LIBICAL_INCLUDE_DIRS "")
-       set(LIBICAL_LIBRARIES "")
-     endif(NOT LIBICAL_VERSION_OK)
-+    if((LIBICAL_VERSION VERSION_EQUAL 0.46) OR (LIBICAL_VERSION VERSION_GREATER 0.46))
-+      set(USE_ICAL_0_46 TRUE)
-+    endif()
-   else(COMPILE_RESULT AND RUN_RESULT EQUAL 1)
-     message(FATAL_ERROR "Unable to compile or run the libical version detection program.")
-   endif(COMPILE_RESULT AND RUN_RESULT EQUAL 1)
-Index: kimap/sessionthread.cpp
-===================================================================
---- kimap/sessionthread.cpp	(.../tags/KDE/4.5.1/kdepimlibs)	(wersja 1179155)
-+++ kimap/sessionthread.cpp	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1179155)
-@@ -49,7 +49,10 @@
- {
-   // don't call quit() directly, this will deadlock in wait() if exec() hasn't run yet
-   QMetaObject::invokeMethod( this, "quit" );
--  wait();
-+  if ( !wait( 10 * 1000 ) ) {
-+    kWarning() << "Session thread refuses to die, killing harder...";
-+    terminate();
-+  }
- }
- 
- void SessionThread::sendData( const QByteArray &payload )
-Index: kmime/kmime_content.cpp
-===================================================================
---- kmime/kmime_content.cpp	(.../tags/KDE/4.5.1/kdepimlibs)	(wersja 1179155)
-+++ kmime/kmime_content.cpp	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1179155)
-@@ -513,7 +513,6 @@
-         // Add to new content.
-         main->setHeader( *it );
-         // Remove from this content.
--        delete (*it);
-         it = h_eaders.erase( it );
-       } else {
-         ++it;
-@@ -576,7 +575,6 @@
-     foreach( Headers::Base *h, main->h_eaders ) {
-       setHeader( h ); // Will remove the old one if present.
+--- kmime/kmime_content.h	(.../tags/KDE/4.5.2/kdepimlibs)	(wersja 1188163)
++++ kmime/kmime_content.h	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1188163)
+@@ -770,8 +770,7 @@
+ 
+ template <typename T> T *Content::header( bool create )
+ {
+-  T dummy;
+-  Headers::Base *h = headerByType( dummy.type() );
++  Headers::Base *h = headerByType( T::staticType() );
+   if( h ) {
+     // Make sure the header is actually of the right type.
+     Q_ASSERT( dynamic_cast<T*>( h ) );
+Index: kmime/kmime_parsers.cpp
+===================================================================
+--- kmime/kmime_parsers.cpp	(.../tags/KDE/4.5.2/kdepimlibs)	(wersja 1188163)
++++ kmime/kmime_parsers.cpp	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1188163)
+@@ -22,7 +22,6 @@
+ */
+ #include "kmime_parsers.h"
+ 
+-#include <QtCore/QRegExp>
+ #include <QtCore/QByteArray>
+ 
+ using namespace KMime::Parser;
+@@ -164,7 +163,7 @@
+ //==============================================================================
+ 
+ UUEncoded::UUEncoded( const QByteArray &src, const QByteArray &subject ) :
+-  NonMimeParser( src ), s_ubject( subject )
++  NonMimeParser( src ), s_ubject( subject ), m_beginRegExp( "begin [0-9][0-9][0-9]" ), m_numberRegExp( "[0-9]+/[0-9]+" )
+ {}
+ 
+ bool UUEncoded::parse()
+@@ -178,7 +177,7 @@
+     QByteArray tmp, fileName;
+ 
+     if ( ( beginPos = QString( s_rc ).
+-           indexOf( QRegExp( "begin [0-9][0-9][0-9]" ), currentPos ) ) > -1 &&
++           indexOf( m_beginRegExp, currentPos ) ) > -1 &&
+          ( beginPos == 0 || s_rc.at( beginPos - 1 ) == '\n') ) {
+       containsBegin = true;
+       uuStart = s_rc.indexOf( '\n', beginPos );
+@@ -223,9 +222,8 @@
+ 
+       if ( ( !containsBegin || !containsEnd ) && !s_ubject.isNull() ) {
+         // message may be split up => parse subject
+-        QRegExp rx("[0-9]+/[0-9]+");
+-        pos = rx.indexIn( QString( s_ubject ), 0 );
+-        len = rx.matchedLength();
++        pos = m_numberRegExp.indexIn( QString( s_ubject ), 0 );
++        len = m_numberRegExp.matchedLength();
+         if ( pos != -1 ) {
+           tmp = s_ubject.mid( pos, len );
+           pos = tmp.indexOf( '/' );
+Index: kmime/kmime_message.cpp
+===================================================================
+--- kmime/kmime_message.cpp	(.../tags/KDE/4.5.2/kdepimlibs)	(wersja 1188163)
++++ kmime/kmime_message.cpp	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1188163)
+@@ -103,8 +103,9 @@
+   KMime::Content *c = this;
+   while ( c ) {
+     // not a multipart message
+-    if ( !c->contentType()->isMultipart() ) {
+-      if ( c->contentType()->mimeType() == type || type.isEmpty() ) {
++    const KMime::Headers::ContentType * const contentType = c->contentType();
++    if ( !contentType->isMultipart() ) {
++      if ( contentType->mimeType() == type || type.isEmpty() ) {
+         return c;
+       }
+       return 0;
+@@ -116,7 +117,7 @@
      }
--    qDeleteAll( main->h_eaders );
-     main->h_eaders.clear();
  
-     // Move the body.
-Index: doc/kcontrol/kresources/index.docbook
-===================================================================
---- doc/kcontrol/kresources/index.docbook	(.../tags/KDE/4.5.1/kdepimlibs)	(wersja 1179155)
-+++ doc/kcontrol/kresources/index.docbook	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1179155)
-@@ -6,6 +6,7 @@
- ]>
- 	
- <article lang="&language;">
-+<title>&kde; Resources</title>
- <articleinfo>
- 
- <authorgroup>
-@@ -26,8 +27,6 @@
- <keyword>notes</keyword>
- </keywordset>
- </articleinfo>
--<sect1 id="kde-resources">
--<title>&kde; Resources</title>
- 
- <para>This module is a configuration tool for managing the resources used by different &kde; applications.
- It allows you to add, deleted or modify the resources for <guilabel>Alarms</guilabel>, 
-@@ -90,6 +89,4 @@
- will not be able to select it.
- </para>
- 
--</sect1>
--
- </article>
-Index: kcal/icalformat_p.cpp
-===================================================================
---- kcal/icalformat_p.cpp	(.../tags/KDE/4.5.1/kdepimlibs)	(wersja 1179155)
-+++ kcal/icalformat_p.cpp	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1179155)
-@@ -784,7 +784,11 @@
-   if ( att->isUri() ) {
-     attach = icalattach_new_from_url( att->uri().toUtf8().data() );
-   } else {
-+#ifdef USE_ICAL_0_46
-+    attach = icalattach_new_from_data ( ( const char * )att->data(), 0, 0 );
-+#else
-     attach = icalattach_new_from_data ( ( unsigned char * )att->data(), 0, 0 );
-+#endif
-   }
-   icalproperty *p = icalproperty_new_attach( attach );
+     // multipart/alternative
+-    if ( c->contentType()->subType() == "alternative" ) {
++    if ( contentType->subType() == "alternative" ) {
+       if ( type.isEmpty() ) {
+         return c->contents().first();
+       }
+Index: kmime/kmime_headers.h
+===================================================================
+--- kmime/kmime_headers.h	(.../tags/KDE/4.5.2/kdepimlibs)	(wersja 1188163)
++++ kmime/kmime_headers.h	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1188163)
+@@ -109,7 +109,8 @@
+ 
+ #define kmime_mk_trivial_ctor_with_name( subclass )     \
+   kmime_mk_trivial_ctor( subclass )                     \
+-    const char *type() const;
++    const char *type() const;                           \
++    static const char *staticType();
+ //@endcond
+ 
+ //
+Index: kmime/kmime_parsers.h
+===================================================================
+--- kmime/kmime_parsers.h	(.../tags/KDE/4.5.2/kdepimlibs)	(wersja 1188163)
++++ kmime/kmime_parsers.h	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1188163)
+@@ -23,8 +23,9 @@
+ #ifndef __KMIME_PARSERS__
+ #define __KMIME_PARSERS__
+ 
+-#include<QByteArray>
+-#include<QList>
++#include<QtCore/QByteArray>
++#include<QtCore/QList>
++#include<QtCore/QRegExp>
+ 
+ namespace KMime {
+ 
+@@ -103,6 +104,10 @@
+ 
+   protected:
+     QByteArray s_ubject;
++
++  private:
++    QRegExp m_beginRegExp;
++    QRegExp m_numberRegExp;
+ };
+ 
+ /** Helper-class: tries to extract the data from a possibly
+Index: kmime/kmime_headers.cpp
+===================================================================
+--- kmime/kmime_headers.cpp	(.../tags/KDE/4.5.2/kdepimlibs)	(wersja 1188163)
++++ kmime/kmime_headers.cpp	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1188163)
+@@ -124,12 +124,14 @@
+                                                                       \
+ const char *subclass::type() const                                    \
+ {                                                                     \
+-  return #name;                                                       \
+-}
++  return staticType();                                                \
++}                                                                     \
++const char *subclass::staticType() { return #name; }
+ 
+ #define kmime_mk_trivial_ctor_with_name_and_dptr( subclass, baseclass, name ) \
+ kmime_mk_trivial_ctor_with_dptr( subclass, baseclass ) \
+-const char *subclass::type() const { return #name; }
++const char *subclass::type() const { return staticType(); } \
++const char *subclass::staticType() { return #name; }
+ 
+ #define kmime_mk_dptr_ctor( subclass, baseclass ) \
+ subclass::subclass( subclass##Private *d, KMime::Content *parent ) : baseclass( d, parent ) {}
+@@ -1715,7 +1717,13 @@
+ 
+ QByteArray ContentType::mimeType() const
+ {
+-  return d_func()->mimeType + '/' + d_func()->mimeSubType;
++  Q_D(const ContentType);
++  QByteArray mt;
++  mt.reserve( d->mimeType.size() + d->mimeSubType.size() + 1 );
++  mt.append( d->mimeType );
++  mt.append( '/' );
++  mt.append( d->mimeSubType );
++  return mt;
+ }
  
-Index: kcal/CMakeLists.txt
+ QByteArray ContentType::mediaType() const
+Index: kcal/localdir.desktop
 ===================================================================
---- kcal/CMakeLists.txt	(.../tags/KDE/4.5.1/kdepimlibs)	(wersja 1179155)
-+++ kcal/CMakeLists.txt	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1179155)
-@@ -9,6 +9,11 @@
- add_definitions(-DWANT_DEPRECATED_KABC_API)
- add_definitions(-DWANT_DEPRECATED_KRESOURCE_API)
- 
-+# Workaround a SIC change in libical 0.46
-+if(USE_ICAL_0_46)
-+  add_definitions(-DUSE_ICAL_0_46)
-+endif()
+--- kcal/localdir.desktop	(.../tags/KDE/4.5.2/kdepimlibs)	(wersja 1188163)
++++ kcal/localdir.desktop	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1188163)
+@@ -57,7 +57,7 @@
+ Comment[es]=Provee acceso a elementos de un calendario, cada uno almacenado en un archivo diferente, dentro de un directorio determinado
+ Comment[et]=Võimaldab kasutada eraldi failidesse salvestatud kalendrielemente määratud kataloogis
+ Comment[fi]=Tarjoaa pääsyn annetun kansion erillisiin tiedostoihin tallennettuihin kalenteritietueisiin
+-Comment[fr]=Fourni l'accès à des entrées d'agenda, chaque élément étant représenté par un fichier dans le dossier indiqué
++Comment[fr]=Fournit l'accès à des entrées d'agenda, chaque élément étant représenté par un fichier dans le dossier indiqué
+ Comment[ga]=Soláthraíonn sé seo rochtain ar mhíreanna féilire, gach ceann stóráilte i gcomhad aonair, i gcomhadlann sonraithe
+ Comment[gl]=Dá acceso aos obxectos do calendario, cada un gardado nun ficheiro nun cartafol dado
+ Comment[hu]=Helyi mappában tárolt naptérbejegyzések elérését biztosítja. Minden bejegyzés külön fájlban található.
+Index: kcal/local.desktop
+===================================================================
+--- kcal/local.desktop	(.../tags/KDE/4.5.2/kdepimlibs)	(wersja 1188163)
++++ kcal/local.desktop	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1188163)
+@@ -57,7 +57,7 @@
+ Comment[es]=Provee acceso a un calendario almacenado en un único archivo local
+ Comment[et]=Võimaldab kasutada kohalikku faili salvestatud kalendrit
+ Comment[fi]=Tarjoaa pääsyn yksittäiseen paikalliseen tiedostoon tallennettuun kalenteriin
+-Comment[fr]=Fourni l'accès à un agenda stocké dans un fichier local
++Comment[fr]=Fournit l'accès à un agenda stocké dans un fichier local
+ Comment[ga]=Soláthraíonn sé seo rochtain ar fhéilire stóráilte i gcomhad logánta amháin
+ Comment[gl]=Dá acceso a un calendario gardado nun único ficheiro local
+ Comment[hu]=Helyi fájlban tárolt naptár elérését biztosítja.
+Index: kcal/scheduler.cpp
+===================================================================
+--- kcal/scheduler.cpp	(.../tags/KDE/4.5.2/kdepimlibs)	(wersja 1188163)
++++ kcal/scheduler.cpp	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1188163)
+@@ -256,8 +256,8 @@
+           if ( !visitor.assign( calInc, newInc ) ) {
+             kError() << "assigning different incidence types";
+           } else {
++            calInc->setSchedulingID( newInc->uid() );
+             calInc->setUid( oldUid );
+-            calInc->setSchedulingID( newInc->uid() );
+             res = true;
+           }
+         }
+@@ -345,8 +345,8 @@
+           kError() << "assigning different incidence types";
+           res = false;
+         } else {
++          i->setSchedulingID( inc->uid() );
+           i->setUid( oldUid );
+-          i->setSchedulingID( inc->uid() );
+         }
+         deleteTransaction( incidence );
+         return res;
+Index: kabc/plugins/file/file.desktop
+===================================================================
+--- kabc/plugins/file/file.desktop	(.../tags/KDE/4.5.2/kdepimlibs)	(wersja 1188163)
++++ kabc/plugins/file/file.desktop	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1188163)
+@@ -59,7 +59,7 @@
+ Comment[es]=Provee acceso a los contactos almacenados en un único archivo local. Soporta archivos VCard estándar y otros formatos dependiendo de la disponibilidad de los componentes.
+ Comment[et]=Võimaldab kasutada kohalikku faili salvestatud kontakte. Toetab standardseid VCard-faile ja teisi vorminguid sõltuvalt pluginate olemasolust.
+ Comment[fi]=Tarjoaa pääsyn yksittäiseen paikalliseen tiedostoon tallennettuihin yhteystietoihin. Tukee vakiomuotoisia vCard-tiedostoja sekä muita tiedostomuotoja liitännäisistä riippuen.
+-Comment[fr]=Fourni l'accès aux contacts stockés dans un seul fichier local. Le format VCard et d'autres formats sont pris en charge en fonction des modules externes disponibles.
++Comment[fr]=Fournit l'accès aux contacts stockés dans un seul fichier local. Le format VCard et d'autres formats sont pris en charge en fonction des modules externes disponibles.
+ Comment[ga]=Soláthraíonn sé seo rochtain ar theagmhálacha, stóráilte i gcomhad aonair. Tacaítear le comhaid v-Chárta agus formáidí eile, ag brath ar na breiseáin atá ar fáil.
+ Comment[gl]=Dá acceso a contactos gardados nun único ficheiro local. Admite ficheiros vCard estándar e outros formatos en función das extensións dispoñíbeis.
+ 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 standard vCard formátumot, és bővítmények segítségével más formátumok is kezelhetők.
+Index: kabc/plugins/ldapkio/ldapkio.desktop
+===================================================================
+--- kabc/plugins/ldapkio/ldapkio.desktop	(.../tags/KDE/4.5.2/kdepimlibs)	(wersja 1188163)
++++ kabc/plugins/ldapkio/ldapkio.desktop	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1188163)
+@@ -59,7 +59,7 @@
+ Comment[es]=Provee acceso a los contactos almacenados en un servidor de directorios LDAP
+ Comment[et]=Võimaldab kasutada LDAP kataloogiserverisse salvestatud kontakte
+ Comment[fi]=Tarjoaa pääsyn LDAP-hakemistopalvelimelle tallennettuihin yhteystietoihin
+-Comment[fr]=Fourni l'accès aux contacts stockés dans un annuaire LDAP
++Comment[fr]=Fournit l'accès aux contacts stockés dans un annuaire LDAP
+ Comment[ga]=Soláthraíonn sé seo rochtain ar theagmhálacha atá stóráilte in eolaire LDAP
+ Comment[gl]=Dá acceso a contactos gardados nun servidor de directorio LDAP
+ Comment[hu]=LDAP címtárkiszolgálókon tárolt névjegyek elérését biztosítja.
+Index: kabc/plugins/net/net.desktop
+===================================================================
+--- kabc/plugins/net/net.desktop	(.../tags/KDE/4.5.2/kdepimlibs)	(wersja 1188163)
++++ kabc/plugins/net/net.desktop	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1188163)
+@@ -59,7 +59,7 @@
+ Comment[es]=Provee acceso a los contactos en un archivo remoto utilizando la infraestructura de red KIO de KDE. Soporta archivos VCard estándar y otros formatos dependiendo en la disponibilidad de los complementos.
+ Comment[et]=Võimaldab kasutada võrgufaile KDE võrguraamistiku KIO abil. Toetab standardseid VCard-faile ja teisi vorminguid sõltuvalt pluginate olemasolust.
+ Comment[fi]=Tarjoaa pääsyn etätiedostoissa oleviin yhteystietoihin KDE:n verkkokehyksen KIOn välityksellä. Tukee vakiomuotoisia vCard-tiedostoja sekä muita tiedostomuotoja liitännäisistä riippuen.
+-Comment[fr]=Fourni l'accès aux contacts stocké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 en fonction des modules externes disponibles.
++Comment[fr]=Fournit l'accès aux contacts stocké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 en fonction des modules externes disponibles.
+ Comment[ga]=Soláthraíonn sé seo rochtain ar theagmhálacha i gcianchomhaid tríd an gcreatlach líonra KIO atá cuid de KDE. Tacaítear le comhaid v-Chárta agus formáidí eile, ag brath ar na breiseáin atá ar fáil.
+ Comment[gl]=Dá acceso a contactos gardados en ficheiros remotos mediante a infraestrutura de rede KIO, de KDE. Admite ficheiros vCard estándar e outros formatos en función das extensións dispoñíbeis.
+ Comment[hu]=Távoli fájlokban található névjegyek elérését biztosítja a KDE KIO keretrendszeren keresztül. Támogatja a standard vCard formátumot, és bővítmények segítségével más formátumok is kezelhetők.
+Index: kabc/plugins/dir/dir.desktop
+===================================================================
+--- kabc/plugins/dir/dir.desktop	(.../tags/KDE/4.5.2/kdepimlibs)	(wersja 1188163)
++++ kabc/plugins/dir/dir.desktop	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1188163)
+@@ -53,7 +53,7 @@
+ Comment[es]=Provee acceso a los contactos, cada uno almacenado en un archivo diferente, dentro de un directorio determinado. Soporta archivos VCard estándar y otros formatos dependiendo de la disponibilidad de los complementos.
+ Comment[et]=Võimaldab kasutada eraldi failidesse salvestatud kontakte määratud kataloogis. Toetab standardseid VCard-faile ja teisi vorminguid sõltuvalt pluginate olemasolust.
+ Comment[fi]=Tarjoaa pääsyn annetun kansion yksittäisiin tiedostoihin tallennettuihin yhteystietoihin. Tukee vakiomuotoista vCard-tiedostoa sekä muita tiedostomuotoja liitännäisistä riippuen.
+-Comment[fr]=Fourni l'accès aux contacts stockés chacun dans un fichier dans le dossier indiqué. Le format VCard et d'autres formats sont pris en charge en fonction des modules externes disponibles
++Comment[fr]=Fournit l'accès aux contacts stockés chacun dans un fichier dans le dossier indiqué. Le format VCard et d'autres formats sont pris en charge en fonction des modules externes disponibles
+ Comment[ga]=Soláthraíonn sé seo rochtain ar theagmhálacha, gach ceann stóráilte i gcomhad aonair, i bhfillteán sonraithe. Tacaítear le comhaid v-Chárta agus le formáidí eile, ag brath ar na breiseáin atá ar fáil.
+ Comment[gl]=Dá acceso aos contactos, cada un gardado nun ficheiro nun cartafol dado. Admite ficheiros vCard estándar e outros formatos, en función da dispoñibilidade de extensións.
+ 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 standard vCard formátumot, és bővítmények segítségével más formátumok is kezelhetők.
+Index: akonadi/sharedvaluepool_p.h
+===================================================================
+--- akonadi/sharedvaluepool_p.h	(.../tags/KDE/4.5.2/kdepimlibs)	(wersja 0)
++++ akonadi/sharedvaluepool_p.h	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1188163)
+@@ -0,0 +1,78 @@
++/*
++    Copyright (c) 2010 Volker Krause <vkrause at kde.org>
++
++    This library is free software; you can redistribute it and/or modify it
++    under the terms of the GNU Library General Public License as published by
++    the Free Software Foundation; either version 2 of the License, or (at your
++    option) any later version.
++
++    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 Library General Public
++    License for more details.
++
++    You should have received a copy of the GNU Library General Public License
++    along with this library; see the file COPYING.LIB.  If not, write to the
++    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++    02110-1301, USA.
++*/
++
++#ifndef AKONADI_SHAREDVALUEPOOL_P_H
++#define AKONADI_SHAREDVALUEPOOL_P_H
++
++#include <boost/utility/enable_if.hpp>
++#include <algorithm>
++
++namespace Akonadi {
++namespace Internal {
++
++/*template <typename T> class container_traits
++{
++  private:
++    typedef char sizeOne;
++    typedef struct { char a[2]; } sizeTwo;
++    template <typename C> static sizeOne testForKeyType( typename C::key_type const* );
++    template <typename C> static sizeTwo testForKeyType( ... );
++  public:
++    enum { isAssociative = sizeof( container_traits<T>::testForKeyType<T>( 0 ) ) == 1 };
++};*/
++
++/**
++ * Pool of implicitly shared values, use for optimizing memory use
++ * when having a large amount of copies from a small set of different values.
++ */
++template <typename T, template <typename> class Container>
++class SharedValuePool
++{
++  public:
++    /** Returns the shared value equal to @p value .*/
++    /*template <typename C> 
++    typename boost::enable_if_c<container_traits<Container<C> >::isAssociative, C>::type sharedValue( const C &value, const int* = 0 )
++    {
++      typename Container<T>::const_iterator it = m_pool.constFind( value );
++      if ( it != m_pool.constEnd() )
++        return *it;
++      m_pool.insert( value );
++      return value;
++    }
 +
- include (ConfigureChecks.cmake)
- 
- if(KDE4_BUILD_TESTS)
-Index: kholidays/parsers/plan2/holidayparserdriverplan_p.h
-===================================================================
---- kholidays/parsers/plan2/holidayparserdriverplan_p.h	(.../tags/KDE/4.5.1/kdepimlibs)	(wersja 1179155)
-+++ kholidays/parsers/plan2/holidayparserdriverplan_p.h	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1179155)
-@@ -25,6 +25,7 @@
- #include <fstream>
- 
- #include <QByteArray>
-+#include <QStringList>
- 
- #include "../holidayparserdriver_p.h"
- 
-@@ -141,12 +142,15 @@
- 
-     QByteArray          m_scanData;                 // Holiday file stored as a string
- 
-+    QStringList         m_fileCalendarTypes;        // List of all Calendar Systems used in file
++    template <typename C>
++    typename boost::disable_if_c<container_traits<Container<C> >::isAssociative, C>::type sharedValue( const C &value )*/
++    T sharedValue( const T &value )
++    {
++      // for small pool sizes this is actually faster than using lower_bound and a sorted vector
++      typename Container<T>::const_iterator it = std::find( m_pool.constBegin(), m_pool.constEnd(), value );
++      if ( it != m_pool.constEnd() )
++        return *it;
++      m_pool.push_back( value );
++      return value;
++    }
 +
-     bool                m_traceParsing;             // Bison C++ skeleton enable tracing in Bison parser class
-     HolidayParserPlan  *m_parser;                   // Bison C++ skeleton Bison parser class implementation
- 
-     bool                m_traceScanning;            // Flex C++ enable tracing in Flex scanner class
-     HolidayScannerPlan *m_scanner;                  // Flex C++ scanner class implementation
- 
-+    bool                m_parseMetadataOnly;        // Only parse file for metadata
-     QDate               m_parseYearStart;           // First day of year being parsed
-     QDate               m_parseYearEaster;          // Easter in the parse year, Gregorian only
-     QDate               m_parseYearPascha;          // Orthodox Easter in the parse year, Gregorian only
-Index: kholidays/parsers/plan2/holidayparserdriverplan.cpp
++  private:
++    Container<T> m_pool;
++};
++
++}
++}
++
++#endif
+Index: akonadi/itemfetchjob.cpp
 ===================================================================
---- kholidays/parsers/plan2/holidayparserdriverplan.cpp	(.../tags/KDE/4.5.1/kdepimlibs)	(wersja 1179155)
-+++ kholidays/parsers/plan2/holidayparserdriverplan.cpp	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1179155)
-@@ -52,7 +52,8 @@
- HolidayParserDriverPlan::HolidayParserDriverPlan( const QString &planFilePath )
-                         :HolidayParserDriver( planFilePath ),
-                         m_traceParsing( false ),
--                        m_traceScanning( false )
-+                        m_traceScanning( false ),
-+                        m_parseMetadataOnly( false )
- {
-     QFile holidayFile( filePath() );
-     if ( holidayFile.open( QIODevice::ReadOnly ) ) {
-@@ -89,10 +90,8 @@
- 
- void HolidayParserDriverPlan::parse()
- {
--    // Parse the file using every available calendar system, even if not defined in file
--    // TODO this will not scale as more systems are added over time, either move to AST model
--    //      or have this driven via pre-scan or file metadata to determine requied calendar systems
--    foreach( QString calendar, KCalendarSystem::calendarSystems() ) {
-+    // Parse the file using every calendar system in the file
-+    foreach( QString calendar, m_fileCalendarTypes ) {
- 
-         // Cater for events defined in other Calendar Systems where request year could cover 2 or 3 event years
-         // Perhaps also parse year before and year after to allow events to span years or shift to other year?
-@@ -117,10 +116,13 @@
- 
- void HolidayParserDriverPlan::parseMetadata()
- {
-+    m_parseMetadataOnly = true;
-     m_fileCountryCode.clear();
-     m_fileLanguageCode.clear();
-     m_fileName.clear();
-     m_fileDescription.clear();
-+    m_fileCalendarTypes.clear();
-+    m_fileCalendarTypes.append( "gregorian" );
- 
-     // Default to files internal metadata
-     setParseCalendar( "gregorian" );
-@@ -155,7 +157,7 @@
-         }
+--- akonadi/itemfetchjob.cpp	(.../tags/KDE/4.5.2/kdepimlibs)	(wersja 1188163)
++++ akonadi/itemfetchjob.cpp	(.../branches/KDE/4.5/kdepimlibs)	(wersja 1188163)
+@@ -40,11 +40,17 @@
+ {
+   public:
+     ItemFetchJobPrivate( ItemFetchJob *parent )
+-      : JobPrivate( parent )
++      : JobPrivate( parent ),
++	mValuePool( 0 )
+     {
+       mCollection = Collection::root();
      }
  
--
-+    m_parseMetadataOnly = false;
- }
- 
- QString HolidayParserDriverPlan::filePath()
-@@ -404,7 +406,10 @@
- 
- void  HolidayParserDriverPlan::setEventCalendarType( const QString &calendarType )
- {
--  m_eventCalendarType = calendarType;
-+    m_eventCalendarType = calendarType;
-+    if ( m_parseMetadataOnly && !m_fileCalendarTypes.contains( calendarType ) ) {
-+        m_fileCalendarTypes.append( calendarType );
++    ~ItemFetchJobPrivate()
++    {
++      delete mValuePool;
 +    }
++
+     void init()
+     {
+       Q_Q( ItemFetchJob );
+@@ -78,6 +84,7 @@
+     ItemFetchScope mFetchScope;
+     Item::List mPendingItems; // items pending for emitting itemsReceived()
+     QTimer* mEmitTimer;
++    ProtocolHelperValuePool *mValuePool;
+ };
+ 
+ void ItemFetchJobPrivate::startFetchJob()
+@@ -116,6 +123,7 @@
+ 
+   d->init();
+   d->mCollection = collection;
++  d->mValuePool = new ProtocolHelperValuePool; // only worth it for lots of results
  }
  
- void  HolidayParserDriverPlan::setEventDate( int eventYear, int eventMonth, int eventDay )
-@@ -431,8 +436,8 @@
- 
- void HolidayParserDriverPlan::setFromWeekdayInMonth( int occurrence, int weekday, int month, int offset, int duration )
- {
--    // Don't set if calendar for event rule is not the current parse calendar
--    if ( m_eventCalendarType != m_parseCalendar->calendarType() ) {
-+    // Don't set if only parsing metadata or calendar for event rule is not the current parse calendar
-+    if ( m_parseMetadataOnly || m_eventCalendarType != m_parseCalendar->calendarType() ) {
+ ItemFetchJob::ItemFetchJob( const Item & item, QObject * parent)
+@@ -171,7 +179,7 @@
+       ImapParser::parseParenthesizedList( data, fetchResponse, begin + 6 );
+ 
+       Item item;
+-      ProtocolHelper::parseItemFetchResult( fetchResponse, item );
++      ProtocolHelper::parseItemFetchResult( fetchResponse, item, d->mValuePool );
+       if ( !item.isValid() )
          return;
-     }
- 
-@@ -484,8 +489,8 @@
- 
- void HolidayParserDriverPlan::setFromRelativeWeekday( int occurrence, int weekday, int offset, int duration )
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kde4-kdepimlibs/kde4-kdepimlibs-branch.diff?r1=1.23&r2=1.24&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kde4-kdepimlibs/kde4-kdepimlibs.spec?r1=1.123&r2=1.124&f=u



More information about the pld-cvs-commit mailing list