commit kdepimlibs4 for openSUSE:Factory
Hello community, here is the log from the commit of package kdepimlibs4 for openSUSE:Factory checked in at Fri Nov 5 14:46:28 CET 2010. -------- --- KDE/kdepimlibs4/kdepimlibs4.changes 2010-09-30 23:43:53.000000000 +0200 +++ kdepimlibs4/kdepimlibs4.changes 2010-10-28 22:13:24.000000000 +0200 @@ -1,0 +2,6 @@ +Thu Oct 28 22:13:19 CEST 2010 - dmueller@suse.de + +- update to 4.5.3 + * see http://kde.org/announcements/changelogs/changelog4_5_2to4_5_3.php for details + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- kdepimlibs-4.5.2.tar.bz2 New: ---- kdepimlibs-4.5.3.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kdepimlibs4.spec ++++++ --- /var/tmp/diff_new_pack.QcM166/_old 2010-11-05 14:46:05.000000000 +0100 +++ /var/tmp/diff_new_pack.QcM166/_new 2010-11-05 14:46:05.000000000 +0100 @@ -1,5 +1,5 @@ # -# spec file for package kdepimlibs4 (Version 4.5.2) +# spec file for package kdepimlibs4 (Version 4.5.3) # # Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -23,7 +23,7 @@ Group: System/GUI/KDE Summary: KDE PIM Libraries Url: http://www.kde.org -Version: 4.5.2 +Version: 4.5.3 Release: 1 Source0: kdepimlibs-%version.tar.bz2 Patch0: 4_5_BRANCH.diff ++++++ kdepimlibs-4.5.2.tar.bz2 -> kdepimlibs-4.5.3.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/CMakeLists.txt new/kdepimlibs-4.5.3/CMakeLists.txt --- old/kdepimlibs-4.5.2/CMakeLists.txt 2010-09-30 23:19:17.000000000 +0200 +++ new/kdepimlibs-4.5.3/CMakeLists.txt 2010-10-28 19:35:23.000000000 +0200 @@ -11,7 +11,7 @@ ############### The kdepimlibs version (used e.g. in KdepimLibsConfig.cmake) ############### set(KDEPIMLIBS_VERSION_MAJOR 4) set(KDEPIMLIBS_VERSION_MINOR 5) -set(KDEPIMLIBS_VERSION_PATCH 2) +set(KDEPIMLIBS_VERSION_PATCH 3) 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.5.2/akonadi/collectionstatisticsdelegate.cpp new/kdepimlibs-4.5.3/akonadi/collectionstatisticsdelegate.cpp --- old/kdepimlibs-4.5.2/akonadi/collectionstatisticsdelegate.cpp 2010-08-04 21:13:03.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/collectionstatisticsdelegate.cpp 2010-10-28 19:35:23.000000000 +0200 @@ -74,7 +74,8 @@ if ( index.model()->hasChildren( index ) ) { - for ( int row = 0; row < index.model()->rowCount( index ); row++ ) + const int rowCount = index.model()->rowCount( index ); + for ( int row = 0; row < rowCount; row++ ) { static const int column = 0; count += getCountRecursive<countType>( index.model()->index( row, column, index ) ); @@ -287,7 +288,7 @@ sumText = QString::number( expanded ? unreadCount : unreadRecursiveCount ); } else { - qint64 totalCount = statistics.unreadCount(); + qint64 totalCount = statistics.count(); qint64 totalRecursiveCount = d->getCountRecursive<TotalCount>( index.sibling( index.row(), 0 ) ); if (index.column() == 2 && ( ( !expanded && totalRecursiveCount > 0 ) || ( expanded && totalCount > 0 ) ) ) { sumText = QString::number( expanded ? totalCount : totalRecursiveCount ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/contact/contactsfilterproxymodel.cpp new/kdepimlibs-4.5.3/akonadi/contact/contactsfilterproxymodel.cpp --- old/kdepimlibs-4.5.2/akonadi/contact/contactsfilterproxymodel.cpp 2010-05-27 19:22:13.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/contact/contactsfilterproxymodel.cpp 2010-10-28 19:35:23.000000000 +0200 @@ -155,6 +155,13 @@ return true; } + const QStringList categories = contact.categories(); + count = categories.count(); + for ( int i = 0; i < count; ++i ) { + if ( categories.at( i ).contains( filterString, Qt::CaseInsensitive ) ) + return true; + } + if ( contact.mailer().contains( filterString, Qt::CaseInsensitive ) ) return true; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/contact/editor/im/kaddressbookimprotocol.desktop new/kdepimlibs-4.5.3/akonadi/contact/editor/im/kaddressbookimprotocol.desktop --- old/kdepimlibs-4.5.2/akonadi/contact/editor/im/kaddressbookimprotocol.desktop 2010-07-28 23:04:09.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/contact/editor/im/kaddressbookimprotocol.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -28,6 +28,7 @@ Name[sr@latin]=Brzoglasnički protokol K‑adresra Name[sv]=Addressbokens direktmeddelandeprotokoll Name[th]=โพรโทคอลข้อความด่วนทันใจของสมุดที่อยู่-K +Name[tr]=KAddressbook Anlık Mesajlaşma Protokolü Name[uk]=Протокол миттєвого обміну повідомленнями KAddressbook Name[wa]=Protocole di messaedjreye sol moumint di KAddressbook Name[x-test]=xxKAddressbook Instant Messaging Protocolxx diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/aimprotocol.desktop new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/aimprotocol.desktop --- old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/aimprotocol.desktop 2010-07-28 23:04:08.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/aimprotocol.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -30,6 +30,7 @@ Comment[sr@latin]=Protokol AIM Comment[sv]=AIM-protokoll Comment[th]=โพรโทคอล AIM +Comment[tr]=AIM Protokolü Comment[uk]=Протокол AIM Comment[wa]=Protocole AIM Comment[x-test]=xxAIM Protocolxx @@ -62,6 +63,7 @@ Name[sr@latin]=AIM Name[sv]=AIM Name[th]=AIM +Name[tr]=AIM Name[uk]=AIM Name[wa]=AIM Name[x-test]=xxAIMxx diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/gaduprotocol.desktop new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/gaduprotocol.desktop --- old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/gaduprotocol.desktop 2010-07-28 23:04:08.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/gaduprotocol.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -30,6 +30,7 @@ Comment[sr@latin]=Protokol Gadu‑Gadu Comment[sv]=Gadu-Gadu protokoll Comment[th]=โพรโทคอล Gadu-Gadu +Comment[tr]=Gadu-Gadu Protokolü Comment[uk]=Протокол Gadu-Gadu Comment[wa]=Protocole Gadu-gadu Comment[x-test]=xxGadu-Gadu Protocolxx @@ -62,6 +63,7 @@ Name[sr@latin]=Gadu‑Gadu Name[sv]=Gadu-Gadu Name[th]=Gadu-Gadu +Name[tr]=Gadu-Gadu Name[uk]=Gadu-Gadu Name[wa]=Gadu-Gadu Name[x-test]=xxGadu-Gaduxx diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/groupwiseprotocol.desktop new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/groupwiseprotocol.desktop --- old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/groupwiseprotocol.desktop 2010-08-27 10:09:27.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/groupwiseprotocol.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -29,6 +29,7 @@ Comment[sr@latin]=Novellov GroupWise Messenger Comment[sv]=Novell GroupWise-meddelandeklient Comment[th]=ข้อความด่วนทันใจ GroupWise ของโนเวลล์ +Comment[tr]=Novell GroupWise Messenger Comment[uk]=Програма обміну повідомленнями Novell GroupWise Comment[wa]=Messaedjî Novell GroupWise Comment[x-test]=xxNovell GroupWise Messengerxx @@ -60,6 +61,7 @@ Name[sr@latin]=GroupWise Name[sv]=GroupWise Name[th]=GroupWise +Name[tr]=GroupWise Name[uk]=GroupWise Name[wa]=GroupWise Name[x-test]=xxGroupWisexx diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/icqprotocol.desktop new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/icqprotocol.desktop --- old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/icqprotocol.desktop 2010-07-28 23:04:08.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/icqprotocol.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -30,6 +30,7 @@ Comment[sr@latin]=Protokol ICQ Comment[sv]=ICQ-protokoll Comment[th]=โพรโทคอล ICQ +Comment[tr]=ICQ Protokolü Comment[uk]=Протокол ICQ Comment[wa]=Protocole ICQ Comment[x-test]=xxICQ Protocolxx @@ -62,6 +63,7 @@ Name[sr@latin]=ICQ Name[sv]=ICQ Name[th]=ICQ +Name[tr]=ICQ Name[uk]=ICQ Name[wa]=ICQ Name[x-test]=xxICQxx diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/ircprotocol.desktop new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/ircprotocol.desktop --- old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/ircprotocol.desktop 2010-08-27 10:09:27.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/ircprotocol.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -28,6 +28,7 @@ Comment[sr@ijekavianlatin]=Ćaskanje putem Interneta Comment[sr@latin]=Ćaskanje putem Interneta Comment[sv]=Internet Relay Chat +Comment[tr]=Internet Relay Chat Comment[uk]=Internet Relay Chat Comment[wa]=Internet Relay Chat Comment[x-test]=xxInternet Relay Chatxx @@ -60,6 +61,7 @@ Name[sr@latin]=IRC Name[sv]=IRC Name[th]=IRC +Name[tr]=IRC Name[uk]=IRC Name[wa]=IRC Name[x-test]=xxIRCxx diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/jabberprotocol.desktop new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/jabberprotocol.desktop --- old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/jabberprotocol.desktop 2010-07-28 23:04:08.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/jabberprotocol.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -30,6 +30,7 @@ Comment[sr@latin]=Protokol Jabber Comment[sv]=Jabber-protokoll Comment[th]=โพรโทคอล Jabber +Comment[tr]=Jabber Protokolü Comment[uk]=Протокол Jabber Comment[wa]=Protocole Jabber Comment[x-test]=xxJabber Protocolxx @@ -62,6 +63,7 @@ Name[sr@latin]=Jabber Name[sv]=Jabber Name[th]=Jabber +Name[tr]=Jabber Name[uk]=Jabber Name[wa]=Jabber Name[x-test]=xxJabberxx diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/meanwhileprotocol.desktop new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/meanwhileprotocol.desktop --- old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/meanwhileprotocol.desktop 2010-07-28 23:04:08.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/meanwhileprotocol.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -29,6 +29,7 @@ Comment[sr@latin]=Protokol Meanwhile Comment[sv]=Meanwhile-protokoll Comment[th]=โพรโทคอล Meanwhile +Comment[tr]=Aynı Zamanlı Protokol Comment[uk]=Протокол Meanwhile Comment[wa]=Protocole Meanwhile Comment[x-test]=xxMeanwhile Protocolxx @@ -60,6 +61,7 @@ Name[sr@latin]=Meanwhile Name[sv]=Meanwhile Name[th]=Meanwhile +Name[tr]=Aynı Zamanlı Name[uk]=Meanwhile Name[wa]=Meanwhile Name[x-test]=xxMeanwhilexx diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/msnprotocol.desktop new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/msnprotocol.desktop --- old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/msnprotocol.desktop 2010-07-28 23:04:08.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/msnprotocol.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -28,6 +28,7 @@ Comment[sr@ijekavianlatin]=MSN Messenger Comment[sr@latin]=MSN Messenger Comment[sv]=MSN Messenger +Comment[tr]=MSN Messenger Comment[uk]=MSN Messenger Comment[wa]=MSN Messenger Comment[x-test]=xxMSN Messengerxx @@ -58,6 +59,7 @@ Name[sr@ijekavianlatin]=MSN Messenger Name[sr@latin]=MSN Messenger Name[sv]=MSN Messenger +Name[tr]=MSN Messenger Name[uk]=MSN Messenger Name[wa]=MSN Messenger Name[x-test]=xxMSN Messengerxx diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/skypeprotocol.desktop new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/skypeprotocol.desktop --- old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/skypeprotocol.desktop 2010-07-28 23:04:08.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/skypeprotocol.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -28,6 +28,7 @@ Comment[sr@ijekavianlatin]=Skype, internet telefonija Comment[sr@latin]=Skype, internet telefonija Comment[sv]=Skype Internettelefoni +Comment[tr]=Skype İnternet Telefonu Comment[uk]=Інтернет-телефонія Skype Comment[wa]=Telefoneye sol Daegntoele Skype Comment[x-test]=xxSkype Internet Telephonyxx @@ -59,6 +60,7 @@ Name[sr@latin]=Skype Name[sv]=Skype Name[th]=Skype +Name[tr]=Skype Name[uk]=Skype Name[wa]=Skype Name[x-test]=xxSkypexx diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/smsprotocol.desktop new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/smsprotocol.desktop --- old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/smsprotocol.desktop 2010-07-28 23:04:08.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/smsprotocol.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -29,6 +29,7 @@ Comment[sr@latin]=Protokol SMS Comment[sv]=SMS-protokoll Comment[th]=โพรโทคอล SMS +Comment[tr]=SMS Protokolü Comment[uk]=Протокол SMS Comment[wa]=Protocole SMS Comment[x-test]=xxSMS Protocolxx @@ -60,6 +61,7 @@ Name[sr@latin]=SMS Name[sv]=SMS Name[th]=SMS +Name[tr]=SMS Name[uk]=SMS Name[wa]=SMS Name[x-test]=xxSMSxx diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/yahooprotocol.desktop new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/yahooprotocol.desktop --- old/kdepimlibs-4.5.2/akonadi/contact/editor/im/protocols/yahooprotocol.desktop 2010-07-28 23:04:08.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/contact/editor/im/protocols/yahooprotocol.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -29,6 +29,7 @@ Comment[sr@latin]=Protokol Yahooa Comment[sv]=Yahoo-protokoll Comment[th]=โพรโทคอล Yahoo +Comment[tr]=Yahoo Protokolü Comment[uk]=Протокол Yahoo Comment[wa]=Protocole Yahoo Comment[x-test]=xxYahoo Protocolxx @@ -60,6 +61,7 @@ Name[sr@latin]=Yahoo Name[sv]=Yahoo Name[th]=Yahoo +Name[tr]=Yahoo Name[uk]=Yahoo Name[wa]=Yahoo Name[x-test]=xxYahooxx diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/item_p.h new/kdepimlibs-4.5.3/akonadi/item_p.h --- old/kdepimlibs-4.5.2/akonadi/item_p.h 2010-03-03 19:23:55.000000000 +0100 +++ new/kdepimlibs-4.5.3/akonadi/item_p.h 2010-10-28 19:35:23.000000000 +0200 @@ -94,9 +94,9 @@ QString mMimeType; Item::Flags mAddedFlags; Item::Flags mDeletedFlags; - bool mFlagsOverwritten; - bool mSizeChanged; - bool mClearPayload; + bool mFlagsOverwritten : 1; + bool mSizeChanged : 1; + bool mClearPayload : 1; }; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/itemfetchjob.cpp new/kdepimlibs-4.5.3/akonadi/itemfetchjob.cpp --- old/kdepimlibs-4.5.2/akonadi/itemfetchjob.cpp 2010-06-24 18:26:25.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/itemfetchjob.cpp 2010-10-28 19:35:23.000000000 +0200 @@ -40,11 +40,17 @@ { public: ItemFetchJobPrivate( ItemFetchJob *parent ) - : JobPrivate( parent ) + : JobPrivate( parent ), + mValuePool( 0 ) { mCollection = Collection::root(); } + ~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 } 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; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/protocolhelper.cpp new/kdepimlibs-4.5.3/akonadi/protocolhelper.cpp --- old/kdepimlibs-4.5.2/akonadi/protocolhelper.cpp 2010-06-24 18:26:25.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/protocolhelper.cpp 2010-10-28 19:35:23.000000000 +0200 @@ -79,26 +79,49 @@ return rv; } +void ProtocolHelper::parseAncestorsCached( const QByteArray &data, Entity *entity, Collection::Id parentCollection, + ProtocolHelperValuePool *pool, int start ) +{ + if ( !pool || parentCollection == -1 ) { + // if no pool or parent collection id is provided we can't cache anything, so continue as usual + parseAncestors( data, entity, start ); + return; + } + + if ( pool->ancestorCollections.contains( parentCollection ) ) { + // ancestor chain is cached already, so use the cached value + entity->setParentCollection( pool->ancestorCollections.value( parentCollection ) ); + } else { + // not cached yet, parse the chain + parseAncestors( data, entity, start ); + pool->ancestorCollections.insert( parentCollection, entity->parentCollection() ); + } +} + void ProtocolHelper::parseAncestors( const QByteArray &data, Entity *entity, int start ) { Q_UNUSED( start ); - QList<QByteArray> ancestors; + static const Collection::Id rootCollectionId = Collection::root().id(); + QVarLengthArray<QByteArray, 16> ancestors; + QVarLengthArray<QByteArray, 16> parentIds; + ImapParser::parseParenthesizedList( data, ancestors ); Entity* current = entity; - foreach ( const QByteArray &uidRidPair, ancestors ) { - QList<QByteArray> parentIds; - ImapParser::parseParenthesizedList( uidRidPair, parentIds ); + for ( int i = 0; i < ancestors.count(); ++i ) { + parentIds.clear(); + ImapParser::parseParenthesizedList( ancestors[ i ], parentIds ); if ( parentIds.size() != 2 ) break; - const Collection::Id uid = parentIds.at( 0 ).toLongLong(); - const QString rid = QString::fromUtf8( parentIds.at( 1 ) ); - if ( uid == Collection::root().id() ) { + + const Collection::Id uid = parentIds[ 0 ].toLongLong(); + if ( uid == rootCollectionId ) { current->setParentCollection( Collection::root() ); break; } + current->parentCollection().setId( uid ); - current->parentCollection().setRemoteId( rid ); + current->parentCollection().setRemoteId( QString::fromUtf8( parentIds[ 1 ] ) ); current = ¤t->parentCollection(); } } @@ -270,7 +293,7 @@ return command; } -void ProtocolHelper::parseItemFetchResult( const QList<QByteArray> &lineTokens, Item &item ) +void ProtocolHelper::parseItemFetchResult( const QList<QByteArray> &lineTokens, Item &item, ProtocolHelperValuePool *valuePool ) { // create a new item object Item::Id uid = -1; @@ -298,7 +321,10 @@ } else if ( key == "COLLECTIONID" ) { cid = value.toInt(); } else if ( key == "MIMETYPE" ) { - mimeType = QString::fromLatin1( value ); + if ( valuePool ) + mimeType = valuePool->mimeTypePool.sharedValue( QString::fromLatin1( value ) ); + else + mimeType = QString::fromLatin1( value ); } } @@ -327,8 +353,16 @@ if ( key == "FLAGS" ) { QList<QByteArray> flags; ImapParser::parseParenthesizedList( lineTokens[i + 1], flags ); - foreach ( const QByteArray &flag, flags ) { - item.setFlag( flag ); + if ( !flags.isEmpty() ) { + Item::Flags convertedFlags; + convertedFlags.reserve( flags.size() ); + foreach ( const QByteArray &flag, flags ) { + if ( valuePool ) + convertedFlags.insert( valuePool->flagPool.sharedValue( flag ) ); + else + convertedFlags.insert( flag ); + } + item.setFlags( convertedFlags ); } } else if ( key == "SIZE" ) { const quint64 size = lineTokens[i + 1].toLongLong(); @@ -338,7 +372,7 @@ ImapParser::parseDateTime( lineTokens[i + 1], datetime ); item.setModificationTime( datetime ); } else if ( key == "ANCESTORS" ) { - ProtocolHelper::parseAncestors( lineTokens[i + 1], &item ); + ProtocolHelper::parseAncestorsCached( lineTokens[i + 1], &item, cid, valuePool ); } else { int version = 0; QByteArray plainKey( key ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/protocolhelper_p.h new/kdepimlibs-4.5.3/akonadi/protocolhelper_p.h --- old/kdepimlibs-4.5.2/akonadi/protocolhelper_p.h 2010-07-07 19:08:53.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/protocolhelper_p.h 2010-10-28 19:35:23.000000000 +0200 @@ -25,6 +25,7 @@ #include <akonadi/collectionutils_p.h> #include <akonadi/item.h> #include <akonadi/itemfetchscope.h> +#include <akonadi/sharedvaluepool_p.h> #include <akonadi/private/imapparser_p.h> #include <akonadi/private/protocol_p.h> @@ -34,6 +35,16 @@ namespace Akonadi { +struct ProtocolHelperValuePool +{ + typedef Internal::SharedValuePool<QByteArray, QVector> FlagPool; + typedef Internal::SharedValuePool<QString, QVector> MimeTypePool; + + FlagPool flagPool; + MimeTypePool mimeTypePool; + QHash<Collection::Id, Collection> ancestorCollections; +}; + /** @internal Helper methods for converting between libakonadi objects and their protocol @@ -72,6 +83,14 @@ static void parseAncestors( const QByteArray &data, Entity *entity, int start = 0 ); /** + Convert a ancestor chain from its protocol representation into an Entity object. + + This method allows to pass a @p valuePool which acts as cache, so ancestor paths for the + same @p parentCollection don't have to be parsed twice. + */ + static void parseAncestorsCached( const QByteArray &data, Entity *entity, Collection::Id parentCollection, ProtocolHelperValuePool *valuePool = 0, int start = 0 ); + + /** Parse a collection description. @param data The input data. @param collection The parsed collection. @@ -195,7 +214,7 @@ /** Parses a single line from an item fetch job result into an Item object. */ - static void parseItemFetchResult( const QList<QByteArray> &lineTokens, Item &item ); + static void parseItemFetchResult( const QList<QByteArray> &lineTokens, Item &item, ProtocolHelperValuePool *valuePool = 0 ); }; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/sharedvaluepool_p.h new/kdepimlibs-4.5.3/akonadi/sharedvaluepool_p.h --- old/kdepimlibs-4.5.2/akonadi/sharedvaluepool_p.h 1970-01-01 01:00:00.000000000 +0100 +++ new/kdepimlibs-4.5.3/akonadi/sharedvaluepool_p.h 2010-10-28 19:35:23.000000000 +0200 @@ -0,0 +1,78 @@ +/* + Copyright (c) 2010 Volker Krause <vkrause@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; + } + + 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; + } + + private: + Container<T> m_pool; +}; + +} +} + +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/tests/CMakeLists.txt new/kdepimlibs-4.5.3/akonadi/tests/CMakeLists.txt --- old/kdepimlibs-4.5.2/akonadi/tests/CMakeLists.txt 2010-05-05 16:51:13.000000000 +0200 +++ new/kdepimlibs-4.5.3/akonadi/tests/CMakeLists.txt 2010-10-28 19:35:23.000000000 +0200 @@ -137,6 +137,7 @@ add_akonadi_test(collectionutilstest.cpp) add_akonadi_test(entitydisplayattributetest.cpp) add_akonadi_test(proxymodelstest.cpp) +add_akonadi_test(sharedvaluepooltest.cpp) # qtestlib tests that need non-exported stuff from akonadi-kde kde4_add_unit_test(resourceschedulertest TESTNAME akonadi-resourceschedulertest resourceschedulertest.cpp ../resourcescheduler.cpp) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/akonadi/tests/sharedvaluepooltest.cpp new/kdepimlibs-4.5.3/akonadi/tests/sharedvaluepooltest.cpp --- old/kdepimlibs-4.5.2/akonadi/tests/sharedvaluepooltest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/kdepimlibs-4.5.3/akonadi/tests/sharedvaluepooltest.cpp 2010-10-28 19:35:23.000000000 +0200 @@ -0,0 +1,89 @@ +/* + Copyright (c) 2010 Volker Krause <vkrause@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. +*/ + +#include "../sharedvaluepool_p.h" +#include <qtest_kde.h> + +#include <QVector> +#include <QSet> +#include <set> +#include <vector> + +using namespace Akonadi; + +class SharedValuePoolTest : public QObject +{ + Q_OBJECT + private slots: + void testQVector_data() + { + QTest::addColumn<int>( "size" ); + QTest::newRow( "10" ) << 10; + QTest::newRow( "100" ) << 100; + } + + void testQVector() + { + QFETCH( int, size ); + QVector<QByteArray> data; + Internal::SharedValuePool<QByteArray, QVector> pool; + + for ( int i = 0; i < size; ++i ) { + QByteArray b( 10, (char)i ); + data.push_back( b ); + QCOMPARE( pool.sharedValue( b ), b ); + QCOMPARE( pool.sharedValue( b ), b ); + } + + QBENCHMARK { + foreach ( const QByteArray &b, data ) + pool.sharedValue( b ); + } + } + + /*void testQSet_data() + { + QTest::addColumn<int>( "size" ); + QTest::newRow( "10" ) << 10; + QTest::newRow( "100" ) << 100; + } + + void testQSet() + { + QFETCH( int, size ); + QVector<QByteArray> data; + Internal::SharedValuePool<QByteArray, QSet> pool; + + for ( int i = 0; i < size; ++i ) { + QByteArray b( 10, (char)i ); + data.push_back( b ); + QCOMPARE( pool.sharedValue( b ), b ); + QCOMPARE( pool.sharedValue( b ), b ); + } + + QBENCHMARK { + foreach ( const QByteArray &b, data ) + pool.sharedValue( b ); + } + }*/ +}; + +QTEST_KDEMAIN( SharedValuePoolTest, NoGUI ) + +#include "sharedvaluepooltest.moc" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/kabc/plugins/dir/dir.desktop new/kdepimlibs-4.5.3/kabc/plugins/dir/dir.desktop --- old/kdepimlibs-4.5.2/kabc/plugins/dir/dir.desktop 2010-07-28 23:04:07.000000000 +0200 +++ new/kdepimlibs-4.5.3/kabc/plugins/dir/dir.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -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. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/kabc/plugins/file/file.desktop new/kdepimlibs-4.5.3/kabc/plugins/file/file.desktop --- old/kdepimlibs-4.5.2/kabc/plugins/file/file.desktop 2010-07-28 23:04:07.000000000 +0200 +++ new/kdepimlibs-4.5.3/kabc/plugins/file/file.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -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. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/kabc/plugins/ldapkio/ldapkio.desktop new/kdepimlibs-4.5.3/kabc/plugins/ldapkio/ldapkio.desktop --- old/kdepimlibs-4.5.2/kabc/plugins/ldapkio/ldapkio.desktop 2010-07-28 23:04:07.000000000 +0200 +++ new/kdepimlibs-4.5.3/kabc/plugins/ldapkio/ldapkio.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -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. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/kabc/plugins/net/net.desktop new/kdepimlibs-4.5.3/kabc/plugins/net/net.desktop --- old/kdepimlibs-4.5.2/kabc/plugins/net/net.desktop 2010-07-28 23:04:07.000000000 +0200 +++ new/kdepimlibs-4.5.3/kabc/plugins/net/net.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -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. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/kcal/local.desktop new/kdepimlibs-4.5.3/kcal/local.desktop --- old/kdepimlibs-4.5.2/kcal/local.desktop 2010-07-28 23:04:07.000000000 +0200 +++ new/kdepimlibs-4.5.3/kcal/local.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -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. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/kcal/localdir.desktop new/kdepimlibs-4.5.3/kcal/localdir.desktop --- old/kdepimlibs-4.5.2/kcal/localdir.desktop 2010-07-28 23:04:07.000000000 +0200 +++ new/kdepimlibs-4.5.3/kcal/localdir.desktop 2010-10-28 19:35:23.000000000 +0200 @@ -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ó. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/kcal/scheduler.cpp new/kdepimlibs-4.5.3/kcal/scheduler.cpp --- old/kdepimlibs-4.5.2/kcal/scheduler.cpp 2010-05-16 22:05:07.000000000 +0200 +++ new/kdepimlibs-4.5.3/kcal/scheduler.cpp 2010-10-28 19:35:23.000000000 +0200 @@ -256,8 +256,8 @@ if ( !visitor.assign( calInc, newInc ) ) { kError() << "assigning different incidence types"; } else { - calInc->setUid( oldUid ); calInc->setSchedulingID( newInc->uid() ); + calInc->setUid( oldUid ); res = true; } } @@ -345,8 +345,8 @@ kError() << "assigning different incidence types"; res = false; } else { - i->setUid( oldUid ); i->setSchedulingID( inc->uid() ); + i->setUid( oldUid ); } deleteTransaction( incidence ); return res; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/kmime/kmime_content.h new/kdepimlibs-4.5.3/kmime/kmime_content.h --- old/kdepimlibs-4.5.2/kmime/kmime_content.h 2010-05-16 22:05:06.000000000 +0200 +++ new/kdepimlibs-4.5.3/kmime/kmime_content.h 2010-10-28 19:35:22.000000000 +0200 @@ -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 ) ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/kmime/kmime_headers.cpp new/kdepimlibs-4.5.3/kmime/kmime_headers.cpp --- old/kdepimlibs-4.5.2/kmime/kmime_headers.cpp 2010-06-24 18:26:24.000000000 +0200 +++ new/kdepimlibs-4.5.3/kmime/kmime_headers.cpp 2010-10-28 19:35:22.000000000 +0200 @@ -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; } QByteArray ContentType::mediaType() const diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/kmime/kmime_headers.h new/kdepimlibs-4.5.3/kmime/kmime_headers.h --- old/kdepimlibs-4.5.2/kmime/kmime_headers.h 2010-05-16 22:05:06.000000000 +0200 +++ new/kdepimlibs-4.5.3/kmime/kmime_headers.h 2010-10-28 19:35:22.000000000 +0200 @@ -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 // diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/kmime/kmime_message.cpp new/kdepimlibs-4.5.3/kmime/kmime_message.cpp --- old/kdepimlibs-4.5.2/kmime/kmime_message.cpp 2010-07-12 23:08:14.000000000 +0200 +++ new/kdepimlibs-4.5.3/kmime/kmime_message.cpp 2010-10-28 19:35:22.000000000 +0200 @@ -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 @@ } // multipart/alternative - if ( c->contentType()->subType() == "alternative" ) { + if ( contentType->subType() == "alternative" ) { if ( type.isEmpty() ) { return c->contents().first(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/kmime/kmime_parsers.cpp new/kdepimlibs-4.5.3/kmime/kmime_parsers.cpp --- old/kdepimlibs-4.5.2/kmime/kmime_parsers.cpp 2010-07-07 19:08:52.000000000 +0200 +++ new/kdepimlibs-4.5.3/kmime/kmime_parsers.cpp 2010-10-28 19:35:22.000000000 +0200 @@ -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( '/' ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.5.2/kmime/kmime_parsers.h new/kdepimlibs-4.5.3/kmime/kmime_parsers.h --- old/kdepimlibs-4.5.2/kmime/kmime_parsers.h 2009-08-20 04:41:48.000000000 +0200 +++ new/kdepimlibs-4.5.3/kmime/kmime_parsers.h 2010-10-28 19:35:22.000000000 +0200 @@ -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 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@hilbert.suse.de