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 <[email protected]>
++
++ 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
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit