Hello community, here is the log from the commit of package kcontacts for openSUSE:Factory checked in at 2016-05-31 12:13:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kcontacts (Old) and /work/SRC/openSUSE:Factory/.kcontacts.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kcontacts" Changes: -------- --- /work/SRC/openSUSE:Factory/kcontacts/kcontacts.changes 2016-03-26 15:14:29.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.kcontacts.new/kcontacts.changes 2016-05-31 12:13:15.000000000 +0200 @@ -1,0 +2,24 @@ +Sat May 7 10:20:17 UTC 2016 - [email protected] + +- Update to KDE Applications 16.04.1 + * KDE Applications 16.04.1 + * https://www.kde.org/announcements/announce-applications-16.04.1.php + + +------------------------------------------------------------------- +Sun Apr 17 05:58:50 UTC 2016 - [email protected] + +- Update to KDE Applications 16.04.0 + * KDE Applications 16.04.0 + * https://www.kde.org/announcements/announce-applications-16.04.0.php + + +------------------------------------------------------------------- +Mon Apr 11 06:36:04 UTC 2016 - [email protected] + +- Update to KDE Applications 16.03.90 + * KDE Applications 16.04.0 RC + * https://www.kde.org/announcements/announce-applications-16.04-rc.php + + +------------------------------------------------------------------- Old: ---- kcontacts-15.12.3.tar.xz New: ---- kcontacts-16.04.1.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kcontacts.spec ++++++ --- /var/tmp/diff_new_pack.Uwkyaq/_old 2016-05-31 12:13:16.000000000 +0200 +++ /var/tmp/diff_new_pack.Uwkyaq/_new 2016-05-31 12:13:16.000000000 +0200 @@ -18,7 +18,7 @@ %define kf5_version 5.5.0 Name: kcontacts -Version: 15.12.3 +Version: 16.04.1 Release: 0 Summary: New address book API for KDE License: LGPL-2.1+ ++++++ kcontacts-15.12.3.tar.xz -> kcontacts-16.04.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/CMakeLists.txt new/kcontacts-16.04.1/CMakeLists.txt --- old/kcontacts-15.12.3/CMakeLists.txt 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/CMakeLists.txt 2016-04-26 22:16:55.000000000 +0200 @@ -3,7 +3,7 @@ project(KContacts) # ECM setup -find_package(ECM 5.14.0 CONFIG REQUIRED) +find_package(ECM 5.19.0 CONFIG REQUIRED) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${KContacts_SOURCE_DIR}/cmake) include(GenerateExportHeader) @@ -14,11 +14,11 @@ include(FeatureSummary) include(KDEInstallDirs) include(KDECMakeSettings) -include(KDEFrameworkCompilerSettings) +include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) include(ECMQtDeclareLoggingCategory) -set(KF5_VERSION "5.14.0") -set(KCONTACTS_LIB_VERSION "4.92.0") +set(KF5_VERSION "5.19.0") +set(KCONTACTS_LIB_VERSION "5.2.1") ecm_setup_version(${KCONTACTS_LIB_VERSION} VARIABLE_PREFIX KContacts VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kcontacts_version.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/autotests/addresstest.cpp new/kcontacts-16.04.1/autotests/addresstest.cpp --- old/kcontacts-15.12.3/autotests/addresstest.cpp 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/autotests/addresstest.cpp 2016-04-26 22:16:55.000000000 +0200 @@ -28,6 +28,11 @@ QTEST_MAIN(AddressTest) +void AddressTest::initTestCase() +{ + setenv("LANG", "C", 1); +} + void AddressTest::emptyTest() { KContacts::Address address; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/autotests/addresstest.h new/kcontacts-16.04.1/autotests/addresstest.h --- old/kcontacts-15.12.3/autotests/addresstest.h 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/autotests/addresstest.h 2016-04-26 22:16:55.000000000 +0200 @@ -28,6 +28,7 @@ Q_OBJECT private Q_SLOTS: + void initTestCase(); void emptyTest(); void storeTest(); void equalsTest(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/autotests/data/vcard1.vcf.ref new/kcontacts-16.04.1/autotests/data/vcard1.vcf.ref --- old/kcontacts-15.12.3/autotests/data/vcard1.vcf.ref 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/autotests/data/vcard1.vcf.ref 2016-04-26 22:16:55.000000000 +0200 @@ -1,14 +1,14 @@ BEGIN:VCARD VERSION:3.0 -ADR;TYPE=parcel;TYPE=postal;TYPE=work:;;6544 Battleford Drive;Raleigh;NC;27 - 613-3502;U.S.A. +ADR;TYPE=parcel,postal,work:;;6544 Battleford Drive;Raleigh;NC;27613-3502;U + .S.A. EMAIL;TYPE=INTERNET,PREF:[email protected] EMAIL;TYPE=INTERNET:[email protected] FN:Frank Dawson N:;;;; ORG:Lotus Development Corporation -TEL;TYPE=MSG;TYPE=VOICE;TYPE=WORK:+1-919-676-9515 -TEL;TYPE=FAX;TYPE=WORK:+1-919-676-9564 +TEL;TYPE=MSG,VOICE,WORK:+1-919-676-9515 +TEL;TYPE=FAX,WORK:+1-919-676-9564 UID:gDVbA6LY3t URL:http://home.earthlink.net/~fdawson END:VCARD diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/autotests/data/vcard11.vcf.ref new/kcontacts-16.04.1/autotests/data/vcard11.vcf.ref --- old/kcontacts-15.12.3/autotests/data/vcard11.vcf.ref 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/autotests/data/vcard11.vcf.ref 2016-04-26 22:16:55.000000000 +0200 @@ -1,7 +1,7 @@ BEGIN:VCARD VERSION:3.0 CLASS:PUBLIC -EMAIL;TYPE=HOME,PREF;X-EVOLUTION-UI-SLOT=2:[email protected] +EMAIL;TYPE=HOME;X-EVOLUTION-UI-SLOT=2:[email protected] EMAIL;TYPE=WORK;X-EVOLUTION-UI-SLOT=1:[email protected] FN:Test User N:User;Test;;; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/autotests/data/vcard13.vcf.ref new/kcontacts-16.04.1/autotests/data/vcard13.vcf.ref --- old/kcontacts-15.12.3/autotests/data/vcard13.vcf.ref 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/autotests/data/vcard13.vcf.ref 2016-04-26 22:16:55.000000000 +0200 @@ -1,7 +1,7 @@ BEGIN:VCARD VERSION:3.0 CLASS:PUBLIC -EMAIL;TYPE=HOME,PREF;X-EVOLUTION-UI-SLOT=2:[email protected] +EMAIL;TYPE=HOME;X-EVOLUTION-UI-SLOT=2:[email protected] EMAIL;TYPE=WORK;X-EVOLUTION-UI-SLOT=1:[email protected] FN:Test User N:User;Test;;; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/autotests/data/vcard2.vcf.ref new/kcontacts-16.04.1/autotests/data/vcard2.vcf.ref --- old/kcontacts-15.12.3/autotests/data/vcard2.vcf.ref 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/autotests/data/vcard2.vcf.ref 2016-04-26 22:16:55.000000000 +0200 @@ -5,8 +5,8 @@ FN:Tim Howes N:;;;; ORG:Netscape Communications Corp. -TEL;TYPE=MSG;TYPE=VOICE;TYPE=WORK:+1-415-937-3419 -TEL;TYPE=FAX;TYPE=WORK:+1-415-528-4164 +TEL;TYPE=MSG,VOICE,WORK:+1-415-937-3419 +TEL;TYPE=FAX,WORK:+1-415-528-4164 UID:1UgvYejJMs END:VCARD diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/autotests/data/vcard4.vcf.ref new/kcontacts-16.04.1/autotests/data/vcard4.vcf.ref --- old/kcontacts-15.12.3/autotests/data/vcard4.vcf.ref 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/autotests/data/vcard4.vcf.ref 2016-04-26 22:16:55.000000000 +0200 @@ -5,8 +5,8 @@ N:;;;; NOTE:Welcome to the Ximian Addressbook. ORG:Ximian\, Inc. -TEL;TYPE=VOICE;TYPE=WORK:(617) 236-0442 -TEL;TYPE=FAX;TYPE=WORK:(617) 236-8630 +TEL;TYPE=VOICE,WORK:(617) 236-0442 +TEL;TYPE=FAX,WORK:(617) 236-8630 UID:pas-id-3E136F9B00000000 URL:www.ximian.com/ X-EVOLUTION-FILE-AS:Ximian\, Inc. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/autotests/data/vcard5.vcf.ref new/kcontacts-16.04.1/autotests/data/vcard5.vcf.ref --- old/kcontacts-15.12.3/autotests/data/vcard5.vcf.ref 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/autotests/data/vcard5.vcf.ref 2016-04-26 22:16:55.000000000 +0200 @@ -1,7 +1,6 @@ BEGIN:VCARD VERSION:3.0 -ADR;TYPE=home;TYPE=pref:;;Buehlauer Strasse 45;Dresden;Sachsen;01327;German - y +ADR;TYPE=home,pref:;;Buehlauer Strasse 45;Dresden;Sachsen;01327;Germany ADR;TYPE=work:;;Prager Strasse 55;Dresden;Sachsen;01066;Germany BDAY:1955-07-19T00:00:00Z CATEGORIES:Friend diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/autotests/emailtest.cpp new/kcontacts-16.04.1/autotests/emailtest.cpp --- old/kcontacts-15.12.3/autotests/emailtest.cpp 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/autotests/emailtest.cpp 2016-04-26 22:16:55.000000000 +0200 @@ -175,7 +175,7 @@ const QByteArray ba = vcard.exportVCards(lst, KContacts::VCard::v4_0); QByteArray expected("BEGIN:VCARD\r\n" "VERSION:4.0\r\n" - "EMAIL;TYPE=PREF:[email protected]\r\n" + "EMAIL:[email protected]\r\n" "EMAIL:[email protected]\r\n" "N:;;;;\r\n" "UID:testuid\r\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/autotests/resourcelocatorurltest.cpp new/kcontacts-16.04.1/autotests/resourcelocatorurltest.cpp --- old/kcontacts-15.12.3/autotests/resourcelocatorurltest.cpp 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/autotests/resourcelocatorurltest.cpp 2016-04-26 22:16:55.000000000 +0200 @@ -115,9 +115,9 @@ KContacts::VCardTool vcard; const KContacts::AddresseeList lst = vcard.parseVCards(vcarddata); QCOMPARE(lst.count(), 1); - QCOMPARE(lst.at(0).extraUrlList().count(), 1); + QCOMPARE(lst.at(0).extraUrlList().count(), 2); const ResourceLocatorUrl calurl = lst.at(0).extraUrlList().at(0); - QCOMPARE(calurl.url(), QUrl(QStringLiteral("https://sherlockholmes.com/calendar/sherlockholmes"))); + QCOMPARE(calurl.url(), QUrl(QStringLiteral("https://firsturl"))); QVERIFY(!calurl.parameters().isEmpty()); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/src/address.cpp new/kcontacts-16.04.1/src/address.cpp --- old/kcontacts-15.12.3/src/address.cpp 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/src/address.cpp 2016-04-26 22:16:55.000000000 +0200 @@ -332,6 +332,32 @@ return d->mType; } +QString Address::typeLabel(Type type) +{ + QString label; + bool first = true; + const TypeList list = typeList(); + + TypeList::ConstIterator it; + TypeList::ConstIterator end(list.end()); + for (it = list.begin(); it != end; ++it) { + // these are actually flags + const TypeFlag flag = static_cast<TypeFlag>(static_cast<int>(*it)); + if (type & flag) { + if (!first) { + label.append(QLatin1Char('/')); + } + + label.append(typeFlagLabel(flag)); + + if (first) { + first = false; + } + } + } + return label; +} + QString Address::typeLabel() const { QString label; @@ -494,37 +520,25 @@ return list; } -QString Address::typeLabel(Type type) +QString Address::typeFlagLabel(TypeFlag type) { - if (type & Pref) { - return i18nc("Preferred address", "Preferred"); - } - switch (type) { case Dom: return i18nc("Address is in home country", "Domestic"); - break; case Intl: return i18nc("Address is not in home country", "International"); - break; case Postal: return i18nc("Address for delivering letters", "Postal"); - break; case Parcel: return i18nc("Address for delivering packages", "Parcel"); - break; case Home: return i18nc("Home Address", "Home"); - break; case Work: return i18nc("Work Address", "Work"); - break; case Pref: return i18n("Preferred Address"); - break; default: return i18nc("another type of address", "Other"); - break; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/src/address.h new/kcontacts-16.04.1/src/address.h --- old/kcontacts-15.12.3/src/address.h 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/src/address.h 2016-04-26 22:16:55.000000000 +0200 @@ -320,6 +320,7 @@ */ static QString ISOtoCountry(const QString &ISOname); + static QString typeFlagLabel(TypeFlag type); private: class Private; QSharedDataPointer<Private> d; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/src/addressee.cpp new/kcontacts-16.04.1/src/addressee.cpp --- old/kcontacts-15.12.3/src/addressee.cpp 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/src/addressee.cpp 2016-04-26 22:16:55.000000000 +0200 @@ -77,7 +77,6 @@ mProductId = other.mProductId; mRevision = other.mRevision; mSortString = other.mSortString; - mUrl = other.mUrl; mSecrecy = other.mSecrecy; mLogo = other.mLogo; mPhoto = other.mPhoto; @@ -129,7 +128,6 @@ QString mProductId; QDateTime mRevision; QString mSortString; - ResourceLocatorUrl mUrl; Secrecy mSecrecy; Picture mLogo; Picture mPhoto; @@ -322,12 +320,6 @@ return false; } - if ((d->mUrl.isValid() || addressee.d->mUrl.isValid()) && - (d->mUrl != addressee.d->mUrl)) { - qCDebug(KCONTACTS_LOG) << "url differs"; - return false; - } - if (!listEquals(d->mPhoneNumbers, addressee.d->mPhoneNumbers)) { qCDebug(KCONTACTS_LOG) << "phoneNumbers differs"; return false; @@ -475,6 +467,7 @@ void Addressee::insertExtraSound(const Sound &sound) { + d->mEmpty = false; d->mSoundListExtra.append(sound); } @@ -485,6 +478,7 @@ void Addressee::insertExtraPhoto(const Picture &picture) { + d->mEmpty = false; d->mPhotoExtraList.append(picture); } @@ -495,6 +489,7 @@ void Addressee::insertExtraLogo(const Picture &logo) { + d->mEmpty = false; d->mLogoExtraList.append(logo); } @@ -505,26 +500,33 @@ void Addressee::setExtraSoundList(const Sound::List &soundList) { + d->mEmpty = false; d->mSoundListExtra = soundList; } void Addressee::setExtraPhotoList(const Picture::List &pictureList) { + d->mEmpty = false; d->mPhotoExtraList = pictureList; } void Addressee::setExtraLogoList(const Picture::List &logoList) { + d->mEmpty = false; d->mLogoExtraList = logoList; } void Addressee::insertExtraUrl(const ResourceLocatorUrl &url) { - d->mUrlExtraList.append(url); + if (url.isValid()) { + d->mEmpty = false; + d->mUrlExtraList.append(url); + } } void Addressee::setExtraUrlList(const ResourceLocatorUrl::List &urlList) { + d->mEmpty = false; d->mUrlExtraList = urlList; } @@ -535,11 +537,13 @@ void Addressee::insertSourceUrl(const QUrl &url) { + d->mEmpty = false; d->mSources.append(url); } void Addressee::setSourcesUrlList(const QVector<QUrl> &urlList) { + d->mEmpty = false; d->mSources = urlList; } @@ -1081,27 +1085,21 @@ { KContacts::ResourceLocatorUrl resourceLocator; resourceLocator.setUrl(url); - if (resourceLocator == d->mUrl) { - return; - } - - d->mEmpty = false; - d->mUrl = resourceLocator; + insertExtraUrl(resourceLocator); } void Addressee::setUrl(const ResourceLocatorUrl &url) { - if (url == d->mUrl) { - return; - } - - d->mEmpty = false; - d->mUrl = url; + insertExtraUrl(url); } ResourceLocatorUrl Addressee::url() const { - return d->mUrl; + if (d->mUrlExtraList.isEmpty()) { + return ResourceLocatorUrl(); + } else { + return d->mUrlExtraList.at(0); + } } QString Addressee::urlLabel() @@ -1591,6 +1589,13 @@ return d->mPhoneNumbers; } +void Addressee::setPhoneNumbers(const PhoneNumber::List &phoneNumbers) +{ + d->mEmpty = false; + d->mPhoneNumbers.clear(); + d->mPhoneNumbers = phoneNumbers; +} + PhoneNumber::List Addressee::phoneNumbers(PhoneNumber::Type type) const { PhoneNumber::List list; @@ -1631,23 +1636,10 @@ d->mKeys.append(key); } -#if (QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)) void vectorRemoveAll(Key::List &t, const Key &key) { t.removeAll(key); } -#else -void vectorRemoveAll(Key::List &vector, const Key &t) -{ - for (Key::List::iterator it = vector.begin(), itEnd = vector.end(); it != itEnd;) { - if (*it == t) { - it = vector.erase(it); - } else { - ++it; - } - } -} -#endif void Addressee::removeKey(const Key &key) { @@ -2262,7 +2254,6 @@ s << a.d->mProductId; s << a.d->mRevision; s << a.d->mSortString; - s << a.d->mUrl; s << a.d->mSecrecy; s << a.d->mLogo; s << a.d->mPhoto; @@ -2313,7 +2304,6 @@ s >> a.d->mProductId; s >> a.d->mRevision; s >> a.d->mSortString; - s >> a.d->mUrl; s >> a.d->mSecrecy; s >> a.d->mLogo; s >> a.d->mPhoto; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/src/addressee.h new/kcontacts-16.04.1/src/addressee.h --- old/kcontacts-15.12.3/src/addressee.h 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/src/addressee.h 2016-04-26 22:16:55.000000000 +0200 @@ -733,6 +733,8 @@ */ PhoneNumber::List phoneNumbers() const; + void setPhoneNumbers(const PhoneNumber::List &phoneNumbers); + /** Return list of phone numbers with a special type. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/src/addresseehelper.cpp new/kcontacts-16.04.1/src/addresseehelper.cpp --- old/kcontacts-15.12.3/src/addresseehelper.cpp 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/src/addresseehelper.cpp 2016-04-26 22:16:55.000000000 +0200 @@ -24,7 +24,6 @@ #include <kconfiggroup.h> #include <QCoreApplication> -#include <QtDBus/QtDBus> using namespace KContacts; @@ -50,11 +49,6 @@ , d(new AddresseeHelperPrivate) { initSettings(); - - QDBusConnection::sessionBus().connect(QString(), QStringLiteral("/KABC"), - QStringLiteral("org.kde.kabc.AddressBookConfig"), - QStringLiteral("changed"), - this, SLOT(initSettings())); } AddresseeHelper::~AddresseeHelper() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/src/converter/ldifconverter.h new/kcontacts-16.04.1/src/converter/ldifconverter.h --- old/kcontacts-15.12.3/src/converter/ldifconverter.h 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/src/converter/ldifconverter.h 2016-04-26 22:16:55.000000000 +0200 @@ -21,7 +21,6 @@ #define KCONTACTS_LDIFCONVERTER_H #include "addressee.h" -#include "addresseelist.h" #include "contactgroup.h" #include <QtCore/QDateTime> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/src/vcardparser/vcard.h new/kcontacts-16.04.1/src/vcardparser/vcard.h --- old/kcontacts-15.12.3/src/vcardparser/vcard.h 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/src/vcardparser/vcard.h 2016-04-26 22:16:55.000000000 +0200 @@ -85,9 +85,6 @@ private: LineMap mLineMap; - - class VCardPrivate; - VCardPrivate *d; }; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/src/vcardparser/vcardline.cpp new/kcontacts-16.04.1/src/vcardparser/vcardline.cpp --- old/kcontacts-15.12.3/src/vcardparser/vcardline.cpp 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/src/vcardparser/vcardline.cpp 2016-04-26 22:16:55.000000000 +0200 @@ -23,25 +23,21 @@ using namespace KContacts; VCardLine::VCardLine() - : d(Q_NULLPTR) { } VCardLine::VCardLine(const QString &identifier) - : d(Q_NULLPTR) { mIdentifier = identifier; } VCardLine::VCardLine(const QString &identifier, const QVariant &value) - : d(Q_NULLPTR) { mIdentifier = identifier; mValue = value; } VCardLine::VCardLine(const VCardLine &line) - : d(Q_NULLPTR) { mParamMap = line.mParamMap; mValue = line.mValue; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/src/vcardparser/vcardline.h new/kcontacts-16.04.1/src/vcardparser/vcardline.h --- old/kcontacts-15.12.3/src/vcardparser/vcardline.h 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/src/vcardparser/vcardline.h 2016-04-26 22:16:55.000000000 +0200 @@ -121,9 +121,6 @@ QString mIdentifier; QString mGroup; QVariant mValue; - - class VCardLinePrivate; - VCardLinePrivate *d; }; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/src/vcardtool.cpp new/kcontacts-16.04.1/src/vcardtool.cpp --- old/kcontacts-15.12.3/src/vcardtool.cpp 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/src/vcardtool.cpp 2016-04-26 22:16:55.000000000 +0200 @@ -164,26 +164,30 @@ const bool hasLabel = !(*it).label().isEmpty(); QMap<QString, Address::TypeFlag>::ConstIterator typeIt; + QStringList addreLineType; + QStringList labelLineType; for (typeIt = mAddressTypeMap.constBegin(); typeIt != mAddressTypeMap.constEnd(); ++typeIt) { if (typeIt.value() & (*it).type()) { - addParameter(adrLine, version, QStringLiteral("TYPE"), QStringList() << typeIt.key()); + addreLineType << typeIt.key(); if (hasLabel) { - addParameter(labelLine, version, QStringLiteral("TYPE"), QStringList() << typeIt.key()); + labelLineType << typeIt.key(); } } } if (!isEmpty) { + addParameter(adrLine, version, QStringLiteral("TYPE"), addreLineType); card.addLine(adrLine); } if (hasLabel) { + addParameter(labelLine, version, QStringLiteral("TYPE"), labelLineType); card.addLine(labelLine); } } // BDAY - card.addLine(VCardLine(QStringLiteral("BDAY"), createDateTime((*addrIt).birthday()))); + card.addLine(VCardLine(QStringLiteral("BDAY"), createDateTime((*addrIt).birthday(), version))); //Laurent: 31 Jan 2015. Not necessary to export it. When Categories were changes as AkonadiTag nobody thought that it was break categorie support... //=> not necessary to export just tag... @@ -254,46 +258,30 @@ const Email::List emailList = (*addrIt).emailList(); Email::List::ConstIterator emailIt; Email::List::ConstIterator emailEnd(emailList.end()); - bool pref = true; for (emailIt = emailList.begin(); emailIt != emailEnd; ++emailIt) { - bool needToAddPref = false; VCardLine line(QStringLiteral("EMAIL"), (*emailIt).mail()); - if (pref == true && emailList.count() > 1) { - needToAddPref = true; - pref = false; - } QMapIterator<QString, QStringList> i((*emailIt).parameters()); - bool foundType = false; while (i.hasNext()) { i.next(); - QStringList valueStringList = i.value(); - if (i.key().toLower() == QLatin1String("type")) { - if (!valueStringList.contains(QStringLiteral("PREF"))) { - if (needToAddPref) { - valueStringList.append(QStringLiteral("PREF")); - } else { - needToAddPref = false; - } - } else { - if (!needToAddPref) { + if (version == VCard::v2_1) { + if (i.key().toLower() == QLatin1String("type")) { + QStringList valueStringList = i.value(); + bool hasPreferred = false; + if (valueStringList.contains(QStringLiteral("PREF"))) { valueStringList.removeAll(QStringLiteral("PREF")); + hasPreferred = true; + } + if (!valueStringList.isEmpty()) { + addParameter(line, version, i.key(), valueStringList); + } + if (hasPreferred) { + line.addParameter(QStringLiteral("PREF"), QString()); } - } - foundType = true; - } - if (!valueStringList.isEmpty()) { - if (i.key().toLower() == QLatin1String("type")) { - addParameter(line, version, i.key(), valueStringList); } else { - line.addParameter(i.key(), valueStringList.join(QStringLiteral(","))); + line.addParameter(i.key(), i.value().join(QStringLiteral(","))); } - } - } - if (!foundType && needToAddPref) { - if (version == VCard::v2_1) { - line.addParameter(QStringLiteral("PREF"), QString()); } else { - line.addParameter(QStringLiteral("TYPE"), QStringLiteral("PREF")); + line.addParameter(i.key(), i.value().join(QStringLiteral(","))); } } card.addLine(line); @@ -421,7 +409,7 @@ } // REV - card.addLine(VCardLine(QStringLiteral("REV"), createDateTime((*addrIt).revision()))); + card.addLine(VCardLine(QStringLiteral("REV"), createDateTime((*addrIt).revision(), version))); // ROLE VCardLine roleLine(QStringLiteral("ROLE"), (*addrIt).role()); @@ -451,12 +439,16 @@ QMap<QString, PhoneNumber::TypeFlag>::ConstIterator typeIt; QMap<QString, PhoneNumber::TypeFlag>::ConstIterator typeEnd(mPhoneTypeMap.constEnd()); + QStringList lst; for (typeIt = mPhoneTypeMap.constBegin(); typeIt != typeEnd; ++typeIt) { if (typeIt.value() & (*phoneIt).type()) { - addParameter(line, version, QStringLiteral("TYPE"), QStringList() << typeIt.key()); + lst << typeIt.key(); + } } - + if (!lst.isEmpty()) { + addParameter(line, version, QStringLiteral("TYPE"), lst); + } card.addLine(line); } @@ -490,7 +482,6 @@ card.addLine(VCardLine(QStringLiteral("UID"), (*addrIt).uid())); // URL - card.addLine(VCardLine(QStringLiteral("URL"), (*addrIt).url().url())); Q_FOREACH (const ResourceLocatorUrl &url, (*addrIt).extraUrlList()) { VCardLine line(QStringLiteral("URL"), url.url()); QMapIterator<QString, QStringList> i(url.parameters()); @@ -612,7 +603,7 @@ const QDate date = QDate::fromString(value, Qt::ISODate); QDateTime dt = QDateTime(date); dt.setTime(QTime()); - card.addLine(VCardLine(QStringLiteral("ANNIVERSARY"), createDateTime(dt))); + card.addLine(VCardLine(QStringLiteral("ANNIVERSARY"), createDateTime(dt, version))); } } else { VCardLine line(identifier, value); @@ -1000,7 +991,7 @@ type |= mPhoneTypeMap[(*it).toUpper()]; foundType = true; } - phone.setType( foundType ? type : PhoneNumber::Undefined); + phone.setType(foundType ? type : PhoneNumber::Undefined); addr.insertPhoneNumber(phone); } @@ -1037,12 +1028,7 @@ ResourceLocatorUrl resourceLocatorUrl; resourceLocatorUrl.setUrl(url); resourceLocatorUrl.setParameters((*lineIt).parameterMap()); - - if (addr.url().url().isEmpty()) { - addr.setUrl(resourceLocatorUrl); - } else { - addr.insertExtraUrl(resourceLocatorUrl); - } + addr.insertExtraUrl(resourceLocatorUrl); } // SOURCE else if (identifier == QLatin1String("source")) { @@ -1061,6 +1047,7 @@ addr.insertRelationShip(related); } // X- + //TODO import X-GENDER else if (identifier.startsWith(QLatin1String("x-"))) { QString ident = (*lineIt).identifier(); //X-Evolution @@ -1173,25 +1160,41 @@ return dateTime; } -QString VCardTool::createDateTime(const QDateTime &dateTime) const +QString VCardTool::createDateTime(const QDateTime &dateTime, VCard::Version version) const { QString str; + if (version == VCard::v4_0) { + if (dateTime.date().isValid()) { + str.sprintf("%4d%02d%02d", dateTime.date().year(), dateTime.date().month(), + dateTime.date().day()); + if (dateTime.time().isValid()) { + QString tmp; + tmp.sprintf("T%02d%02d%02d", dateTime.time().hour(), dateTime.time().minute(), + dateTime.time().second()); + str += tmp; + + if (dateTime.timeSpec() == Qt::UTC) { + str += QLatin1Char('Z'); + } + } + } - if (dateTime.date().isValid()) { - str.sprintf("%4d-%02d-%02d", dateTime.date().year(), dateTime.date().month(), - dateTime.date().day()); - if (dateTime.time().isValid()) { - QString tmp; - tmp.sprintf("T%02d:%02d:%02d", dateTime.time().hour(), dateTime.time().minute(), - dateTime.time().second()); - str += tmp; + } else { + if (dateTime.date().isValid()) { + str.sprintf("%4d-%02d-%02d", dateTime.date().year(), dateTime.date().month(), + dateTime.date().day()); + if (dateTime.time().isValid()) { + QString tmp; + tmp.sprintf("T%02d:%02d:%02d", dateTime.time().hour(), dateTime.time().minute(), + dateTime.time().second()); + str += tmp; - if (dateTime.timeSpec() == Qt::UTC) { - str += QLatin1Char('Z'); + if (dateTime.timeSpec() == Qt::UTC) { + str += QLatin1Char('Z'); + } } } } - return str; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcontacts-15.12.3/src/vcardtool.h new/kcontacts-16.04.1/src/vcardtool.h --- old/kcontacts-15.12.3/src/vcardtool.h 2015-12-24 16:30:34.000000000 +0100 +++ new/kcontacts-16.04.1/src/vcardtool.h 2016-04-26 22:16:55.000000000 +0200 @@ -58,7 +58,6 @@ */ Addressee::List parseVCards(const QByteArray &vcard) const; - private: QByteArray createVCards(const Addressee::List &list, @@ -71,7 +70,7 @@ QStringList splitString(QChar sep, const QString &value) const; QDateTime parseDateTime(const QString &str) const; - QString createDateTime(const QDateTime &dateTime) const; + QString createDateTime(const QDateTime &dateTime, VCard::Version version) const; Picture parsePicture(const VCardLine &line) const; VCardLine createPicture(const QString &identifier, const Picture &pic, VCard::Version version) const;
