[SCM] KDE PIM module packaging branch, master, updated. debian/4.10.5-1

Pino Toscano pino at alioth.debian.org
Sat Jul 13 15:25:30 UTC 2013


Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-sc/kdepim.git;a=commitdiff;h=b692301

The following commit has been merged in the master branch:
commit b692301e23bb2c1e72c480b5e9df4fb44cd0745e
Author: Pino Toscano <pino at debian.org>
Date:   Sun Apr 14 14:08:43 2013 +0200

    fix autocompletion of addresses from akonadi
    
    backport upstream commits a24942ac27c27a4a540148292a9e6fbee1c8fff7 and 6a06c57f52a00018d607085efa7570deb91dc707
---
 debian/changelog                                   |    5 +
 debian/patches/series                              |    2 +
 ...-mimetype-for-contact-groups-in-the-direc.patch |   26 +++
 ...eam_Fix-kmail-autocompletion-from-akonadi.patch |  189 ++++++++++++++++++++
 4 files changed, 222 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 2e2906a..130296b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,11 @@ kdepim (4:4.10.2-2) UNRELEASED; urgency=low
   [ Pino Toscano ]
   * Add the pkg-config build dependency.
   * Make knode break/replace libkpgp4 < 4.10.2, as files were moved.
+  * Backport upstream commit a24942ac27c27a4a540148292a9e6fbee1c8fff7 (patch
+    upstream_Add-missing-mimetype-for-contact-groups-in-the-direc.patch) and
+    6a06c57f52a00018d607085efa7570deb91dc707 (patch
+    upstream_Fix-kmail-autocompletion-from-akonadi.patch) to fix autocompletion
+    of addresses from akonadi.
 
  -- Debian Qt/KDE Maintainers <debian-qt-kde at lists.debian.org>  Sat, 13 Apr 2013 22:42:50 +0200
 
diff --git a/debian/patches/series b/debian/patches/series
index 4235252..a85b6fd 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,3 @@
 debianize_akregator_default.diff
+upstream_Add-missing-mimetype-for-contact-groups-in-the-direc.patch
+upstream_Fix-kmail-autocompletion-from-akonadi.patch
diff --git a/debian/patches/upstream_Add-missing-mimetype-for-contact-groups-in-the-direc.patch b/debian/patches/upstream_Add-missing-mimetype-for-contact-groups-in-the-direc.patch
new file mode 100644
index 0000000..4724f2c
--- /dev/null
+++ b/debian/patches/upstream_Add-missing-mimetype-for-contact-groups-in-the-direc.patch
@@ -0,0 +1,26 @@
+From a24942ac27c27a4a540148292a9e6fbee1c8fff7 Mon Sep 17 00:00:00 2001
+From: David Faure <faure at kde.org>
+Date: Mon, 8 Apr 2013 15:34:13 +0200
+Subject: [PATCH 1/3] Add missing mimetype for contact groups, in the
+ direct-akonadi-search.
+
+---
+ libkdepim/addresseelineedit.cpp |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libkdepim/addresseelineedit.cpp b/libkdepim/addresseelineedit.cpp
+index 6f4d312..3c39c7d 100644
+--- a/libkdepim/addresseelineedit.cpp
++++ b/libkdepim/addresseelineedit.cpp
+@@ -715,7 +715,7 @@ void AddresseeLineEdit::Private::akonadiListAllContacts()
+   kDebug() << "listing all contacts in Akonadi";
+   Akonadi::RecursiveItemFetchJob *job =
+            new Akonadi::RecursiveItemFetchJob( Akonadi::Collection::root(),
+-                                               QStringList() << KABC::Addressee::mimeType(),
++                                               QStringList() << KABC::Addressee::mimeType() << KABC::ContactGroup::mimeType(),
+                                                s_static->akonadiSession );
+   job->fetchScope().fetchFullPayload();
+   job->fetchScope().setAncestorRetrieval( Akonadi::ItemFetchScope::Parent );
+-- 
+1.7.10.4
+
diff --git a/debian/patches/upstream_Fix-kmail-autocompletion-from-akonadi.patch b/debian/patches/upstream_Fix-kmail-autocompletion-from-akonadi.patch
new file mode 100644
index 0000000..11c4f81
--- /dev/null
+++ b/debian/patches/upstream_Fix-kmail-autocompletion-from-akonadi.patch
@@ -0,0 +1,189 @@
+From 6a06c57f52a00018d607085efa7570deb91dc707 Mon Sep 17 00:00:00 2001
+From: David Faure <faure at kde.org>
+Date: Mon, 8 Apr 2013 17:41:39 +0200
+Subject: [PATCH 3/3] Fix kmail autocompletion from akonadi.
+
+My commit 02f5f0214e made autocompletion from nepomuk work better, but broke
+completion from akonadi. I kept the "keywords" based code, but now it's only
+used for the special case of nickname-based search (because the nickname shouldn't
+appear in the completion item). For everything else it really doesn't make sense
+to have a search engine (akonadi/nepomuk) on top of a search engine
+(the one inside KCompletion).
+
+This time I verified that:
+* nepomuk search still works
+* contacts from akonadi work again
+* contact groups from akonadi work (after previous commit)
+* nickname-search in akonadi still doesn't work, but it didn't before. More work
+needed for that one. This is the only reason to keep KMailCompletion around btw,
+everything else would work without it.
+
+BUG: 259949
+FIXED-IN: 4.10.3
+---
+ libkdepim/addresseelineedit.cpp |   66 +++++++++++----------------------------
+ libkdepim/addresseelineedit.h   |    5 ---
+ libkdepim/kmailcompletion.h     |    4 ++-
+ 3 files changed, 21 insertions(+), 54 deletions(-)
+
+diff --git a/libkdepim/addresseelineedit.cpp b/libkdepim/addresseelineedit.cpp
+index b7b11be..ec4caf9 100644
+--- a/libkdepim/addresseelineedit.cpp
++++ b/libkdepim/addresseelineedit.cpp
+@@ -30,6 +30,8 @@
+ #include "completionordereditor.h"
+ #endif
+ 
++#include "kmailcompletion.h"
++
+ #include <Akonadi/Contact/ContactSearchJob>
+ #include <Akonadi/Contact/ContactGroupSearchJob>
+ #include <Akonadi/CollectionFetchJob>
+@@ -77,6 +79,10 @@
+ 
+ using namespace KPIM;
+ 
++namespace KPIM {
++  typedef QMap< QString, QPair<int,int> > CompletionItemsMap;
++}
++
+ class AddresseeLineEditStatic
+ {
+   public:
+@@ -496,11 +502,9 @@ void AddresseeLineEdit::Private::addCompletionItem( const QString &string, int w
+     s_static->completionItemMap.insert( string, qMakePair( weight, completionItemSource ) );
+   }
+ 
+-  if ( keyWords == 0 ) {
+-    s_static->completion->addItem( string, weight );
+-  } else {
+-    s_static->completion->addItemWithKeys( string, weight, keyWords );
+-  }
++  s_static->completion->addItem(string, weight);
++  if (keyWords && !keyWords->isEmpty())
++    s_static->completion->addItemWithKeys(string, weight, keyWords); // see kmailcompletion.cpp
+ }
+ 
+ const QStringList KPIM::AddresseeLineEdit::Private::adjustedCompletionItems( bool fullSearch )
+@@ -1348,17 +1352,13 @@ void AddresseeLineEdit::addItem( const Akonadi::Item &item, int weight, int sour
+ void AddresseeLineEdit::addContactGroup( const KABC::ContactGroup &group, int weight, int source )
+ {
+   d->addCompletionItem( group.name(), weight, source );
+-  QStringList keyWords;
+-  keyWords.append( group.name() );
+-  d->addCompletionItem( group.name(), weight, source, &keyWords );
+ }
+ 
+ void AddresseeLineEdit::addContact( const KABC::Addressee &addr, int weight, int source )
+ {
+   const QStringList emails = addr.emails();
+   QStringList::ConstIterator it;
+-  const int prefEmailWeight = 1;     //increment weight by prefEmailWeight
+-  int isPrefEmail = prefEmailWeight; //first in list is preferredEmail
++  int isPrefEmail = 1; //first in list is preferredEmail
+   QStringList::ConstIterator end( emails.constEnd() );
+   for ( it = emails.constBegin(); it != end; ++it ) {
+     //TODO: highlight preferredEmail
+@@ -1368,40 +1368,6 @@ void AddresseeLineEdit::addContact( const KABC::Addressee &addr, int weight, int
+     const QString nickName  = addr.nickName();
+     QString fullEmail       = addr.fullEmail( email );
+ 
+-    // Prepare keywords (for CompletionShell, CompletionPopup)
+-    QStringList keyWords;
+-    const QString realName  = addr.realName();
+-
+-    if ( !givenName.isEmpty() && !familyName.isEmpty() ) {
+-      keyWords.append( givenName  + QLatin1Char( ' ' ) + familyName );
+-      keyWords.append( familyName + QLatin1Char( ' ' ) + givenName );
+-      keyWords.append( familyName + QLatin1String( ", " ) + givenName );
+-    } else if ( !givenName.isEmpty() ) {
+-      keyWords.append( givenName );
+-    } else if ( !familyName.isEmpty() ) {
+-      keyWords.append( familyName );
+-    }
+-
+-    if ( !nickName.isEmpty() ) {
+-      keyWords.append( nickName );
+-    }
+-
+-    if ( !realName.isEmpty() ) {
+-      keyWords.append( realName );
+-    }
+-
+-    keyWords.append( email );
+-
+-    /* KMailCompletion does not have knowledge about identities, it stores emails and
+-     * keywords for each email. KMailCompletion::allMatches does a lookup on the
+-     * keywords and returns an ordered list of emails. In order to get the preferred
+-     * email before others for each identity we use this little trick.
+-     * We remove the <blank> in adjustedCompletionItems.
+-     */
+-    if ( isPrefEmail == prefEmailWeight ) {
+-      fullEmail.replace( QLatin1String( " <" ), QLatin1String( "  <" ) );
+-    }
+-
+     // Prepare "givenName" + ' ' + "familyName"
+     QString fullName = givenName;
+     if (!familyName.isEmpty()) {
+@@ -1413,12 +1379,16 @@ void AddresseeLineEdit::addContact( const KABC::Addressee &addr, int weight, int
+     // Finally, we can add the completion items
+     if (!fullName.isEmpty()) {
+       const QString address = KPIMUtils::normalizedAddress(fullName, email, QString());
+-      d->addCompletionItem(address, weight + isPrefEmail, source, &keyWords);
++      if (fullEmail != address) {
++        // This happens when fullEmail contains a middle name, while our own fullName+email only has "first last".
++        // Let's offer both, the fullEmail with 3 parts, looks a tad formal.
++        d->addCompletionItem(address, weight + isPrefEmail, source);
++      }
+     }
+ 
+-    if ( !nickName.isEmpty() ) {
+-      const QString address = KPIMUtils::normalizedAddress(nickName, email, QString());
+-      d->addCompletionItem(address, weight + isPrefEmail, source, &keyWords);
++    QStringList keyWords;
++    if (!nickName.isEmpty()) {
++      keyWords.append(nickName);
+     }
+ 
+     d->addCompletionItem( fullEmail, weight + isPrefEmail, source, &keyWords );
+diff --git a/libkdepim/addresseelineedit.h b/libkdepim/addresseelineedit.h
+index 4e6784b..b2af4a9 100644
+--- a/libkdepim/addresseelineedit.h
++++ b/libkdepim/addresseelineedit.h
+@@ -27,7 +27,6 @@
+ #ifndef KDEPIM_ADDRESSEELINEEDIT_H
+ #define KDEPIM_ADDRESSEELINEEDIT_H
+ 
+-#include "kmailcompletion.h"
+ #include "kdepim_export.h"
+ 
+ #include "ldap/ldapclient.h"
+@@ -50,10 +49,6 @@ namespace KABC {
+   class ContactGroup;
+ }
+ 
+-namespace KPIM {
+-  typedef QMap< QString, QPair<int,int> > CompletionItemsMap;
+-}
+-
+ namespace Nepomuk2 {
+   namespace Query {
+     class Result;
+diff --git a/libkdepim/kmailcompletion.h b/libkdepim/kmailcompletion.h
+index e8574cc..93771d3 100644
+--- a/libkdepim/kmailcompletion.h
++++ b/libkdepim/kmailcompletion.h
+@@ -32,7 +32,9 @@ namespace KPIM {
+ 
+ /**
+  * KMailCompletion allows lookup of email addresses by keyword.
+- * Typically a keywods would be firstname, lastname, nickname or domain.
++ * This is used for lookup by nickname, since we don't want the nickname to appear in the final email.
++ * E.g. you have a nickname "idiot" for your boss, you want to type "idiot" but you want the completion
++ * to offer "Full Name <email at domain>", without the nickname being visible.
+  */
+ class KMailCompletion : public KCompletion
+ {
+-- 
+1.7.10.4
+

-- 
KDE PIM module packaging



More information about the pkg-kde-commits mailing list