diff options
Diffstat (limited to 'libre/kdepim-libre')
-rw-r--r-- | libre/kdepim-libre/PKGBUILD | 77 | ||||
-rw-r--r-- | libre/kdepim-libre/fix-completion.patch | 182 | ||||
-rw-r--r-- | libre/kdepim-libre/kdepim-akregator.install | 12 |
3 files changed, 236 insertions, 35 deletions
diff --git a/libre/kdepim-libre/PKGBUILD b/libre/kdepim-libre/PKGBUILD index af28566e8..07fa48b1a 100644 --- a/libre/kdepim-libre/PKGBUILD +++ b/libre/kdepim-libre/PKGBUILD @@ -22,21 +22,30 @@ pkgname=('kdepim-akonadiconsole-libre' 'kdepim-ktimetracker-libre' 'kdepim-ktnef-libre' 'kdepim-libkdepim-libre') -pkgver=4.9.5 -pkgrel=1 +pkgver=4.10.2 +pkgrel=2 arch=('i686' 'x86_64' 'mips64el') url='http://pim.kde.org' license=('GPL' 'LGPL' 'FDL') groups=('kde' 'kdepim-libre') -makedepends=('cmake' 'automoc4' 'boost' 'kdepim-runtime' 'libxss' 'kde-agent') -source=("http://download.kde.org/stable/${pkgver}/src/${_pkgbase}-${pkgver}.tar.xz") -sha1sums=('a0d824dbb132cad8178767cfd881da2979ab399d') +makedepends=('cmake' 'automoc4' 'boost' 'kdepim-runtime' 'libxss' + 'kde-agent' 'nepomuk-widgets') +source=("http://download.kde.org/stable/${pkgver}/src/${_pkgbase}-${pkgver}.tar.xz" + "kleopatra-build-fix.patch::http://bugsfiles.kde.org/attachment.cgi?id=78592" + 'fix-completion.patch') +sha1sums=('61b74cb3bf541040e09252d4dcfaea8a876a2859' + '61a7e31e7daee3358c442d3ac5f74171b45ae2c9' + '92a44c7b1697de519b09265a3b68e7d73d4c024e') build() { + patch -Np1 -d ${_pkgbase}-${pkgver} < ${srcdir}/kleopatra-build-fix.patch + patch -Np1 -d ${_pkgbase}-${pkgver} < ${srcdir}/fix-completion.patch + mkdir build cd build cmake ../${_pkgbase}-${pkgver} \ -DCMAKE_BUILD_TYPE=Release \ + -DKDE4_BUILD_TESTS=OFF \ -DCMAKE_SKIP_RPATH=ON \ -DCMAKE_INSTALL_PREFIX=/usr \ -DKDEPIM_BUILD_MOBILE=OFF @@ -44,8 +53,8 @@ build() { } package_kdepim-akonadiconsole-libre() { - pkgdesc='Akonadi Management and Debugging Console (without nonfree pilot-link support)' - depends=('kdepim-libkdepim') + pkgdesc='Akonadi Management and Debugging Console, without nonfree pilot-link support' + depends=('kdepim-libkdepim' 'nepomuk-widgets') url='http://pim.kde.org' replaces=('kdepim-akonadiconsole') conflicts=('kdepim-akonadiconsole') @@ -56,13 +65,13 @@ package_kdepim-akonadiconsole-libre() { } package_kdepim-akregator-libre() { - pkgdesc='A Feed Reader for KDE (without nonfree pilot-link support)' + pkgdesc='A Feed Reader for KDE, without nonfree pilot-link support' depends=('kdepim-libkdepim') url="http://kde.org/applications/internet/akregator/" replaces=('kdepim-akregator') conflicts=('kdepim-akregator') provides=("kdepim-akregator=${pkgver}") - install='kdepim.install' + install='kdepim-akregator.install' cd "${srcdir}"/build/akregator make DESTDIR="${pkgdir}" install cd "${srcdir}"/build/doc/akregator @@ -72,7 +81,7 @@ package_kdepim-akregator-libre() { } package_kdepim-blogilo-libre() { - pkgdesc='A KDE Blogging Client (without nonfree pilot-link support)' + pkgdesc='A KDE Blogging Client, without nonfree pilot-link support' depends=('kdepim-runtime') url="http://kde.org/applications/internet/blogilo/" replaces=('kdepim-blogilo' 'blogilo') @@ -86,7 +95,7 @@ package_kdepim-blogilo-libre() { } package_kdepim-console-libre() { - pkgdesc='Command line tool for accessing calendar files (without nonfree pilot-link support)' + pkgdesc='Command line tool for accessing calendar files, without nonfree pilot-link support' depends=('kdepim-runtime') url='http://pim.kde.org' replaces=('kdepim-console') @@ -102,7 +111,7 @@ package_kdepim-console-libre() { } package_kdepim-kaddressbook-libre() { - pkgdesc='Contact Manager (without nonfree pilot-link support)' + pkgdesc='Contact Manager, without nonfree pilot-link support' depends=('kdepim-libkdepim') url="http://kde.org/applications/office/kaddressbook/" replaces=('kdepim-kaddressbook') @@ -118,7 +127,7 @@ package_kdepim-kaddressbook-libre() { } package_kdepim-kalarm-libre() { - pkgdesc='Personal Alarm Scheduler (without nonfree pilot-link support)' + pkgdesc='Personal Alarm Scheduler, without nonfree pilot-link support' depends=('kdepim-libkdepim') url="http://kde.org/applications/utilities/kalarm/" replaces=('kdepim-kalarm') @@ -132,7 +141,7 @@ package_kdepim-kalarm-libre() { } package_kdepim-kjots-libre() { - pkgdesc='Note Taker (without nonfree pilot-link support)' + pkgdesc='Note Taker, without nonfree pilot-link support' depends=('kdepim-libkdepim') url="http://kde.org/applications/utilities/kjots/" replaces=('kdepim-kjots') @@ -148,7 +157,7 @@ package_kdepim-kjots-libre() { } package_kdepim-kleopatra-libre() { - pkgdesc='Certificate Manager and Unified Crypto GUI (without nonfree pilot-link support)' + pkgdesc='Certificate Manager and Unified Crypto GUI, without nonfree pilot-link support' depends=('kdepim-libkdepim') install='kdepim-kleopatra.install' url="http://kde.org/applications/utilities/kleopatra/" @@ -164,7 +173,7 @@ package_kdepim-kleopatra-libre() { } package_kdepim-kmail-libre() { - pkgdesc='Mail Client (without nonfree pilot-link support)' + pkgdesc='Mail Client, without nonfree pilot-link support' depends=('kdepim-libkdepim') url="http://kde.org/applications/internet/kmail/" install='kdepim-kmail.install' @@ -173,16 +182,16 @@ package_kdepim-kmail-libre() { replaces=('kdepim-kmail' 'kdepim-kmailcvt' 'kdepim-ksendemail' 'kdepim-libksieve' 'kdepim-mimelib' 'kdepim-plugins') provides=("kdepim-kmail=${pkgver}") - for i in kmail doc/kmail kmailcvt archivemailagent backupmail \ + for i in kmail doc/kmail kmailcvt archivemailagent \ importwizard ksendemail libksieve messagelist mailfilteragent \ - mailimporter ontologies kontact/plugins/kmail; do + ontologies kontact/plugins/kmail; do cd "${srcdir}"/build/${i} make DESTDIR="${pkgdir}" install done } package_kdepim-knode-libre() { - pkgdesc='News Reader (without nonfree pilot-link support)' + pkgdesc='News Reader, without nonfree pilot-link support' depends=('kdepim-libkdepim') url="http://kde.org/applications/internet/knode/" replaces=('kdepim-knode') @@ -200,7 +209,7 @@ package_kdepim-knode-libre() { } package_kdepim-knotes-libre() { - pkgdesc='Popup Notes (without nonfree pilot-link support)' + pkgdesc='Popup Notes, without nonfree pilot-link support' depends=('kdepim-libkdepim') url="http://kde.org/applications/utilities/knotes/" replaces=('kdepim-knotes') @@ -216,7 +225,7 @@ package_kdepim-knotes-libre() { } package_kdepim-kontact-libre() { - pkgdesc='Personal Information Manager (without nonfree pilot-link support)' + pkgdesc='Personal Information Manager, without nonfree pilot-link support' depends=('kdepim-libkdepim') url="http://kde.org/applications/office/kontact/" install='kdepim.install' @@ -231,7 +240,7 @@ package_kdepim-kontact-libre() { } package_kdepim-korganizer-libre() { - pkgdesc='Calendar and Scheduling Program (without nonfree pilot-link support)' + pkgdesc='Calendar and Scheduling Program, without nonfree pilot-link support' depends=('kdepim-libkdepim') url="http://kde.org/applications/office/korganizer" replaces=('kdepim-korganizer') @@ -246,7 +255,7 @@ package_kdepim-korganizer-libre() { } package_kdepim-kresources-libre() { - pkgdesc='KDE PIM resources (without nonfree pilot-link support)' + pkgdesc='KDE PIM resources, without nonfree pilot-link support' depends=('kdepim-libkdepim') url='http://pim.kde.org' replaces=('kdepim-kresources') @@ -257,7 +266,7 @@ package_kdepim-kresources-libre() { } package_kdepim-ktimetracker-libre() { - pkgdesc='Personal Time Tracker (without nonfree pilot-link support)' + pkgdesc='Personal Time Tracker, without nonfree pilot-link support' depends=('kdepim-kresources') url="http://kde.org/applications/utilities/ktimetracker/" replaces=('kdepim-ktimetracker') @@ -268,12 +277,10 @@ package_kdepim-ktimetracker-libre() { make DESTDIR="${pkgdir}" install cd "${srcdir}"/build/doc/ktimetracker make DESTDIR="${pkgdir}" install - cd "${srcdir}"/build/kontact/plugins/ktimetracker - make DESTDIR="${pkgdir}" install } package_kdepim-ktnef-libre() { - pkgdesc='A viewer/extractor for TNEF files (without nonfree pilot-link support)' + pkgdesc='A viewer/extractor for TNEF files, without nonfree pilot-link support' depends=('kdebase-runtime' 'kdepimlibs') url="https://projects.kde.org/projects/kde/kdepim/ktnef" replaces=('kdepim-ktnef') @@ -287,20 +294,20 @@ package_kdepim-ktnef-libre() { } package_kdepim-libkdepim-libre() { - pkgdesc='Library for KDE PIM (without nonfree pilot-link support)' + pkgdesc='Library for KDE PIM, without nonfree pilot-link support' groups=() depends=('kde-agent' 'kdepim-runtime') url='http://pim.kde.org' - conflicts=('kdepim-libkdepim' 'kdepim-icons' 'kdepim-libkleo' - 'kdepim-libkpgp' 'kdepim-strigi-analyzer' 'kdepim-akonadi') - replaces=('kdepim-libkdepim' 'kdepim-icons' 'kdepim-libkleo' - 'kdepim-libkpgp' 'kdepim-strigi-analyzer' 'kdepim-akonadi') + conflicts=('kdepim-libkdepim' 'kdepim-icons' 'kdepim-libkleo' 'kdepim-libkpgp' + 'kdepim-strigi-analyzer' 'kdepim-akonadi') + replaces=('kdepim-libkdepim' 'kdepim-icons' 'kdepim-libkleo' 'kdepim-libkpgp' + 'kdepim-strigi-analyzer' 'kdepim-akonadi') provides=("kdepim-libkdepim=${pkgver}") for i in akonadi_next calendarsupport incidenceeditor-ng \ kdgantt2 libkdepim libkdepimdbusinterfaces libkleo libkpgp \ - mailcommon messagecomposer messagecore messageviewer icons \ - strigi-analyzer templateparser plugins/messageviewer \ - plugins/ktexteditor; do + mailcommon mailimporter messagecomposer messagecore messageviewer \ + icons strigi-analyzer templateparser plugins/messageviewer \ + plugins/ktexteditor pimcommon pimsettingexporter; do cd "${srcdir}"/build/${i} make DESTDIR="${pkgdir}" install done diff --git a/libre/kdepim-libre/fix-completion.patch b/libre/kdepim-libre/fix-completion.patch new file mode 100644 index 000000000..c2edefe00 --- /dev/null +++ b/libre/kdepim-libre/fix-completion.patch @@ -0,0 +1,182 @@ +commit 6a06c57f52a00018d607085efa7570deb91dc707 +Author: David Faure <faure@kde.org> +Date: Mon Apr 8 17:41:39 2013 +0200 + + 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 + +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@domain>", without the nickname being visible. + */ + class KMailCompletion : public KCompletion + { diff --git a/libre/kdepim-libre/kdepim-akregator.install b/libre/kdepim-libre/kdepim-akregator.install new file mode 100644 index 000000000..5787df72f --- /dev/null +++ b/libre/kdepim-libre/kdepim-akregator.install @@ -0,0 +1,12 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null + update-desktop-database -q +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} |