summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas K. Hüttel <dilfridge@gentoo.org>2013-10-22 21:13:54 +0000
committerAndreas K. Hüttel <dilfridge@gentoo.org>2013-10-22 21:13:54 +0000
commit645575200e79943184c0d58e9e1344139d9512a0 (patch)
tree43c0e8b46c27fb62caedca104208317c21976c7c
parentversion bump (diff)
downloadgentoo-2-645575200e79943184c0d58e9e1344139d9512a0.tar.gz
gentoo-2-645575200e79943184c0d58e9e1344139d9512a0.tar.bz2
gentoo-2-645575200e79943184c0d58e9e1344139d9512a0.zip
Revision bump backporting the fix for kde bug 278082
(Portage version: 2.2.7/cvs/Linux x86_64, signed Manifest commit with key EBE6A336BE19039C!)
-rw-r--r--kde-base/kdepim-runtime/ChangeLog9
-rw-r--r--kde-base/kdepim-runtime/files/kdepim-runtime-4.11.2-flags.patch154
-rw-r--r--kde-base/kdepim-runtime/kdepim-runtime-4.11.2-r1.ebuild (renamed from kde-base/kdepim-runtime/kdepim-runtime-4.11.2.ebuild)4
3 files changed, 165 insertions, 2 deletions
diff --git a/kde-base/kdepim-runtime/ChangeLog b/kde-base/kdepim-runtime/ChangeLog
index 9fbaa57a411c..9c440fd16a86 100644
--- a/kde-base/kdepim-runtime/ChangeLog
+++ b/kde-base/kdepim-runtime/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for kde-base/kdepim-runtime
# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/kde-base/kdepim-runtime/ChangeLog,v 1.163 2013/10/10 05:26:49 creffett Exp $
+# $Header: /var/cvsroot/gentoo-x86/kde-base/kdepim-runtime/ChangeLog,v 1.164 2013/10/22 21:13:54 dilfridge Exp $
+
+*kdepim-runtime-4.11.2-r1 (22 Oct 2013)
+
+ 22 Oct 2013; Andreas K. Huettel <dilfridge@gentoo.org>
+ -kdepim-runtime-4.11.2.ebuild, +kdepim-runtime-4.11.2-r1.ebuild,
+ +files/kdepim-runtime-4.11.2-flags.patch:
+ Revision bump backporting the fix for kde bug 278082
*kdepim-runtime-4.4.11.1-r1 (10 Oct 2013)
diff --git a/kde-base/kdepim-runtime/files/kdepim-runtime-4.11.2-flags.patch b/kde-base/kdepim-runtime/files/kdepim-runtime-4.11.2-flags.patch
new file mode 100644
index 000000000000..b6ca2df2d529
--- /dev/null
+++ b/kde-base/kdepim-runtime/files/kdepim-runtime-4.11.2-flags.patch
@@ -0,0 +1,154 @@
+commit c561149538336804f212f5a12ea6cf3d1a3a19f5
+Author: Andre Woebbeking <Woebbeking@kde.org>
+Date: Fri Sep 27 22:19:42 2013 +0200
+
+ Don't bother IMAP servers with not supported flags
+
+ Created a new method ResourceTask::fromAkonadiToSupportedImapFlags() to convert
+ Akonadi to IMAP flags supported by the server and use it everywhere instead of
+ fromAkonadiFlags().
+
+ fromAkonadiFlags() was made private to make it impossible to call it by accident.
+
+ BUG:278082
+ FIXED-IN: 4.11.3
+ REVIEW:112724
+
+ CCBUG:287356
+
+ This also reduces the risk to trigger 287356 as the insert on the IMAP server
+ doesn't fail due to unsupported IMAP flags.
+
+diff --git a/resources/imap/additemtask.cpp b/resources/imap/additemtask.cpp
+index da965a1..af427ff 100644
+--- a/resources/imap/additemtask.cpp
++++ b/resources/imap/additemtask.cpp
+@@ -64,7 +64,7 @@ void AddItemTask::doStart( KIMAP::Session *session )
+ KIMAP::AppendJob *job = new KIMAP::AppendJob( session );
+ job->setMailBox( mailBox );
+ job->setContent( msg->encodedContent( true ) );
+- job->setFlags( fromAkonadiFlags( item().flags().toList() ) );
++ job->setFlags( fromAkonadiToSupportedImapFlags( item().flags().toList() ) );
+ connect( job, SIGNAL(result(KJob*)), SLOT(onAppendMessageDone(KJob*)) );
+ job->start();
+ }
+diff --git a/resources/imap/changeitemsflagstask.cpp b/resources/imap/changeitemsflagstask.cpp
+index 1c7f415..d7eb183 100644
+--- a/resources/imap/changeitemsflagstask.cpp
++++ b/resources/imap/changeitemsflagstask.cpp
+@@ -91,7 +91,7 @@ KIMAP::StoreJob* ChangeItemsFlagsTask::prepareJob( KIMAP::Session *session )
+ void ChangeItemsFlagsTask::triggerAppendFlagsJob(KIMAP::Session* session)
+ {
+ KIMAP::StoreJob *store = prepareJob( session );
+- store->setFlags( fromAkonadiFlags( addedFlags().toList() ) );
++ store->setFlags( fromAkonadiToSupportedImapFlags( addedFlags().toList() ) );
+ store->setMode( KIMAP::StoreJob::AppendFlags );
+ connect( store, SIGNAL(result(KJob*)), SLOT(onAppendFlagsDone(KJob*)) );
+ store->start();
+@@ -100,7 +100,7 @@ void ChangeItemsFlagsTask::triggerAppendFlagsJob(KIMAP::Session* session)
+ void ChangeItemsFlagsTask::triggerRemoveFlagsJob(KIMAP::Session* session)
+ {
+ KIMAP::StoreJob *store = prepareJob( session );
+- store->setFlags( fromAkonadiFlags( removedFlags().toList() ) );
++ store->setFlags( fromAkonadiToSupportedImapFlags( removedFlags().toList() ) );
+ store->setMode( KIMAP::StoreJob::RemoveFlags );
+ connect( store, SIGNAL(result(KJob*)), SLOT(onRemoveFlagsDone(KJob*)) );
+ store->start();
+diff --git a/resources/imap/changeitemtask.cpp b/resources/imap/changeitemtask.cpp
+index 1a5e969..242e202 100644
+--- a/resources/imap/changeitemtask.cpp
++++ b/resources/imap/changeitemtask.cpp
+@@ -34,7 +34,6 @@
+
+ #include "imapflags.h"
+ #include "uidnextattribute.h"
+-#include "collectionflagsattribute.h"
+
+ ChangeItemTask::ChangeItemTask( ResourceStateInterface::Ptr resource, QObject *parent )
+ : ResourceTask( DeferIfNoSession, resource, parent ), m_session( 0 ), m_oldUid( 0 ), m_newUid( 0 )
+@@ -67,7 +66,7 @@ void ChangeItemTask::doStart( KIMAP::Session *session )
+
+ job->setMailBox( mailBox );
+ job->setContent( msg->encodedContent( true ) );
+- job->setFlags( fromAkonadiFlags( item().flags().toList() ) );
++ job->setFlags( fromAkonadiToSupportedImapFlags( item().flags().toList() ) );
+
+ connect( job, SIGNAL(result(KJob*)),
+ this, SLOT(onAppendMessageDone(KJob*)) );
+@@ -105,19 +104,7 @@ void ChangeItemTask::onPreStoreSelectDone( KJob *job )
+
+ void ChangeItemTask::triggerStoreJob()
+ {
+- QList<QByteArray> flags = fromAkonadiFlags( item().flags().toList() );
+- Akonadi::CollectionFlagsAttribute *flagAttr = item().parentCollection().attribute<Akonadi::CollectionFlagsAttribute>();
+- // the server does not support arbitrary flags, so filter out those it can't handle
+- if ( flagAttr && !flagAttr->flags().isEmpty() && !flagAttr->flags().contains( "\\*" ) ) {
+- for ( QList< QByteArray >::iterator it = flags.begin(); it != flags.end(); ) {
+- if ( flagAttr->flags().contains( *it ) ) {
+- ++it;
+- } else {
+- kDebug() << "Server does not support flag" << *it;
+- it = flags.erase( it );
+- }
+- }
+- }
++ QList<QByteArray> flags = fromAkonadiToSupportedImapFlags( item().flags().toList() );
+
+ KIMAP::StoreJob *store = new KIMAP::StoreJob( m_session );
+
+diff --git a/resources/imap/resourcetask.cpp b/resources/imap/resourcetask.cpp
+index a41e884..1de07f3 100644
+--- a/resources/imap/resourcetask.cpp
++++ b/resources/imap/resourcetask.cpp
+@@ -25,6 +25,7 @@
+
+ #include <KDE/KLocale>
+
++#include "collectionflagsattribute.h"
+ #include "imapflags.h"
+ #include "sessionpool.h"
+ #include "resourcestateinterface.h"
+@@ -347,6 +348,26 @@ void ResourceTask::showInformationDialog( const QString &message, const QString
+ m_resource->showInformationDialog( message, title, dontShowAgainName );
+ }
+
++QList<QByteArray> ResourceTask::fromAkonadiToSupportedImapFlags( const QList<QByteArray> &flags ) const
++{
++ QList<QByteArray> imapFlags = fromAkonadiFlags( flags );
++
++ const Akonadi::CollectionFlagsAttribute *flagAttr = collection().attribute<Akonadi::CollectionFlagsAttribute>();
++ // the server does not support arbitrary flags, so filter out those it can't handle
++ if ( flagAttr && !flagAttr->flags().isEmpty() && !flagAttr->flags().contains( "\\*" ) ) {
++ for ( QList< QByteArray >::iterator it = imapFlags.begin(); it != imapFlags.end(); ) {
++ if ( flagAttr->flags().contains( *it ) ) {
++ ++it;
++ } else {
++ kDebug() << "Server does not support flag" << *it;
++ it = imapFlags.erase( it );
++ }
++ }
++ }
++
++ return imapFlags;
++}
++
+ QList<QByteArray> ResourceTask::fromAkonadiFlags( const QList<QByteArray> &flags )
+ {
+ QList<QByteArray> newFlags;
+diff --git a/resources/imap/resourcetask.h b/resources/imap/resourcetask.h
+index f2bfed0..69c1a64 100644
+--- a/resources/imap/resourcetask.h
++++ b/resources/imap/resourcetask.h
+@@ -125,7 +125,12 @@ protected:
+ const QChar separatorCharacter() const;
+ void setSeparatorCharacter( const QChar &separator );
+
++ QList<QByteArray> fromAkonadiToSupportedImapFlags( const QList<QByteArray> &flags ) const;
++
+ static QList<QByteArray> toAkonadiFlags( const QList<QByteArray> &flags );
++
++private:
++
+ static QList<QByteArray> fromAkonadiFlags( const QList<QByteArray> &flags );
+
+ private slots:
diff --git a/kde-base/kdepim-runtime/kdepim-runtime-4.11.2.ebuild b/kde-base/kdepim-runtime/kdepim-runtime-4.11.2-r1.ebuild
index 7e32c2b60cb3..f2baecbd96e6 100644
--- a/kde-base/kdepim-runtime/kdepim-runtime-4.11.2.ebuild
+++ b/kde-base/kdepim-runtime/kdepim-runtime-4.11.2-r1.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/kde-base/kdepim-runtime/kdepim-runtime-4.11.2.ebuild,v 1.1 2013/10/09 23:03:53 creffett Exp $
+# $Header: /var/cvsroot/gentoo-x86/kde-base/kdepim-runtime/kdepim-runtime-4.11.2-r1.ebuild,v 1.1 2013/10/22 21:13:54 dilfridge Exp $
EAPI=5
@@ -33,6 +33,8 @@ RDEPEND="${DEPEND}
!kde-misc/akonadi-facebook
"
+PATCHES=( "${FILESDIR}/${P}-flags.patch" )
+
src_configure() {
local mycmakeargs=(
$(cmake-utils_use_find_package facebook LibKFbAPI)