Projects
Kolab:16
libkolab
Log In
Username
Password
We truncated the diff of some files because they were too big. If you want to see the full diff for every file,
click here
.
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 20
View file
libkolab.spec
Changed
@@ -31,7 +31,7 @@ Name: libkolab %endif -Version: 2.0 +Version: 3.0.0 Release: 0.1.dev20150112.gitf0f953aa%{?dist} Summary: Kolab Object Handling Library
View file
debian.changelog
Changed
@@ -1,3 +1,9 @@ +libkolab (3.0~dev20151230-0~kolab16) unstable; urgency=low + + * New 3.0 release + + -- Christian Mollekopf <mollekopf@kolabsys.com> Wed, 03 Mar 2021 09:09:09 +0100 + libkolab (2.0~dev20151230-0~kolab16) unstable; urgency=low * Bump release
View file
debian.control
Changed
@@ -6,15 +6,16 @@ Build-Depends: cmake, debhelper, + libcurl4-gnutls-dev, libboost-dev, - libboost-program-options-dev, libboost-thread-dev, libboost-system-dev, - libcalendaring-dev (>= 4.9.1), - libcurl4-gnutls-dev, libkolabxml-dev (>= 1.0), libossp-uuid-dev, - libqt4-dev, + qtbase5-dev, + libkf5coreaddons-dev, + libkf5calendarcore-dev, + libkf5mime-dev, libxerces-c-dev, php-cgi | php5-cli, php-dev | php5-dev, @@ -30,7 +31,7 @@ Standards-Version: 3.9.3 Homepage: http://git.kolab.org/libkolab -Package: libkolab2 +Package: libkolab3 Architecture: any Depends: ${misc:Depends}, ${shlibs:Depends}, libkolabxml1v5 (>= 1.0) Conflicts: libkolab0 @@ -53,10 +54,9 @@ Package: php-kolab Architecture: any -Depends: libkolab2 (>= ${binary:Version}), +Depends: libkolab3 (>= ${binary:Version}), php-kolabformat, ucf, - libcalendaring (>= 4.9.1), ${php:Depends}, ${misc:Depends}, ${shlibs:Depends} @@ -72,7 +72,7 @@ Package: python-kolab Architecture: any Section: python -Depends: libkolab2 (= ${binary:Version}), +Depends: libkolab3 (= ${binary:Version}), python, ${misc:Depends}, ${shlibs:Depends} @@ -87,8 +87,7 @@ Package: libkolab-dev Section: libdevel Architecture: any -Depends: libkolab2 (= ${binary:Version}), - libcalendaring-dev (>= 4.9.1), +Depends: libkolab3 (= ${binary:Version}), ${misc:Depends} Conflicts: libkolab-kde-dev Description: Development package for Kolab library
View file
debian.rules
Changed
@@ -28,7 +28,7 @@ echo "" >> debian/control ; \ echo "Package: plesk-php$${shver}-kolab" >> debian/control ; \ echo "Architecture: amd64" >> debian/control ; \ - echo "Depends: libkolab2, plesk-php$${shver}" >> debian/control ; \ + echo "Depends: libkolab3, plesk-php$${shver}" >> debian/control ; \ echo "Provides: php-bindings-libkolab" >> debian/control ; \ echo "Description: Kolab library bindings for Plesk PHP $${version}" >> debian/control ; \ echo "" >> debian/control ; \ @@ -78,8 +78,8 @@ fi ; \ dh_auto_configure --builddirectory php-$${version} -- \ -DLIB_INSTALL_DIR=/usr/lib \ + -DBoost_NO_BOOST_CMAKE=TRUE \ -DSWIG=/usr/bin/swig \ - -DUSE_LIBCALENDARING=ON \ -DPHP_BINDINGS=ON \ -DPHP_INCLUDE_DIR=$$(/opt/plesk/php/$${version}/bin/php-config --include-dir) \ -DPHP_CONFIG_EXECUTABLE=/opt/plesk/php/$${version}/bin/php-config \ @@ -97,13 +97,13 @@ dh_auto_configure -- \ -DLIB_INSTALL_DIR=/usr/lib \ + -DBoost_NO_BOOST_CMAKE=TRUE \ -DPHP_BINDINGS=ON \ -DPHP_INSTALL_DIR=$(PHPEXT) \ -DPHP_EXECUTABLE=$(PHPBIN) \ -DPHP_INCLUDE_DIR=$(PHPINC) \ -DPYTHON_BINDINGS=ON \ - -DPYTHON_INSTALL_DIR=$(PYTHON_SITEARCH) \ - -DUSE_LIBCALENDARING=ON + -DPYTHON_INSTALL_DIR=$(PYTHON_SITEARCH) override_dh_install: # Install the PHP modules manually, because they depend on PHP the API version,
View file
debian.tar.gz/libkolab-kde-dev.install
Deleted
@@ -1,3 +0,0 @@ -usr/lib/libkolab-kde.so -usr/lib/cmake/Libkolab/*.cmake -usr/include/kolab/*.h
View file
debian.tar.gz/libkolab-kde2.install
Deleted
@@ -1,2 +0,0 @@ -usr/lib/libkolab-kde.so.0 -usr/lib/libkolab-kde.so.0.*
View file
debian.tar.gz/libkolab-kde2.lintian-overrides
Deleted
@@ -1,9 +0,0 @@ -# hardening-check --verbose libkolab-dev.so.0 reports -# Fortify Source functions: no, only unprotected functions found! -# unprotected: memmove -# unprotected: memcpy -# Neither memmove nor memcpy occur in the source code, -# so overriding this warning -libkolab-kde0 binary: hardening-no-fortify-functions -# Using shlibs for now -libkolab-kde0 binary: no-symbols-control-file
View file
debian.tar.gz/libkolab-kde2.shlibs
Deleted
@@ -1,1 +0,0 @@ -libkolab-kde 2 libkolab-kde2 (>= 2.0)
View file
debian.tar.gz/libkolab2.install
Deleted
@@ -1,2 +0,0 @@ -usr/lib/libkolab.so.2 -usr/lib/libkolab.so.2.*
View file
debian.tar.gz/libkolab2.lintian-overrides
Deleted
@@ -1,9 +0,0 @@ -# hardening-check --verbose libkolab.so.0 reports -# Fortify Source functions: no, only unprotected functions found! -# unprotected: memmove -# unprotected: memcpy -# Neither memmove nor memcpy occur in the source code, -# so overriding this warning -libkolab2 binary: hardening-no-fortify-functions -# Using shlibs for now -libkolab2 binary: no-symbols-control-file
View file
debian.tar.gz/libkolab2.shlibs
Deleted
@@ -1,1 +0,0 @@ -libkolab 2 libkolab2 (>= 2)
View file
debian.tar.gz/libkolab3.install
Added
@@ -0,0 +1,2 @@ +usr/lib/libkolab.so.3 +usr/lib/libkolab.so.3.*
View file
debian.tar.gz/libkolab3.lintian-overrides
Added
@@ -0,0 +1,9 @@ +# hardening-check --verbose libkolab.so.0 reports +# Fortify Source functions: no, only unprotected functions found! +# unprotected: memmove +# unprotected: memcpy +# Neither memmove nor memcpy occur in the source code, +# so overriding this warning +libkolab3 binary: hardening-no-fortify-functions +# Using shlibs for now +libkolab3 binary: no-symbols-control-file
View file
debian.tar.gz/libkolab3.shlibs
Added
@@ -0,0 +1,1 @@ +libkolab 3 libkolab3 (>= 3)
View file
libkolab-2.0.tar.gz/conversion/kabcconversion.cpp
Deleted
@@ -1,894 +0,0 @@ -/* - * Copyright (C) 2011 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "kabcconversion.h" - -#include "commonconversion.h" -#include <kdebug.h> -#include <qbuffer.h> -#include <qimagereader.h> -#include "kolabformat/errorhandler.h" - - - -namespace Kolab { - namespace Conversion { - - //The following was copied from kdepim/libkleo/kleo/enum.h,.cpp - enum CryptoMessageFormat { - InlineOpenPGPFormat = 1, - OpenPGPMIMEFormat = 2, - SMIMEFormat = 4, - SMIMEOpaqueFormat = 8, - AnyOpenPGP = InlineOpenPGPFormat|OpenPGPMIMEFormat, - AnySMIME = SMIMEOpaqueFormat|SMIMEFormat, - AutoFormat = AnyOpenPGP|AnySMIME - }; - - enum EncryptionPreference { - UnknownPreference = 0, - NeverEncrypt = 1, - AlwaysEncrypt = 2, - AlwaysEncryptIfPossible = 3, - AlwaysAskForEncryption = 4, - AskWheneverPossible = 5, - MaxEncryptionPreference = AskWheneverPossible - }; - - enum SigningPreference { - UnknownSigningPreference = 0, - NeverSign = 1, - AlwaysSign = 2, - AlwaysSignIfPossible = 3, - AlwaysAskForSigning = 4, - AskSigningWheneverPossible = 5, - MaxSigningPreference = AskSigningWheneverPossible - }; - - static const struct { - CryptoMessageFormat format; - const char * displayName; - const char * configName; - } cryptoMessageFormats[] = { - { InlineOpenPGPFormat, - ("Inline OpenPGP (deprecated)"), - "inline openpgp" }, - { OpenPGPMIMEFormat, - ("OpenPGP/MIME"), - "openpgp/mime" }, - { SMIMEFormat, - ("S/MIME"), - "s/mime" }, - { SMIMEOpaqueFormat, - ("S/MIME Opaque"), - "s/mime opaque" }, - }; - static const unsigned int numCryptoMessageFormats - = sizeof cryptoMessageFormats / sizeof *cryptoMessageFormats ; - - const char * cryptoMessageFormatToString( CryptoMessageFormat f ) { - if ( f == AutoFormat ) - return "auto"; - for ( unsigned int i = 0 ; i < numCryptoMessageFormats ; ++i ) - if ( f == cryptoMessageFormats[i].format ) - return cryptoMessageFormats[i].configName; - return 0; - } - - QStringList cryptoMessageFormatsToStringList( unsigned int f ) { - QStringList result; - for ( unsigned int i = 0 ; i < numCryptoMessageFormats ; ++i ) - if ( f & cryptoMessageFormats[i].format ) - result.push_back( cryptoMessageFormats[i].configName ); - return result; - } - - - CryptoMessageFormat stringToCryptoMessageFormat( const QString & s ) { - const QString t = s.toLower(); - for ( unsigned int i = 0 ; i < numCryptoMessageFormats ; ++i ) - if ( t == cryptoMessageFormats[i].configName ) - return cryptoMessageFormats[i].format; - return AutoFormat; - } - - unsigned int stringListToCryptoMessageFormats( const QStringList & sl ) { - unsigned int result = 0; - for ( QStringList::const_iterator it = sl.begin() ; it != sl.end() ; ++it ) - result |= stringToCryptoMessageFormat( *it ); - return result; - } - - // For the config values used below, see also kaddressbook/editors/cryptowidget.cpp - - const char* encryptionPreferenceToString( EncryptionPreference pref ) - { - switch( pref ) { - case UnknownPreference: - return 0; - case NeverEncrypt: - return "never"; - case AlwaysEncrypt: - return "always"; - case AlwaysEncryptIfPossible: - return "alwaysIfPossible"; - case AlwaysAskForEncryption: - return "askAlways"; - case AskWheneverPossible: - return "askWhenPossible"; - } - return 0; // keep the compiler happy - } - - EncryptionPreference stringToEncryptionPreference( const QString& str ) - { - if ( str == "never" ) - return NeverEncrypt; - if ( str == "always" ) - return AlwaysEncrypt; - if ( str == "alwaysIfPossible" ) - return AlwaysEncryptIfPossible; - if ( str == "askAlways" ) - return AlwaysAskForEncryption; - if ( str == "askWhenPossible" ) - return AskWheneverPossible; - return UnknownPreference; - } - - const char* signingPreferenceToString( SigningPreference pref ) - { - switch( pref ) { - case UnknownSigningPreference: - return 0; - case NeverSign: - return "never"; - case AlwaysSign: - return "always"; - case AlwaysSignIfPossible: - return "alwaysIfPossible"; - case AlwaysAskForSigning: - return "askAlways"; - case AskSigningWheneverPossible: - return "askWhenPossible"; - } - return 0; // keep the compiler happy - } - - SigningPreference stringToSigningPreference( const QString& str ) - { - if ( str == "never" ) - return NeverSign; - if ( str == "always" ) - return AlwaysSign; - if ( str == "alwaysIfPossible" ) - return AlwaysSignIfPossible; - if ( str == "askAlways" ) - return AlwaysAskForSigning; - if ( str == "askWhenPossible" ) - return AskSigningWheneverPossible; - return UnknownSigningPreference; - } - - - -int fromAddressType(int kabcType, bool &pref) -{ - int type = 0; - if (kabcType & KABC::Address::Dom) { - Warning() << "domestic address is not supported"; - } - if (kabcType & KABC::Address::Intl) { - Warning() << "international address is not supported"; - } - if (kabcType & KABC::Address::Pref) { - pref = true; - }
View file
libkolab-2.0.tar.gz/conversion/kabcconversion.h
Deleted
@@ -1,43 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef KOLABKABCCONVERSION_H -#define KOLABKABCCONVERSION_H - -#include "kolab_export.h" - -#include <kolabcontact.h> -#include <kabc/addressee.h> -#include <kabc/contactgroup.h> - -namespace Kolab { - /** - * Conversion of Kolab-Containers to/from KABC Containers. - * - */ - namespace Conversion { - - KOLAB_EXPORT KABC::Addressee toKABC(const Kolab::Contact &); - KOLAB_EXPORT Kolab::Contact fromKABC(const KABC::Addressee &); - - KOLAB_EXPORT KABC::ContactGroup toKABC(const Kolab::DistList &); - KOLAB_EXPORT Kolab::DistList fromKABC(const KABC::ContactGroup &); - - }; -}; - -#endif
View file
libkolab-2.0.tar.gz/conversion/kolabconversion.cpp
Deleted
@@ -1,120 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - - -#include "kolabconversion.h" -#include "commonconversion.h" -#include <akonadi/notes/noteutils.h> - -namespace Kolab { - namespace Conversion { - -Note fromNote(const KMime::Message::Ptr &m) -{ - Akonadi::NoteUtils::NoteMessageWrapper note(m); - Note n; - n.setSummary(toStdString(note.title())); - n.setDescription(toStdString(note.text())); - KDateTime created = note.creationDate(); - created.setTimeSpec(KDateTime::UTC); - n.setCreated(fromDate(created)); - -// #if KDEPIMLIBS_VERSION >= 0x040840 -#ifdef KDEPIMLIBS_VERSION_DEVEL - n.setUid(toStdString(note.uid())); - KDateTime lastModified = note.lastModifiedDate(); - lastModified.setTimeSpec(KDateTime::UTC); - n.setLastModified(fromDate(lastModified)); - - switch (note.classification()) { - case Akonadi::NoteUtils::NoteMessageWrapper::Confidential: - n.setClassification(Kolab::ClassConfidential); - break; - case Akonadi::NoteUtils::NoteMessageWrapper::Private: - n.setClassification(Kolab::ClassPrivate); - break; - default: - n.setClassification(Kolab::ClassPublic); - } - - std::vector<Kolab::CustomProperty> customs; - QMap<QString, QString> &customsMap = note.custom(); - for (QMap <QString, QString >::const_iterator it = customsMap.constBegin(); it != customsMap.constEnd(); it ++) { - customs.push_back(Kolab::CustomProperty(toStdString(it.key()), toStdString(it.value()))); - } - n.setCustomProperties(customs); - - std::vector<Kolab::Attachment> attachments; - foreach(const Akonadi::NoteUtils::Attachment &a, note.attachments()) { - Kolab::Attachment attachment; - if (a.url().isValid()) { - attachment.setUri(toStdString(a.url().toString()), toStdString(a.mimetype())); - } else { - attachment.setData(toStdString(QString(a.data())), toStdString(a.mimetype())); - } - attachment.setLabel(toStdString(a.label())); - attachments.push_back(attachment); - } - n.setAttachments(attachments); - -#endif - return n; -} - -KMime::Message::Ptr toNote(const Note &n) -{ - Akonadi::NoteUtils::NoteMessageWrapper note; - note.setTitle(fromStdString(n.summary())); - note.setText(fromStdString(n.description())); - note.setFrom("kolab@kde4"); - note.setCreationDate(toDate(n.created())); -#ifdef KDEPIMLIBS_VERSION_DEVEL - note.setUid(fromStdString(n.uid())); - note.setLastModifiedDate(toDate(n.lastModified())); - switch (n.classification()) { - case Kolab::ClassPrivate: - note.setClassification(Akonadi::NoteUtils::NoteMessageWrapper::Private); - break; - case Kolab::ClassConfidential: - note.setClassification(Akonadi::NoteUtils::NoteMessageWrapper::Confidential); - break; - default: - note.setClassification(Akonadi::NoteUtils::NoteMessageWrapper::Public); - } - - foreach (const Kolab::Attachment &a, n.attachments()) { - if (!a.uri().empty()) { - Akonadi::NoteUtils::Attachment attachment(QUrl(fromStdString(a.uri())), fromStdString(a.mimetype())); - attachment.setLabel(fromStdString(a.label())); - note.attachments().append(attachment); - } else { - Akonadi::NoteUtils::Attachment attachment(fromStdString(a.data()).toLatin1(), fromStdString(a.mimetype())); - attachment.setLabel(fromStdString(a.label())); - note.attachments().append(attachment); - } - } - foreach (const Kolab::CustomProperty &a, n.customProperties()) { - note.custom().insert(fromStdString(a.identifier), fromStdString(a.value)); - } -#endif - return note.message(); -} - - - } -} -
View file
libkolab-2.0.tar.gz/conversion/kolabconversion.h
Deleted
@@ -1,39 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef KOLABCONVERSION_H -#define KOLABCONVERSION_H - -#include "kolab_export.h" - -#include <kolabnote.h> -#include <kmime/kmime_message.h> - -namespace Kolab { - /** - * Conversion of Kolab-Containers to/from KDE Containers. - * - */ - namespace Conversion { - - KOLAB_EXPORT KMime::Message::Ptr toNote(const Kolab::Note &); - KOLAB_EXPORT Kolab::Note fromNote(const KMime::Message::Ptr &); - - }; -}; - -#endif
View file
libkolab-2.0.tar.gz/freebusy
Deleted
-(directory)
View file
libkolab-2.0.tar.gz/freebusy/CMakeLists.txt
Deleted
@@ -1,3 +0,0 @@ -set (FREEBUSY_SRCS - ${CMAKE_CURRENT_SOURCE_DIR}/freebusy.cpp - PARENT_SCOPE)
View file
libkolab-2.0.tar.gz/freebusy/freebusy.cpp
Deleted
@@ -1,321 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - - -#include "freebusy.h" -#include "conversion/kcalconversion.h" -#include "conversion/commonconversion.h" -#include "libkolab-version.h" -#include <kcalcore/freebusy.h> -#include <kcalcore/icalformat.h> -#include <kdebug.h> -#include <quuid.h> - - -// namespace KCalCore { -// struct KCalFreebusy -// { -// -// void init( const Event::List &eventList, const KDateTime &start, const KDateTime &end ) -// { -// mDtStart = start.toUtc(); -// mDtEnd = end.toUtc(); -// -// // Loops through every event in the calendar -// Event::List::ConstIterator it; -// for ( it = eventList.constBegin(); it != eventList.constEnd(); ++it ) { -// Event::Ptr event = *it; -// -// // If this event is transparent it shouldn't be in the freebusy list. -// if ( event->transparency() == Event::Transparent ) { -// continue; -// } -// -// if ( event->hasRecurrenceId() ) { -// continue; //TODO apply special period exception (duration could be different) -// } -// -// const KDateTime eventStart = event->dtStart().toUtc(); -// const KDateTime eventEnd = event->dtEnd().toUtc(); -// -// if ( event->recurs() ) { -// const KCalCore::Duration duration( eventStart, eventEnd ); -// const KCalCore::DateTimeList list = event->recurrence()->timesInInterval(start, end); -// foreach (const KDateTime &dt, list) { -// const KDateTime utc = dt.toUtc(); -// addLocalPeriod(utc, duration.end(utc) ); -// } -// } else { -// addLocalPeriod( eventStart, eventEnd ); -// } -// } -// -// // q->sortList(); -// } -// -// bool addLocalPeriod( -// const KDateTime &eventStart, -// const KDateTime &eventEnd ) -// { -// KDateTime tmpStart; -// KDateTime tmpEnd; -// -// //Check to see if the start *or* end of the event is -// //between the start and end of the freebusy dates. -// if ( !( ( ( mDtStart.secsTo( eventStart ) >= 0 ) && -// ( eventStart.secsTo( mDtEnd ) >= 0 ) ) || -// ( ( mDtStart.secsTo( eventEnd ) >= 0 ) && -// ( eventEnd.secsTo( mDtEnd ) >= 0 ) ) ) ) { -// qDebug() << "out of scope"; -// return false; -// } -// -// // qDebug() << eventStart.date().toString() << eventStart.time().toString() << mDtStart.toString(); -// if ( eventStart < mDtStart ) { //eventStart is before start -// // qDebug() << "use start"; -// tmpStart = mDtStart; -// } else { -// tmpStart = eventStart; -// } -// -// qDebug() << eventEnd.date().toString() << eventEnd.time().toString() << mDtEnd.toString(); -// if ( eventEnd > mDtEnd ) { //event end is after dtEnd -// // qDebug() << "use end"; -// tmpEnd = mDtEnd; -// } else { -// tmpEnd = eventEnd; -// } -// -// // qDebug() << "########## " << tmpStart.isValid(); -// Q_ASSERT(tmpStart.isValid()); -// Q_ASSERT(tmpEnd.isValid()); -// // qDebug() << tmpStart.date().toString() << tmpStart.time().toString() << tmpStart.toString(); -// -// FreeBusyPeriod p( tmpStart, tmpEnd ); -// mBusyPeriods.append( p ); -// -// return true; -// } -// -// KDateTime mDtStart; -// KDateTime mDtEnd; // end datetime -// FreeBusyPeriod::List mBusyPeriods; // list of periods -// -// }; -// -// } // Namespace - - - - - - - -namespace Kolab { - namespace FreebusyUtils { - -static QString createUuid() -{ - const QString uuid = QUuid::createUuid().toString(); - return uuid.mid(1, uuid.size()-2); -} - -Kolab::Period addLocalPeriod( const KDateTime &eventStart, const KDateTime &eventEnd, const KDateTime &mDtStart, const KDateTime &mDtEnd) -{ - KDateTime tmpStart; - KDateTime tmpEnd; - - //Check to see if the start *or* end of the event is - //between the start and end of the freebusy dates. - if ( !( ( ( mDtStart <= eventStart) && - ( eventStart <= mDtEnd ) ) || - ( ( mDtStart <= eventEnd ) && - ( eventEnd <= mDtEnd ) ) ) ) { - qDebug() << "event is not within the fb range, skipping"; - return Kolab::Period(); - } - - if ( eventStart < mDtStart ) { //eventStart is before start - tmpStart = mDtStart; - } else { - tmpStart = eventStart; - } - -// qDebug() << eventEnd.date().toString() << eventEnd.time().toString() << mDtEnd.toString(); - if ( eventEnd > mDtEnd ) { //event end is after dtEnd - tmpEnd = mDtEnd; - } else { - tmpEnd = eventEnd; - } - Q_ASSERT(tmpStart.isValid()); - Q_ASSERT(tmpEnd.isValid()); - if (tmpStart.isDateOnly()) { - tmpStart.setTime(QTime(0,0,0,0)); - } - if (tmpEnd.isDateOnly()) { - tmpEnd.setTime(QTime(23,59,59,999)); //The window is inclusive - } - return Kolab::Period(Kolab::Conversion::fromDate(tmpStart), Kolab::Conversion::fromDate(tmpEnd)); -} - -Freebusy generateFreeBusy(const std::vector< Event >& events, const cDateTime& startDate, const cDateTime& endDate) -{ - QList<KCalCore::Event::Ptr> list; - foreach (const Kolab::Event &e, events) { - list.append(Kolab::Conversion::toKCalCore(e)); - } - KCalCore::Person::Ptr person(new KCalCore::Person("dummyname", "dummyemail")); - return generateFreeBusy(list, Kolab::Conversion::toDate(startDate), Kolab::Conversion::toDate(endDate), person); -} - -Freebusy generateFreeBusy(const QList<KCalCore::Event::Ptr>& events, const KDateTime& startDate, const KDateTime& endDate, const KCalCore::Person::Ptr &organizer) -{ - /* - * TODO the conversion of date-only values to date-time is only necessary because xCal doesn't allow date only. iCalendar doesn't seem to make this restriction so it looks like a bug. - */ - KDateTime start = startDate.toUtc(); - if (start.isDateOnly()) { - start.setTime(QTime(0,0,0,0)); - } - KDateTime end = endDate.toUtc(); - if (end.isDateOnly()) { - end.addDays(1); - end.setTime(QTime(0,0,0,0)); //The window is inclusive - } -
View file
libkolab-2.0.tar.gz/freebusy/freebusy.h
Deleted
@@ -1,39 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - - -#ifndef FREEBUSY_H -#define FREEBUSY_H - -#include "kolab_export.h" -#include <kolabevent.h> -#include <kolabfreebusy.h> -#include <kcalcore/event.h> - -namespace Kolab { - namespace FreebusyUtils { - -KOLAB_EXPORT Freebusy generateFreeBusy(const QList<KCalCore::Event::Ptr>& events, const KDateTime& startDate, const KDateTime& endDate, const KCalCore::Person::Ptr &organizer); -KOLAB_EXPORT std::string toIFB(const Kolab::Freebusy &); - -Kolab::Freebusy generateFreeBusy(const std::vector<Kolab::Event> &events, const Kolab::cDateTime &startDate, const Kolab::cDateTime &endDate); -KOLAB_EXPORT Kolab::Freebusy aggregateFreeBusy(const std::vector<Kolab::Freebusy> &fbs, const std::string &organizerEmail, const std::string &organizerName, bool simple = true); - - } -} - -#endif // FREEBUSY_H
View file
libkolab-2.0.tar.gz/icalendar
Deleted
-(directory)
View file
libkolab-2.0.tar.gz/icalendar/CMakeLists.txt
Deleted
@@ -1,15 +0,0 @@ - -set (ICALENDAR_SRCS - ${CMAKE_CURRENT_SOURCE_DIR}/icalendar.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/imip.cpp - PARENT_SCOPE) - -if(PYTHON_BINDINGS) - message("building python bindings") - add_subdirectory(python) -endif(PYTHON_BINDINGS) - -if(PHP_BINDINGS) - message("building php bindings") - add_subdirectory(php) -endif(PHP_BINDINGS)
View file
libkolab-2.0.tar.gz/icalendar/icalendar.cpp
Deleted
@@ -1,197 +0,0 @@ -/* - <one line to give the library's name and an idea of what it does.> - Copyright (C) 2012 Christian Mollekopf <chrigi_1@fastmail.fm> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ - - -#include "icalendar.h" -#include "imip.h" -#include "libkolab-version.h" -#include <conversion/kcalconversion.h> -#include <conversion/commonconversion.h> -#include <mime/mimeutils.h> -#include <kcalcore/event.h> -#include <kcalcore/memorycalendar.h> -#include <kcalcore/icalformat.h> -#include <kmime/kmime_message.h> -// #include <klocalizedstring.h> -#include <kdebug.h> -#include <iostream> - -namespace Kolab { - -std::string toICal(const std::vector<Event> &events) -{ - KCalCore::Calendar::Ptr calendar(new KCalCore::MemoryCalendar(Kolab::Conversion::getTimeSpec(true, std::string()))); - foreach (const Event &event, events) { - KCalCore::Event::Ptr kcalEvent = Conversion::toKCalCore(event); - if (!kcalEvent->created().isValid()) { - kcalEvent->setCreated(KDateTime::currentUtcDateTime()); //sets dtstamp - } - calendar->addEvent(kcalEvent); - foreach(const Event &exception, event.exceptions()) { - KCalCore::Event::Ptr kcalException = Conversion::toKCalCore(exception); - if (!kcalException->created().isValid()) { - kcalException->setCreated(KDateTime::currentUtcDateTime()); //sets dtstamp - } - calendar->addEvent(kcalException); - } - } - KCalCore::ICalFormat format; - format.setApplication("libkolab", LIBKOLAB_LIB_VERSION_STRING); -// qDebug() << format.createScheduleMessage(calendar->events().first(), KCalCore::iTIPRequest); - return Conversion::toStdString(format.toString(calendar)); - -} - -std::vector< Event > fromICalEvents(const std::string &input) -{ - KCalCore::Calendar::Ptr calendar(new KCalCore::MemoryCalendar(Kolab::Conversion::getTimeSpec(true, std::string()))); - KCalCore::ICalFormat format; - format.setApplication("libkolab", LIBKOLAB_LIB_VERSION_STRING); - format.fromString(calendar, Conversion::fromStdString(input)); - std::vector<Event> events; - QMap< QString, int > uidMap; - foreach (const KCalCore::Event::Ptr &event, calendar->events()) { - Event e = Conversion::fromKCalCore(*event); - if (!e.recurrenceID().isValid()) { - if (uidMap.contains(event->uid())) { - e.setExceptions(events.at(uidMap[event->uid()]).exceptions()); - events[uidMap[event->uid()]] = e; - } else { - events.push_back(e); - uidMap.insert(event->uid(), events.size()-1); - } - } else { - if (!uidMap.contains(event->uid())) { - Event e; - e.setUid(""); - events.push_back(e); - uidMap.insert(event->uid(), events.size()-1); - } - std::vector<Event> exceptions = events.at( uidMap[event->uid()]).exceptions(); - exceptions.push_back(e); - events.at(uidMap[event->uid()]).setExceptions(exceptions); - } - } - return events; -} - -ITipHandler::ITipHandler() -: mMethod(iTIPNoMethod) -{ -} - - -ITipHandler::ITipMethod mapFromKCalCore(KCalCore::iTIPMethod method) -{ - Q_ASSERT((int)KCalCore::iTIPPublish == (int)ITipHandler::iTIPPublish); - Q_ASSERT((int)KCalCore::iTIPNoMethod == (int)ITipHandler::iTIPNoMethod); - return static_cast<ITipHandler::ITipMethod>(method); -} - -KCalCore::iTIPMethod mapToKCalCore(ITipHandler::ITipMethod method) -{ - Q_ASSERT((int)KCalCore::iTIPPublish == (int)ITipHandler::iTIPPublish); - Q_ASSERT((int)KCalCore::iTIPNoMethod == (int)ITipHandler::iTIPNoMethod); - return static_cast<KCalCore::iTIPMethod>(method); -} - - -std::string ITipHandler::toITip(const Event &event, ITipHandler::ITipMethod method) const -{ - KCalCore::ICalFormat format; - format.setApplication("libkolab", LIBKOLAB_LIB_VERSION_STRING); - KCalCore::iTIPMethod m = mapToKCalCore(method); - if (m == KCalCore::iTIPNoMethod) { - return std::string(); - } -// kDebug() << event.start(). -/* TODO - * DTSTAMP is created - * CREATED is current timestamp - * LASTMODIFIED is lastModified - * - * Double check if that is correct. - * - * I think DTSTAMP should be the current timestamp, and CREATED should be the creation date. - */ - KCalCore::Event::Ptr e = Conversion::toKCalCore(event); - return Conversion::toStdString(format.createScheduleMessage(e, m)); -} - - -std::vector< Event > ITipHandler::fromITip(const std::string &string) -{ - KCalCore::Calendar::Ptr calendar(new KCalCore::MemoryCalendar(KDateTime::Spec(KDateTime::UTC))); - KCalCore::ICalFormat format; - KCalCore::ScheduleMessage::Ptr msg= format.parseScheduleMessage(calendar, Conversion::fromStdString(string)); - KCalCore::Event::Ptr event = msg->event().dynamicCast<KCalCore::Event>(); - std::vector< Event > events; - events.push_back(Conversion::fromKCalCore(*event)); - mMethod = mapFromKCalCore(msg->method()); - return events; -} - -ITipHandler::ITipMethod ITipHandler::method() const -{ - return mMethod; -} - -std::string ITipHandler::toIMip(const Event &event , ITipHandler::ITipMethod m, std::string from, bool bccMe) const -{ - KCalCore::Event::Ptr e = Conversion::toKCalCore(event); -// e->recurrence()->addRDateTime(e->dtStart()); //FIXME The createScheduleMessage converts everything to utc without a recurrence. - KCalCore::ICalFormat format; - format.setApplication("libkolab", LIBKOLAB_LIB_VERSION_STRING); - KCalCore::iTIPMethod method = mapToKCalCore(m); - const QString &messageText = format.createScheduleMessage( e, method ); - //This code is mostly from MailScheduler::performTransaction - if ( method == KCalCore::iTIPRequest || - method == KCalCore::iTIPCancel || - method == KCalCore::iTIPAdd || - method == KCalCore::iTIPDeclineCounter ) { - return Conversion::toStdString(QString(mailAttendees(e, bccMe, messageText))); - } else { - QString subject; - if ( e && method == KCalCore::iTIPCounter ) { - subject = QString( "Counter proposal: %1" ).arg(e->summary()); - } - return Conversion::toStdString(QString(mailOrganizer( e, Conversion::fromStdString(from), bccMe, messageText, subject))); - } - return std::string(); -} - -std::vector< Event > ITipHandler::fromIMip(const std::string &input) -{ - KMime::Message::Ptr msg = KMime::Message::Ptr(new KMime::Message); - msg->setContent( Conversion::fromStdString(input).toUtf8() ); - msg->parse(); - msg->content(KMime::ContentIndex()); - - KMime::Content *c = Kolab::Mime::findContentByType(msg, "text/calendar"); - if (!c) { - qWarning() << "could not find text/calendar part"; - return std::vector< Event >(); - } - return fromITip(Conversion::toStdString(QString(c->decodedContent()))); -} - - - - -}
View file
libkolab-2.0.tar.gz/icalendar/icalendar.h
Deleted
@@ -1,80 +0,0 @@ -/* - <one line to give the library's name and an idea of what it does.> - Copyright (C) 2012 Christian Mollekopf <chrigi_1@fastmail.fm> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ - - -#ifndef ICALENDAR_H -#define ICALENDAR_H - -#ifndef SWIG -#include "kolab_export.h" -#else -/* No export/import SWIG interface files */ -#define KOLAB_EXPORT -#endif - -#include <kolabevent.h> - -namespace Kolab { - - /** - * Takes a list of events and writes them to an iCal object. - * - */ - KOLAB_EXPORT std::string toICal(const std::vector<Kolab::Event> &); - /** - * Takes an iCal object and returns the contained events. - */ - KOLAB_EXPORT std::vector<Kolab::Event> fromICalEvents(const std::string &); - - class KOLAB_EXPORT ITipHandler { - public: - ITipHandler(); - enum ITipMethod { - iTIPPublish, /**< Event, to-do, journal or freebusy posting */ - iTIPRequest, /**< Event, to-do or freebusy scheduling request */ - iTIPReply, /**< Event, to-do or freebusy reply to request */ - iTIPAdd, /**< Event, to-do or journal additional property request */ - iTIPCancel, /**< Event, to-do or journal cancellation notice */ - iTIPRefresh, /**< Event or to-do description update request */ - iTIPCounter, /**< Event or to-do submit counter proposal */ - iTIPDeclineCounter,/**< Event or to-do decline a counter proposal */ - iTIPNoMethod /**< No method */ - }; - - std::string toIMip(const Kolab::Event &, ITipMethod, std::string from, bool bbcMe = false) const; - std::vector<Kolab::Event> fromIMip(const std::string &); - - /** - * Create iTip message from single event - */ - std::string toITip(const Kolab::Event &, ITipMethod) const; - - /** - * Parse iTip message with a single event - */ - std::vector<Kolab::Event> fromITip(const std::string &); - ITipMethod method() const; - private: - ITipMethod mMethod; - }; - - -} - -#endif // ICALENDAR_H
View file
libkolab-2.0.tar.gz/icalendar/icalendar.i
Deleted
@@ -1,13 +0,0 @@ -%{ - /* This macro ensures that return vectors remain a vector also in python and are not converted to tuples */ - #define SWIG_PYTHON_EXTRA_NATIVE_CONTAINERS - - #include "icalendar.h" -%} - -%include "std_string.i" - -%import(module="kolabformat") <kolabevent.h> -%import "../shared.i" - -%include "icalendar.h" \ No newline at end of file
View file
libkolab-2.0.tar.gz/icalendar/imip.cpp
Deleted
@@ -1,239 +0,0 @@ -/* - <one line to give the library's name and an idea of what it does.> - Copyright (C) 2012 Christian Mollekopf <chrigi_1@fastmail.fm> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ - - -#include "imip.h" - -#include <kcalutils/incidenceformatter.h> -#include <kpimutils/email.h> -#include <kmime/kmime_message.h> -#include <QDebug> -// #include <klocalizedstring.h> -#include <ksystemtimezone.h> -#include <kdebug.h> - -/* - * The code in here is copy paste work from kdepim/calendarsupport. - * - * We need to refactor the code there and move the relevant parts to kdepimlibs to make it reusable. - * - * - */ - -//From MailClient::send -KMime::Message::Ptr createMessage( const QString &from, const QString &_to, - const QString &cc, const QString &subject, - const QString &body, bool hidden, bool bccMe, - const QString &attachment/*, const QString &mailTransport */) -{ - Q_UNUSED( hidden ); - - const bool outlookConformInvitation = false; - QString userAgent = "libkolab"; - - // We must have a recipients list for most MUAs. Thus, if the 'to' list - // is empty simply use the 'from' address as the recipient. - QString to = _to; - if ( to.isEmpty() ) { - to = from; - } - kDebug() << "\nFrom:" << from - << "\nTo:" << to - << "\nCC:" << cc - << "\nSubject:" << subject << "\nBody: \n" << body - << "\nAttachment:\n" << attachment - /*<< "\nmailTransport: " << mailTransport*/; - - // Now build the message we like to send. The message KMime::Message::Ptr instance - // will be the root message that has 2 additional message. The body itself and - // the attached cal.ics calendar file. - KMime::Message::Ptr message = KMime::Message::Ptr( new KMime::Message ); - message->contentTransferEncoding()->clear(); // 7Bit, decoded. - - // Set the headers - message->userAgent()->fromUnicodeString(userAgent, "utf-8" ); - message->from()->fromUnicodeString( from, "utf-8" ); - message->to()->fromUnicodeString( to, "utf-8" ); - message->cc()->fromUnicodeString( cc, "utf-8" ); - if( bccMe ) { - message->bcc()->fromUnicodeString( from, "utf-8" ); //from==me, right? - } - message->date()->setDateTime( KDateTime::currentLocalDateTime() ); - message->subject()->fromUnicodeString( subject, "utf-8" ); - - if ( outlookConformInvitation ) { - message->contentType()->setMimeType( "text/calendar" ); - message->contentType()->setCharset( "utf-8" ); - message->contentType()->setName( QLatin1String( "cal.ics" ), "utf-8" ); - message->contentType()->setParameter( QLatin1String( "method" ), QLatin1String( "request" ) ); - - if ( !attachment.isEmpty() ) { - KMime::Headers::ContentDisposition *disposition = - new KMime::Headers::ContentDisposition( message.get() ); - disposition->setDisposition( KMime::Headers::CDinline ); - message->setHeader( disposition ); - message->contentTransferEncoding()->setEncoding( KMime::Headers::CEquPr ); - message->setBody( KMime::CRLFtoLF( attachment.toUtf8() ) ); - } - } else { - // We need to set following 4 lines by hand else KMime::Content::addContent - // will create a new Content instance for us to attach the main message - // what we don't need cause we already have the main message instance where - // 2 additional messages are attached. - KMime::Headers::ContentType *ct = message->contentType(); - ct->setMimeType( "multipart/mixed" ); - ct->setBoundary( KMime::multiPartBoundary() ); - ct->setCategory( KMime::Headers::CCcontainer ); - - // Set the first multipart, the body message. - KMime::Content *bodyMessage = new KMime::Content; - KMime::Headers::ContentDisposition *bodyDisposition = - new KMime::Headers::ContentDisposition( bodyMessage ); - bodyDisposition->setDisposition( KMime::Headers::CDinline ); - bodyMessage->contentType()->setMimeType( "text/plain" ); - bodyMessage->contentType()->setCharset( "utf-8" ); - bodyMessage->contentTransferEncoding()->setEncoding( KMime::Headers::CEquPr ); - bodyMessage->setBody( KMime::CRLFtoLF( body.toUtf8() ) ); - message->addContent( bodyMessage ); - - // Set the sedcond multipart, the attachment. - if ( !attachment.isEmpty() ) { - KMime::Content *attachMessage = new KMime::Content; - KMime::Headers::ContentDisposition *attachDisposition = - new KMime::Headers::ContentDisposition( attachMessage ); - attachDisposition->setDisposition( KMime::Headers::CDattachment ); - attachMessage->contentType()->setMimeType( "text/calendar" ); - attachMessage->contentType()->setCharset( "utf-8" ); - attachMessage->contentType()->setName( QLatin1String( "cal.ics" ), "utf-8" ); - attachMessage->contentType()->setParameter( QLatin1String( "method" ), - QLatin1String( "request" ) ); - attachMessage->setHeader( attachDisposition ); - attachMessage->contentTransferEncoding()->setEncoding( KMime::Headers::CEquPr ); - attachMessage->setBody( KMime::CRLFtoLF( attachment.toUtf8() ) ); - message->addContent( attachMessage ); - } - } - - // Job done, attach the both multiparts and assemble the message. - message->assemble(); - return message; -} - -//From MailClient::mailAttendees -QByteArray mailAttendees( const KCalCore::IncidenceBase::Ptr &incidence, -// const KPIMIdentities::Identity &identity, - bool bccMe, const QString &attachment - /*const QString &mailTransport */) -{ - KCalCore::Attendee::List attendees = incidence->attendees(); - if ( attendees.isEmpty() ) { - kWarning() << "There are no attendees to e-mail"; - return QByteArray(); - } - - const QString from = incidence->organizer()->fullName(); - const QString organizerEmail = incidence->organizer()->email(); - - QStringList toList; - QStringList ccList; - const int numberOfAttendees( attendees.count() ); - for ( int i=0; i<numberOfAttendees; ++i ) { - KCalCore::Attendee::Ptr a = attendees.at(i); - - const QString email = a->email(); - if ( email.isEmpty() ) { - continue; - } - - // In case we (as one of our identities) are the organizer we are sending - // this mail. We could also have added ourselves as an attendee, in which - // case we don't want to send ourselves a notification mail. - if ( organizerEmail == email ) { - continue; - } - - // Build a nice address for this attendee including the CN. - QString tname, temail; - const QString username = KPIMUtils::quoteNameIfNecessary( a->name() ); - // ignore the return value from extractEmailAddressAndName() because - // it will always be false since tusername does not contain "@domain". - KPIMUtils::extractEmailAddressAndName( username, temail/*byref*/, tname/*byref*/ ); - tname += QLatin1String( " <" ) + email + QLatin1Char( '>' ); - - // Optional Participants and Non-Participants are copied on the email - if ( a->role() == KCalCore::Attendee::OptParticipant || - a->role() == KCalCore::Attendee::NonParticipant ) { - ccList << tname; - } else { - toList << tname; - } - } - if( toList.isEmpty() && ccList.isEmpty() ) { - // Not really to be called a groupware meeting, eh - kWarning() << "There are really no attendees to e-mail"; - return QByteArray(); - } - QString to; - if ( !toList.isEmpty() ) { - to = toList.join( QLatin1String( ", " ) ); - } - QString cc; - if ( !ccList.isEmpty() ) { - cc = ccList.join( QLatin1String( ", " ) ); - }
View file
libkolab-2.0.tar.gz/icalendar/imip.h
Deleted
@@ -1,34 +0,0 @@ -/* - <one line to give the library's name and an idea of what it does.> - Copyright (C) 2012 Christian Mollekopf <chrigi_1@fastmail.fm> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ - - -#ifndef IMIP_H -#define IMIP_H -#include <QByteArray> -#include <kcalcore/incidencebase.h> - -QByteArray mailAttendees( const KCalCore::IncidenceBase::Ptr &incidence, - bool bccMe, const QString &attachment ); - -QByteArray mailOrganizer( const KCalCore::IncidenceBase::Ptr &incidence, - const QString &from, bool bccMe, - const QString &attachment, - const QString &sub ); - -#endif // IMIP_H
View file
libkolab-2.0.tar.gz/icalendar/php
Deleted
-(directory)
View file
libkolab-2.0.tar.gz/icalendar/php/CMakeLists.txt
Deleted
@@ -1,4 +0,0 @@ -#Generate PHP wrapper -include_directories(../) -include(SWIGUtils) -generatePHPBindings(kolabicalendar ../icalendar.i)
View file
libkolab-2.0.tar.gz/icalendar/python
Deleted
-(directory)
View file
libkolab-2.0.tar.gz/icalendar/python/CMakeLists.txt
Deleted
@@ -1,3 +0,0 @@ -include_directories(../) -include(SWIGUtils) -generatePythonBindings(icalendar ../icalendar.i)
View file
libkolab-2.0.tar.gz/kolabformat/kolabobject.cpp
Deleted
@@ -1,858 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - - -#include "kolabobject.h" -#include "v2helpers.h" -#include "kolabdefinitions.h" -#include "errorhandler.h" -#include "libkolab-version.h" - -#include <kolabbase.h> -#include <kolabformatV2/journal.h> -#include <kolabformatV2/task.h> -#include <kolabformatV2/event.h> -#include <kolabformatV2/contact.h> -#include <kolabformatV2/distributionlist.h> -#include <kolabformatV2/note.h> -#include <mime/mimeutils.h> -#include <conversion/kcalconversion.h> -#include <conversion/kabcconversion.h> -#include <conversion/kolabconversion.h> -#include <conversion/commonconversion.h> -#include <akonadi/notes/noteutils.h> -#include <kolabformat.h> - - -namespace Kolab { - - -static inline QString eventKolabType() { return QString::fromLatin1(KOLAB_TYPE_EVENT); }; -static inline QString todoKolabType() { return QString::fromLatin1(KOLAB_TYPE_TASK); }; -static inline QString journalKolabType() { return QString::fromLatin1(KOLAB_TYPE_JOURNAL); }; -static inline QString contactKolabType() { return QString::fromLatin1(KOLAB_TYPE_CONTACT); }; -static inline QString distlistKolabType() { return QString::fromLatin1(KOLAB_TYPE_DISTLIST); } -static inline QString distlistKolabTypeCompat() { return QString::fromLatin1(KOLAB_TYPE_DISTLIST_V2); } -static inline QString noteKolabType() { return QString::fromLatin1(KOLAB_TYPE_NOTE); } -static inline QString configurationKolabType() { return QString::fromLatin1(KOLAB_TYPE_CONFIGURATION); } -static inline QString dictKolabType() { return QString::fromLatin1(KOLAB_TYPE_DICT); } -static inline QString freebusyKolabType() { return QString::fromLatin1(KOLAB_TYPE_FREEBUSY); } -static inline QString relationKolabType() { return QString::fromLatin1(KOLAB_TYPE_RELATION); } - -static inline QString xCalMimeType() { return QString::fromLatin1(MIME_TYPE_XCAL); }; -static inline QString xCardMimeType() { return QString::fromLatin1(MIME_TYPE_XCARD); }; -static inline QString kolabMimeType() { return QString::fromLatin1(MIME_TYPE_KOLAB); }; - -KCalCore::Event::Ptr readV2EventXML(const QByteArray& xmlData, QStringList& attachments) -{ - return fromXML<KCalCore::Event::Ptr, KolabV2::Event>(xmlData, attachments); -} - -QString ownUrlDecode(QByteArray encodedParam) -{ - encodedParam.replace('+', ' '); - return QUrl::fromPercentEncoding(encodedParam); -} - -RelationMember parseMemberUrl(const QString &string) -{ - if (string.startsWith("urn:uuid:")) { - RelationMember member; - member.gid = string.mid(9); - return member; - } - QUrl url(QUrl::fromEncoded(string.toLatin1())); - QList<QByteArray> path; - Q_FOREACH(const QByteArray &fragment, url.encodedPath().split('/')) { - path.append(ownUrlDecode(fragment).toUtf8()); - } - // qDebug() << path; - bool isShared = false; - int start = path.indexOf("user"); - if (start < 0) { - start = path.indexOf("shared"); - isShared = true; - } - if (start < 0) { - Warning() << "Couldn't find \"user\" or \"shared\" in path: " << path; - return RelationMember(); - } - path = path.mid(start + 1); - if (path.size() < 2) { - Warning() << "Incomplete path: " << path; - return RelationMember(); - } - RelationMember member; - if (!isShared) { - member.user = path.takeFirst(); - } - member.uid = path.takeLast().toLong(); - member.mailbox = path; - member.messageId = ownUrlDecode(url.encodedQueryItemValue("message-id")); - member.subject = ownUrlDecode(url.encodedQueryItemValue("subject")); - member.date = ownUrlDecode(url.encodedQueryItemValue("date")); - // qDebug() << member.uid << member.mailbox; - return member; -} - -static QByteArray join(const QList<QByteArray> &list, const QByteArray &c) -{ - QByteArray result; - Q_FOREACH (const QByteArray &a, list) { - result += a + c; - } - result.chop(c.size()); - return result; -} - -QString generateMemberUrl(const RelationMember &member) -{ - if (!member.gid.isEmpty()) { - return QString("urn:uuid:%1").arg(member.gid); - } - QUrl url; - url.setScheme("imap"); - QList<QByteArray> path; - path << "/"; - if (!member.user.isEmpty()) { - path << "user"; - path << QUrl::toPercentEncoding(member.user.toLatin1()); - } else { - path << "shared"; - } - Q_FOREACH(const QByteArray &mb, member.mailbox) { - path << QUrl::toPercentEncoding(mb); - } - path << QByteArray::number(member.uid); - url.setEncodedPath("/" + join(path, "/")); - - QList<QPair<QByteArray, QByteArray> > queryItems; - queryItems.append(qMakePair(QString::fromLatin1("message-id").toLatin1(), QUrl::toPercentEncoding(member.messageId))); - queryItems.append(qMakePair(QString::fromLatin1("subject").toLatin1(), QUrl::toPercentEncoding(member.subject))); - queryItems.append(qMakePair(QString::fromLatin1("date").toLatin1(), QUrl::toPercentEncoding(member.date))); - url.setEncodedQueryItems(queryItems); - - return QString::fromLatin1(url.toEncoded()); -} - -//@cond PRIVATE -class KolabObjectReader::Private -{ -public: - Private() - : mObjectType( InvalidObject ), - mVersion( KolabV3 ), - mOverrideObjectType(InvalidObject), - mDoOverrideVersion(false) - { - mAddressee = KABC::Addressee(); - } - - ObjectType readKolabV2(const KMime::Message::Ptr &msg, Kolab::ObjectType objectType); - ObjectType readKolabV3(const KMime::Message::Ptr &msg, Kolab::ObjectType objectType); - - KCalCore::Incidence::Ptr mIncidence; - KABC::Addressee mAddressee; - KABC::ContactGroup mContactGroup; - KMime::Message::Ptr mNote; - QStringList mDictionary; - QString mDictionaryLanguage; - ObjectType mObjectType; - Version mVersion; - Kolab::Freebusy mFreebusy; - ObjectType mOverrideObjectType; - Version mOverrideVersion; - bool mDoOverrideVersion; - -#ifdef HAVE_RELATION_H - Akonadi::Relation mRelation; -#endif -#ifdef HAVE_TAG_H - Akonadi::Tag mTag; - QStringList mTagMembers; -#endif -}; -//@endcond - -KolabObjectReader::KolabObjectReader() -: d( new KolabObjectReader::Private ) -{ -} - -KolabObjectReader::KolabObjectReader(const KMime::Message::Ptr& msg) -: d( new KolabObjectReader::Private ) -{ - parseMimeMessage(msg);
View file
libkolab-2.0.tar.gz/kolabformat/kolabobject.h
Deleted
@@ -1,157 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef KOLABOBJECT_H -#define KOLABOBJECT_H - -#include <kolab_export.h> - -#include <libkolab_config.h> - -#ifdef HAVE_TAG_H -#include <akonadi/item.h> -#include <akonadi/tag.h> -#endif -#ifdef HAVE_RELATION_H -#include <akonadi/relation.h> -#endif -#include <kabc/addressee.h> -#include <kabc/contactgroup.h> -#include <kcalcore/incidence.h> -#include <kcalcore/event.h> -#include <kcalcore/journal.h> -#include <kcalcore/todo.h> -#include <kmime/kmime_message.h> - -#include "kolabdefinitions.h" - -namespace Kolab { - -class Freebusy; - - -KOLAB_EXPORT KCalCore::Event::Ptr readV2EventXML(const QByteArray &xmlData, QStringList &attachments); - -struct KOLAB_EXPORT RelationMember { - QString messageId; - QString subject; - QString date; - QList<QByteArray> mailbox; - QString user; - qint64 uid; - QString gid; -}; -KOLAB_EXPORT RelationMember parseMemberUrl(const QString &url); -KOLAB_EXPORT QString generateMemberUrl(const RelationMember &url); - -/** - * Class to read Kolab Mime files - * - * It implements the Kolab specifics of Mime message handling. - * This class is not reusable and only meant to read a single object. - * Parse the mime message and then call the correct getter, based on the type - * - */ -class KOLAB_EXPORT KolabObjectReader { -public: - KolabObjectReader(); - explicit KolabObjectReader(const KMime::Message::Ptr &msg); - ~KolabObjectReader(); - - ObjectType parseMimeMessage(const KMime::Message::Ptr &msg); - - /** - * Set to override the autodetected object type, before parsing the message. - */ - void setObjectType(ObjectType); - - /** - * Set to override the autodetected version, before parsing the message. - */ - void setVersion(Version); - - /** - * Returns the Object type of the parsed kolab object. - */ - ObjectType getType() const; - /** - * Returns the kolab-format version of the parsed kolab object. - */ - Version getVersion() const; - - /** - * Getter to get the retrieved object. - * Only the correct one will return a valid object. - * - * Use getType() to determine the correct one to call. - */ - KCalCore::Event::Ptr getEvent() const; - KCalCore::Todo::Ptr getTodo() const; - KCalCore::Journal::Ptr getJournal() const; - KCalCore::Incidence::Ptr getIncidence() const; - KABC::Addressee getContact() const; - KABC::ContactGroup getDistlist() const; - KMime::Message::Ptr getNote() const; - QStringList getDictionary(QString &lang) const; - Freebusy getFreebusy() const; -#ifdef HAVE_TAG_H - bool isTag() const; - Akonadi::Tag getTag() const; - QStringList getTagMembers() const; -#endif -#ifdef HAVE_RELATION_H - bool isRelation() const; - Akonadi::Relation getRelation() const; -#endif - -private: - //@cond PRIVATE - KolabObjectReader(const KolabObjectReader &other); - KolabObjectReader &operator=(const KolabObjectReader &rhs); - class Private; - Private *const d; - //@endcond -}; - -/** - * Class to write Kolab Mime files - * - */ -class KOLAB_EXPORT KolabObjectWriter { -public: - - static KMime::Message::Ptr writeEvent(const KCalCore::Event::Ptr &, Version v = KolabV3, const QString &productId = QString(), const QString &tz = QString()); - static KMime::Message::Ptr writeTodo(const KCalCore::Todo::Ptr &, Version v = KolabV3, const QString &productId = QString(),const QString &tz = QString()); - static KMime::Message::Ptr writeJournal(const KCalCore::Journal::Ptr &, Version v = KolabV3, const QString &productId = QString(),const QString &tz = QString()); - static KMime::Message::Ptr writeIncidence(const KCalCore::Incidence::Ptr &, Version v = KolabV3, const QString &productId = QString(),const QString &tz = QString()); - static KMime::Message::Ptr writeContact(const KABC::Addressee &, Version v = KolabV3, const QString &productId = QString()); - static KMime::Message::Ptr writeDistlist(const KABC::ContactGroup &, Version v = KolabV3, const QString &productId = QString()); - static KMime::Message::Ptr writeNote(const KMime::Message::Ptr &, Version v = KolabV3, const QString &productId = QString()); - static KMime::Message::Ptr writeDictionary(const QStringList &, const QString &lang, Version v = KolabV3, const QString &productId = QString()); - static KMime::Message::Ptr writeFreebusy(const Kolab::Freebusy &, Version v = KolabV3, const QString &productId = QString()); -#ifdef HAVE_TAG_H - static KMime::Message::Ptr writeTag(const Akonadi::Tag &, const QStringList &items, Version v = KolabV3, const QString &productId = QString()); -#endif -#ifdef HAVE_RELATION_H - static KMime::Message::Ptr writeRelation(const Akonadi::Relation &, const QStringList &items, Version v = KolabV3, const QString &productId = QString()); -#endif - -}; - -} //Namespace - -#endif // KOLABOBJECT_H
View file
libkolab-2.0.tar.gz/kolabformat/mimeobject.cpp
Deleted
@@ -1,162 +0,0 @@ -/* - * Copyright (C) 2012 Sofia Balicka <balicka@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "mimeobject.h" -#include "conversion/kcalconversion.h" -#include "conversion/kolabconversion.h" -#include "conversion/kabcconversion.h" -#include "kolabformat/kolabobject.h" -#include <QString> - -namespace Kolab -{ - -MIMEObject::MIMEObject() -{ - -} - -std::string MIMEObject::writeEvent(const Event &event, Version version, const std::string &productId) -{ - - KCalCore::Event::Ptr KEvent = Conversion::toKCalCore(event); - - KMime::Message::Ptr msg = KolabObjectWriter().writeEvent(KEvent, version, QString::fromStdString(productId)); - msg->assemble(); - - return msg->encodedContent().data(); -} - -Event MIMEObject::readEvent(const std::string &s) -{ - - KMime::Message::Ptr msg(new KMime::Message); - msg->setContent(QByteArray(s.c_str())); - msg->parse(); - - KCalCore::Event::Ptr event = KolabObjectReader(msg).getEvent(); - - return Conversion::fromKCalCore(*event); -} - -std::string MIMEObject::writeTodo(const Todo &todo, Version version, const std::string &productId){ - KCalCore::Todo::Ptr kTodo = Conversion::toKCalCore(todo); - - KMime::Message::Ptr msg = KolabObjectWriter().writeTodo(kTodo, version, QString::fromStdString(productId)); - msg->assemble(); - - return msg->encodedContent().data(); -} - - -Todo MIMEObject::readTodo(const std::string &s){ - - KMime::Message::Ptr msg(new KMime::Message); - msg->setContent(QByteArray(s.c_str())); - msg->parse(); - - KCalCore::Todo::Ptr todo = KolabObjectReader(msg).getTodo(); - - return Conversion::fromKCalCore(*todo); -} - - -std::string MIMEObject::writeJournal(const Journal &journal, Version version, const std::string &productId){ - KCalCore::Journal::Ptr kJournal = Conversion::toKCalCore(journal); - - KMime::Message::Ptr msg = KolabObjectWriter().writeJournal(kJournal, version, QString::fromStdString(productId)); - msg->assemble(); - - return msg->encodedContent().data(); -} - - -Journal MIMEObject::readJournal(const std::string &s){ - - KMime::Message::Ptr msg(new KMime::Message); - msg->setContent(QByteArray(s.c_str())); - msg->parse(); - - KCalCore::Journal::Ptr journal = KolabObjectReader(msg).getJournal(); - - return Conversion::fromKCalCore(*journal); -} - -std::string MIMEObject::writeNote(const Note ¬e, Version version, const std::string &productId){ - KMime::Message::Ptr kNote = Conversion::toNote(note); - - KMime::Message::Ptr msg = KolabObjectWriter().writeNote(kNote, version, QString::fromStdString(productId)); - msg->assemble(); - - return msg->encodedContent().data(); -} - - -Note MIMEObject::readNote(const std::string &s){ - - KMime::Message::Ptr msg(new KMime::Message); - msg->setContent(QByteArray(s.c_str())); - msg->parse(); - - KMime::Message::Ptr note = KolabObjectReader(msg).getNote(); - - return Conversion::fromNote(note); -} - -std::string MIMEObject::writeContact(const Contact &contact, Version version, const std::string &productId){ - KABC::Addressee kContact = Conversion::toKABC(contact); - - KMime::Message::Ptr msg = KolabObjectWriter().writeContact(kContact, version, QString::fromStdString(productId)); - msg->assemble(); - - return msg->encodedContent().data(); -} - - -Contact MIMEObject::readContact(const std::string &s){ - - KMime::Message::Ptr msg(new KMime::Message); - msg->setContent(QByteArray(s.c_str())); - msg->parse(); - - KABC::Addressee contact = KolabObjectReader(msg).getContact(); - - return Conversion::fromKABC(contact); -} - -std::string MIMEObject::writeDistlist(const DistList &distlist, Version version, const std::string &productId){ - KABC::ContactGroup kDistlist = Conversion::toKABC(distlist); - - KMime::Message::Ptr msg = KolabObjectWriter().writeDistlist(kDistlist, version, QString::fromStdString(productId)); - msg->assemble(); - - return msg->encodedContent().data(); -} - - -DistList MIMEObject::readDistlist(const std::string &s){ - - KMime::Message::Ptr msg(new KMime::Message); - msg->setContent(QByteArray(s.c_str())); - msg->parse(); - - KABC::ContactGroup distlist = KolabObjectReader(msg).getDistlist(); - - return Conversion::fromKABC(distlist); -} -} -
View file
libkolab-2.0.tar.gz/kolabformat/mimeobject.h
Deleted
@@ -1,60 +0,0 @@ -/* - * Copyright (C) 2012 Sofia Balicka <balicka@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef MIMEOBJECT_H -#define MIMEOBJECT_H - -#ifndef SWIG -#include "kolab_export.h" -#else -/* No export/import SWIG interface files */ -#define KOLAB_EXPORT -#endif - -#include <kolabformat.h> -#include "kolabdefinitions.h" - - -namespace Kolab -{ - -class KOLAB_EXPORT MIMEObject -{ -public: - MIMEObject(); - - std::string writeEvent(const Kolab::Event &event, Version version, const std::string &productId = std::string()); - Kolab::Event readEvent(const std::string &s); - - std::string writeTodo(const Kolab::Todo &todo, Version version, const std::string &productId = std::string()); - Kolab::Todo readTodo(const std::string &s); - - std::string writeJournal(const Kolab::Journal &journal, Version version, const std::string &productId = std::string()); - Kolab::Journal readJournal(const std::string &s); - - std::string writeNote(const Kolab::Note ¬e, Version version, const std::string &productId = std::string()); - Kolab::Note readNote(const std::string &s); - - std::string writeContact(const Kolab::Contact &contact, Version version, const std::string &productId = std::string()); - Kolab::Contact readContact(const std::string &s); - - std::string writeDistlist(const Kolab::DistList &distlist, Version version, const std::string &productId = std::string()); - Kolab::DistList readDistlist(const std::string &s); - -}; -} -#endif
View file
libkolab-2.0.tar.gz/kolabformat/v2helpers.cpp
Deleted
@@ -1,279 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "v2helpers.h" - -#include "kolabdefinitions.h" - -#include "kolabformatV2/kolabbase.h" -#include "kolabformatV2/journal.h" -#include "kolabformatV2/task.h" -#include "kolabformatV2/event.h" -#include "kolabformatV2/contact.h" -#include "kolabformatV2/distributionlist.h" -#include "kolabformatV2/note.h" -#include "mime/mimeutils.h" -#include "kolabformat/errorhandler.h" - -#include <kabc/contactgroup.h> - -#include <qdom.h> -#include <kdebug.h> -#include <qbuffer.h> -#include <akonadi/notes/noteutils.h> - -namespace Kolab { - -static QImage getPicture(const QString &pictureAttachmentName, const KMime::Message::Ptr &data, QByteArray &type) -{ - if (!data) { - Critical() << "empty message"; - return QImage(); - } - KMime::Content *imgContent = Mime::findContentByName(data, pictureAttachmentName/*"kolab-picture.png"*/, type); - if (!imgContent) { - Warning() << "could not find picture: " << pictureAttachmentName; - return QImage(); - } - QByteArray imgData = imgContent->decodedContent(); - QBuffer buffer(&imgData); - buffer.open(QIODevice::ReadOnly); - QImage image; - bool success = false; - if (type == "image/jpeg") { - success = image.load(&buffer, "JPEG"); - //FIXME I tried getting the code to interpret the picture as PNG, but the VCard implementation writes it as JPEG anyways... -// if (success) { -// QByteArray pic; -// QBuffer b(&pic); -// b.open(QIODevice::ReadWrite); -// Q_ASSERT(image.save(&b, "PNG")); -// b.close(); -// Debug() << pic.toBase64(); -// QBuffer b2(&pic); -// b2.open(QIODevice::ReadOnly); -// success = image.load(&b2, "PNG"); -// b2.close(); -// Q_ASSERT(success); -// } - } else { - type = "image/png"; - success = image.load(&buffer, "PNG"); - } - buffer.close(); - if (!success) { - Warning() << "failed to load picture"; - } - return image; -} - -KABC::Addressee addresseeFromKolab( const QByteArray &xmlData, const KMime::Message::Ptr &data) -{ - if (!data) { - Critical() << "empty message"; - return KABC::Addressee(); - } - KABC::Addressee addressee; -// Debug() << "xmlData " << xmlData; - KolabV2::Contact contact(QString::fromUtf8(xmlData)); - QByteArray type; - const QString &pictureAttachmentName = contact.pictureAttachmentName(); - if (!pictureAttachmentName.isEmpty()) { - const QImage &img = getPicture(pictureAttachmentName, data, type); - contact.setPicture(img, type); - } - - const QString &logoAttachmentName = contact.logoAttachmentName(); - if (!logoAttachmentName.isEmpty()) { - contact.setLogo(getPicture(logoAttachmentName, data, type), type); - } - - const QString &soundAttachmentName = contact.soundAttachmentName(); - if (!soundAttachmentName.isEmpty()) { - QByteArray type; - KMime::Content *content = Mime::findContentByName(data, soundAttachmentName/*"sound"*/, type); - if (content) { - const QByteArray &sData = content->decodedContent(); - contact.setSound(sData); - } else { - Warning() << "could not find sound: " << soundAttachmentName; - } - } - contact.saveTo(&addressee); - return addressee; -} - -KABC::Addressee addresseeFromKolab(const QByteArray &xmlData, QString &pictureAttachmentName, QString &logoAttachmentName, QString &soundAttachmentName) -{ - KABC::Addressee addressee; - KolabV2::Contact contact(QString::fromUtf8(xmlData)); - pictureAttachmentName = contact.pictureAttachmentName(); - logoAttachmentName = contact.logoAttachmentName(); - soundAttachmentName = contact.soundAttachmentName(); - contact.saveTo(&addressee); - return addressee; -} - -static QByteArray createPicture(const QImage &img, const QString &/*format*/, QString &type) -{ - QByteArray pic; - QBuffer buffer(&pic); - buffer.open(QIODevice::WriteOnly); - type = "image/png"; - //FIXME it's not possible to save jpegs lossless, so we always use png. otherwise we would compress the image on every write. -// if (format == "image/jpeg") { -// type = "image/jpeg"; -// img.save(&buffer, "JPEG"); -// } else { - img.save(&buffer, "PNG"); -// } - buffer.close(); - return pic; -} - -KMime::Message::Ptr contactToKolabFormat(const KolabV2::Contact& contact, const QString &productId) -{ - KMime::Message::Ptr message = Mime::createMessage( KOLAB_TYPE_CONTACT, false, productId ); - if (!message) { - Critical() << "empty message"; - return KMime::Message::Ptr(); - } - message->subject()->fromUnicodeString( contact.uid(), "utf-8" ); - message->from()->fromUnicodeString( contact.fullEmail(), "utf-8" ); - - KMime::Content* content = Mime::createMainPart( KOLAB_TYPE_CONTACT, contact.saveXML().toUtf8() ); - message->addContent( content ); - - if ( !contact.picture().isNull() ) { - QString type; - const QByteArray &pic = createPicture(contact.picture(), contact.pictureFormat(), type); - content = Mime::createAttachmentPart(QByteArray(), type, /*"kolab-picture.png"*/contact.pictureAttachmentName(), pic ); - message->addContent(content); - } - - if ( !contact.logo().isNull() ) { - QString type; - const QByteArray &pic = createPicture(contact.logo(), contact.logoFormat(), type); - content = Mime::createAttachmentPart(QByteArray(), type, /*"kolab-logo.png"*/contact.logoAttachmentName(), pic ); - message->addContent(content); - } - - if ( !contact.sound().isEmpty() ) { - content = Mime::createAttachmentPart(QByteArray(), "audio/unknown", /*"sound"*/contact.soundAttachmentName(), contact.sound() ); - message->addContent(content); - } - - message->assemble(); - return message; -} - -KABC::ContactGroup contactGroupFromKolab(const QByteArray &xmlData) -{ - KABC::ContactGroup contactGroup; - // kDebug() << "xmlData " << xmlData; - KolabV2::DistributionList distList(QString::fromUtf8(xmlData)); - distList.saveTo(&contactGroup); - return contactGroup; -} - -KMime::Message::Ptr distListToKolabFormat(const KolabV2::DistributionList& distList, const QString &productId) -{ - KMime::Message::Ptr message = Mime::createMessage( KOLAB_TYPE_DISTLIST_V2, false, productId ); - if (!message) { - Critical() << "empty message"; - return KMime::Message::Ptr(); - }
View file
libkolab-2.0.tar.gz/kolabformat/v2helpers.h
Deleted
@@ -1,96 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef V2HELPERS_H -#define V2HELPERS_H - -#include "kolabdefinitions.h" - -#include "kolabformatV2/kolabbase.h" -#include "kolabformatV2/journal.h" -#include "kolabformatV2/task.h" -#include "kolabformatV2/event.h" -#include "kolabformatV2/contact.h" -#include "kolabformatV2/distributionlist.h" -#include "kolabformatV2/note.h" -#include "mime/mimeutils.h" -#include "kolabformat/errorhandler.h" - -#include <kabc/contactgroup.h> - -#include <qdom.h> -#include <qbuffer.h> -#include <akonadi/notes/noteutils.h> - -namespace Kolab { - - -/* - * Parse XML, create KCalCore container and extract attachments - */ -template <typename KCalPtr, typename Container> -static KCalPtr fromXML(const QByteArray &xmlData, QStringList &attachments) -{ - const QDomDocument xmlDoc = KolabV2::KolabBase::loadDocument( QString::fromUtf8(xmlData) ); //TODO extract function from V2 format - if ( xmlDoc.isNull() ) { - Critical() << "Failed to read the xml document"; - return KCalPtr(); - } - const KCalPtr i = Container::fromXml( xmlDoc, QString() ); //For parsing we don't need the timezone, so we don't set one - Q_ASSERT ( i ); - QDomNodeList nodes = xmlDoc.elementsByTagName("inline-attachment"); - for (int i = 0; i < nodes.size(); i++ ) { - attachments.append(nodes.at(i).toElement().text()); - } - return i; -} - -template <typename IncidencePtr, typename Converter> -static inline IncidencePtr incidenceFromKolabImpl( const KMime::Message::Ptr &data, const QByteArray &mimetype, const QString &timezoneId ) -{ - KMime::Content *xmlContent = Mime::findContentByType( data, mimetype ); - if ( !xmlContent ) { - Critical() << "couldn't find part"; - return IncidencePtr(); - } - const QByteArray &xmlData = xmlContent->decodedContent(); - - QStringList attachments; - IncidencePtr ptr = fromXML<IncidencePtr, Converter>(xmlData, attachments); //TODO do we care about timezone? - Mime::getAttachments(ptr, attachments, data); - - return ptr; -} - -KABC::Addressee addresseeFromKolab( const QByteArray &xmlData, const KMime::Message::Ptr &data); -KABC::Addressee addresseeFromKolab( const QByteArray &xmlData, QString &pictureAttachmentName, QString &logoAttachmentName, QString &soundAttachmentName); - -KMime::Message::Ptr contactToKolabFormat(const KolabV2::Contact& contact, const QString &productId); - -KABC::ContactGroup contactGroupFromKolab(const QByteArray &xmlData); - -KMime::Message::Ptr distListToKolabFormat(const KolabV2::DistributionList& distList, const QString &productId); -KMime::Message::Ptr noteFromKolab(const QByteArray &xmlData, const KDateTime &creationDate); - -KMime::Message::Ptr noteToKolab(const KMime::Message::Ptr& msg, const QString &productId); -QByteArray noteToKolabXML(const KMime::Message::Ptr& msg); - -QStringList readLegacyDictionaryConfiguration(const QByteArray &xmlData, QString &language); - -} - -#endif
View file
libkolab-2.0.tar.gz/kolabformatV2
Deleted
-(directory)
View file
libkolab-2.0.tar.gz/kolabformatV2/CMakeLists.txt
Deleted
@@ -1,12 +0,0 @@ - -set( kolabformatv2_SRCS - ${CMAKE_CURRENT_SOURCE_DIR}/kolabbase.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/contact.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/distributionlist.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/event.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/task.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/journal.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/incidence.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/note.cpp -# kolabformatv2.cpp - PARENT_SCOPE)
View file
libkolab-2.0.tar.gz/kolabformatV2/contact.cpp
Deleted
@@ -1,1214 +0,0 @@ -/* - This file is part of libkabc and/or kaddressbook. - Copyright (c) 2004 Klarälvdalens Datakonsult AB - <info@klaralvdalens-datakonsult.se> - - 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. - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#include "contact.h" - -#include <kabc/addressee.h> -#include <kdebug.h> -#include <QFile> -#include <float.h> - -using namespace KolabV2; - -static const char* s_pictureAttachmentName = "kolab-picture.png"; -static const char* s_logoAttachmentName = "kolab-logo.png"; -static const char* s_soundAttachmentName = "sound"; -static const char* s_unhandledTagAppName = "KOLABUNHANDLED"; // no hyphens in appnames! - -// saving (addressee->xml) -Contact::Contact( const KABC::Addressee* addr ) - : mHasGeo( false ) -{ - setFields( addr ); -} - -// loading (xml->addressee) -Contact::Contact( const QString& xml ) - : mHasGeo( false ) -{ - load( xml ); -} - -Contact::~Contact() -{ -} - -void Contact::setGivenName( const QString& name ) -{ - mGivenName = name; -} - -QString Contact::givenName() const -{ - return mGivenName; -} - -void Contact::setMiddleNames( const QString& names ) -{ - mMiddleNames = names; -} - -QString Contact::middleNames() const -{ - return mMiddleNames; -} - -void Contact::setLastName( const QString& name ) -{ - mLastName = name; -} - -QString Contact::lastName() const -{ - return mLastName; -} - -void Contact::setFullName( const QString& name ) -{ - mFullName = name; -} - -QString Contact::fullName() const -{ - return mFullName; -} - -void Contact::setInitials( const QString& initials ) -{ - mInitials = initials; -} - -QString Contact::initials() const -{ - return mInitials; -} - -void Contact::setPrefix( const QString& prefix ) -{ - mPrefix = prefix; -} - -QString Contact::prefix() const -{ - return mPrefix; -} - -void Contact::setSuffix( const QString& suffix ) -{ - mSuffix = suffix; -} - -QString Contact::suffix() const -{ - return mSuffix; -} - -void Contact::setRole( const QString& role ) -{ - mRole = role; -} - -QString Contact::role() const -{ - return mRole; -} - -void Contact::setFreeBusyUrl( const QString& fbUrl ) -{ - mFreeBusyUrl = fbUrl; -} - -QString Contact::freeBusyUrl() const -{ - return mFreeBusyUrl; -} - -void Contact::setOrganization( const QString& organization ) -{ - mOrganization = organization; -} - -QString Contact::organization() const -{ - return mOrganization; -} - -void Contact::setWebPage( const QString& url ) -{ - mWebPage = url; -} - -QString Contact::webPage() const -{ - return mWebPage; -} - -void Contact::setIMAddress( const QString& imAddress ) -{ - mIMAddress = imAddress; -} - -QString Contact::imAddress() const -{ - return mIMAddress; -} - -void Contact::setDepartment( const QString& department ) -{ - mDepartment = department; -} - -QString Contact::department() const -{ - return mDepartment; -} - -void Contact::setOfficeLocation( const QString& location ) -{ - mOfficeLocation = location; -} -
View file
libkolab-2.0.tar.gz/kolabformatV2/contact.h
Deleted
@@ -1,278 +0,0 @@ -/* - This file is part of libkabc and/or kaddressbook. - Copyright (c) 2002 - 2004 Klarälvdalens Datakonsult AB - <info@klaralvdalens-datakonsult.se> - - 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. - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#ifndef KOLABV2CONTACT_H -#define KOLABV2CONTACT_H - -#include "kolabbase.h" -#include <qimage.h> - -namespace KABC { - class Addressee; - class Picture; - class Sound; -} - -namespace KolabV2 { - -class Contact : public KolabBase { -public: - struct PhoneNumber { - public: - QString type; - QString number; - }; - - struct Address { - public: - Address() : kdeAddressType( -1 ) - { - } - int kdeAddressType; // KABC::Address::Type - QString type; // kolab-compliant address type: home, work or other - QString street; - QString pobox; - QString locality; - QString region; - QString postalCode; - QString country; - }; - - explicit Contact( const KABC::Addressee* address ); - Contact( const QString& xml ); - ~Contact(); - - void saveTo( KABC::Addressee* address ); - - QString type() const { return "Contact"; } - - void setGivenName( const QString& name ); - QString givenName() const; - - void setMiddleNames( const QString& names ); - QString middleNames() const; - - void setLastName( const QString& name ); - QString lastName() const; - - void setFullName( const QString& name ); - QString fullName() const; - - void setInitials( const QString& initials ); - QString initials() const; - - void setPrefix( const QString& prefix ); - QString prefix() const; - - void setSuffix( const QString& suffix ); - QString suffix() const; - - void setRole( const QString& role ); - QString role() const; - - void setFreeBusyUrl( const QString& fbUrl ); - QString freeBusyUrl() const; - - void setOrganization( const QString& organization ); - QString organization() const; - - void setWebPage( const QString& url ); - QString webPage() const; - - void setIMAddress( const QString& imAddress ); - QString imAddress() const; - - void setDepartment( const QString& department ); - QString department() const; - - void setOfficeLocation( const QString& location ); - QString officeLocation() const; - - void setProfession( const QString& profession ); - QString profession() const; - - void setTitle( const QString& title ); - QString title() const; - - void setManagerName( const QString& name ); - QString managerName() const; - - void setAssistant( const QString& name ); - QString assistant() const; - - void setNickName( const QString& name ); - QString nickName() const; - - void setSpouseName( const QString& name ); - QString spouseName() const; - - void setBirthday( const QDate& date ); - QDate birthday() const; - - void setAnniversary( const QDate& date ); - QDate anniversary() const; - - void setPicture( const QImage& image, const QString &format) { mPicture = image; mPictureFormat = format; } - QString pictureAttachmentName() const { return mPictureAttachmentName; } - QString pictureFormat() const { return mPictureFormat; } - QImage picture() const { return mPicture; } - - void setLogo( const QImage& image, const QString &format ) { mLogo = image; mLogoFormat = format; } - QString logoAttachmentName() const { return mLogoAttachmentName; } - QString logoFormat() const { return mLogoFormat; } - QImage logo() const { return mLogo; } - - void setSound( const QByteArray& sound ) { mSound = sound; } - QString soundAttachmentName() const { return mSoundAttachmentName; } - QByteArray sound() const { return mSound; } - - void setChildren( const QString& children ); - QString children() const; - - void setGender( const QString& gender ); - QString gender() const; - - void setLanguage( const QString& language ); - QString language() const; - - void addPhoneNumber( const PhoneNumber& number ); - QList<PhoneNumber>& phoneNumbers(); - const QList<PhoneNumber>& phoneNumbers() const; - - void addEmail( const Email& email ); - QList<Email>& emails(); - const QList<Email>& emails() const; - - QString fullEmail() const; - - void addAddress( const Address& address ); - QList<Address>& addresses(); - const QList<Address>& addresses() const; - - // which address is preferred: home or business or other - void setPreferredAddress( const QString& address ); - QString preferredAddress() const; - - float latitude() const { return mLatitude; } - void setLatitude( float latitude ) { mLatitude = latitude; } - - float longitude() const { return mLongitude; } - void setLongitude( float longitude ) { mLongitude = longitude; } - - // Load the attributes of this class - bool loadAttribute( QDomElement& ); - - // Save the attributes of this class - bool saveAttributes( QDomElement& ) const; - - // Load this note by reading the XML file - bool loadXML( const QDomDocument& xml ); -
View file
libkolab-2.0.tar.gz/kolabformatV2/distributionlist.cpp
Deleted
@@ -1,231 +0,0 @@ -/* - This file is part of Akonadi KolabProxy. - Copyright (c) 2009 Kevin Krammer <kevin.krammer@gmx.at> - - 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. - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#include "distributionlist.h" - -#include <kabc/addressee.h> -#include <kabc/contactgroup.h> -#include <kdebug.h> - -using namespace KolabV2; - -static const char* s_unhandledTagAppName = "KOLABUNHANDLED"; // no hyphens in appnames! - -// saving (contactgroup->xml) -DistributionList::DistributionList( const KABC::ContactGroup* contactGroup ) -{ - setFields( contactGroup ); -} - -// loading (xml->contactgroup) -DistributionList::DistributionList( const QString& xml ) -{ - load( xml ); -} - -DistributionList::~DistributionList() -{ -} - -void DistributionList::setName( const QString& name ) -{ - mName = name; -} - -QString DistributionList::name() const -{ - return mName; -} - -void KolabV2::DistributionList::loadDistrListMember( const QDomElement& element ) -{ - Member member; - for ( QDomNode n = element.firstChild(); !n.isNull(); n = n.nextSibling() ) { - if ( n.isComment() ) - continue; - if ( n.isElement() ) { - QDomElement e = n.toElement(); - QString tagName = e.tagName(); - if ( tagName == "display-name" ) - member.displayName = e.text(); - else if ( tagName == "smtp-address" ) - member.email = e.text(); - else if ( tagName == "uid" ) - member.uid = e.text(); - } - } - mDistrListMembers.append( member ); -} - -void DistributionList::saveDistrListMembers( QDomElement& element ) const -{ - QList<Member>::ConstIterator it = mDistrListMembers.constBegin(); - for( ; it != mDistrListMembers.constEnd(); ++it ) { - QDomElement e = element.ownerDocument().createElement( "member" ); - element.appendChild( e ); - const Member& m = *it; - if (!m.uid.isEmpty()) { - writeString( e, "uid", m.uid ); - } else { - writeString( e, "display-name", m.displayName ); - writeString( e, "smtp-address", m.email ); - } - } -} - -bool DistributionList::loadAttribute( QDomElement& element ) -{ - const QString tagName = element.tagName(); - switch ( tagName[0].toLatin1() ) { - case 'd': - if ( tagName == "display-name" ) { - setName( element.text() ); - return true; - } - break; - case 'm': - if ( tagName == "member" ) { - loadDistrListMember( element ); - return true; - } - break; - default: - break; - } - return KolabBase::loadAttribute( element ); -} - -bool DistributionList::saveAttributes( QDomElement& element ) const -{ - // Save the base class elements - KolabBase::saveAttributes( element ); - writeString( element, "display-name", name() ); - saveDistrListMembers( element ); - - return true; -} - -bool DistributionList::loadXML( const QDomDocument& document ) -{ - QDomElement top = document.documentElement(); - - if ( top.tagName() != "distribution-list" ) { - qWarning( "XML error: Top tag was %s instead of the expected distribution-list", - top.tagName().toAscii().data() ); - return false; - } - - - for ( QDomNode n = top.firstChild(); !n.isNull(); n = n.nextSibling() ) { - if ( n.isComment() ) - continue; - if ( n.isElement() ) { - QDomElement e = n.toElement(); - if ( !loadAttribute( e ) ) { - // Unhandled tag - save for later storage - //kDebug() <<"Saving unhandled tag" << e.tagName(); - Custom c; - c.app = s_unhandledTagAppName; - c.name = e.tagName(); - c.value = e.text(); - mCustomList.append( c ); - } - } else - kDebug() <<"Node is not a comment or an element???"; - } - - return true; -} - -QString DistributionList::saveXML() const -{ - QDomDocument document = domTree(); - QDomElement element = document.createElement( "distribution-list" ); - element.setAttribute( "version", "1.0" ); - saveAttributes( element ); - document.appendChild( element ); - return document.toString(); -} - -QString DistributionList::productID() const -{ - // TODO should we get name/version from desktop file? - return QLatin1String( "Akonadi Kolab Proxy" ); -} - -// The saving is contactgroup -> DistributionList -> xml, this is the first part -void DistributionList::setFields( const KABC::ContactGroup* contactGroup ) -{ - KolabBase::setFields( contactGroup ); - - setName( contactGroup->name() ); - - // explicit contact data - for ( uint index = 0; index < contactGroup->dataCount(); ++index ) { - const KABC::ContactGroup::Data& data = contactGroup->data( index ); - - Member m; - m.displayName = data.name(); - m.email = data.email(); - - mDistrListMembers.append( m );
View file
libkolab-2.0.tar.gz/kolabformatV2/distributionlist.h
Deleted
@@ -1,97 +0,0 @@ -/* - This file is part of Akonadi KolabProxy - Copyright (c) 2009 <kevin.krammer@gmx.at> - - 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. - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#ifndef KOLABV2DISTRIBUTIONLIST_H -#define KOLABV2DISTRIBUTIONLIST_H - -#include "kolabbase.h" - -namespace KABC { - class ContactGroup; -} - -namespace KolabV2 { - -class DistributionList : public KolabBase { -public: - explicit DistributionList( const KABC::ContactGroup* contactGroup ); - DistributionList( const QString& xml ); - ~DistributionList(); - - void saveTo( KABC::ContactGroup* contactGroup ); - - QString type() const { return "DistributionList"; } - - void setName( const QString& name ); - QString name() const; - - // Load the attributes of this class - bool loadAttribute( QDomElement& ); - - // Save the attributes of this class - bool saveAttributes( QDomElement& ) const; - - // Load this note by reading the XML file - bool loadXML( const QDomDocument& xml ); - - // Serialize this note to an XML string - QString saveXML() const; - - QString productID() const; - -protected: - void setFields( const KABC::ContactGroup* ); - -private: - void loadDistrListMember( const QDomElement& element ); - void saveDistrListMembers( QDomElement& element ) const; - - QString mName; - - struct Custom { - QString app; - QString name; - QString value; - }; - QList<Custom> mCustomList; - - struct Member { - QString displayName; - QString email; - QString uid; - }; - QList<Member> mDistrListMembers; -}; - -} - -#endif // KOLABDISTRIBUTIONLIST_H -// kate: space-indent on; indent-width 2; replace-tabs on;
View file
libkolab-2.0.tar.gz/kolabformatV2/event.cpp
Deleted
@@ -1,221 +0,0 @@ -/* - This file is part of the kolab resource - the implementation of the - Kolab storage format. See www.kolab.org for documentation on this. - - Copyright (c) 2004 Bo Thorsen <bo@sonofthor.dk> - - 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. - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#include "event.h" - -#include <kcalcore/event.h> -#include <kdebug.h> - -using namespace KolabV2; - - -KCalCore::Event::Ptr Event::fromXml( const QDomDocument& xmlDoc, const QString& tz) -{ - Event event( tz ); - event.loadXML( xmlDoc ); - KCalCore::Event::Ptr kcalEvent( new KCalCore::Event() ); - event.saveTo( kcalEvent ); - return kcalEvent; -} - -QString Event::eventToXML( const KCalCore::Event::Ptr &kcalEvent, const QString& tz ) -{ - Event event( tz, kcalEvent ); - return event.saveXML(); -} - -Event::Event( const QString& tz, const KCalCore::Event::Ptr &event ) - : Incidence( tz, event ), - mShowTimeAs( KCalCore::Event::Opaque ), mHasEndDate( false ) -{ - if ( event ) { - setFields( event ); - } -} - -Event::~Event() -{ -} - -void Event::setTransparency( KCalCore::Event::Transparency transparency ) -{ - mShowTimeAs = transparency; -} - -KCalCore::Event::Transparency Event::transparency() const -{ - return mShowTimeAs; -} - -void Event::setEndDate( const KDateTime& date ) -{ - mEndDate = date; - mHasEndDate = true; - if ( mFloatingStatus == AllDay ) - kDebug() <<"ERROR: Time on end date but no time on the event"; - mFloatingStatus = HasTime; -} - -void Event::setEndDate( const QDate& date ) -{ - mEndDate = KDateTime( date ); - mHasEndDate = true; - if ( mFloatingStatus == HasTime ) - kDebug() <<"ERROR: No time on end date but time on the event"; - mFloatingStatus = AllDay; -} - -void Event::setEndDate( const QString& endDate ) -{ - if ( endDate.length() > 10 ) - // This is a date + time - setEndDate( stringToDateTime( endDate ) ); - else - // This is only a date - setEndDate( stringToDate( endDate ) ); -} - -KDateTime Event::endDate() const -{ - return mEndDate; -} - -bool Event::loadAttribute( QDomElement& element ) -{ - // This method doesn't handle the color-label tag yet - QString tagName = element.tagName(); - - if ( tagName == "show-time-as" ) { - // TODO: Support tentative and outofoffice - if ( element.text() == "free" ) - setTransparency( KCalCore::Event::Transparent ); - else - setTransparency( KCalCore::Event::Opaque ); - } else if ( tagName == "end-date" ) - setEndDate( element.text() ); - else - return Incidence::loadAttribute( element ); - - // We handled this - return true; -} - -bool Event::saveAttributes( QDomElement& element ) const -{ - // Save the base class elements - Incidence::saveAttributes( element ); - - // TODO: Support tentative and outofoffice - if ( transparency() == KCalCore::Event::Transparent ) - writeString( element, "show-time-as", "free" ); - else - writeString( element, "show-time-as", "busy" ); - if ( mHasEndDate ) { - if ( mFloatingStatus == HasTime ) - writeString( element, "end-date", dateTimeToString( endDate() ) ); - else - writeString( element, "end-date", dateToString( endDate().date() ) ); - } - - return true; -} - - -bool Event::loadXML( const QDomDocument& document ) -{ - QDomElement top = document.documentElement(); - - if ( top.tagName() != "event" ) { - qWarning( "XML error: Top tag was %s instead of the expected event", - top.tagName().toAscii().data() ); - return false; - } - - for ( QDomNode n = top.firstChild(); !n.isNull(); n = n.nextSibling() ) { - if ( n.isComment() ) - continue; - if ( n.isElement() ) { - QDomElement e = n.toElement(); - loadAttribute( e ); - } else - kDebug() <<"Node is not a comment or an element???"; - } - - return true; -} - -QString Event::saveXML() const -{ - QDomDocument document = domTree(); - QDomElement element = document.createElement( "event" ); - element.setAttribute( "version", "1.0" ); - saveAttributes( element ); - document.appendChild( element ); - return document.toString(); -} - -void Event::setFields( const KCalCore::Event::Ptr &event ) -{ - Incidence::setFields( event ); - - // note: if hasEndDate() is false and hasDuration() is true - // dtEnd() returns start+duration - if ( event->hasEndDate() || event->hasDuration() ) { - if ( event->allDay() ) { - // This is an all-day event. Don't timezone move this one - mFloatingStatus = AllDay; - setEndDate( event->dtEnd().date() ); - } else { - mFloatingStatus = HasTime;
View file
libkolab-2.0.tar.gz/kolabformatV2/event.h
Deleted
@@ -1,101 +0,0 @@ -/* - This file is part of the kolab resource - the implementation of the - Kolab storage format. See www.kolab.org for documentation on this. - - Copyright (c) 2004 Bo Thorsen <bo@sonofthor.dk> - - 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. - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#ifndef KOLABV2_EVENT_H -#define KOLABV2_EVENT_H - -#include "incidence.h" - -#include <kcalcore/event.h> - -class QDomElement; - - -namespace KolabV2 { - -/** - * This class represents an event, and knows how to load/save it - * from/to XML, and from/to a KCalCore::Event. - * The instances of this class are temporary, only used to convert - * one to the other. - */ -class Event : public Incidence { -public: - /// Use this to parse an xml string to a event entry - /// The caller is responsible for deleting the returned event - static KCalCore::Event::Ptr fromXml( const QDomDocument& xmlDoc, const QString& tz); - - /// Use this to get an xml string describing this event entry - static QString eventToXML( const KCalCore::Event::Ptr &, const QString& tz ); - - /// Create a event object and - explicit Event( const QString& tz, - const KCalCore::Event::Ptr &event = KCalCore::Event::Ptr() ); - virtual ~Event(); - - void saveTo( const KCalCore::Event::Ptr &event ); - - virtual QString type() const { return "Event"; } - - virtual void setTransparency( KCalCore::Event::Transparency transparency ); - virtual KCalCore::Event::Transparency transparency() const; - - virtual void setEndDate( const KDateTime& date ); - virtual void setEndDate( const QDate& date ); - virtual void setEndDate( const QString& date ); - virtual KDateTime endDate() const; - - // Load the attributes of this class - virtual bool loadAttribute( QDomElement& ); - - // Save the attributes of this class - virtual bool saveAttributes( QDomElement& ) const; - - // Load this event by reading the XML file - virtual bool loadXML( const QDomDocument& xml ); - - // Serialize this event to an XML string - virtual QString saveXML() const; - -protected: - // Read all known fields from this ical incidence - void setFields( const KCalCore::Event::Ptr & ); - - KCalCore::Event::Transparency mShowTimeAs; - KDateTime mEndDate; - bool mHasEndDate; -}; - -} - -#endif // KOLAB_EVENT_H
View file
libkolab-2.0.tar.gz/kolabformatV2/incidence.cpp
Deleted
@@ -1,1025 +0,0 @@ -/* - This file is part of the kolab resource - the implementation of the - Kolab storage format. See www.kolab.org for documentation on this. - - Copyright (c) 2004 Bo Thorsen <bo@sonofthor.dk> - - 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. - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#include "incidence.h" -#include "libkolab-version.h" - -#include <QList> - -#include <kcalcore/journal.h> -#include <kdebug.h> -#include <kurl.h> - -#include <QBitArray> -#include <string> -#include <boost/algorithm/string.hpp> - -using namespace KolabV2; - -Incidence::Incidence( const QString& tz, const KCalCore::Incidence::Ptr &incidence ) - : KolabBase( tz ), mFloatingStatus( Unset ), mHasAlarm( false ), mPriority( 0 ) -{ - Q_UNUSED( incidence ); -} - -Incidence::~Incidence() -{ -} - -void Incidence::setPriority( int priority ) -{ - mPriority = priority; -} - -int Incidence::priority() const -{ - return mPriority; -} - -void Incidence::setSummary( const QString& summary ) -{ - mSummary = summary; -} - -QString Incidence::summary() const -{ - return mSummary; -} - -void Incidence::setLocation( const QString& location ) -{ - mLocation = location; -} - -QString Incidence::location() const -{ - return mLocation; -} - -void Incidence::setOrganizer( const Email& organizer ) -{ - mOrganizer = organizer; -} - -KolabBase::Email Incidence::organizer() const -{ - return mOrganizer; -} - -void Incidence::setStartDate( const KDateTime& startDate ) -{ - mStartDate = startDate; - if ( mFloatingStatus == AllDay ) - kDebug() <<"ERROR: Time on start date but no time on the event"; - mFloatingStatus = HasTime; -} - -void Incidence::setStartDate( const QDate& startDate ) -{ - mStartDate = KDateTime( startDate ); - if ( mFloatingStatus == HasTime ) - kDebug() <<"ERROR: No time on start date but time on the event"; - mFloatingStatus = AllDay; -} - -void Incidence::setStartDate( const QString& startDate ) -{ - if ( startDate.length() > 10 ) - // This is a date + time - setStartDate( stringToDateTime( startDate ) ); - else - // This is only a date - setStartDate( stringToDate( startDate ) ); -} - -KDateTime Incidence::startDate() const -{ - return mStartDate; -} - -void Incidence::setAlarm( float alarm ) -{ - mAlarm = alarm; - mHasAlarm = true; -} - -float Incidence::alarm() const -{ - return mAlarm; -} - -Incidence::Recurrence Incidence::recurrence() const -{ - return mRecurrence; -} - -void Incidence::addAttendee( const Attendee& attendee ) -{ - mAttendees.append( attendee ); -} - -QList<Incidence::Attendee>& Incidence::attendees() -{ - return mAttendees; -} - -const QList<Incidence::Attendee>& Incidence::attendees() const -{ - return mAttendees; -} - -void Incidence::setInternalUID( const QString& iuid ) -{ - mInternalUID = iuid; -} - -QString Incidence::internalUID() const -{ - return mInternalUID; -} - -bool Incidence::loadAttendeeAttribute( QDomElement& element, - Attendee& attendee ) -{ - for ( QDomNode n = element.firstChild(); !n.isNull(); n = n.nextSibling() ) { - if ( n.isComment() ) - continue; - if ( n.isElement() ) { - QDomElement e = n.toElement(); - QString tagName = e.tagName(); - - if ( tagName == "display-name" ) - attendee.displayName = e.text(); - else if ( tagName == "smtp-address" ) - attendee.smtpAddress = e.text(); - else if ( tagName == "status" ) - attendee.status = e.text(); - else if ( tagName == "request-response" ) - // This sets reqResp to false, if the text is "false". Otherwise it - // sets it to true. This means the default setting is true. - attendee.requestResponse = ( e.text().toLower() != "false" ); - else if ( tagName == "invitation-sent" ) - // Like above, only this defaults to false - attendee.invitationSent = ( e.text().toLower() != "true" ); - else if ( tagName == "role" ) - attendee.role = e.text(); - else if ( tagName == "delegated-to" ) - attendee.delegate = e.text(); - else if ( tagName == "delegated-from" ) - attendee.delegator = e.text();
View file
libkolab-2.0.tar.gz/kolabformatV2/incidence.h
Deleted
@@ -1,172 +0,0 @@ -/* - This file is part of the kolab resource - the implementation of the - Kolab storage format. See www.kolab.org for documentation on this. - - Copyright (c) 2004 Bo Thorsen <bo@sonofthor.dk> - - 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. - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#ifndef KOLABV2_INCIDENCE_H -#define KOLABV2_INCIDENCE_H - -#include <kcalcore/incidence.h> - -#include "kolabbase.h" - -class QDomElement; - -namespace KolabV2 { - -/** - * This abstract class represents an incidence which has the shared - * fields, of events and tasks and knows how to load/save these - * from/to XML, and from/to a KCalCore::Incidence. - */ -class Incidence : public KolabBase { -public: - struct Recurrence { - QString cycle; - QString type; - int interval; - QStringList days; // list of days-of-the-week - QString dayNumber; - QString month; - QString rangeType; - QString range; // date or number or nothing - QList<QDate> exclusions; - }; - - struct Attendee : Email { - Attendee() : requestResponse( true ), invitationSent( false ) {} - QString status; - bool requestResponse; - bool invitationSent; - QString role; - QString delegate; - QString delegator; - }; - - explicit Incidence( const QString& tz, const KCalCore::Incidence::Ptr &incidence = KCalCore::Incidence::Ptr() ); - -public: - virtual ~Incidence(); - - void saveTo( const KCalCore::Incidence::Ptr &incidence ); - - virtual void setPriority( int priority ); - virtual int priority() const; - - virtual void setSummary( const QString& summary ); - virtual QString summary() const; - - virtual void setLocation( const QString& location ); - virtual QString location() const; - - virtual void setOrganizer( const Email& organizer ); - virtual Email organizer() const; - - virtual void setStartDate( const KDateTime& startDate ); - virtual void setStartDate( const QDate& startDate ); - virtual void setStartDate( const QString& startDate ); - virtual KDateTime startDate() const; - - virtual void setAlarm( float alarm ); - virtual float alarm() const; - - virtual void setRecurrence( KCalCore::Recurrence* recur ); - virtual Recurrence recurrence() const; - - virtual void addAttendee( const Attendee& attendee ); - QList<Attendee>& attendees(); - const QList<Attendee>& attendees() const; - - virtual QString type() const { return "Incidence"; } - /** - * The internal uid is used as the uid inside KOrganizer whenever - * two or more events with the same uid appear, which KOrganizer - * can't handle. To avoid keep that interal uid from changing all the - * time, it is persisted in the XML between a save and the next load. - */ - void setInternalUID( const QString& iuid ); - QString internalUID() const; - - // Load the attributes of this class - virtual bool loadAttribute( QDomElement& ); - - // Save the attributes of this class - virtual bool saveAttributes( QDomElement& ) const; - -protected: - enum FloatingStatus { Unset, AllDay, HasTime }; - - // Read all known fields from this ical incidence - void setFields( const KCalCore::Incidence::Ptr & ); - - bool loadAttendeeAttribute( QDomElement&, Attendee& ); - void saveAttendeeAttribute( QDomElement& element, - const Attendee& attendee ) const; - void saveAttendees( QDomElement& element ) const; - void saveAttachments( QDomElement& element ) const; - - void loadAlarms( const QDomElement& element ); - void saveAlarms( QDomElement& element ) const; - - void loadRecurrence( const QDomElement& element ); - void saveRecurrence( QDomElement& element ) const; - void saveCustomAttributes( QDomElement& element ) const; - void loadCustomAttributes( QDomElement& element ); - - QString productID() const; - - QString mSummary; - QString mLocation; - Email mOrganizer; - KDateTime mStartDate; - FloatingStatus mFloatingStatus; - float mAlarm; - bool mHasAlarm; - Recurrence mRecurrence; - QList<Attendee> mAttendees; - QList<KCalCore::Alarm::Ptr> mAlarms; - QList<KCalCore::Attachment::Ptr> mAttachments; - QString mInternalUID; - - struct Custom { - QByteArray key; - QString value; - }; - QList<Custom> mCustomList; - - // This is the KCal priority, not the Kolab priority. - // See kcalPriorityToKolab() and kolabPrioritytoKCal(). - int mPriority; -}; - -} - -#endif // KOLAB_INCIDENCE_H
View file
libkolab-2.0.tar.gz/kolabformatV2/journal.cpp
Deleted
@@ -1,184 +0,0 @@ -/* - This file is part of the kolab resource - the implementation of the - Kolab storage format. See www.kolab.org for documentation on this. - - Copyright (c) 2004 Bo Thorsen <bo@sonofthor.dk> - - 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. - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#include "journal.h" -#include "libkolab-version.h" - -#include <kdebug.h> - -using namespace KolabV2; - - -KCalCore::Journal::Ptr Journal::fromXml( const QDomDocument& xmlDoc, const QString& tz ) -{ - Journal journal( tz ); - journal.loadXML( xmlDoc ); - KCalCore::Journal::Ptr kcalJournal( new KCalCore::Journal() ); - journal.saveTo( kcalJournal ); - return kcalJournal; -} - -QString Journal::journalToXML( const KCalCore::Journal::Ptr &kcalJournal, const QString& tz ) -{ - Journal journal( tz, kcalJournal ); - return journal.saveXML(); -} - -Journal::Journal( const QString& tz, const KCalCore::Journal::Ptr &journal ) - : KolabBase( tz ) -{ - if ( journal ) { - setFields( journal ); - } -} - -Journal::~Journal() -{ -} - -void Journal::setSummary( const QString& summary ) -{ - mSummary = summary; -} - -QString Journal::summary() const -{ - return mSummary; -} - -void Journal::setStartDate( const KDateTime& startDate ) -{ - mStartDate = startDate; -} - -KDateTime Journal::startDate() const -{ - return mStartDate; -} - -void Journal::setEndDate( const KDateTime& endDate ) -{ - mEndDate = endDate; -} - -KDateTime Journal::endDate() const -{ - return mEndDate; -} - -bool Journal::loadAttribute( QDomElement& element ) -{ - QString tagName = element.tagName(); - - if ( tagName == "summary" ) - setSummary( element.text() ); - else if ( tagName == "start-date" ) - setStartDate( stringToDateTime( element.text() ) ); - else - // Not handled here - return KolabBase::loadAttribute( element ); - - // We handled this - return true; -} - -bool Journal::saveAttributes( QDomElement& element ) const -{ - // Save the base class elements - KolabBase::saveAttributes( element ); - - writeString( element, "summary", summary() ); - writeString( element, "start-date", dateTimeToString( startDate() ) ); - - return true; -} - - -bool Journal::loadXML( const QDomDocument& document ) -{ - QDomElement top = document.documentElement(); - - if ( top.tagName() != "journal" ) { - qWarning( "XML error: Top tag was %s instead of the expected Journal", - top.tagName().toAscii().data() ); - return false; - } - - for ( QDomNode n = top.firstChild(); !n.isNull(); n = n.nextSibling() ) { - if ( n.isComment() ) - continue; - if ( n.isElement() ) { - QDomElement e = n.toElement(); - if ( !loadAttribute( e ) ) { - // Unhandled tag - save for later storage - //qDebug( "Unhandled tag: %s", e.toCString().data() ); - } - } else - qDebug( "Node is not a comment or an element???" ); - } - - return true; -} - -QString Journal::saveXML() const -{ - QDomDocument document = domTree(); - QDomElement element = document.createElement( "journal" ); - element.setAttribute( "version", "1.0" ); - saveAttributes( element ); - document.appendChild( element ); - return document.toString(); -} - -void Journal::saveTo( const KCalCore::Journal::Ptr &journal ) -{ - KolabBase::saveTo( journal ); - - journal->setSummary( summary() ); - journal->setDtStart( utcToLocal( startDate() ) ); -} - -void Journal::setFields( const KCalCore::Journal::Ptr &journal ) -{ - // Set baseclass fields - KolabBase::setFields( journal ); - - // Set our own fields - setSummary( journal->summary() ); - setStartDate( localToUTC( journal->dtStart() ) ); -} - -QString Journal::productID() const -{ - return QString::fromLatin1(LIBKOLAB_LIB_VERSION_STRING) + ", Kolab resource"; -}
View file
libkolab-2.0.tar.gz/kolabformatV2/journal.h
Deleted
@@ -1,101 +0,0 @@ -/* - This file is part of the kolab resource - the implementation of the - Kolab storage format. See www.kolab.org for documentation on this. - - Copyright (c) 2004 Bo Thorsen <bo@sonofthor.dk> - - 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. - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#ifndef KOLABV2_JOURNAL_H -#define KOLABV2_JOURNAL_H - -#include <kcalcore/journal.h> - -#include "kolabbase.h" - -class QDomElement; - -namespace KolabV2 { - -/** - * This class represents a journal entry, and knows how to load/save it - * from/to XML, and from/to a KCalCore::Journal. - * The instances of this class are temporary, only used to convert - * one to the other. - */ -class Journal : public KolabBase { -public: - /// Use this to parse an xml string to a journal entry - /// The caller is responsible for deleting the returned journal - static KCalCore::Journal::Ptr fromXml( const QDomDocument& xmlDoc, const QString& tz ); - - /// Use this to get an xml string describing this journal entry - static QString journalToXML( const KCalCore::Journal::Ptr &, const QString& tz ); - - explicit Journal( const QString& tz, const KCalCore::Journal::Ptr &journal = KCalCore::Journal::Ptr() ); - virtual ~Journal(); - - virtual QString type() const { return "Journal"; } - - void saveTo( const KCalCore::Journal::Ptr &journal ); - - virtual void setSummary( const QString& summary ); - virtual QString summary() const; - - virtual void setStartDate( const KDateTime& startDate ); - virtual KDateTime startDate() const; - - virtual void setEndDate( const KDateTime& endDate ); - virtual KDateTime endDate() const; - - // Load the attributes of this class - virtual bool loadAttribute( QDomElement& ); - - // Save the attributes of this class - virtual bool saveAttributes( QDomElement& ) const; - - // Load this journal by reading the XML file - virtual bool loadXML( const QDomDocument& xml ); - - // Serialize this journal to an XML string - virtual QString saveXML() const; - -protected: - // Read all known fields from this ical journal - void setFields( const KCalCore::Journal::Ptr & ); - - QString productID() const; - - QString mSummary; - KDateTime mStartDate; - KDateTime mEndDate; -}; - -} - -#endif // KOLAB_JOURNAL_H
View file
libkolab-2.0.tar.gz/kolabformatV2/kolabbase.cpp
Deleted
@@ -1,500 +0,0 @@ -/* - This file is part of the kolab resource - the implementation of the - Kolab storage format. See www.kolab.org for documentation on this. - - Copyright (c) 2004 Bo Thorsen <bo@sonofthor.dk> - - 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. - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#include "kolabbase.h" - -#include <kabc/addressee.h> -#include <kabc/contactgroup.h> -#include <kcalcore/incidence.h> -#include <kcalcore/journal.h> -#include <ksystemtimezone.h> -#include <kdebug.h> - -using namespace KolabV2; - -KolabBase::KolabBase( const QString& tz ) - : mCreationDate( QDateTime::currentDateTime() ), - mLastModified( KDateTime::currentUtcDateTime() ), - mSensitivity( Public ), - mTimeZone( KSystemTimeZones::zone( tz ) ), - mHasPilotSyncId( false ), mHasPilotSyncStatus( false ) -{ -} - -KolabBase::~KolabBase() -{ -} - -void KolabBase::setFields( const KCalCore::Incidence::Ptr &incidence ) -{ - // So far unhandled KCalCore::IncidenceBase fields: - // mPilotID, mSyncStatus, mFloats - - setUid( incidence->uid() ); - setBody( incidence->description() ); - setCategories( incidence->categoriesStr() ); - setCreationDate( localToUTC( incidence->created() ) ); - setLastModified( incidence->lastModified() ); - setSensitivity( static_cast<Sensitivity>( incidence->secrecy() ) ); - // TODO: Attachments -} - -void KolabBase::saveTo( const KCalCore::Incidence::Ptr &incidence ) const -{ - incidence->setUid( uid() ); - incidence->setDescription( body() ); - incidence->setCategories( categories() ); - incidence->setCreated( utcToLocal( creationDate() ) ); - incidence->setLastModified( lastModified() ); - switch( sensitivity() ) { - case 1: - incidence->setSecrecy( KCalCore::Incidence::SecrecyPrivate ); - break; - case 2: - incidence->setSecrecy( KCalCore::Incidence::SecrecyConfidential ); - break; - default: - incidence->setSecrecy( KCalCore::Incidence::SecrecyPublic ); - break; - } - - // TODO: Attachments -} - -void KolabBase::setFields( const KABC::Addressee* addressee ) -{ - // An addressee does not have a creation date, so somehow we should - // make one, if this is a new entry - - setUid( addressee->uid() ); - setBody( addressee->note() ); - setCategories( addressee->categories().join( "," ) ); - - // Set creation-time and last-modification-time - const QString creationString = addressee->custom( "KOLAB", "CreationDate" ); - kDebug() <<"Creation time string:" << creationString; - KDateTime creationDate; - if ( creationString.isEmpty() ) { - creationDate = KDateTime::currentDateTime(KDateTime::Spec( mTimeZone ) ); - kDebug() <<"Creation date set to current time"; - } - else { - creationDate = stringToDateTime( creationString ); - kDebug() <<"Creation date loaded"; - } - KDateTime modified = KDateTime( addressee->revision(), mTimeZone ); - if ( !modified.isValid() ) - modified = KDateTime::currentUtcDateTime(); - setLastModified( modified ); - if ( modified < creationDate ) { - // It's not possible that the modification date is earlier than creation - creationDate = modified; - kDebug() <<"Creation date set to modification date"; - } - setCreationDate( creationDate ); - const QString newCreationDate = dateTimeToString( creationDate ); - if ( creationString != newCreationDate ) { - // We modified the creation date, so store it for future reference - const_cast<KABC::Addressee*>( addressee ) - ->insertCustom( "KOLAB", "CreationDate", newCreationDate ); - kDebug() <<"Creation date modified. New one:" << newCreationDate; - } - - switch( addressee->secrecy().type() ) { - case KABC::Secrecy::Private: - setSensitivity( Private ); - break; - case KABC::Secrecy::Confidential: - setSensitivity( Confidential ); - break; - default: - setSensitivity( Public ); - } - - // TODO: Attachments -} - -void KolabBase::saveTo( KABC::Addressee* addressee ) const -{ - addressee->setUid( uid() ); - addressee->setNote( body() ); - addressee->setCategories( categories().split( ',', QString::SkipEmptyParts ) ); - addressee->setRevision( lastModified().toZone( mTimeZone ).dateTime() ); - addressee->insertCustom( "KOLAB", "CreationDate", - dateTimeToString( creationDate() ) ); - - switch( sensitivity() ) { - case Private: - addressee->setSecrecy( KABC::Secrecy( KABC::Secrecy::Private ) ); - break; - case Confidential: - addressee->setSecrecy( KABC::Secrecy( KABC::Secrecy::Confidential ) ); - break; - default: - addressee->setSecrecy( KABC::Secrecy( KABC::Secrecy::Public ) ); - break; - } - // TODO: Attachments -} - -void KolabBase::setFields( const KABC::ContactGroup* contactGroup ) -{ - // A contactgroup does not have a creation date, so somehow we should - // make one, if this is a new entry - - setUid( contactGroup->id() ); - - // Set creation-time and last-modification-time - KDateTime creationDate = KDateTime::currentDateTime( KDateTime::Spec( mTimeZone ) ); - kDebug() <<"Creation date set to current time"; - - KDateTime modified = KDateTime::currentUtcDateTime(); - setLastModified( modified ); - if ( modified < creationDate ) { - // It's not possible that the modification date is earlier than creation - creationDate = modified; - kDebug() <<"Creation date set to modification date"; - } - setCreationDate( creationDate ); -} - -void KolabBase::saveTo( KABC::ContactGroup* contactGroup ) const -{ - contactGroup->setId( uid() ); -} - -void KolabBase::setUid( const QString& uid ) -{ - mUid = uid; -}
View file
libkolab-2.0.tar.gz/kolabformatV2/kolabbase.h
Deleted
@@ -1,183 +0,0 @@ -/* - This file is part of the kolab resource - the implementation of the - Kolab storage format. See www.kolab.org for documentation on this. - - Copyright (c) 2004 Bo Thorsen <bo@sonofthor.dk> - - 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. - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#ifndef KOLABV2BASE_H -#define KOLABV2BASE_H - - -#include <kcalcore/incidence.h> - -#include <kdatetime.h> -#include <ktimezone.h> - -#include <QColor> -#include <qdom.h> - -namespace KABC { - class Addressee; - class ContactGroup; -} - -namespace KolabV2 { - -class KolabBase { -public: - struct Email { - public: - Email( const QString& name = QString(), - const QString& email = QString() ) - : displayName( name ), smtpAddress( email ) - { - } - - QString displayName; - QString smtpAddress; - }; - - enum Sensitivity { Public = 0, Private = 1, Confidential = 2 }; - - explicit KolabBase( const QString& time_zone = QString() ); - virtual ~KolabBase(); - - // Return a string identifying this type - virtual QString type() const = 0; - - virtual void setUid( const QString& uid ); - virtual QString uid() const; - - virtual void setBody( const QString& body ); - virtual QString body() const; - - virtual void setCategories( const QString& categories ); - virtual QString categories() const; - - virtual void setCreationDate( const KDateTime& date ); - virtual KDateTime creationDate() const; - - virtual void setLastModified( const KDateTime& date ); - virtual KDateTime lastModified() const; - - virtual void setSensitivity( Sensitivity sensitivity ); - virtual Sensitivity sensitivity() const; - - virtual void setPilotSyncId( unsigned long id ); - virtual bool hasPilotSyncId() const; - virtual unsigned long pilotSyncId() const; - - virtual void setPilotSyncStatus( int status ); - virtual bool hasPilotSyncStatus() const; - virtual int pilotSyncStatus() const; - - // String - Date conversion methods - static QString dateTimeToString( const KDateTime& time ); - static QString dateToString( const QDate& date ); - static KDateTime stringToDateTime( const QString& time ); - static QDate stringToDate( const QString& date ); - - // String - Sensitivity conversion methods - static QString sensitivityToString( Sensitivity ); - static Sensitivity stringToSensitivity( const QString& ); - - // String - Color conversion methods - static QString colorToString( const QColor& ); - static QColor stringToColor( const QString& ); - - // Load this object by reading the XML file - bool load( const QString& xml ); - static QDomDocument loadDocument( const QString& xmlData ); - - // Load this QDomDocument - virtual bool loadXML( const QDomDocument& xml ) = 0; - - // Serialize this object to an XML string - virtual QString saveXML() const = 0; - -protected: - /// Read all known fields from this ical incidence - void setFields( const KCalCore::Incidence::Ptr & ); - - /// Save all known fields into this ical incidence - void saveTo( const KCalCore::Incidence::Ptr & ) const; - - /// Read all known fields from this contact - void setFields( const KABC::Addressee* ); - - /// Save all known fields into this contact - void saveTo( KABC::Addressee* ) const; - - /// Read all known fields from this contact group - void setFields( const KABC::ContactGroup* ); - - /// Save all known fields into this contact groupd - void saveTo( KABC::ContactGroup* ) const; - - // This just makes the initial dom tree with version and doctype - static QDomDocument domTree(); - - bool loadEmailAttribute( QDomElement& element, Email& email ); - - void saveEmailAttribute( QDomElement& element, const Email& email, - const QString& tagName = "email" ) const; - - // Load the attributes of this class - virtual bool loadAttribute( QDomElement& ); - - // Save the attributes of this class - virtual bool saveAttributes( QDomElement& ) const; - - // Return the product ID - virtual QString productID() const = 0; - - // Write a string tag - static void writeString( QDomElement&, const QString&, const QString& ); - - KDateTime localToUTC( const KDateTime& time ) const; - KDateTime utcToLocal( const KDateTime& time ) const; - - QString mUid; - QString mBody; - QString mCategories; - KDateTime mCreationDate; - KDateTime mLastModified; - Sensitivity mSensitivity; - KTimeZone mTimeZone; - - // KPilot synchronization stuff - bool mHasPilotSyncId, mHasPilotSyncStatus; - unsigned long mPilotSyncId; - int mPilotSyncStatus; -}; - -} - -#endif // KOLABBASE_H
View file
libkolab-2.0.tar.gz/kolabformatV2/note.cpp
Deleted
@@ -1,230 +0,0 @@ -/* - This file is part of the kolab resource - the implementation of the - Kolab storage format. See www.kolab.org for documentation on this. - - Copyright (c) 2004 Bo Thorsen <bo@sonofthor.dk> - - 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. - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#include "note.h" -#include "libkolab-version.h" - -#include <kcalcore/journal.h> -#include <kdebug.h> - -using namespace KolabV2; - - -KCalCore::Journal::Ptr Note::xmlToJournal( const QString& xml ) -{ - Note note; - note.load( xml ); - KCalCore::Journal::Ptr journal( new KCalCore::Journal() ); - note.saveTo( journal ); - return journal; -} - -QString Note::journalToXML( const KCalCore::Journal::Ptr &journal ) -{ - Note note( journal ); - return note.saveXML(); -} - -Note::Note( const KCalCore::Journal::Ptr &journal ) : mRichText( false ) -{ - if ( journal ) - setFields( journal ); -} - -Note::~Note() -{ -} - -void Note::setSummary( const QString& summary ) -{ - mSummary = summary; -} - -QString Note::summary() const -{ - return mSummary; -} - -void Note::setBackgroundColor( const QColor& bgColor ) -{ - mBackgroundColor = bgColor; -} - -QColor Note::backgroundColor() const -{ - return mBackgroundColor; -} - -void Note::setForegroundColor( const QColor& fgColor ) -{ - mForegroundColor = fgColor; -} - -QColor Note::foregroundColor() const -{ - return mForegroundColor; -} - -void Note::setRichText( bool richText ) -{ - mRichText = richText; -} - -bool Note::richText() const -{ - return mRichText; -} - -bool Note::loadAttribute( QDomElement& element ) -{ - QString tagName = element.tagName(); - if ( tagName == "summary" ) - setSummary( element.text() ); - else if ( tagName == "foreground-color" ) - setForegroundColor( stringToColor( element.text() ) ); - else if ( tagName == "background-color" ) - setBackgroundColor( stringToColor( element.text() ) ); - else if ( tagName == "knotes-richtext" ) - mRichText = ( element.text() == "true" ); - else - return KolabBase::loadAttribute( element ); - - // We handled this - return true; -} - -bool Note::saveAttributes( QDomElement& element ) const -{ - // Save the base class elements - KolabBase::saveAttributes( element ); - - // Save the elements -#if 0 - QDomComment c = element.ownerDocument().createComment( "Note specific attributes" ); - element.appendChild( c ); -#endif - - writeString( element, "summary", summary() ); - if ( foregroundColor().isValid() ) - writeString( element, "foreground-color", colorToString( foregroundColor() ) ); - if ( backgroundColor().isValid() ) - writeString( element, "background-color", colorToString( backgroundColor() ) ); - writeString( element, "knotes-richtext", mRichText ? "true" : "false" ); - - return true; -} - - -bool Note::loadXML( const QDomDocument& document ) -{ - QDomElement top = document.documentElement(); - - if ( top.tagName() != "note" ) { - qWarning( "XML error: Top tag was %s instead of the expected note", - top.tagName().toAscii().data() ); - return false; - } - - for ( QDomNode n = top.firstChild(); !n.isNull(); n = n.nextSibling() ) { - if ( n.isComment() ) - continue; - if ( n.isElement() ) { - QDomElement e = n.toElement(); - if ( !loadAttribute( e ) ) - // TODO: Unhandled tag - save for later storage - kDebug() <<"Warning: Unhandled tag" << e.tagName(); - } else - kDebug() <<"Node is not a comment or an element???"; - } - - return true; -} - -QString Note::saveXML() const -{ - QDomDocument document = domTree(); - QDomElement element = document.createElement( "note" ); - element.setAttribute( "version", "1.0" ); - saveAttributes( element ); - document.appendChild( element ); - return document.toString(); -} - -void Note::setFields( const KCalCore::Journal::Ptr &journal ) -{ - KolabBase::setFields( journal ); - - setSummary( journal->summary() ); - - QString property = journal->customProperty( "KNotes", "BgColor" ); - if ( !property.isEmpty() ) { - setBackgroundColor( property ); - } else { - setBackgroundColor( "yellow" ); - } - - property = journal->customProperty( "KNotes", "FgColor" ); - if ( !property.isEmpty() ) { - setForegroundColor( property ); - } else {
View file
libkolab-2.0.tar.gz/kolabformatV2/note.h
Deleted
@@ -1,109 +0,0 @@ -/* - This file is part of the kolab resource - the implementation of the - Kolab storage format. See www.kolab.org for documentation on this. - - Copyright (c) 2004 Bo Thorsen <bo@sonofthor.dk> - - 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. - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#ifndef KOLABV2_NOTE_H -#define KOLABV2_NOTE_H - -#include <kcalcore/journal.h> - -#include "kolabbase.h" - -class QDomElement; - -namespace KolabV2 { - -/** - * This class represents a note, and knows how to load/save it - * from/to XML, and from/to a KCalCore::Journal. - * The instances of this class are temporary, only used to convert - * one to the other. - */ -class Note : public KolabBase { -public: - /// Use this to parse an xml string to a journal entry - /// The caller is responsible for deleting the returned journal - static KCalCore::Journal::Ptr xmlToJournal( const QString& xml ); - - /// Use this to get an xml string describing this journal entry - static QString journalToXML( const KCalCore::Journal::Ptr & ); - - /// Create a note object and - explicit Note( const KCalCore::Journal::Ptr &journal = KCalCore::Journal::Ptr() ); - virtual ~Note(); - - void saveTo( const KCalCore::Journal::Ptr &journal ); - - virtual QString type() const { return "Note"; } - - virtual void setSummary( const QString& summary ); - virtual QString summary() const; - - virtual void setBackgroundColor( const QColor& bgColor ); - virtual QColor backgroundColor() const; - - virtual void setForegroundColor( const QColor& fgColor ); - virtual QColor foregroundColor() const; - - virtual void setRichText( bool richText ); - virtual bool richText() const; - - // Load the attributes of this class - virtual bool loadAttribute( QDomElement& ); - - // Save the attributes of this class - virtual bool saveAttributes( QDomElement& ) const; - - // Load this note by reading the XML file - virtual bool loadXML( const QDomDocument& xml ); - - // Serialize this note to an XML string - virtual QString saveXML() const; - -protected: - // Read all known fields from this ical incidence - void setFields( const KCalCore::Journal::Ptr & ); - - // Save all known fields into this ical incidence - void saveTo( const KCalCore::Incidence::Ptr & ) const; - - QString productID() const; - - QString mSummary; - QColor mBackgroundColor; - QColor mForegroundColor; - bool mRichText; -}; - -} - -#endif // KOLAB_NOTE_H
View file
libkolab-2.0.tar.gz/kolabformatV2/task.cpp
Deleted
@@ -1,349 +0,0 @@ -/* - This file is part of the kolab resource - the implementation of the - Kolab storage format. See www.kolab.org for documentation on this. - - Copyright (c) 2004 Bo Thorsen <bo@sonofthor.dk> - - 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. - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#include "task.h" - -#include <kcalcore/todo.h> -#include <kdebug.h> - -using namespace KolabV2; - -KCalCore::Todo::Ptr Task::fromXml( const QDomDocument& xmlDoc, const QString& tz ) -{ - Task task( tz ); - task.loadXML( xmlDoc ); - KCalCore::Todo::Ptr todo( new KCalCore::Todo() ); - task.saveTo( todo ); - return todo; -} - -QString Task::taskToXML( const KCalCore::Todo::Ptr &todo, const QString& tz ) -{ - Task task( tz, todo ); - return task.saveXML(); -} - -Task::Task( const QString& tz, const KCalCore::Todo::Ptr &task ) - : Incidence( tz, task ), - mPercentCompleted( 0 ), - mStatus( KCalCore::Incidence::StatusNone ), - mHasStartDate( false ), mHasDueDate( false ), - mHasCompletedDate( false ) -{ - if ( task ) { - setFields( task ); - } -} - -Task::~Task() -{ -} - -void Task::setPercentCompleted( int percent ) -{ - mPercentCompleted = percent; -} - -int Task::percentCompleted() const -{ - return mPercentCompleted; -} - -void Task::setStatus( KCalCore::Incidence::Status status ) -{ - mStatus = status; -} - -KCalCore::Incidence::Status Task::status() const -{ - return mStatus; -} - -void Task::setParent( const QString& parentUid ) -{ - mParent = parentUid; -} - -QString Task::parent() const -{ - return mParent; -} - -void Task::setDueDate( const KDateTime &date ) -{ - mDueDate = date; - mHasDueDate = true; -} - -void Task::setDueDate( const QDate &date ) -{ - mDueDate = KDateTime( date ); - mHasDueDate = true; - mFloatingStatus = AllDay; -} - -void Task::setDueDate( const QString &date ) -{ - if ( date.length() > 10 ) { - // This is a date + time - setDueDate( stringToDateTime( date ) ); - } else { - // This is only a date - setDueDate( stringToDate( date ) ); - } -} - -KDateTime Task::dueDate() const -{ - return mDueDate; -} - -void Task::setHasStartDate( bool v ) -{ - mHasStartDate = v; -} - -bool Task::hasStartDate() const -{ - return mHasStartDate; -} - -bool Task::hasDueDate() const -{ - return mHasDueDate; -} - -void Task::setCompletedDate( const KDateTime& date ) -{ - mCompletedDate = date; - mHasCompletedDate = true; -} - -KDateTime Task::completedDate() const -{ - return mCompletedDate; -} - -bool Task::hasCompletedDate() const -{ - return mHasCompletedDate; -} - -bool Task::loadAttribute( QDomElement& element ) -{ - QString tagName = element.tagName(); - - if ( tagName == "completed" ) { - bool ok; - int percent = element.text().toInt( &ok ); - if ( !ok || percent < 0 || percent > 100 ) - percent = 0; - setPercentCompleted( percent ); - } else if ( tagName == "status" ) { - if ( element.text() == "in-progress" ) - setStatus( KCalCore::Incidence::StatusInProcess ); - else if ( element.text() == "completed" ) - setStatus( KCalCore::Incidence::StatusCompleted ); - else if ( element.text() == "waiting-on-someone-else" ) - setStatus( KCalCore::Incidence::StatusNeedsAction ); - else if ( element.text() == "deferred" ) - // Guessing a status here - setStatus( KCalCore::Incidence::StatusCanceled ); - else - // Default - setStatus( KCalCore::Incidence::StatusNone ); - } else if ( tagName == "due-date" ) { - setDueDate( element.text() ); - } else if ( tagName == "parent" ) { - setParent( element.text() ); - } else if ( tagName == "x-completed-date" ) { - setCompletedDate( stringToDateTime( element.text() ) ); - } else if ( tagName == "start-date" ) { - setHasStartDate( true ); - setStartDate( element.text() ); - } else - return Incidence::loadAttribute( element ); - - // We handled this - return true; -}
View file
libkolab-2.0.tar.gz/kolabformatV2/task.h
Deleted
@@ -1,127 +0,0 @@ -/* - This file is part of the kolab resource - the implementation of the - Kolab storage format. See www.kolab.org for documentation on this. - - Copyright (c) 2004 Bo Thorsen <bo@sonofthor.dk> - - 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. - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#ifndef KOLABV2_TASK_H -#define KOLABV2_TASK_H - -#include "incidence.h" - -#include <kcalcore/todo.h> -#include <kcalcore/incidence.h> - -class QDomElement; - -namespace KCal { - class ResourceKolab; -} - -namespace KolabV2 { - -/** - * This class represents a task, and knows how to load/save it - * from/to XML, and from/to a KCalCore::Todo. - * The instances of this class are temporary, only used to convert - * one to the other. - */ -class Task : public Incidence { -public: - /// Use this to parse an xml string to a task entry - /// The caller is responsible for deleting the returned task - static KCalCore::Todo::Ptr fromXml( const QDomDocument& xmlDoc, const QString& tz/*, KCalCore::ResourceKolab *res = 0, - const QString& subResource = QString(), quint32 sernum = 0 */); - - /// Use this to get an xml string describing this task entry - static QString taskToXML( const KCalCore::Todo::Ptr &, const QString& tz ); - - explicit Task( /*KCalCore::ResourceKolab *res, const QString& subResource, quint32 sernum,*/ - const QString& tz, const KCalCore::Todo::Ptr &todo = KCalCore::Todo::Ptr() ); - virtual ~Task(); - - virtual QString type() const { return "Task"; } - - void saveTo( const KCalCore::Todo::Ptr &todo ); - - virtual void setPercentCompleted( int percent ); - virtual int percentCompleted() const; - - virtual void setStatus( KCalCore::Incidence::Status status ); - virtual KCalCore::Incidence::Status status() const; - - virtual void setParent( const QString& parentUid ); - virtual QString parent() const; - - virtual void setHasStartDate( bool ); - virtual bool hasStartDate() const; - - virtual void setDueDate( const KDateTime& date ); - virtual void setDueDate( const QString &date ); - virtual void setDueDate( const QDate &date ); - virtual KDateTime dueDate() const; - virtual bool hasDueDate() const; - - virtual void setCompletedDate( const KDateTime& date ); - virtual KDateTime completedDate() const; - virtual bool hasCompletedDate() const; - - // Load the attributes of this class - virtual bool loadAttribute( QDomElement& ); - - // Save the attributes of this class - virtual bool saveAttributes( QDomElement& ) const; - - // Load this task by reading the XML file - virtual bool loadXML( const QDomDocument& xml ); - - // Serialize this task to an XML string - virtual QString saveXML() const; - -protected: - // Read all known fields from this ical todo - void setFields( const KCalCore::Todo::Ptr & ); - - int mPercentCompleted; - KCalCore::Incidence::Status mStatus; - QString mParent; - - bool mHasStartDate; - - bool mHasDueDate; - KDateTime mDueDate; - - bool mHasCompletedDate; - KDateTime mCompletedDate; -}; - -} - -#endif // KOLAB_TASK_H
View file
libkolab-2.0.tar.gz/libkolab_config.h.in
Deleted
@@ -1,6 +0,0 @@ -/* This file is generated from libkolab_config.h.cmake. */ - -/* Whether akonadi/tag.h exists. */ -#cmakedefine HAVE_TAG_H 1 -/* Whether akonadi/relation.h exists. */ -#cmakedefine HAVE_RELATION_H 1
View file
libkolab-2.0.tar.gz/tests/benchmark.cpp
Deleted
@@ -1,91 +0,0 @@ -/* - * Copyright (C) 2011 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "benchmark.h" -#include "kolabformatV2/event.h" -#include "conversion/kcalconversion.h" -#include <kmime/kmime_message.h> -#include <kolabformat.h> -#include <kdebug.h> -#include "testutils.h" - -KMime::Message::Ptr readMimeFile( const QString &fileName ) -{ - QFile file( fileName ); - file.open( QFile::ReadOnly ); - const QByteArray data = file.readAll(); - Q_ASSERT( !data.isEmpty() ); - - KMime::Message *msg = new KMime::Message; - msg->setContent( data ); - msg->parse(); - return KMime::Message::Ptr(msg); -} - -KMime::Content* findContentByType(const KMime::Message::Ptr &data, const QByteArray &type) -{ - const KMime::Content::List list = data->contents(); - Q_FOREACH(KMime::Content *c, list) { - if (c->contentType()->mimeType() == type) - return c; - } - return 0; - -} - -void BenchmarkTests::parsingBenchmarkComparison_data() -{ - QTest::addColumn<bool>("v2Parser"); - QTest::newRow("v2") << true; - QTest::newRow("v3") << false; -} - -void BenchmarkTests::parsingBenchmarkComparison() -{ - const KMime::Message::Ptr kolabItem = readMimeFile( TESTFILEDIR+QString::fromLatin1("/v2/event/complex.ics.mime") ); - KMime::Content *xmlContent = findContentByType( kolabItem, "application/x-vnd.kolab.event" ); - QVERIFY ( xmlContent ); - const QByteArray xmlData = xmlContent->decodedContent(); - // qDebug() << xmlData; - const QDomDocument xmlDoc = KolabV2::Event::loadDocument( QString::fromUtf8(xmlData) ); - QVERIFY ( !xmlDoc.isNull() ); - const KCalCore::Event::Ptr i = KolabV2::Event::fromXml( xmlDoc, QString::fromLatin1("Europe/Berlin") ); - QVERIFY ( i ); - const Kolab::Event &event = Kolab::Conversion::fromKCalCore(*i); - const std::string &v3String = Kolab::writeEvent(event); - - QFETCH(bool, v2Parser); - - // Kolab::readEvent(v3String, false); //init parser (doesn't really change the results it seems) - // qDebug() << QString::fromUtf8(xmlData); - // qDebug() << "------------------------------------------------------------------------------------"; - // qDebug() << QString::fromStdString(v3String); - if (v2Parser) { - QBENCHMARK { - KolabV2::Event::fromXml( KolabV2::Event::loadDocument( QString::fromUtf8(xmlData) ), QString::fromLatin1("Europe/Berlin") ); - } - } else { - QBENCHMARK { - Kolab::readEvent(v3String, false); - } - } -} - - -QTEST_MAIN( BenchmarkTests ) - -#include "benchmark.moc"
View file
libkolab-2.0.tar.gz/tests/debugstreamtest.cpp
Deleted
@@ -1,56 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "debugstreamtest.h" - -#include "kolabformat/errorhandler.h" - -#include <QTest> - -void DebugStreamTest::testDebugstream() -{ - Error() << "test1"; - Error() << "test2" << "bla" << 3 << QMap<QString, int>(); - QCOMPARE(Kolab::ErrorHandler::instance().getErrors().size(), 2); - QVERIFY(Kolab::ErrorHandler::instance().getErrors().first().message.contains("test1")); - QCOMPARE(Kolab::ErrorHandler::instance().getErrors().first().severity, Kolab::ErrorHandler::Error); - QVERIFY(Kolab::ErrorHandler::instance().getErrors().last().message.contains("bla")); -} - -void DebugStreamTest::testDebugNotLogged() -{ - Kolab::ErrorHandler::instance().clear(); - Debug() << "test1"; - QCOMPARE(Kolab::ErrorHandler::instance().getErrors().size(), 0); -} - -void DebugStreamTest::testHasError() -{ - Debug() << "test1"; - QCOMPARE(Kolab::ErrorHandler::errorOccured(), false); - Warning() << "test1"; - QCOMPARE(Kolab::ErrorHandler::errorOccured(), false); - Error() << "test1"; - QCOMPARE(Kolab::ErrorHandler::errorOccured(), true); - Kolab::ErrorHandler::clearErrors(); - QCOMPARE(Kolab::ErrorHandler::errorOccured(), false); -} - - -QTEST_MAIN( DebugStreamTest ) - -#include "debugstreamtest.moc" \ No newline at end of file
View file
libkolab-2.0.tar.gz/tests/debugstreamtest.h
Deleted
@@ -1,32 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef DEBUGSTREAMTEST_H -#define DEBUGSTREAMTEST_H - -#include <QObject> - -class DebugStreamTest: public QObject -{ - Q_OBJECT -private slots: - void testDebugstream(); - void testDebugNotLogged(); - void testHasError(); -}; - -#endif // DEBUGSTREAMTEST_H
View file
libkolab-2.0.tar.gz/tests/formattest.cpp
Deleted
@@ -1,489 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "formattest.h" - -#include <QTest> -#include <QFile> -#include <QDebug> -#include <qprocess.h> -#include <qtemporaryfile.h> -#include <QBuffer> -#include <kdebug.h> -#include <ksystemtimezone.h> -#include <kolabcontainers.h> -#include <kolabformat.h> - -#include <kcalcore/icalformat.h> -#include <kabc/vcardconverter.h> -#include <kabc/contactgrouptool.h> -#include <akonadi/notes/noteutils.h> - -#include "testutils.h" -#include "kolabformat/kolabobject.h" -#include "kolabformat/errorhandler.h" -#include "kolabformat/kolabdefinitions.h" - -static bool compareMimeMessage( const KMime::Message::Ptr &msg, const KMime::Message::Ptr &expectedMsg ) -{ - // headers - KCOMPARE( msg->subject()->asUnicodeString(), expectedMsg->subject()->asUnicodeString() ); - if ( msg->from()->isEmpty() || expectedMsg->from()->isEmpty() ) { - KCOMPARE( msg->from()->asUnicodeString(), expectedMsg->from()->asUnicodeString() ); - } else { - KCOMPARE( msg->from()->mailboxes().first().address(), expectedMsg->from()->mailboxes().first().address() ); // matching address is enough, we don't need a display name - } - KCOMPARE( msg->contentType()->mimeType(), expectedMsg->contentType()->mimeType() ); - KCOMPARE( msg->headerByType( X_KOLAB_TYPE_HEADER )->as7BitString(), expectedMsg->headerByType( X_KOLAB_TYPE_HEADER )->as7BitString() ); - // date contains conversion time... - // KCOMPARE( msg->date()->asUnicodeString(), expectedMsg->date()->asUnicodeString() ); - - // body parts - KCOMPARE( msg->contents().size(), expectedMsg->contents().size() ); - for ( int i = 0; i < msg->contents().size(); ++i ) { - KMime::Content *part = msg->contents().at( i ); - KMime::Content *expectedPart = expectedMsg->contents().at( i ); - - // part headers - KCOMPARE( part->contentType()->mimeType(), expectedPart->contentType()->mimeType() ); - KCOMPARE( part->contentDisposition()->filename(), expectedPart->contentDisposition()->filename() ); - - KCOMPARE( part->decodedContent().isEmpty(), false ); - - QString content(part->decodedContent()); - normalizeMimemessage(content); - QString expected(expectedPart->decodedContent()); - normalizeMimemessage(expected); -// showDiff(expected, content); - - // part content - KCOMPARE( content.simplified(), expected.simplified() ); - } - return true; -} - -void FormatTest::initTestCase() -{ - QVERIFY2(KSystemTimeZones::isTimeZoneDaemonAvailable(), "Timezone support is required for this test. Either use libcalendaring or make sure KTimeZoned is available"); -} - -void FormatTest::testIncidence_data() -{ - QTest::addColumn<Kolab::Version>( "version" ); - QTest::addColumn<Kolab::ObjectType>( "type" ); - QTest::addColumn<QString>( "icalFileName" ); - QTest::addColumn<QString>( "mimeFileName" ); - - QTest::newRow( "v2eventSimple" ) << Kolab::KolabV2 << Kolab::EventObject << getPath("v2/event/simple.ics") << getPath("v2/event/simple.ics.mime"); - QTest::newRow( "v2eventComplex" ) << Kolab::KolabV2 << Kolab::EventObject << getPath("v2/event/complex.ics") << getPath("v2/event/complex.ics.mime"); - QTest::newRow( "v2eventAttachment" ) << Kolab::KolabV2 << Kolab::EventObject << getPath("v2/event/attachment.ics") << getPath("v2/event/attachment.ics.mime"); - QTest::newRow( "v2eventAllday" ) << Kolab::KolabV2 << Kolab::EventObject << getPath("v2/event/allday.ics") << getPath("v2/event/allday.ics.mime"); - QTest::newRow( "v2eventUtf8Attachment" ) << Kolab::KolabV2 << Kolab::EventObject << getPath("v2/event/attachmentUtf8.ics") << getPath("v2/event/attachmentUtf8.ics.mime"); - //The following test just fails because we have a nicer mime message output than horde -// QTest::newRow( "v2eventHorde" ) << Kolab::KolabV2 << Kolab::EventObject << getPath("v2/event/horde.ics") << getPath("v2/event/horde.ics.mime"); - QTest::newRow( "v2todoSimple" ) << Kolab::KolabV2 << Kolab::TodoObject << getPath("v2/task/simple.ics") << getPath("v2/task/simple.ics.mime"); - QTest::newRow( "v2todoComplex" ) << Kolab::KolabV2 << Kolab::TodoObject << getPath("v2/task/complex.ics") << getPath("v2/task/complex.ics.mime"); - QTest::newRow( "v2todoPrio1" ) << Kolab::KolabV2 << Kolab::TodoObject << getPath("v2/task/prioritytest1.ics") << getPath("v2/task/prioritytest1.ics.mime"); - QTest::newRow( "v2todoPrio2" ) << Kolab::KolabV2 << Kolab::TodoObject << getPath("v2/task/prioritytest2.ics") << getPath("v2/task/prioritytest2.ics.mime"); - QTest::newRow( "v2journalSimple" ) << Kolab::KolabV2 << Kolab::JournalObject << getPath("v2/journal/simple.ics") << getPath("v2/journal/simple.ics.mime"); - QTest::newRow( "v2journalComplex" ) << Kolab::KolabV2 << Kolab::JournalObject << getPath("v2/journal/complex.ics") << getPath("v2/journal/complex.ics.mime"); - - QTest::newRow( "v3eventSimple" ) << Kolab::KolabV3 << Kolab::EventObject << getPath("v3/event/simple.ics") << getPath("v3/event/simple.ics.mime"); - QTest::newRow( "v3eventComplex" ) << Kolab::KolabV3 << Kolab::EventObject << getPath("v3/event/complex.ics") << getPath("v3/event/complex.ics.mime"); - QTest::newRow( "v3todoSimple" ) << Kolab::KolabV3 << Kolab::TodoObject << getPath("v3/task/simple.ics") << getPath("v3/task/simple.ics.mime"); - QTest::newRow( "v3todoComplex" ) << Kolab::KolabV3 << Kolab::TodoObject << getPath("v3/task/complex.ics") << getPath("v3/task/complex.ics.mime"); - QTest::newRow( "v3journalSimple" ) << Kolab::KolabV3 << Kolab::JournalObject << getPath("v3/journal/simple.ics") << getPath("v3/journal/simple.ics.mime"); - QTest::newRow( "v3journalComplex" ) << Kolab::KolabV3 << Kolab::JournalObject << getPath("v3/journal/complex.ics") << getPath("v3/journal/complex.ics.mime"); - QTest::newRow( "v3utf8quotedPrintable" ) << Kolab::KolabV3 << Kolab::EventObject << getPath("v3/event/utf8.ics") << getPath("v3/event/utf8quotedPrintable.ics.mime"); - QTest::newRow( "v3utf8base64" ) << Kolab::KolabV3 << Kolab::EventObject << getPath("v3/event/utf8.ics") << getPath("v3/event/utf8base64.ics.mime"); - QTest::newRow( "v3utf88bit" ) << Kolab::KolabV3 << Kolab::EventObject << getPath("v3/event/utf8.ics") << getPath("v3/event/utf88bit.ics.mime"); -} - - -void FormatTest::testIncidence() -{ - QFETCH( Kolab::Version, version ); - QFETCH( Kolab::ObjectType, type ); - QFETCH( QString, icalFileName ); //To compare - QFETCH( QString, mimeFileName ); //For parsing - - //Parse mime message - bool ok = false; - const KMime::Message::Ptr &msg = readMimeFile( mimeFileName, ok ); - QVERIFY(ok); - Kolab::KolabObjectReader reader; - Kolab::ObjectType t = reader.parseMimeMessage(msg); - QCOMPARE(t, type); - QCOMPARE(reader.getVersion(), version); - QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Debug); - - KCalCore::Incidence::Ptr convertedIncidence = reader.getIncidence(); - - //Parse ICalFile for comparison - QFile icalFile( icalFileName ); - QVERIFY( icalFile.open( QFile::ReadOnly ) ); - KCalCore::ICalFormat format; - KCalCore::Incidence::Ptr realIncidence( format.fromString( QString::fromUtf8( icalFile.readAll() ) ) ); - - // fix up the converted incidence for comparisson - normalizeIncidence(convertedIncidence); - normalizeIncidence(realIncidence); - - // recurrence objects are created on demand, but KCalCore::Incidence::operator==() doesn't take that into account - // so make sure both incidences have one - realIncidence->recurrence(); - convertedIncidence->recurrence(); - - realIncidence->setLastModified(convertedIncidence->lastModified()); - - //The following test is just for debugging and not really relevant - if ( *(realIncidence.data()) != *(convertedIncidence.data()) ) { - showDiff(format.toString( realIncidence ), format.toString( convertedIncidence )); - } - QVERIFY( *(realIncidence.data()) == *(convertedIncidence.data()) ); - - - //Write - Kolab::overrideTimestamp(Kolab::cDateTime(2012, 5, 5, 5,5,5, true)); - KMime::Message::Ptr convertedMime = Kolab::KolabObjectWriter::writeIncidence(realIncidence, version); - - if ( !compareMimeMessage( convertedMime, msg )) { - showDiff(msg->encodedContent(), convertedMime->encodedContent()); - QVERIFY( false ); - } - QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Debug); -} - - -enum TestMode { - ReadOnly, - ReadWrite -}; -Q_DECLARE_METATYPE(TestMode); - -void FormatTest::testContact_data() -{ - QTest::addColumn<Kolab::Version>( "version" ); - QTest::addColumn<Kolab::ObjectType>( "type" ); - QTest::addColumn<QString>( "vcardFileName" ); - QTest::addColumn<QString>( "mimeFileName" ); - QTest::addColumn<TestMode>( "mode" ); - - QTest::newRow( "v2contactSimple" ) << Kolab::KolabV2 << Kolab::ContactObject << getPath("v2/contacts/simple.vcf") << getPath("v2/contacts/simple.vcf.mime") << ReadWrite; - //FIXME Reference files needs to be adjusted due to fix in how pictures are stored -// QTest::newRow( "v2contactComplex" ) << Kolab::KolabV2 << Kolab::ContactObject << getPath("v2/contacts/complex.vcf") << getPath("v2/contacts/complex.vcf.mime") << ReadWrite; - QTest::newRow( "v2contactAddress" ) << Kolab::KolabV2 << Kolab::ContactObject << getPath("v2/contacts/address.vcf") << getPath("v2/contacts/address.vcf.mime") << ReadWrite; - QTest::newRow( "v2contactBug238996" ) << Kolab::KolabV2 << Kolab::ContactObject << getPath("v2/contacts/bug238996.vcf") << getPath("v2/contacts/bug238996.vcf.mime") << ReadWrite; - QTest::newRow( "v2contactDisplayname" ) << Kolab::KolabV2 << Kolab::ContactObject << getPath("v2/contacts/displayname.vcf") << getPath("v2/contacts/displayname.vcf.mime") << ReadWrite; - QTest::newRow( "v2contactEmails" ) << Kolab::KolabV2 << Kolab::ContactObject << getPath("v2/contacts/emails.vcf") << getPath("v2/contacts/emails.vcf.mime") << ReadWrite; - QTest::newRow( "v2contactPhonenumbers" ) << Kolab::KolabV2 << Kolab::ContactObject << getPath("v2/contacts/phonenumbers.vcf") << getPath("v2/contacts/phonenumbers.vcf.mime") << ReadWrite; - // FIXME Reference files needs to be adjusted due to fix in how pictures are stored -// QTest::newRow( "v2contactPicture" ) << Kolab::KolabV2 << Kolab::ContactObject << getPath("v2/contacts/picture.vcf") << getPath("v2/contacts/picture.vcf.mime") << ReadWrite; - //FIXME the following test fails because the vcard implementation always writes jpeg (which is lossy). The reference vcf file is therefore probably also not really useful -// QTest::newRow( "v2pictureJPGHorde" ) << Kolab::KolabV2 << Kolab::ContactObject << getPath("v2/contacts/pictureJPGHorde.vcf") << getPath("v2/contacts/pictureJPGHorde.vcf.mime"); - - QTest::newRow( "v3contactSimple" ) << Kolab::KolabV3 << Kolab::ContactObject << getPath("v3/contacts/simple.vcf") << getPath("v3/contacts/simple.vcf.mime") << ReadWrite;
View file
libkolab-2.0.tar.gz/tests/formattest.h
Deleted
@@ -1,73 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - - -#ifndef FORMATTEST_H -#define FORMATTEST_H -#include <QObject> - -/** - * Test complete serialization from mime message to KCalCore/KABC containers. - * - * The .ics .vcf files serve as reference, under the assumption that the iCal/vCard implementations don't have bugs. - * - * The .ics.mime/.vcf.mime messages are first used to test parsing, and then to compare the result after serialization. - * The mime files are of course just a snapshot of how it is thought that the result should be. - * The files may have bugs themselves and will need to be updated to reflect future changes. - * - * kompare (the kde diff tool) is launched if a test fails to show you the difference between expected and actual conversion. - * Comment the code if you don't want it. - * - * Note that some parts of the mime message are not compared, but show up in kompare as difference: - * * Date-Header - * * Content-Type-Header - * * next-part markers - * * Content-ID Header - * - * These are safe to be ignored as they are randomly generated. - * - * To generate the reference files, you can write the vcf/ics by hand and generate the mime message from that one (using the generateMimefile() function). - * You may need to sort some things manually (addresses/phonenumbers), and generally check manually if everything is as it should be. - * The test will then remain to ensure the same for future versions. - * - */ -class FormatTest: public QObject -{ - Q_OBJECT -private slots: - - void initTestCase(); - - void testIncidence_data(); - void testIncidence(); - - void testContact_data(); - void testContact(); - - void testDistlist_data(); - void testDistlist(); - - void testNote_data(); - void testNote(); - - //Some pseudo tests and helper functions - void generateMimefile(); - void generateVCard(); - void proveJPGisLossy(); -}; - -#endif // FORMATTEST_H
View file
libkolab-2.0.tar.gz/tests/freebusytest.cpp
Deleted
@@ -1,168 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - - -#include "freebusytest.h" -#include "testutils.h" -#include "testhelpers.h" - -#include <QTest> -#include "freebusy/freebusy.h" -#include <kolabfreebusy.h> - -#include <iostream> - - -void FreebusyTest::testFB_data() -{ - QTest::addColumn<Kolab::cDateTime>( "start" ); - QTest::addColumn<Kolab::cDateTime>( "end" ); - QTest::addColumn< std::vector<Kolab::Event> >( "events" ); - QTest::addColumn< std::vector<Kolab::FreebusyPeriod> >( "output" ); - - - //UTC check - { - Kolab::Period p1(Kolab::cDateTime(2011,10,6,12,1,1,true), Kolab::cDateTime(2011,10,7,12,1,1,true)); - Kolab::Period p2(Kolab::cDateTime(2011,10,8,12,1,1,true), Kolab::cDateTime(2011,10,9,12,1,1,true)); - Kolab::Period p3(Kolab::cDateTime(2011,10,10,12,1,1,true), Kolab::cDateTime(2011,10,11,12,1,1,true)); - - std::vector<Kolab::Event> events; - events.push_back(createEvent(p1.start, p1.end)); - events.push_back(createEvent(p2.start, p2.end)); - events.push_back(createEvent(p3.start, p3.end)); - - Kolab::FreebusyPeriod period1; - period1.setType(Kolab::FreebusyPeriod::Busy); - period1.setEvent(events.at(0).uid(), events.at(0).summary(), events.at(0).location()); - period1.setPeriods(std::vector<Kolab::Period>() << p1); - - Kolab::FreebusyPeriod period2; - period2.setType(Kolab::FreebusyPeriod::Busy); - period2.setEvent(events.at(1).uid(), events.at(1).summary(), events.at(1).location()); - period2.setPeriods(std::vector<Kolab::Period>() << p2); - - Kolab::FreebusyPeriod period3; - period3.setType(Kolab::FreebusyPeriod::Busy); - period3.setEvent(events.at(2).uid(), events.at(2).summary(), events.at(2).location()); - period3.setPeriods(std::vector<Kolab::Period>() << p3); - - { - std::vector<Kolab::FreebusyPeriod> output; - output.push_back(period1); - output.push_back(period2); - output.push_back(period3); - - QTest::newRow( "simple utc" ) << Kolab::cDateTime(2010, 1, 1,1,1,1,true) << Kolab::cDateTime(2012, 1, 1,1,1,1,true) << events << output; - } - - { - std::vector<Kolab::FreebusyPeriod> output; - output.push_back(period2); - output.push_back(period3); - - QTest::newRow( "limit utc below" ) << Kolab::cDateTime(2011,10,8,12,1,1,true) << Kolab::cDateTime(2012, 1, 1,1,1,1,true) << events << output; - } - { - std::vector<Kolab::FreebusyPeriod> output; - output.push_back(period1); - output.push_back(period2); - - QTest::newRow( "limit utc above" ) << Kolab::cDateTime(2010, 1, 1,1,1,1,true) << Kolab::cDateTime(2011,10,9,12,1,1,true) << events << output; - } - } - { - Kolab::Event event; - event.setUid(QUuid::createUuid().toString().toStdString()); - event.setStart(Kolab::cDateTime(2011,1,1,0,0,0,true)); - event.setEnd(Kolab::cDateTime(2011,1,1,1,0,0,true)); - Kolab::RecurrenceRule rrule; - rrule.setFrequency(Kolab::RecurrenceRule::Daily); - rrule.setInterval(1); - rrule.setCount(2); - event.setRecurrenceRule(rrule); - - std::vector<Kolab::Event> events; - events.push_back(event); - - std::vector<Kolab::FreebusyPeriod> output; - Kolab::FreebusyPeriod period1; - period1.setType(Kolab::FreebusyPeriod::Busy); - period1.setEvent(event.uid(), event.summary(), event.location()); - period1.setPeriods(std::vector<Kolab::Period>() << Kolab::Period(Kolab::cDateTime(2011,1,1,0,0,0,true), Kolab::cDateTime(2011,1,1,1,0,0,true)) - << Kolab::Period(Kolab::cDateTime(2011,1,2,0,0,0,true), Kolab::cDateTime(2011,1,2,1,0,0,true)) - ); - output.push_back(period1); - - QTest::newRow( "fullday recurrence" ) << Kolab::cDateTime(2010, 1, 1,1,1,1,true) << Kolab::cDateTime(2012,10,9,12,1,1,true) << events << output; - } -} - - -void FreebusyTest::testFB() -{ - QFETCH(Kolab::cDateTime, start); - QFETCH(Kolab::cDateTime, end); - QFETCH(std::vector<Kolab::Event>, events); - QFETCH(std::vector<Kolab::FreebusyPeriod>, output); - - Kolab::Freebusy fb = Kolab::FreebusyUtils::generateFreeBusy(events, start, end); - - QCOMPARE((int)fb.periods().size(), (int)output.size()); - for (std::size_t i = 0; i<output.size(); i++) { - std::cout << i; - QCOMPARE(fb.periods().at(i), output.at(i)); - } - - std::cout << Kolab::FreebusyUtils::toIFB(fb); -} - -// void FreebusyTest::testHonorTimeFrame() -// { -// -// Kolab::Period p1(Kolab::cDateTime(2011,10,6,12,1,1,true), Kolab::cDateTime(2011,10,8,12,1,1,true)); -// Kolab::Period p2(Kolab::cDateTime(2011,10,7,12,1,1,true), Kolab::cDateTime(2011,10,10,12,1,1,true)); -// Kolab::Period p3(Kolab::cDateTime(2011,10,9,12,1,1,true), Kolab::cDateTime(2011,10,11,12,1,1,true)); -// -// std::vector<Kolab::Event> events; -// events.push_back(createEvent(p1.start, p1.end)); -// events.push_back(createEvent(p2.start, p2.end)); -// events.push_back(createEvent(p3.start, p3.end)); -// -// Kolab::FreebusyPeriod period1; -// period1.setType(Kolab::FreebusyPeriod::Busy); -// period1.setPeriods(std::vector<Kolab::Period>() << p1); -// -// Kolab::FreebusyPeriod period2; -// period2.setType(Kolab::FreebusyPeriod::Busy); -// period2.setPeriods(std::vector<Kolab::Period>() << p2); -// -// Kolab::FreebusyPeriod period3; -// period3.setType(Kolab::FreebusyPeriod::Busy); -// period3.setPeriods(std::vector<Kolab::Period>() << p3); -// -// -// Kolab::Freebusy fb = Kolab::FreebusyUtils::generateFreeBusy(events, Kolab::cDateTime(2010, 1, 1,1,1,1,true), Kolab::cDateTime(2012, 1, 1,1,1,1,true)); -// QCOMPARE((int)fb.periods().size(), 3); -// QCOMPARE(fb.periods().at(0), period1); -// QCOMPARE(fb.periods().at(1), period2); -// QCOMPARE(fb.periods().at(2), period3); -// } - -QTEST_MAIN( FreebusyTest ) - -#include "freebusytest.moc" \ No newline at end of file
View file
libkolab-2.0.tar.gz/tests/freebusytest.h
Deleted
@@ -1,32 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - - -#ifndef FREEBUSYTEST_H -#define FREEBUSYTEST_H -#include <QObject> - -class FreebusyTest: public QObject -{ - Q_OBJECT -private slots: - - void testFB_data(); - void testFB(); -}; - -#endif // FREEBUSYTEST_H
View file
libkolab-2.0.tar.gz/tests/icalendartest.cpp
Deleted
@@ -1,152 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - - -#include "icalendartest.h" - -#include <QTest> -#include <kolabevent.h> - -#include "icalendar/icalendar.h" - -#include "testhelpers.h" -#include "testutils.h" -#include <kolabformat/kolabobject.h> - -void ICalendarTest::testFromICalEvent() -{ - std::vector<Kolab::Event> events; - Kolab::Event ev1; - ev1.setStart(Kolab::cDateTime(2011,10,10,12,1,1,true)); - ev1.setEnd(Kolab::cDateTime(2011,10,11,12,1,1,true)); - events.push_back(ev1); - const std::vector<Kolab::Event> &result = Kolab::fromICalEvents(Kolab::toICal(events)); - qDebug() << QString::fromStdString(Kolab::toICal(result)); -} - -void ICalendarTest::testFromICalEventWithExceptions() -{ - QFile icalFile( getPath("v3/event/exceptions.ics") ); - QVERIFY( icalFile.open( QFile::ReadOnly ) ); - std::vector<Kolab::Event> events = Kolab::fromICalEvents(icalFile.readAll().constData()); - QCOMPARE((int)events.size(), 1); - Kolab::Event out = events.at(0); - QCOMPARE((int)out.exceptions().size(), 2); -} - -void ICalendarTest::testFromICalEventErrorsWithSameID() -{ - /* This is not a really usecase, it should make sure, - * that the underlying KCalCore strips out events with same uid/or recurrenceID. - * 2015/02/18: KCaclCore is only returns one event with one exception for the icalFile - * testdata/v3/event/errorswithsameid.ics - */ - QFile icalFile( getPath("v3/event/errorswithsameid.ics") ); - QVERIFY( icalFile.open( QFile::ReadOnly ) ); - std::vector<Kolab::Event> events = Kolab::fromICalEvents(icalFile.readAll().constData()); - QCOMPARE((int)events.size(), 1); - Kolab::Event out = events.at(0); - QCOMPARE((int)out.exceptions().size(), 1); -} - -void ICalendarTest::testReadWriteForEventWithExceptions() -{ - std::vector<Kolab::Event> events; - Kolab::Event ev1; - ev1.setUid("uid"); - ev1.setStart(Kolab::cDateTime(2011,10,10,12,1,1,true)); - ev1.setEnd(Kolab::cDateTime(2011,10,11,12,1,1,true)); - std::vector<Kolab::Event> exceptions; - Kolab::Event ex1; - ex1.setUid(ev1.uid()); - ex1.setRecurrenceID(Kolab::cDateTime(2011,10,11,12,1,1,true), true); - exceptions.push_back(ex1); - ev1.setExceptions(exceptions); - Kolab::RecurrenceRule rrule; - rrule.setInterval(1); - rrule.setFrequency(Kolab::RecurrenceRule::Daily); - ev1.setRecurrenceRule(rrule); - events.push_back(ev1); - const std::vector<Kolab::Event> &result = Kolab::fromICalEvents(Kolab::toICal(events)); - Kolab::Event out = result.at(0); - QCOMPARE((int)result.size(), 1); - QCOMPARE((int)out.exceptions().size(), 1); - QCOMPARE(out.exceptions().at(0).recurrenceID(), ex1.recurrenceID()); - QCOMPARE(out.exceptions().at(0).thisAndFuture(), true); -} - -void ICalendarTest::testToICal() -{ - std::vector<Kolab::Event> events; - Kolab::Event ev1; - ev1.setStart(Kolab::cDateTime(2011,10,10,12,1,1,true)); - ev1.setEnd(Kolab::cDateTime(2011,10,11,12,1,1,true)); - events.push_back(ev1); - events.push_back(ev1); - qDebug() << QString::fromStdString(Kolab::toICal(events)); -} - -void ICalendarTest::testToITip() -{ - Kolab::ITipHandler handler; - Kolab::Event ev1; - ev1.setStart(Kolab::cDateTime(2011,10,10,12,1,1,true)); - ev1.setEnd(Kolab::cDateTime(2011,10,11,12,1,1,true)); - ev1.setLastModified(Kolab::cDateTime(2011,10,11,12,1,2,true)); - ev1.setCreated(Kolab::cDateTime(2011,10,11,12,1,3,true)); - - qDebug() << QString::fromStdString(handler.toITip(ev1, Kolab::ITipHandler::iTIPRequest)); - -} - -void ICalendarTest::testToIMip() -{ - Kolab::ITipHandler handler; - Kolab::Event ev1; - ev1.setStart(Kolab::cDateTime("Europe/Zurich",2011,10,10,12,1,1)); - ev1.setEnd(Kolab::cDateTime("Europe/Zurich",2012,5,5,3,4,4)); - ev1.setLastModified(Kolab::cDateTime(2011,10,11,12,1,2,true)); - ev1.setCreated(Kolab::cDateTime(2011,10,11,12,1,3,true)); - - std::vector <Kolab::Attendee > attendees; - attendees.push_back(Kolab::Attendee(Kolab::ContactReference("email1@test.org", "name1", "uid1"))); - attendees.push_back(Kolab::Attendee (Kolab::ContactReference("email2@test.org", "name2", "uid2"))); - ev1.setAttendees(attendees); - - ev1.setOrganizer(Kolab::ContactReference("organizer@test.org", "organizer", "uid3")); - ev1.setSummary("summary"); - - const std::string mimeResult = handler.toIMip(ev1, Kolab::ITipHandler::iTIPRequest, "test@test.com"); - qDebug() << QString::fromStdString(mimeResult); - qDebug() << QString::fromStdString(handler.toIMip(ev1, Kolab::ITipHandler::iTIPReply, "test@test.com")); - - const std::vector<Kolab::Event> &eventResult = handler.fromIMip(mimeResult); - -// qDebug() << QString::fromStdString(Kolab::toICal(eventResult)); - - QCOMPARE((int)eventResult.size(), 1); - QEXPECT_FAIL("", "to imip converts dates to utc", Continue); - QCOMPARE(eventResult.front().start(), ev1.start()); - QEXPECT_FAIL("", "to imip converts dates to utc", Continue); - QCOMPARE(eventResult.front().end(), ev1.end()); -} - - - -QTEST_MAIN( ICalendarTest ) - -#include "icalendartest.moc"
View file
libkolab-2.0.tar.gz/tests/icalendartest.h
Deleted
@@ -1,38 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef ICALENDARTEST_H -#define ICALENDARTEST_H -#include <QObject> - -class ICalendarTest: public QObject -{ - Q_OBJECT -private slots: - -// void testEventConflict_data(); - void testToICal(); - void testFromICalEvent(); - void testFromICalEventWithExceptions(); - void testReadWriteForEventWithExceptions(); - void testFromICalEventErrorsWithSameID(); - - void testToITip(); - void testToIMip(); -}; - -#endif // ICALENDARTEST_H
View file
libkolab-2.0.tar.gz/tests/kolabobjecttest.cpp
Deleted
@@ -1,174 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "kolabobjecttest.h" - -#include <QTest> - -#include "kolabformat/kolabobject.h" -#include <kdebug.h> -#include <kolabformat/errorhandler.h> - -void KolabObjectTest::preserveLatin1() -{ - KCalCore::Event::Ptr event(new KCalCore::Event()); - QString summary(QLatin1String("äöü%@$£é¤¼²°")); - event->setSummary(summary); - QCOMPARE(event->summary(), summary); - //std::cout << event->summary().toStdString() << std::endl; - KMime::Message::Ptr msg = Kolab::KolabObjectWriter::writeEvent(event); -// kDebug() << msg->encodedContent(); - KCalCore::Event::Ptr readEvent = Kolab::KolabObjectReader(msg).getEvent(); - QVERIFY(readEvent); -// std::cout << readEvent->summary().toStdString() << std::endl; - QCOMPARE(readEvent->summary(), summary); -} - -void KolabObjectTest::preserveUnicode() -{ - KCalCore::Event::Ptr event(new KCalCore::Event()); - QString summary(QString::fromUtf8("€Š�ـأبـ☺")); - event->setSummary(summary); - QCOMPARE(event->summary(), summary); -// std::cout << event->summary().toStdString() << std::endl; - KMime::Message::Ptr msg = Kolab::KolabObjectWriter::writeEvent(event); -// kDebug() << msg->encodedContent(); - KCalCore::Event::Ptr readEvent = Kolab::KolabObjectReader(msg).getEvent(); - QVERIFY(readEvent); -// std::cout << readEvent->summary().toStdString() << std::endl; - QCOMPARE(readEvent->summary(), summary); -} - -void KolabObjectTest::dontCrashWithEmptyOrganizer() -{ - KCalCore::Event::Ptr event(new KCalCore::Event()); - event->setOrganizer(KCalCore::Person::Ptr()); - event->setDtStart(KDateTime(QDate(2012,11,11))); - Kolab::KolabObjectWriter::writeEvent(event, Kolab::KolabV2); - QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Debug); - Kolab::KolabObjectWriter::writeEvent(event); - qDebug() << Kolab::ErrorHandler::instance().error(); - QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Debug); -} - - -void KolabObjectTest::dontCrashWithEmptyIncidence() -{ - Kolab::KolabObjectWriter::writeEvent(KCalCore::Event::Ptr()); - QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Critical); - Kolab::KolabObjectWriter::writeTodo(KCalCore::Todo::Ptr()); - QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Critical); - Kolab::KolabObjectWriter::writeJournal(KCalCore::Journal::Ptr()); - QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Critical); - Kolab::KolabObjectWriter::writeIncidence(KCalCore::Event::Ptr()); - QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Critical); - Kolab::KolabObjectWriter::writeNote(KMime::Message::Ptr()); - QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Critical); -} - -void KolabObjectTest::parseRelationMembers() -{ - { - QString memberString("imap:///user/jan.aachen%40lhm.klab.cc/INBOX/20?message-id=%3Cf06aa3345a25005380b47547ad161d36%40lhm.klab.cc%3E&subject=Re%3A+test&date=Tue%2C+12+Aug+2014+20%3A42%3A59+%2B0200"); - Kolab::RelationMember member = Kolab::parseMemberUrl(memberString); - - QString result = Kolab::generateMemberUrl(member); - qDebug() << result; - result.replace(QLatin1String("%20"),QLatin1String("+")); - QCOMPARE(result, memberString); - } - - //user namespace by uid - { - - Kolab::RelationMember member; - member.uid = 20; - member.mailbox = QList<QByteArray>() << "INBOX"; - member.user = "john.doe@example.org"; - member.messageId = "messageid"; - member.date = "date"; - member.subject = "subject"; - QString url = Kolab::generateMemberUrl(member); - qDebug() << url; - Kolab::RelationMember result = Kolab::parseMemberUrl(url); - QCOMPARE(result.uid, member.uid); - QCOMPARE(result.mailbox, member.mailbox); - QCOMPARE(result.user, member.user); - QCOMPARE(result.messageId, member.messageId); - QCOMPARE(result.date, member.date); - QCOMPARE(result.subject, member.subject); - } - - //shared namespace by uid - { - - Kolab::RelationMember member; - member.uid = 20; - member.mailbox = QList<QByteArray>() << "foo" << "bar"; - member.messageId = "messageid"; - member.date = "date"; - member.subject = "subject"; - QString url = Kolab::generateMemberUrl(member); - qDebug() << url; - Kolab::RelationMember result = Kolab::parseMemberUrl(url); - QCOMPARE(result.uid, member.uid); - QCOMPARE(result.mailbox, member.mailbox); - QVERIFY(result.user.isEmpty()); - QCOMPARE(result.messageId, member.messageId); - QCOMPARE(result.date, member.date); - QCOMPARE(result.subject, member.subject); - } - - //by uuid/gid - { - - Kolab::RelationMember member; - member.gid = "fooobar"; - QString url = Kolab::generateMemberUrl(member); - qDebug() << url; - Kolab::RelationMember result = Kolab::parseMemberUrl(url); - QCOMPARE(result.gid, member.gid); - } - - // chars to en/decode - { - - Kolab::RelationMember member; - member.uid = 20; - member.mailbox = QList<QByteArray>() << "spaces in folders" << "+^,:@"; - member.user = "john.doe:^@example.org"; - member.messageId = "messageid+^,:@"; - member.date = "date+^,:@"; - member.subject = "subject+^,:@"; - - QString url = Kolab::generateMemberUrl(member); - qDebug() << url; - Kolab::RelationMember result = Kolab::parseMemberUrl(url); - QCOMPARE(result.uid, member.uid); - QCOMPARE(result.mailbox, member.mailbox); - QCOMPARE(result.user, member.user); - QCOMPARE(result.messageId, member.messageId); - QCOMPARE(result.date, member.date); - QCOMPARE(result.subject, member.subject); - } -} - - - -QTEST_MAIN( KolabObjectTest ) - -#include "kolabobjecttest.moc"
View file
libkolab-2.0.tar.gz/tests/kolabobjecttest.h
Deleted
@@ -1,33 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef KOLABOBJECTTEST_H -#define KOLABOBJECTTEST_H -#include <QObject> - -class KolabObjectTest: public QObject -{ - Q_OBJECT -private slots: - void preserveLatin1(); - void preserveUnicode(); - void dontCrashWithEmptyOrganizer(); - void dontCrashWithEmptyIncidence(); - void parseRelationMembers(); -}; - -#endif // KOLABOBJECTTEST_H
View file
libkolab-2.0.tar.gz/tests/legacyformattest.cpp
Deleted
@@ -1,58 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "legacyformattest.h" -#include "kolabformat/xmlobject.h" -#include "kolabformat/errorhandler.h" -#include "testutils.h" - -#include <QTest> -#include <fstream> -#include <sstream> - -void V2Test::testReadDistlistUID() -{ - std::ifstream t((TESTFILEDIR.toStdString()+"v2/contacts/distlistWithUID.xml").c_str()); - std::stringstream buffer; - buffer << t.rdbuf(); - - Kolab::XMLObject xo; - const Kolab::DistList distlist = xo.readDistlist(buffer.str(), Kolab::KolabV2); - foreach (const Kolab::ContactReference &contact, distlist.members()) { - QVERIFY(!contact.uid().empty()); - } - QVERIFY(!Kolab::ErrorHandler::errorOccured()); -} - -void V2Test::testWriteDistlistUID() -{ - Kolab::DistList distlist; - distlist.setUid("uid"); - distlist.setName("name"); - std::vector<Kolab::ContactReference> members; - members.push_back(Kolab::ContactReference(Kolab::ContactReference::UidReference, "memberuid", "membername")); - distlist.setMembers(members); - - Kolab::XMLObject xo; - const std::string xml = xo.writeDistlist(distlist, Kolab::KolabV2); - QVERIFY(QString::fromStdString(xml).contains("memberuid")); - QVERIFY(!Kolab::ErrorHandler::errorOccured()); -} - -QTEST_MAIN( V2Test ) - -#include "legacyformattest.moc" \ No newline at end of file
View file
libkolab-2.0.tar.gz/tests/legacyformattest.h
Deleted
@@ -1,31 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef V2TEST_H -#define V2TEST_H - -#include <QObject> - -class V2Test: public QObject -{ - Q_OBJECT -private slots: - void testReadDistlistUID(); - void testWriteDistlistUID(); -}; - -#endif // V2TEST_H
View file
libkolab-2.0.tar.gz/tests/mimeobjecttest.cpp
Deleted
@@ -1,148 +0,0 @@ -/* - * Copyright (C) 2012 Sofia Balicka <balicka@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include <QTest> -#include "mimeobjecttest.h" -#include "kolabformat/kolabobject.h" -#include "testutils.h" -#include "kolabformat/mimeobject.h" -#include <fstream> -#include <sstream> -#include <QString> -#include <ksystemtimezone.h> - -void MIMEObjectTest::initTestCase() -{ - QVERIFY2(KSystemTimeZones::isTimeZoneDaemonAvailable(), "Timezone support is required for this test. Either use libcalendaring or make sure KTimeZoned is available"); -} - -void MIMEObjectTest::testEvent(){ - - Kolab::MIMEObject mimeobject; - - std::ifstream t((TESTFILEDIR.toStdString()+"v3/event/simple.ics.mime").c_str()); - std::stringstream buffer; - buffer << t.rdbuf(); - - Kolab::Event event = mimeobject.readEvent(buffer.str()); - - std::string message = mimeobject.writeEvent(event, Kolab::KolabV3); - - QString qMessage = QString::fromStdString(message); - QString input = QString::fromStdString(buffer.str()); - - normalizeMimemessage(qMessage); - normalizeMimemessage(input); - - QCOMPARE(input.simplified(), qMessage.simplified()); -} -/* -void MIMEObjectTest::testTodo(){ - -} -*/ - -void MIMEObjectTest::testJournal(){ - - Kolab::MIMEObject mimeobject; - - std::ifstream t((TESTFILEDIR.toStdString()+"v3/journal/simple.ics.mime").c_str()); - std::stringstream buffer; - buffer << t.rdbuf(); - - Kolab::Journal journal = mimeobject.readJournal(buffer.str()); - - std::string message = mimeobject.writeJournal(journal, Kolab::KolabV3); - - QString qMessage = QString::fromStdString(message); - QString input = QString::fromStdString(buffer.str()); - - normalizeMimemessage(qMessage); - normalizeMimemessage(input); - - QCOMPARE(input.simplified(), qMessage.simplified()); - -} - -void MIMEObjectTest::testNote(){ - - Kolab::MIMEObject mimeobject; - - std::ifstream t((TESTFILEDIR.toStdString()+"v3/note/note.mime.mime").c_str()); - std::stringstream buffer; - buffer << t.rdbuf(); - - Kolab::Note note = mimeobject.readNote(buffer.str()); - - std::string message = mimeobject.writeNote(note, Kolab::KolabV3); - - QString qMessage = QString::fromStdString(message); - QString input = QString::fromStdString(buffer.str()); - - normalizeMimemessage(qMessage); - normalizeMimemessage(input); - - QCOMPARE(input.simplified(), qMessage.simplified()); - -} - -void MIMEObjectTest::testContact(){ - - Kolab::MIMEObject mimeobject; - - std::ifstream t((TESTFILEDIR.toStdString()+"v3/contacts/simple.vcf.mime").c_str()); - std::stringstream buffer; - buffer << t.rdbuf(); - - Kolab::Contact contact = mimeobject.readContact(buffer.str()); - - std::string message = mimeobject.writeContact(contact, Kolab::KolabV3); - - QString qMessage = QString::fromStdString(message); - QString input = QString::fromStdString(buffer.str()); - - normalizeMimemessage(qMessage); - normalizeMimemessage(input); - - QCOMPARE(input.simplified(), qMessage.simplified()); - -} - -void MIMEObjectTest::testDistlist(){ - - Kolab::MIMEObject mimeobject; - - std::ifstream t((TESTFILEDIR.toStdString()+"v3/contacts/distlist.vcf.mime").c_str()); - std::stringstream buffer; - buffer << t.rdbuf(); - - Kolab::DistList distlist = mimeobject.readDistlist(buffer.str()); - - std::string message = mimeobject.writeDistlist(distlist, Kolab::KolabV3); - - QString qMessage = QString::fromStdString(message); - QString input = QString::fromStdString(buffer.str()); - - normalizeMimemessage(qMessage); - normalizeMimemessage(input); - - QCOMPARE(input.simplified(), qMessage.simplified()); - -} -QTEST_MAIN( MIMEObjectTest ) - -#include "mimeobjecttest.moc"
View file
libkolab-2.0.tar.gz/tests/mimeobjecttest.h
Deleted
@@ -1,35 +0,0 @@ -/* - * Copyright (C) 2012 Sofia Balicka <balicka@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef MIMEOBJECTTEST_H -#define MIMEOBJECTTEST_H -#include <QObject> - -class MIMEObjectTest: public QObject -{ - Q_OBJECT - -private slots: - void initTestCase(); - void testEvent(); - void testJournal(); - void testNote(); - void testContact(); - void testDistlist(); -}; -#endif // MIMEOBJECTTEST_H -
View file
libkolab-2.0.tar.gz/tests/upgradetest.cpp
Deleted
@@ -1,188 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - - -#include "upgradetest.h" - -#include <QTest> -#include <kolabcontainers.h> -#include <kolabformat.h> -#include <kolabformat/errorhandler.h> - -#include "testutils.h" -#include "kolabformat/kolabobject.h" -#include <conversion/commonconversion.h> -#include <kcalcore/icalformat.h> -#include <kabc/vcardconverter.h> - -void UpgradeTest::testIncidence_data() -{ - QTest::addColumn<Kolab::ObjectType>( "type" ); - QTest::addColumn<QString>( "filename" ); - QTest::addColumn<bool>( "forceType" ); - - // QTest::newRow( "v2contactSimple" ) << Kolab::KolabV2 << Kolab::ContactObject << TESTFILEDIR+QString::fromLatin1("v2/contacts/simple.vcf") << TESTFILEDIR+QString::fromLatin1("v2/contacts/simple.vcf.mime"); - QTest::newRow( "v2eventSimple" ) << Kolab::EventObject << TESTFILEDIR+QString::fromLatin1("v2/event/simple.ics.mime") << false; - QTest::newRow( "v2eventComplex" ) << Kolab::EventObject << TESTFILEDIR+QString::fromLatin1("v2/event/complex.ics.mime") << false; - QTest::newRow( "v2eventAllday" ) << Kolab::EventObject << TESTFILEDIR+QString::fromLatin1("v2/event/allday.ics.mime") << false; - QTest::newRow( "v2eventAttachment" ) << Kolab::EventObject << TESTFILEDIR+QString::fromLatin1("v2/event/attachment.ics.mime") << false; - QTest::newRow( "v2eventHorde" ) << Kolab::EventObject << TESTFILEDIR+QString::fromLatin1("v2/event/horde.ics.mime") << false; - - //Still broken, although it seems that rather the event comparison is implemented wrong (not using equals) - QTest::newRow( "v2taskSimple" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/simple.ics.mime") << false; - QTest::newRow( "v2taskComplex" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/complex.ics.mime") << false; - QTest::newRow( "v2taskPrio1" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/prioritytest1.ics.mime") << false; - QTest::newRow( "v2taskPrio2" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/prioritytest2.ics.mime") << false; - - QTest::newRow( "v2journalSimple" ) << Kolab::JournalObject << TESTFILEDIR+QString::fromLatin1("v2/journal/simple.ics.mime") << false; - QTest::newRow( "v2journalComplex" ) << Kolab::JournalObject << TESTFILEDIR+QString::fromLatin1("v2/journal/complex.ics.mime") << false; - - QTest::newRow( "v2eventSimple_missingTypeHeader" ) << Kolab::EventObject << TESTFILEDIR+QString::fromLatin1("v2/event/simple_missingTypeHeader.ics.mime") << true; - QTest::newRow( "v2eventis8859-1" ) << Kolab::EventObject << TESTFILEDIR+QString::fromLatin1("v2/event/iso8859-1.mime") << false; - -} - -void UpgradeTest::testIncidence() -{ - QFETCH( Kolab::ObjectType, type ); - QFETCH( QString, filename ); //To compare - QFETCH( bool, forceType ); - - bool ok = false; - const KMime::Message::Ptr &msg = readMimeFile( filename, ok ); - QVERIFY(ok); - Kolab::KolabObjectReader reader; - if (forceType) { - reader.setObjectType(type); - } - Kolab::ObjectType t = reader.parseMimeMessage(msg); - QCOMPARE(t, type); - QCOMPARE(reader.getVersion(), Kolab::KolabV2); - QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Debug); - - - KCalCore::Incidence::Ptr v2result = reader.getIncidence(); - QVERIFY(!v2result.isNull()); - - //write KCalCore V3 - KMime::Message::Ptr v3message = Kolab::KolabObjectWriter::writeIncidence(v2result, Kolab::KolabV3); - QVERIFY(Kolab::error() == Kolab::NoError); -// kDebug() << v3message->encodedContent(); - //load KCalCore V3 - Kolab::KolabObjectReader reader2; - QCOMPARE(reader2.parseMimeMessage(v3message), type); - KCalCore::Incidence::Ptr v3result = reader2.getIncidence(); - QVERIFY(!v3result.isNull()); - normalizeIncidence(v2result); - //We have to override the last modified time with a specific value, so we normalize the input to the same - normalizeIncidence(v3result); - kDebug() <<"--------------------------------------------------------"; - KCalCore::ICalFormat format; - const QString v2 = format.toString( v2result ); - const QString v3 = format.toString( v3result ); - if ( *v2result != *v3result ) { - showDiff(v2, v3); -// qDebug() << "V2: " << v2; -// qDebug() << "V3: " << v3; - } - QVERIFY(!v2.isEmpty()); - QVERIFY(!v3.isEmpty()); - QCOMPARE(v2, v3); - kDebug() <<"--------------------------------------------------------"; - -// if (v2result->type() == KCalCore::IncidenceBase::TypeTodo) { -// KCalCore::Todo::Ptr t1 = v2result.dynamicCast<KCalCore::Todo>(); -// KCalCore::Todo::Ptr t2 = v3result.dynamicCast<KCalCore::Todo>(); -// QCOMPARE(t1->percentComplete(), t2->percentComplete()); -// QCOMPARE(t1->priority(), t2->priority()); -// QCOMPARE(t1->uid(), t2->uid()); -// QCOMPARE(t1->dtStart(), t2->dtStart()); -// QCOMPARE(t1->dtDue(), t2->dtDue()); -// QCOMPARE(*t1->organizer().data(), *t2->organizer().data()); -// QCOMPARE(t1->uid(), t2->uid()); -// QCOMPARE(t1->allDay(), t2->allDay()); -// QCOMPARE(t1->duration(), t2->duration()); -// QCOMPARE(t1->hasDuration(), t2->hasDuration()); -// qDebug() << "V2: " << v2; -// } - //Test comparator - QCOMPARE(*v2result, *v3result); - QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Debug); -} - -void UpgradeTest::testContact_data() -{ - QTest::addColumn<Kolab::ObjectType>( "type" ); - QTest::addColumn<QString>( "filename" ); - - QTest::newRow( "v2contactSimple" )<< Kolab::ContactObject << TESTFILEDIR+QString::fromLatin1("v2/contacts/simple.vcf.mime"); - QTest::newRow( "v2contactComplex" )<< Kolab::ContactObject << TESTFILEDIR+QString::fromLatin1("v2/contacts/complex.vcf.mime"); - QTest::newRow( "v2contactAddress" )<< Kolab::ContactObject << TESTFILEDIR+QString::fromLatin1("v2/contacts/address.vcf.mime"); - QTest::newRow( "v2contactBug238996" )<< Kolab::ContactObject << TESTFILEDIR+QString::fromLatin1("v2/contacts/bug238996.vcf.mime"); - QTest::newRow( "v2contactDisplayname" )<< Kolab::ContactObject << TESTFILEDIR+QString::fromLatin1("v2/contacts/displayname.vcf.mime"); - QTest::newRow( "v2contactEmails" )<< Kolab::ContactObject << TESTFILEDIR+QString::fromLatin1("v2/contacts/emails.vcf.mime"); - QTest::newRow( "v2contactPhonenumber" )<< Kolab::ContactObject << TESTFILEDIR+QString::fromLatin1("v2/contacts/phonenumbers.vcf.mime"); - QTest::newRow( "v2contactPicture" )<< Kolab::ContactObject << TESTFILEDIR+QString::fromLatin1("v2/contacts/picture.vcf.mime"); - QTest::newRow( "v2iso8859-1" )<< Kolab::ContactObject << TESTFILEDIR+QString::fromLatin1("v2/contacts/iso8859-1.mime"); - -} - - -void UpgradeTest::testContact() -{ - QFETCH( Kolab::ObjectType, type ); - QFETCH( QString, filename ); - - //Parse mime message - bool ok = false; - const KMime::Message::Ptr &msg = readMimeFile( filename, ok ); - QVERIFY(ok); - Kolab::KolabObjectReader reader; - Kolab::ObjectType t = reader.parseMimeMessage(msg); - QCOMPARE(t, type); - QCOMPARE(reader.getVersion(), Kolab::KolabV2); - QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Debug); - - KABC::Addressee v2Addressee = reader.getContact(); - QVERIFY(!v2Addressee.isEmpty()); - - //Write - const KMime::Message::Ptr &v3message = Kolab::KolabObjectWriter::writeContact(v2Addressee, Kolab::KolabV3); - - //load V3 - Kolab::KolabObjectReader reader2; - QCOMPARE(reader2.parseMimeMessage(v3message), type); - KABC::Addressee v3result = reader2.getContact(); - QVERIFY(!v3result.isEmpty()); - - normalizeContact(v2Addressee); - QVERIFY( normalizePhoneNumbers( v3result, v2Addressee ) ); // phone number ids are random - QVERIFY( normalizeAddresses( v3result, v2Addressee ) ); // same here - - KABC::VCardConverter converter; - if ( v2Addressee != v3result ) { - showDiff(converter.createVCard(v2Addressee), converter.createVCard(v3result)); - QVERIFY( false ); - } - QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Debug); -} - - -QTEST_MAIN( UpgradeTest ) - -#include "upgradetest.moc" -
View file
libkolab-2.0.tar.gz/tests/upgradetest.h
Deleted
@@ -1,48 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - - -#ifndef UPGRADETEST_H -#define UPGRADETEST_H - -#include <QObject> - -/** - * Test format upgrade from v2 to v3 - * - * - Parse using v2 implementeation - * - Serialize and reparse using v3 implementeation - * - Compare results - * - * This ensures that all properties which are interpreted by the v2 implementation can be serialized and deserialized by the v3 implementation. - * - * Depends on serialization used for comparison to be correct (i.e. the ical implementation). - */ - -class UpgradeTest: public QObject -{ - Q_OBJECT -private slots: - - void testIncidence_data(); - void testIncidence(); - - void testContact_data(); - void testContact(); -}; - -#endif // UPGRADETEST_H
View file
libkolab-2.0.tar.gz/tests/xmlobjecttest.cpp
Deleted
@@ -1,65 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "xmlobjecttest.h" - -#include <QTest> -#include <iostream> - -#include "kolabformat/xmlobject.h" - -void XMLObjectTest::testEvent() -{ - Kolab::Event event; - event.setStart(Kolab::cDateTime(2012,01,01)); - - Kolab::XMLObject xmlobject; - const std::string output = xmlobject.writeEvent(event, Kolab::KolabV2, "productid"); - QVERIFY(!output.empty()); - std::cout << output; - - const Kolab::Event resultEvent = xmlobject.readEvent(output, Kolab::KolabV2); - QVERIFY(resultEvent.isValid()); - -} - -void XMLObjectTest::testDontCrash() -{ - Kolab::XMLObject ob; - ob.writeEvent(Kolab::Event(), Kolab::KolabV2, ""); - ob.writeTodo(Kolab::Todo(), Kolab::KolabV2, ""); - ob.writeJournal(Kolab::Journal(), Kolab::KolabV2, ""); - ob.writeFreebusy(Kolab::Freebusy(), Kolab::KolabV2, ""); - ob.writeContact(Kolab::Contact(), Kolab::KolabV2, ""); - ob.writeDistlist(Kolab::DistList(), Kolab::KolabV2, ""); - ob.writeNote(Kolab::Note(), Kolab::KolabV2, ""); - ob.writeConfiguration(Kolab::Configuration(), Kolab::KolabV2, ""); - - ob.readEvent("", Kolab::KolabV2); - ob.readTodo("", Kolab::KolabV2); - ob.readJournal("", Kolab::KolabV2); - ob.readFreebusy("", Kolab::KolabV2); - ob.readContact("", Kolab::KolabV2); - ob.readDistlist("", Kolab::KolabV2); - ob.readNote("", Kolab::KolabV2); - ob.readConfiguration("", Kolab::KolabV2); - -} - -QTEST_MAIN( XMLObjectTest ) - -#include "xmlobjecttest.moc"
View file
libkolab-2.0.tar.gz/tests/xmlobjecttest.h
Deleted
@@ -1,31 +0,0 @@ -/* - * Copyright (C) 2012 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef XMLOBJECTTEST_H -#define XMLOBJECTTEST_H - -#include <QObject> - -class XMLObjectTest: public QObject -{ - Q_OBJECT -private slots: - void testEvent(); - void testDontCrash(); -}; - -#endif // XMLOBJECTTEST_H
View file
libkolab-2.0.tar.gz/utils
Deleted
-(directory)
View file
libkolab-2.0.tar.gz/utils/CMakeLists.txt
Deleted
@@ -1,5 +0,0 @@ - -find_package(Boost REQUIRED COMPONENTS program_options) - -add_executable(kolabformatchecker kolabformatchecker.cpp) -target_link_libraries(kolabformatchecker kolab ${Boost_LIBRARIES})
View file
libkolab-2.0.tar.gz/utils/kolabformatchecker.cpp
Deleted
@@ -1,109 +0,0 @@ -/* - * Copyright (C) 2012 Sofia Balicka <balicka@kolabsys.com> - * Copyright (C) 2013 Christian Mollekopf <mollekopf@kolabsys.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include <boost/program_options.hpp> -#include <iostream> -#include <string> -#include <vector> -#include <QString> -#include <QFile> -#include <kolabformat.h> -#include "kolabformat/errorhandler.h" -#include "kolabformat/kolabobject.h" - -namespace po = boost::program_options; -using namespace std; - -KMime::Message::Ptr readMimeFile( const QString &fileName, bool &ok) -{ - QFile file( fileName ); - ok = file.open( QFile::ReadOnly ); - if (!ok) { - cout << "failed to open file: " << fileName.toStdString() << endl;; - return KMime::Message::Ptr(); - } - const QByteArray data = file.readAll(); - KMime::Message::Ptr msg = KMime::Message::Ptr(new KMime::Message); - msg->setContent( KMime::CRLFtoLF(data) ); - msg->parse(); - return msg; -} - -int main(int argc, char *argv[]) -{ - // Declare the supported options. - po::options_description desc("Allowed options"); - desc.add_options() - ("help", "produce help message") - ("input-file", po::value<std::vector<std::string> >(), "input files") - ; - - po::positional_options_description p; - p.add("input-file", -1); - - po::variables_map vm; - po::store(po::command_line_parser(argc, argv). - options(desc).positional(p).run(), vm); - po::notify(vm); - - if (vm.count("help")) { - cout << desc << "\n"; - return 1; - } - - vector<string> inputFiles; - if (vm.count("input-file")) { - inputFiles = vm["input-file"].as< vector<string> >(); - } else { - cout << "Specify input-file\n"; - return -1; - } - - int returnValue = 0; - - cout << endl; - - for(vector<string>::const_iterator it = inputFiles.begin(); - it != inputFiles.end(); it++){ - - cout << "File: " << *it << endl; - - bool ok; - KMime::Message::Ptr message = readMimeFile( QString::fromStdString(*it), ok); - - if(!ok){ - returnValue = -1; - cout << endl; - continue; - } - - Kolab::KolabObjectReader reader(message); - - if (Kolab::ErrorHandler::errorOccured()){ - cout << "Errors occured during parsing." << endl; - returnValue = -1; - } else { - cout << "Parsed message without error." << endl; - } - - cout << endl; - } - - return returnValue; -} -
View file
libkolab-3.0.0.tar.gz/.arcconfig
Added
@@ -0,0 +1,6 @@ +{ + "phabricator.uri" : "https://git.kolab.org/", + "arc.land.onto.default" : "master", + "immutable_history" : true +} +
View file
libkolab-2.0.tar.gz/CMakeLists.txt -> libkolab-3.0.0.tar.gz/CMakeLists.txt
Changed
@@ -1,12 +1,10 @@ project(Libkolab) -cmake_minimum_required(VERSION 2.6.4) +cmake_minimum_required(VERSION 2.8.9) -option( BUILD_TESTS "Build the tests" TRUE ) -option( BUILD_TOOLS "Build the tools" TRUE ) -option( PYTHON_BINDINGS "Build bindings for python" FALSE ) -option( PHP_BINDINGS "Build bindings for php" FALSE ) -option( USE_LIBCALENDARING "Use libcalendaring" FALSE ) +option(BUILD_TESTS "Build the tests" TRUE) +option(PYTHON_BINDINGS "Build bindings for python" FALSE) +option(PHP_BINDINGS "Build bindings for php" FALSE) set(Libkolab_MODULE_DIR ${Libkolab_SOURCE_DIR}/cmake/modules) set(CMAKE_MODULE_PATH ${Libkolab_MODULE_DIR}) @@ -31,19 +29,19 @@ # 0.1.0 (first release) # 0.1.1 (patch release for 0.1.0) # 0.2 (0.2 development version towards 0.2.0) -set(Libkolab_VERSION_MAJOR 2) +set(Libkolab_VERSION_MAJOR 3) set(Libkolab_VERSION_MINOR 0) # Enable the full x.y.z version only for release versions -#set(Libkolab_VERSION_PATCH 1) -#set(Libkolab_VERSION ${Libkolab_VERSION_MAJOR}.${Libkolab_VERSION_MINOR}.${Libkolab_VERSION_PATCH} ) -set(Libkolab_VERSION ${Libkolab_VERSION_MAJOR}.${Libkolab_VERSION_MINOR} ) +set(Libkolab_VERSION_PATCH 0) +#set(Libkolab_VERSION ${Libkolab_VERSION_MAJOR}.${Libkolab_VERSION_MINOR}.${Libkolab_VERSION_PATCH}) +set(Libkolab_VERSION ${Libkolab_VERSION_MAJOR}.${Libkolab_VERSION_MINOR}) set(Libkolab_VERSION_STRING ${CMAKE_PROJECT_NAME}-${Libkolab_VERSION}) # set up install directories. set(LIB_INSTALL_DIR lib${LIB_SUFFIX} CACHE STRING "The directories where to install libraries to") set(INCLUDE_INSTALL_DIR include CACHE STRING "The directory where to install headers to") set(INCLUDE_INSTALL_DIR ${INCLUDE_INSTALL_DIR}/kolab) -set(CMAKECONFIG_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/Libkolab ) +set(CMAKECONFIG_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/Libkolab) # Make relative paths absolute (needed later on) foreach(p LIB INCLUDE CMAKECONFIG) @@ -55,150 +53,82 @@ include(MacroLogFeature) +find_package(Qt5 REQUIRED Core Xml) + + # Do the building -find_package(Libkolabxml 1.1 REQUIRED) -macro_log_feature(Libkolabxml_FOUND "Libkolabxml" "Kolab XML Format 3 serializing library" "http://git.kolab.org/libkolabxml/" TRUE "1.0" "Required for reading/writing Kolab XML Objects") +find_package(Libkolabxml 1.1.1 REQUIRED) +macro_log_feature(Libkolabxml_FOUND "Libkolabxml" "Kolab XML Format 3 serializing library" "https://git.kolab.org/diffusion/LKX/" TRUE "1.1.1" "Required for reading/writing Kolab XML Objects") -find_package(Qt4 4.6.0 REQUIRED) +set(QT_REQUIRED_VERSION "5.9.0") -if (USE_LIBCALENDARING) - find_package(Libcalendaring) - macro_log_feature(LIBCALENDARING_FOUND "Libcalendaring" "KDE Calendaring-Dependencies Library" "http://git.kolab.org/libcalendaring/" TRUE "" "Required if KDE libraries are not available.") -else() - find_package(KDE4 4.8 REQUIRED) - find_package(KdepimLibs 4.8 REQUIRED) +if (Qt5_POSITION_INDEPENDENT_CODE) + #Requires cmake 2.8.9 (same as -fPIC on gcc) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) endif() +include(FindPackageHandleStandardArgs) + +find_package(KF5CoreAddons CONFIG REQUIRED) +find_package(KF5CalendarCore "5.12.1" CONFIG REQUIRED) +find_package(KF5Mime "4.84.0" CONFIG REQUIRED) + find_package(SWIG) #Show summary of found libraries macro_display_feature_log() -# add_definitions( -DKDEPIMLIBS_VERSION=((${KdepimLibs_VERSION_MAJOR}<<16)|(${KdepimLibs_VERSION_MINOR}<<8)|(${KDEPIMLIBS_VERSION_PATCH})) ) -add_definitions( -DKDEPIMLIBS_VERSION_MAJOR=${KdepimLibs_VERSION_MAJOR} ) -add_definitions( -DKDEPIMLIBS_VERSION_MINOR=${KdepimLibs_VERSION_MINOR} ) -add_definitions( -DKDEPIMLIBS_VERSION_PATCH=${KdepimLibs_VERSION_PATCH} ) - -#Tag::GENERIC is only available at the moment at the kolab/integration branches -if (KDEPIMLIBS_HAS_GENERIC_TAG) - add_definitions( -DKDEPIMLIBS_HAS_GENERIC_TAG) -endif() - -if("${KdepimLibs_VERSION}" VERSION_GREATER "4.8.40" OR USE_LIBCALENDARING) - add_definitions(-DKDEPIMLIBS_VERSION_DEVEL) -endif() - -if ("${KdepimLibs_VERSION}" VERSION_GREATER "4.11.52") - add_definitions( -DLIBCALENDARING_DURATION_DECLARED) -endif() - -if(CMAKE_COMPILER_IS_GNUCXX) - if(NOT MINGW) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") - endif() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -fno-exceptions -DQT_NO_EXCEPTIONS -fno-common -Woverloaded-virtual -fno-threadsafe-statics -fvisibility=hidden -Werror=return-type -fvisibility-inlines-hidden -fexceptions -UQT_NO_EXCEPTIONS -g") -endif() - +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -fno-exceptions -DQT_NO_EXCEPTIONS -fno-common -Woverloaded-virtual -fno-threadsafe-statics -fvisibility=hidden -Werror=return-type -fvisibility-inlines-hidden -fexceptions -UQT_NO_EXCEPTIONS -fPIC -g -std=c++11") # message("${CMAKE_CXX_FLAGS}") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DQT_NO_DEBUG") -if (USE_LIBCALENDARING) - set( KDE_INCLUDES ${Libcalendaring_INCLUDE_DIRS} ) - set( KDE_LIBRARIES ${Libcalendaring_LIBRARIES} ) - message("${Libcalendaring_INCLUDE_DIRS} ${Libcalendaring_LIBRARIES}") -else() - set( KDE_INCLUDES ${KDEPIMLIBS_INCLUDE_DIRS} ${KDE4_INCLUDES} ) - set( KDE_LIBRARIES - ${KDEPIMLIBS_KCALCORE_LIBS} - ${KDEPIMLIBS_KABC_LIBS} - ${KDEPIMLIBS_KMIME_LIBS} - ${KDEPIMLIBS_AKONADI_LIBS} - ${KDEPIMLIBS_AKONADI_NOTES_LIBS} - ${KDEPIMLIBS_KCALUTILS_LIBS} - ${KDEPIMLIBS_KPIMUTILS_LIBS} - ${KDE4_KDECORE_LIBS} - ${KDE4_KIO_LIBS} - ) -endif() - -find_package(Boost REQUIRED) - -include_directories( +include_directories( ${QT_INCLUDES} - ${KDE_INCLUDES} ${CMAKE_BINARY_DIR} - ${Boost_INCLUDE_DIRS} - ${CMAKE_CURRENT_SOURCE_DIR}/kolabformatV2 ${Libkolabxml_INCLUDES} ./ ) configure_file(libkolab-version.h.cmake "${CMAKE_BINARY_DIR}/libkolab-version.h" @ONLY) -set(CMAKE_REQUIRED_FLAGS ${CMAKE_CXX_FLAGS}) -set(CMAKE_REQUIRED_INCLUDES "/opt/devel/kolab/include/") -# include(CheckIncludeFileCXX) -# check_include_file_cxx(akonadi/tag.h HAVE_TAG_H) -#check_include_file_cxx doesn't work for some reason, so we use find_path instead. -#we have to make sure that we only search in KDE_INCLUDES though, to not accidentally include a system akonadi/tag.h -#when we're searching for one in libcalendaring. -find_path(HAVE_TAG_H akonadi/tag.h PATHS ${KDE_INCLUDES} NO_DEFAULT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH) -find_path(HAVE_RELATION_H akonadi/relation.h PATHS ${KDE_INCLUDES} NO_DEFAULT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libkolab_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/libkolab_config.h) - -add_subdirectory(kolabformatV2) add_subdirectory(conversion) add_subdirectory(calendaring) -add_subdirectory(icalendar) -add_subdirectory(freebusy) -if (BUILD_TOOLS) - add_subdirectory(utils) -endif() -QT4_WRAP_CPP(CALENDARING_MOC calendaring/event.h) -# QT4_WRAP_CPP(CONVERSION_MOC conversion/qtevent.h conversion/qtduration.h) +QT5_WRAP_CPP(CALENDARING_MOC calendaring/event.h) set(KOLAB_SRCS - kolabformat/kolabobject.cpp kolabformat/xmlobject.cpp kolabformat/formathelpers.cpp kolabformat/errorhandler.cpp - kolabformat/v2helpers.cpp - kolabformat/mimeobject.cpp mime/mimeutils.cpp ${CONVERSION_SRCS} ${kolabformatv2_SRCS} ${CALENDARING_SRCS} - ${ICALENDAR_SRCS} - ${CALENDARING_MOC} - ${CONVERSION_MOC} - ${FREEBUSY_SRCS} ) set(KOLAB_LINK_LIBRARIES ${Libkolabxml_LIBRARIES} - ${QT_QTCORE_LIBRARY} - ${QT_QTXML_LIBRARY} - ${QT_QTGUI_LIBRARY} - ${KDE_LIBRARIES} + KF5::CalendarCore + KF5::Mime + Qt5::Core + Qt5::Xml ) -if (BUILD_TOOLS OR BUILD_TESTS) - add_library(kolab_static STATIC ${KOLAB_SRCS}) - target_link_libraries(kolab_static ${KOLAB_LINK_LIBRARIES}) -endif()
View file
libkolab-2.0.tar.gz/calendaring/calendaring.cpp -> libkolab-3.0.0.tar.gz/calendaring/calendaring.cpp
Changed
@@ -19,8 +19,10 @@ #include <kcalcore/event.h> #include <kcalcore/todo.h> -#include <Qt/qdebug.h> +#include <qdebug.h> #include <kolabevent.h> +#include <QDate> +#include <QTimeZone> #include "conversion/kcalconversion.h" #include "conversion/commonconversion.h" @@ -29,58 +31,58 @@ namespace Calendaring { -bool conflicts(const Kolab::Event &e1, const Kolab::Event &e2) -{ - KCalCore::Event::Ptr k1 = Kolab::Conversion::toKCalCore(e1); - KCalCore::Event::Ptr k2 = Kolab::Conversion::toKCalCore(e2); - if (k2->dtEnd().compare(k1->dtStart()) == KDateTime::Before) { - return false; - } else if (k1->dtEnd().compare(k2->dtStart()) == KDateTime::Before) { - return false; - } - return true; -} +// bool conflicts(const Kolab::Event &e1, const Kolab::Event &e2) +// { +// KCalCore::Event::Ptr k1 = Kolab::Conversion::toKCalCore(e1); +// KCalCore::Event::Ptr k2 = Kolab::Conversion::toKCalCore(e2); +// if (k2->dtEnd() > k1->dtStart()) { +// return false; +// } else if (k1->dtEnd() > k2->dtStart()) { +// return false; +// } +// return true; +// } -std::vector< std::vector< Event > > getConflictingSets(const std::vector< Event > &events, const std::vector< Event > &events2) -{ - std::vector< std::vector< Kolab::Event > > ret; - for(std::size_t i = 0; i < events.size(); i++) { - std::vector<Kolab::Event> set; - const Kolab::Event &event = events.at(i); - set.push_back(event); - for(std::size_t q = i+1; q < events.size(); q++) { - const Kolab::Event &e2 = events.at(q); - if (conflicts(event, e2)) { - set.push_back(e2); - } - } - for(std::size_t m = 0; m < events2.size(); m++) { - const Kolab::Event &e2 = events2.at(m); - if (conflicts(event, e2)) { - set.push_back(e2); - } - } - if (set.size() > 1) { - ret.push_back(set); - } - } - return ret; -} +// std::vector< std::vector< Event > > getConflictingSets(const std::vector< Event > &events, const std::vector< Event > &events2) +// { +// std::vector< std::vector< Kolab::Event > > ret; +// for(std::size_t i = 0; i < events.size(); i++) { +// std::vector<Kolab::Event> set; +// const Kolab::Event &event = events.at(i); +// set.push_back(event); +// for(std::size_t q = i+1; q < events.size(); q++) { +// const Kolab::Event &e2 = events.at(q); +// if (conflicts(event, e2)) { +// set.push_back(e2); +// } +// } +// for(std::size_t m = 0; m < events2.size(); m++) { +// const Kolab::Event &e2 = events2.at(m); +// if (conflicts(event, e2)) { +// set.push_back(e2); +// } +// } +// if (set.size() > 1) { +// ret.push_back(set); +// } +// } +// return ret; +// } -std::vector<Kolab::cDateTime> timeInInterval(const Kolab::Event &e, const Kolab::cDateTime &start, const Kolab::cDateTime &end) -{ - KCalCore::Event::Ptr k = Kolab::Conversion::toKCalCore(e); - KCalCore::DateTimeList list = k->recurrence()->timesInInterval(Kolab::Conversion::toDate(start), Kolab::Conversion::toDate(end)); - std::vector<Kolab::cDateTime> dtList; - foreach(const KDateTime &dt, list) { - dtList.push_back(Kolab::Conversion::fromDate(dt)); - } - return dtList; -} +// std::vector<Kolab::cDateTime> timeInInterval(const Kolab::Event &e, const Kolab::cDateTime &start, const Kolab::cDateTime &end) +// { +// KCalCore::Event::Ptr k = Kolab::Conversion::toKCalCore(e); +// KCalCore::DateTimeList list = k->recurrence()->timesInInterval(Kolab::Conversion::toDate(start), Kolab::Conversion::toDate(end)); +// std::vector<Kolab::cDateTime> dtList; +// foreach(const QDateTime &dt, list) { +// dtList.push_back(Kolab::Conversion::fromDate(dt)); +// } +// return dtList; +// } Calendar::Calendar() -: mCalendar(new KCalCore::MemoryCalendar(Kolab::Conversion::getTimeSpec(true, std::string()))) //Always utc as it doesn't change anything anyways +: mCalendar(new KCalCore::MemoryCalendar(QTimeZone::utc())) //Always utc as it doesn't change anything anyways { } @@ -95,9 +97,9 @@ std::vector<Kolab::Event> Calendar::getEvents(const Kolab::cDateTime& start, const Kolab::cDateTime& end, bool sort) { - const KDateTime s = Kolab::Conversion::toDate(start); - const KDateTime e = Kolab::Conversion::toDate(end); - const KDateTime::Spec timeSpec = s.timeSpec(); + const QDateTime s = Kolab::Conversion::toDate(start); + const QDateTime e = Kolab::Conversion::toDate(end); + const QTimeZone timeSpec = s.timeZone(); KCalCore::Event::List list = mCalendar->events(s.date(), e.date(), timeSpec, true); if (sort) { list = mCalendar->sortEvents(list, KCalCore::EventSortStartDate, KCalCore::SortDirectionAscending); @@ -105,7 +107,7 @@ std::vector<Kolab::Event> eventlist; foreach (const KCalCore::Event::Ptr &event, list) { //We have to filter the list by time - if (event->dtEnd().compare(s) != KDateTime::Before && e.compare(event->dtStart()) != KDateTime::Before) { + if (event->dtEnd() >= s && event->dtStart() <= e) { eventlist.push_back(Kolab::Conversion::fromKCalCore(*event)); } } @@ -114,4 +116,4 @@ } //Namespace -} //Namespace \ No newline at end of file +} //Namespace
View file
libkolab-2.0.tar.gz/calendaring/calendaring.h -> libkolab-3.0.0.tar.gz/calendaring/calendaring.h
Changed
@@ -27,36 +27,11 @@ #include <kcalcore/event.h> #include <kcalcore/memorycalendar.h> -#include <boost/scoped_ptr.hpp> #include <kolabevent.h> +#include <QSharedPointer> namespace Kolab { namespace Calendaring { -/** - * Returns true if the events conflict (overlap) - * Start and end date/time is inclusive. - * - * Does not take recurrences into account. - */ -KOLAB_EXPORT bool conflicts(const Kolab::Event &, const Kolab::Event &); - -/** - * Returns sets of the events which are directly conflicting with each other. - * The same event may appear in multiple sets. - * Non-conflicting events are not returned. - * conflicts() is used for conflict detection. - * - * If the second list is given, each event from the first list is additionally checked against each event of the second set. - * Conflicts within the second list are not detected. - * - * The checked event from the first list comes always first in the returned set. - */ -KOLAB_EXPORT std::vector< std::vector<Kolab::Event> > getConflictingSets(const std::vector<Kolab::Event> &, const std::vector<Kolab::Event> & = std::vector<Kolab::Event>()); - -/** - * Returns the dates in which the event recurs within the specified timespan. - */ -KOLAB_EXPORT std::vector<Kolab::cDateTime> timeInInterval(const Kolab::Event &, const Kolab::cDateTime &start, const Kolab::cDateTime &end); /** * In-Memory Calendar Cache @@ -77,7 +52,7 @@ private: Calendar(const Calendar &); void operator=(const Calendar &); - boost::scoped_ptr<KCalCore::MemoryCalendar> mCalendar; + QSharedPointer<KCalCore::MemoryCalendar> mCalendar; }; }; //Namespace
View file
libkolab-2.0.tar.gz/calendaring/calendaring.i -> libkolab-3.0.0.tar.gz/calendaring/calendaring.i
Changed
@@ -13,7 +13,7 @@ %import "../shared.i" %rename(EventCal) Kolab::Calendaring::Event; -%rename(KolabCalendar) Kolab::Calendaring::Calendar; +/* %rename(KolabCalendar) Kolab::Calendaring::Calendar; */ -%include "../calendaring/calendaring.h" +/* %include "../calendaring/calendaring.h" */ %include "../calendaring/event.h"
View file
libkolab-2.0.tar.gz/calendaring/datetimeutils.cpp -> libkolab-3.0.0.tar.gz/calendaring/datetimeutils.cpp
Changed
@@ -18,14 +18,14 @@ #include "datetimeutils.h" #include <qdebug.h> -#include <ksystemtimezone.h> +#include <QTimeZone> #include "conversion/commonconversion.h" namespace Kolab { namespace DateTimeUtils { std::string getLocalTimezone() { - const QString tz = KSystemTimeZones::local().name(); + const QString tz = QTimeZone::systemTimeZoneId(); return tz.toStdString(); }
View file
libkolab-2.0.tar.gz/calendaring/event.cpp -> libkolab-3.0.0.tar.gz/calendaring/event.cpp
Changed
@@ -17,8 +17,9 @@ #include "event.h" -#include <icalendar/icalendar.h> -#include <kolabformat/kolabobject.h> + +#include <QDebug> + #include <conversion/kcalconversion.h> #include <conversion/commonconversion.h> @@ -26,6 +27,7 @@ #include <kolabformat.h> #include <kolabevent_p.h> + namespace Kolab { namespace Calendaring { @@ -61,73 +63,6 @@ return Kolab::writeEvent(*this); } -bool Event::fromMime(const std::string &input) -{ - KMime::Message::Ptr msg = KMime::Message::Ptr(new KMime::Message); - msg->setContent( KMime::CRLFtoLF(Kolab::Conversion::fromStdString(input).toUtf8()) ); - msg->parse(); - msg->content(KMime::ContentIndex()); - KolabObjectReader reader(msg); - if (reader.getType() != EventObject) { - std::cout << "not an event "; - return false; - } - const Kolab::Event &e = Kolab::Conversion::fromKCalCore(*reader.getEvent()); - Kolab::Event::operator=(e); - return true; -} - -std::string Event::toMime() const -{ - return std::string(QString(KolabObjectWriter::writeEvent(Kolab::Conversion::toKCalCore(*this))->encodedContent()).toUtf8().constData()); -} - - -bool Event::fromICal(const std::string &input) -{ - std::vector<Kolab::Event> list = fromICalEvents(input); - if (list.size() != 1) { - std::cout << "invalid number of events: " << list.size(); - return false; - } - Kolab::Event::operator=(list.at(0)); - return true; -} - -std::string Event::toICal() const -{ - std::vector<Kolab::Event> list; - list.push_back(*this); - return Kolab::toICal(list); -} - -bool Event::fromIMip(const std::string &input) -{ - std::vector<Kolab::Event> list = mITipHandler.fromIMip(input); - if (list.size() != 1) { - std::cout << "invalid number of events: " << list.size(); - return false; - } - Kolab::Event::operator=(list.at(0)); - return true; -} - -std::string Event::toIMip(ITipMethod method) const -{ - std::vector<Kolab::Event> list; - list.push_back(*this); - return mITipHandler.toIMip(*this, static_cast<ITipHandler::ITipMethod>(method), organizer().email()); -} - -Calendaring::Event::ITipMethod Event::getSchedulingMethod() const -{ - Q_ASSERT((int)iTIPPublish == (int)ITipHandler::iTIPPublish); - Q_ASSERT((int)iTIPNoMethod == (int)ITipHandler::iTIPNoMethod); - return static_cast<ITipMethod>(mITipHandler.method()); -} - - - bool contains(const Kolab::ContactReference &delegatorRef, const std::vector <Kolab::ContactReference > &list) { foreach (const Kolab::ContactReference &ref, list) { @@ -209,10 +144,12 @@ cDateTime Calendaring::Event::getNextOccurence(const cDateTime &date) { KCalCore::Event::Ptr event = Kolab::Conversion::toKCalCore(*this); + qWarning() << "Converted start " << event->dtStart() << Kolab::Conversion::toDate(date); if (!event->recurs()) { return cDateTime(); } - const KDateTime nextDate = event->recurrence()->getNextDateTime(Kolab::Conversion::toDate(date)); + const QDateTime nextDate = event->recurrence()->getNextDateTime(Kolab::Conversion::toDate(date)); + qWarning() << "Next date " << nextDate; return Kolab::Conversion::fromDate(nextDate); } @@ -220,7 +157,7 @@ cDateTime Calendaring::Event::getOccurenceEndDate(const cDateTime &startDate) { KCalCore::Event::Ptr event = Kolab::Conversion::toKCalCore(*this); - const KDateTime start = Kolab::Conversion::toDate(startDate); + const QDateTime start = Kolab::Conversion::toDate(startDate); return Kolab::Conversion::fromDate(event->endDateForStart(start)); } @@ -230,7 +167,7 @@ if (!event->recurs()) { return cDateTime(); } - const KDateTime endDate = event->recurrence()->endDateTime(); + const QDateTime endDate = event->recurrence()->endDateTime(); return Kolab::Conversion::fromDate(endDate); }
View file
libkolab-2.0.tar.gz/calendaring/event.h -> libkolab-3.0.0.tar.gz/calendaring/event.h
Changed
@@ -22,7 +22,6 @@ #ifndef SWIG #include "kolab_export.h" -#include <icalendar/icalendar.h> #else /* No export/import SWIG interface files */ #define KOLAB_EXPORT @@ -45,37 +44,6 @@ std::string write() const; - bool fromMime(const std::string &); - - /** - * Convert to kolab mime format. - */ - std::string toMime() const; - - enum ITipMethod { - iTIPPublish, /**< Event, to-do, journal or freebusy posting */ - iTIPRequest, /**< Event, to-do or freebusy scheduling request */ - iTIPReply, /**< Event, to-do or freebusy reply to request */ - iTIPAdd, /**< Event, to-do or journal additional property request */ - iTIPCancel, /**< Event, to-do or journal cancellation notice */ - iTIPRefresh, /**< Event or to-do description update request */ - iTIPCounter, /**< Event or to-do submit counter proposal */ - iTIPDeclineCounter,/**< Event or to-do decline a counter proposal */ - iTIPNoMethod /**< No method */ - }; - - bool fromICal(const std::string &); - std::string toICal() const; - - bool fromIMip(const std::string &); - std::string toIMip(ITipMethod method) const; - - /** - * Returns the scheduling method from the last fromIMip call - */ - ITipMethod getSchedulingMethod() const; - - /** * Updates the delegators and delegatees of the event. * @@ -113,7 +81,6 @@ private: Kolab::Attendee *getAttendee(const ContactReference &); - Kolab::ITipHandler mITipHandler; }; };
View file
libkolab-2.0.tar.gz/conversion/CMakeLists.txt -> libkolab-3.0.0.tar.gz/conversion/CMakeLists.txt
Changed
@@ -1,8 +1,7 @@ set (CONVERSION_SRCS - ${CMAKE_CURRENT_SOURCE_DIR}/kcalconversion.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/kabcconversion.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/kcalconversion.cpp ${CMAKE_CURRENT_SOURCE_DIR}/commonconversion.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/kolabconversion.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/timezoneconverter.cpp PARENT_SCOPE) + ${CMAKE_CURRENT_SOURCE_DIR}/timezoneconverter.cpp + PARENT_SCOPE)
View file
libkolab-2.0.tar.gz/conversion/commonconversion.cpp -> libkolab-3.0.0.tar.gz/conversion/commonconversion.cpp
Changed
@@ -20,65 +20,79 @@ #include <kolabformat/errorhandler.h> #include <iostream> -#include <ksystemtimezone.h> -#include <kdebug.h> +// #include <KTimeZone> +// #include <KSystemTimeZones> #include <QUrl> +#include <QTimeZone> namespace Kolab { namespace Conversion { -KDateTime::Spec getTimeSpec(bool isUtc, const std::string& timezone) +QTimeZone getTimeSpec(const std::string& timezone) { - if (isUtc) { //UTC - return KDateTime::Spec(KDateTime::UTC); - } if (timezone.empty()) { //Floating - return KDateTime::Spec(KDateTime::ClockTime); + return QTimeZone{}; + // return QDateTime::Spec(Qt::LocalTime); } - //Timezone //Convert non-olson timezones if necessary const QString normalizedTz = TimezoneConverter::normalizeTimezone(QString::fromStdString(timezone)); - KTimeZone tz = KSystemTimeZones::zone(normalizedTz); //Needs ktimezoned (timezone daemon running) http://api.kde.org/4.x-api/kdelibs-apidocs/kdecore/html/classKSystemTimeZones.html - if (!tz.isValid()) { + if (!QTimeZone::isTimeZoneIdAvailable(normalizedTz.toLatin1())) { Warning() << "invalid timezone: " << QString::fromStdString(timezone) << ", assuming floating time"; - if (!KSystemTimeZones::isTimeZoneDaemonAvailable()) { - Error() << "ktimezoned is not available and required for timezone interpretation"; - } - return KDateTime::Spec(KDateTime::ClockTime); + // return QDateTime::Spec(Qt::LocalTime); + return QTimeZone{}; } - return KDateTime::Spec(tz); + //FIXME convert this to a proper KTimeZone + + return QTimeZone(normalizedTz.toLatin1()); } -KDateTime toDate(const Kolab::cDateTime &dt) +QDateTime toDate(const Kolab::cDateTime &dt) { - KDateTime date; if (!dt.isValid()) { //We rely on this codepath, so it's not an error // qDebug() << "invalid datetime converted"; - return KDateTime(); + return QDateTime(); } if (dt.isDateOnly()) { //Date only - date.setDateOnly(true); - date.setDate(QDate(dt.year(), dt.month(), dt.day())); - date.setTimeSpec(KDateTime::Spec(KDateTime::ClockTime)); + //FIXME + // date.setDateOnly(true); + return QDateTime(QDate(dt.year(), dt.month(), dt.day())); + // date.setTimeSpec(Qt::LocalTime); + } + + QDateTime date; + date.setDate(QDate(dt.year(), dt.month(), dt.day())); + date.setTime(QTime(dt.hour(), dt.minute(), dt.second())); + if (dt.isUTC()) { + qWarning() << "Converting utc"; + date.setTimeSpec(Qt::UTC); + // date.setTimeZone(QTimeZone::utc()); + } else if (!dt.timezone().empty()) { + qWarning() << "Converting timezone"; + date.setTimeZone(getTimeSpec(dt.timezone())); } else { - date.setDate(QDate(dt.year(), dt.month(), dt.day())); - date.setTime(QTime(dt.hour(), dt.minute(), dt.second())); - date.setTimeSpec(getTimeSpec(dt.isUTC(), dt.timezone())); + qWarning() << "Converting localtime"; + date.setTimeSpec(Qt::LocalTime); + //We apparently can't have what used to be called floating time, so set the timezone to utc. + // date.setTimeZone(QTimeZone::utc()); + qWarning() << "Converting localtime" << date.timeZone(); } - Q_ASSERT(date.timeSpec().isValid()); + // Q_ASSERT(date.timeSpec().isValid()); Q_ASSERT(date.isValid()); return date; } -cDateTime fromDate(const KDateTime &dt) +cDateTime fromDate(const QDateTime &dt) { + qWarning() << dt; if (!dt.isValid()) { // qDebug() << "invalid datetime converted"; return cDateTime(); } + qWarning() << "From " << dt; cDateTime date; - if (dt.isDateOnly()) { //Date only + if (!dt.time().isValid()) { //Date only + qWarning() << "invalid datetime"; const QDate &d = dt.date(); date.setDate(d.year(), d.month(), d.day()); } else { @@ -86,27 +100,34 @@ date.setDate(d.year(), d.month(), d.day()); const QTime &t = dt.time(); date.setTime(t.hour(), t.minute(), t.second()); - if (dt.timeType() == KDateTime::UTC) { //UTC + if (dt.timeSpec() == Qt::UTC) { //UTC date.setUTC(true); - } else if (dt.timeType() == KDateTime::OffsetFromUTC) { - const KDateTime utcDate = dt.toUtc(); + qWarning() << "From utc"; + } else if (dt.timeSpec() == Qt::OffsetFromUTC) { + const QDateTime utcDate = dt.toUTC(); const QDate &d = utcDate.date(); date.setDate(d.year(), d.month(), d.day()); const QTime &t = utcDate.time(); date.setTime(t.hour(), t.minute(), t.second()); date.setUTC(true); - } else if (dt.timeType() == KDateTime::TimeZone) { //Timezone - //TODO handle local timezone? - //Convert non-olson timezones if necessary - const QString timezone = TimezoneConverter::normalizeTimezone(dt.timeZone().name()); - if (!timezone.isEmpty()) { - date.setTimezone(toStdString(timezone)); - } else { - Warning() << "invalid timezone: " << dt.timeZone().name() << ", assuming floating time"; - return date; - } - } else if (dt.timeType() != KDateTime::ClockTime) { - Error() << "invalid timespec, assuming floating time. Type: " << dt.timeType() << "dt: " << dt.toString(); + } else if (dt.timeSpec() == Qt::TimeZone) { //Timezone + qWarning() << "From timezone"; + //Not actually a timezone + // if (dt.timeZone().id().toLower() == "utc") { + // date.setUTC(true); + // } else { + //Convert non-olson timezones if necessary + const QString timezone = TimezoneConverter::normalizeTimezone(dt.timeZone().id()); + if (!timezone.isEmpty()) { + date.setTimezone(toStdString(timezone)); + } else { + Warning() << "invalid timezone: " << dt.timeZone().id() << ", assuming floating time"; + return date; + } + // } + } else if (dt.timeSpec() != Qt::LocalTime) { + qWarning() << "From localtime"; + Error() << "invalid timespec, assuming floating time. Type: " << dt.timeSpec() << "dt: " << dt.toString(); return date; } } @@ -146,27 +167,37 @@ std::string fromMailto(const QUrl &mailtoUri, std::string &name) { - const std::string &decoded = toStdString(mailtoUri.toString()); + const QPair<std::string, std::string> pair = fromMailto(toStdString(mailtoUri.toString())); + name = pair.second; + return pair.first; +} + +QPair<std::string, std::string> fromMailto(const std::string &mailto) +{ + qWarning() << "fromMailto" << mailto; + const std::string &decoded = toStdString(QUrl::fromPercentEncoding(QByteArray(mailto.c_str()))); + + qWarning() << "fromMailto decoded" << decoded; if (decoded.substr(0, 7).compare("mailto:")) { - WARNING("no mailto address"); - std::cout << decoded << std::endl; - return decoded; + // WARNING("no mailto address"); + // std::cout << decoded << std::endl; + return qMakePair(decoded, std::string()); } std::size_t begin = decoded.find('<',7); if (begin == std::string::npos) { WARNING("no mailto address"); std::cout << decoded << std::endl; - return decoded; + return qMakePair(decoded, std::string()); } std::size_t end = decoded.find('>', begin); if (end == std::string::npos) { WARNING("no mailto address"); std::cout << decoded << std::endl; - return decoded; + return qMakePair(decoded, std::string()); } - name = decoded.substr(7, begin-7); - const std::string &email = decoded.substr(begin+1, end-begin-1); - return email; + const std::string name = decoded.substr(7, begin-7); + const std::string email = decoded.substr(begin+1, end-begin-1);
View file
libkolab-2.0.tar.gz/conversion/commonconversion.h -> libkolab-3.0.0.tar.gz/conversion/commonconversion.h
Changed
@@ -20,24 +20,28 @@ #include "kolab_export.h" -#include <kdatetime.h> #include <QStringList> +#include <QDateTime> +#include <QUrl> #include <kolabcontainers.h> namespace Kolab { namespace Conversion { - KOLAB_EXPORT KDateTime toDate(const Kolab::cDateTime &dt); - KOLAB_EXPORT cDateTime fromDate(const KDateTime &dt); + //FIXME handle somehow? + KOLAB_EXPORT QDateTime toDate(const Kolab::cDateTime &dt); + // KOLAB_EXPORT QDateTime toDateTime(const Kolab::cDateTime &dt); + KOLAB_EXPORT cDateTime fromDate(const QDateTime &dt); QStringList toStringList(const std::vector<std::string> &l); std::vector<std::string> fromStringList(const QStringList &l); /** * Returns a UTC, Floating Time or Timezone */ - KDateTime::Spec getTimeSpec(bool isUtc, const std::string &timezone); + // QDateTime::Spec getTimeSpec(bool isUtc, const std::string &timezone); QUrl toMailto(const std::string &email, const std::string &name = std::string()); std::string fromMailto(const QUrl &mailtoUri, std::string &name); + QPair<std::string, std::string> fromMailto(const std::string &mailto); inline std::string toStdString(const QString &s) { @@ -52,4 +56,4 @@ }; }; -#endif \ No newline at end of file +#endif
View file
libkolab-2.0.tar.gz/conversion/kcalconversion.cpp -> libkolab-3.0.0.tar.gz/conversion/kcalconversion.cpp
Changed
@@ -22,6 +22,7 @@ #include <QtCore/QVector> #include <QtCore/QDebug> #include <QUrl> +#include <QDate> #include <vector> #include "kolabformat/errorhandler.h" @@ -273,53 +274,65 @@ i.setRevision(e.sequence()); i.setSecrecy(toSecrecy(e.classification())); i.setCategories(toStringList(e.categories())); - + if (e.start().isValid()) { + + qWarning() << "Setting start" << toDate(e.start()); i.setDtStart(toDate(e.start())); + if (e.start().isDateOnly()) { + i.setAllDay(true); + } } i.setSummary(fromStdString(e.summary())); //TODO detect richtext i.setDescription(fromStdString(e.description())); //TODO detect richtext i.setStatus(toStatus(e.status())); foreach (const Kolab::Attendee a, e.attendees()) { + //FIXME percent encoding? /* * KCalCore always sets a UID if empty, but that's just a pointer, and not the uid of a real contact. * Since that means the semantics of the two are different, we have to store the kolab uid as a custom property. */ - KCalCore::Attendee::Ptr attendee = KCalCore::Attendee::Ptr(new KCalCore::Attendee(fromStdString(a.contact().name()), - fromStdString(a.contact().email()), - a.rsvp(), - toPartStat(a.partStat()), - toRole(a.role()) )); + // QUrl::fromPercentEncoding( + qWarning() << "Name " << fromStdString(a.contact().name()) << " EMail " << fromStdString(a.contact().email()); + KCalCore::Attendee attendee(fromStdString(a.contact().name()), + fromStdString(a.contact().email()), + a.rsvp(), + toPartStat(a.partStat()), + toRole(a.role()) ); if (!a.contact().uid().empty()) { //TODO Identify contact from addressbook based on uid - attendee->customProperties().setNonKDECustomProperty(CUSTOM_KOLAB_CONTACT_UUID, fromStdString(a.contact().uid())); + attendee.customProperties().setNonKDECustomProperty(CUSTOM_KOLAB_CONTACT_UUID, fromStdString(a.contact().uid())); } if (!a.delegatedTo().empty()) { if (a.delegatedTo().size() > 1) { WARNING("multiple delegatees are not supported"); } - attendee->setDelegate(toMailto(a.delegatedTo().front().email(), a.delegatedTo().front().name()).toString()); + + qWarning() << "delegated from " << toMailto(a.delegatedTo().front().email(), a.delegatedTo().front().name()).toString(); + attendee.setDelegate(toMailto(a.delegatedTo().front().email(), a.delegatedTo().front().name()).toString()); } if (!a.delegatedFrom().empty()) { if (a.delegatedFrom().size() > 1) { WARNING("multiple delegators are not supported"); } - attendee->setDelegator(toMailto(a.delegatedFrom().front().email(), a.delegatedFrom().front().name()).toString()); + qWarning() << "delegator from " << toMailto(a.delegatedFrom().front().email(), a.delegatedFrom().front().name()).toString(); + attendee.setDelegator(toMailto(a.delegatedFrom().front().email(), a.delegatedFrom().front().name()).toString()); } - if (!a.cutype() != CutypeIndividual) { - attendee->customProperties().setNonKDECustomProperty(CUSTOM_KOLAB_CONTACT_CUTYPE, QString::number(a.cutype())); + if (a.cutype() != CutypeIndividual) { + attendee.customProperties().setNonKDECustomProperty(CUSTOM_KOLAB_CONTACT_CUTYPE, QString::number(a.cutype())); } + // qWarning() << attendee; i.addAttendee(attendee); } foreach (const Kolab::Attachment a, e.attachments()) { - KCalCore::Attachment::Ptr ptr; + KCalCore::Attachment ptr; if (!a.uri().empty()) { - ptr = KCalCore::Attachment::Ptr(new KCalCore::Attachment(fromStdString(a.uri()), fromStdString(a.mimetype()))); + ptr = KCalCore::Attachment(fromStdString(a.uri()), fromStdString(a.mimetype())); } else { - ptr = KCalCore::Attachment::Ptr(new KCalCore::Attachment(QByteArray::fromRawData(a.data().c_str(), a.data().size()), fromStdString(a.mimetype()))); + ptr = KCalCore::Attachment(QByteArray::fromRawData(a.data().c_str(), a.data().size()).toBase64(), fromStdString(a.mimetype())); } if (!a.label().empty()) { - ptr->setLabel(fromStdString(a.label())); + ptr.setLabel(fromStdString(a.label())); } i.addAttachment(ptr); } @@ -352,23 +365,25 @@ i.setDescription(toStdString(e.description())); i.setStatus(fromStatus(e.status())); std::vector<Kolab::Attendee> attendees; - foreach (const KCalCore::Attendee::Ptr ptr, e.attendees()) { - const QString &uid = ptr->customProperties().nonKDECustomProperty(CUSTOM_KOLAB_CONTACT_UUID); - Kolab::Attendee a(Kolab::ContactReference(toStdString(ptr->email()), toStdString(ptr->name()), toStdString(uid))); - a.setRSVP(ptr->RSVP()); - a.setPartStat(fromPartStat(ptr->status())); - a.setRole(fromRole(ptr->role())); - if (!ptr->delegate().isEmpty()) { + foreach (const KCalCore::Attendee attendee, e.attendees()) { + const QString &uid = attendee.customProperties().nonKDECustomProperty(CUSTOM_KOLAB_CONTACT_UUID); + Kolab::Attendee a(Kolab::ContactReference(toStdString(attendee.email()), toStdString(attendee.name()), toStdString(uid))); + a.setRSVP(attendee.RSVP()); + a.setPartStat(fromPartStat(attendee.status())); + a.setRole(fromRole(attendee.role())); + if (!attendee.delegate().isEmpty()) { std::string name; - const std::string &email = fromMailto(ptr->delegate(), name); + const std::string &email = fromMailto(QUrl(attendee.delegate()), name); + qWarning() << "delegate Email " << email << " EMail " << name << attendee.delegate(); a.setDelegatedTo(std::vector<Kolab::ContactReference>() << Kolab::ContactReference(email, name)); } - if (!ptr->delegator().isEmpty()) { + if (!attendee.delegator().isEmpty()) { std::string name; - const std::string &email = fromMailto(ptr->delegator(), name); + const std::string &email = fromMailto(QUrl(attendee.delegator()), name); + qWarning() << "delegated from " << email << " EMail " << name << attendee.delegator(); a.setDelegatedFrom(std::vector<Kolab::ContactReference>() << Kolab::ContactReference(email, name)); } - const QString &cutype = ptr->customProperties().nonKDECustomProperty(CUSTOM_KOLAB_CONTACT_CUTYPE); + const QString &cutype = attendee.customProperties().nonKDECustomProperty(CUSTOM_KOLAB_CONTACT_CUTYPE); if (!cutype.isEmpty()) { a.setCutype(static_cast<Kolab::Cutype>(cutype.toInt())); } @@ -377,14 +392,14 @@ } i.setAttendees(attendees); std::vector<Kolab::Attachment> attachments; - foreach (const KCalCore::Attachment::Ptr &ptr, e.attachments()) { + foreach (const KCalCore::Attachment &ptr, e.attachments()) { Kolab::Attachment a; - if (ptr->isUri()) { - a.setUri(toStdString(ptr->uri()), toStdString(ptr->mimeType())); + if (ptr.isUri()) { + a.setUri(toStdString(ptr.uri()), toStdString(ptr.mimeType())); } else { - a.setData(std::string(ptr->decodedData().data(), ptr->decodedData().size()), toStdString(ptr->mimeType())); + a.setData(std::string(ptr.decodedData().data(), ptr.decodedData().size()), toStdString(ptr.mimeType())); } - a.setLabel(toStdString(ptr->label())); + a.setLabel(toStdString(ptr.label())); attachments.push_back(a); } i.setAttachments(attachments); @@ -529,6 +544,7 @@ if (rrule.end().isValid()) { rec->setEndDateTime(toDate(rrule.end())); //TODO date/datetime setEndDate(). With date-only the start date has to be taken into account. + qWarning() << "Set end date time" << toDate(rrule.end()); } else { rec->setDuration(rrule.count()); } @@ -563,19 +579,17 @@ } } foreach (const Kolab::cDateTime &dt, event.recurrenceDates()) { - const KDateTime &date = toDate(dt); - if (date.isDateOnly()) { - e.recurrence()->addRDate(date.date()); + if (dt.isDateOnly()) { + e.recurrence()->addRDate(toDate(dt).date()); } else { - e.recurrence()->addRDateTime(date); + e.recurrence()->addRDateTime(toDate(dt)); } } foreach (const Kolab::cDateTime &dt, event.exceptionDates()) { - const KDateTime &date = toDate(dt); - if (date.isDateOnly()) { - e.recurrence()->addExDate(date.date()); + if (dt.isDateOnly()) { + e.recurrence()->addExDate(toDate(dt).date()); } else { - e.recurrence()->addExDateTime(date); + e.recurrence()->addExDateTime(toDate(dt)); } } @@ -625,20 +639,20 @@ i.setRecurrenceRule(rrule); std::vector<Kolab::cDateTime> rdates; - foreach (const KDateTime &dt, rec->rDateTimes()) { + foreach (const QDateTime &dt, rec->rDateTimes()) { rdates.push_back(fromDate(dt)); } foreach (const QDate &dt, rec->rDates()) { - rdates.push_back(fromDate(KDateTime(dt))); + rdates.push_back(fromDate(QDateTime(dt))); } i.setRecurrenceDates(rdates); std::vector<Kolab::cDateTime> exdates; - foreach (const KDateTime &dt, rec->exDateTimes()) { + foreach (const QDateTime &dt, rec->exDateTimes()) { exdates.push_back(fromDate(dt)); } foreach (const QDate &dt, rec->exDates()) {
View file
libkolab-2.0.tar.gz/conversion/kcalconversion.h -> libkolab-3.0.0.tar.gz/conversion/kcalconversion.h
Changed
@@ -43,8 +43,8 @@ KOLAB_EXPORT KCalCore::Journal::Ptr toKCalCore(const Kolab::Journal &); KOLAB_EXPORT Kolab::Journal fromKCalCore(const KCalCore::Journal &); - KOLAB_EXPORT KDateTime toDate(const Kolab::cDateTime &dt); - KOLAB_EXPORT cDateTime fromDate(const KDateTime &dt); + KOLAB_EXPORT QDateTime toDate(const Kolab::cDateTime &dt); + KOLAB_EXPORT cDateTime fromDate(const QDateTime &dt); }; };
View file
libkolab-2.0.tar.gz/conversion/timezoneconverter.cpp -> libkolab-3.0.0.tar.gz/conversion/timezoneconverter.cpp
Changed
@@ -16,20 +16,19 @@ */ #include "timezoneconverter.h" -#include <ktimezone.h> -#include <ksystemtimezone.h> -#include <kdebug.h> #include <QRegExp> #include <QStringList> #include "kolabformat/errorhandler.h" +#include <QTimeZone> QString TimezoneConverter::normalizeTimezone(const QString& tz) { - KTimeZone timezone = KSystemTimeZones::zone(tz); //Needs ktimezoned (timezone daemon running) http://api.kde.org/4.x-api/kdelibs-apidocs/kdecore/html/classKSystemTimeZones.html - if (timezone.isValid()) { + if (QTimeZone::isTimeZoneIdAvailable(tz.toLatin1())) { return tz; - } else if (!KSystemTimeZones::isTimeZoneDaemonAvailable()) { - Error() << "ktimezoned is not available and required for timezone interpretation"; + } + auto normalizedId = QTimeZone::windowsIdToDefaultIanaId(tz.toLatin1()); + if (!normalizedId.isEmpty()) { + return normalizedId; } //We're dealing with an invalid or unknown timezone, try to parse it QString guessedTimezone = fromCityName(tz); @@ -39,15 +38,6 @@ if (guessedTimezone.isEmpty()) { guessedTimezone = fromGMTOffsetTimezone(tz); } -// if (guessedTimezone.isEmpty()) { -// //slower but also finds outdated zones -// timezone = KSystemTimeZones::readZone(tz); -// if (timezone.isValid()) { -// //This thinks all kinds of shit is valid, including /etc/localtime. Let's verify again. -// qDebug() << "found " << tz; -// return tz; -// } -// } Debug() << "Guessed timezone and found: " << guessedTimezone; return guessedTimezone; } @@ -60,14 +50,12 @@ QString TimezoneConverter::fromCityName(const QString& tz) { - const KTimeZones::ZoneMap zones = KSystemTimeZones::zones(); - KTimeZones::ZoneMap::const_iterator it = zones.constBegin(); + const auto zones = QTimeZone::availableTimeZoneIds(); QHash<QString, QString> countryMap; - for(;it != zones.constEnd(); it++) { - const QString cityName = it.key().split('/').last(); -// kDebug() << it.key() << it.value().name() << cityName; + for (auto zone : zones) { + const QString cityName = zone.split('/').last(); Q_ASSERT(!countryMap.contains(cityName)); - countryMap.insert(cityName, it.key()); + countryMap.insert(cityName, zone); } QRegExp locationFinder("\\b([a-zA-Z])+\\b", Qt::CaseSensitive, QRegExp::RegExp2); @@ -78,9 +66,9 @@ ++pos; } const QString location = locationFinder.capturedTexts().first(); -// kDebug() << "location " << location; + qDebug() << "location " << location; if (countryMap.contains(location)) { -// kDebug() << "found match " << countryMap.value(location); + qDebug() << "found match " << countryMap.value(location); return countryMap.value(location); } }
View file
libkolab-2.0.tar.gz/kolab_export.h -> libkolab-3.0.0.tar.gz/kolab_export.h
Changed
@@ -25,6 +25,7 @@ //Workaround for qt not defining Q_DECL_IMPORT as it should #if defined(Q_OS_LINUX) +# undef Q_DECL_IMPORT # define Q_DECL_IMPORT __attribute__((visibility("default"))) #endif
View file
libkolab-2.0.tar.gz/kolabformat/errorhandler.h -> libkolab-3.0.0.tar.gz/kolabformat/errorhandler.h
Changed
@@ -19,7 +19,7 @@ #ifndef ERRORHANDLER_H #define ERRORHANDLER_H -#include <kolab_export.h> +#include "kolab_export.h" #include <QString> #include <QList>
View file
libkolab-2.0.tar.gz/kolabformat/formathelpers.cpp -> libkolab-3.0.0.tar.gz/kolabformat/formathelpers.cpp
Changed
@@ -1,5 +1,4 @@ #include "formathelpers.h" -#include <klocalizedstring.h> #include "kolabdefinitions.h" namespace Kolab { @@ -9,14 +8,14 @@ const char *label; } folderTypeData[] = { { KOLAB_FOLDER_TYPE_MAIL, "" }, - { KOLAB_FOLDER_TYPE_CONTACT, I18N_NOOP( "Contacts" ) }, - { KOLAB_FOLDER_TYPE_EVENT, I18N_NOOP( "Calendar" ) }, - { KOLAB_FOLDER_TYPE_TASK, I18N_NOOP( "Tasks" ) }, - { KOLAB_FOLDER_TYPE_JOURNAL, I18N_NOOP( "Journal" ) }, - { KOLAB_FOLDER_TYPE_NOTE, I18N_NOOP( "Notes" ) }, - { KOLAB_FOLDER_TYPE_CONFIGURATION, I18N_NOOP( "Configuration" ) }, - { KOLAB_FOLDER_TYPE_FREEBUSY, I18N_NOOP( "Freebusy" ) }, - { KOLAB_FOLDER_TYPE_FILE, I18N_NOOP( "Files" ) } + { KOLAB_FOLDER_TYPE_CONTACT, "Contacts" }, + { KOLAB_FOLDER_TYPE_EVENT, "Calendar" }, + { KOLAB_FOLDER_TYPE_TASK, "Tasks" }, + { KOLAB_FOLDER_TYPE_JOURNAL, "Journal" }, + { KOLAB_FOLDER_TYPE_NOTE, "Notes" }, + { KOLAB_FOLDER_TYPE_CONFIGURATION, "Configuration" }, + { KOLAB_FOLDER_TYPE_FREEBUSY, "Freebusy" }, + { KOLAB_FOLDER_TYPE_FILE, "Files" } }; static const int numFolderTypeData = sizeof folderTypeData / sizeof *folderTypeData; @@ -78,8 +77,7 @@ FolderType guessFolderTypeFromName(const std::string& name) { for ( int i = 0; i < numFolderTypeData; ++i ) { - if ( name == i18n( folderTypeData[ i ].label ).toStdString() || - name == folderTypeData[ i ].label ) { + if ( name == folderTypeData[ i ].label ) { return static_cast<FolderType>( i ); } } @@ -89,7 +87,7 @@ std::string nameForFolderType(FolderType type) { Q_ASSERT( type >= 0 && type < LastType ); - return i18n( folderTypeData[ type ].label ).toStdString(); + return {folderTypeData[ type ].label}; } }
View file
libkolab-2.0.tar.gz/kolabformat/kolabobject.i -> libkolab-3.0.0.tar.gz/kolabformat/kolabobject.i
Changed
@@ -4,7 +4,6 @@ #include "../kolabformat/xmlobject.h" #include "../kolabformat/kolabdefinitions.h" - #include "../kolabformat/mimeobject.h" %} %include "std_string.i" @@ -15,4 +14,3 @@ %include "../kolabformat/xmlobject.h" %include "../kolabformat/kolabdefinitions.h" -%include "../kolabformat/mimeobject.h"
View file
libkolab-2.0.tar.gz/kolabformat/xmlobject.cpp -> libkolab-3.0.0.tar.gz/kolabformat/xmlobject.cpp
Changed
@@ -16,12 +16,11 @@ */ #include "xmlobject.h" -#include "v2helpers.h" -#include "kolabformatV2/event.h" -#include "conversion/kcalconversion.h" -#include "conversion/kolabconversion.h" -#include "conversion/commonconversion.h" -#include "conversion/kabcconversion.h" +// #include "conversion/kcalconversion.h" +// #include "conversion/kolabconversion.h" +// #include "conversion/commonconversion.h" +// #include "conversion/kabcconversion.h" +#include "kolabformat/errorhandler.h" #include <QUuid> namespace Kolab { @@ -41,8 +40,8 @@ { return mWrittenUID; } - -std::vector< std::string > XMLObject::getAttachments() const + +std::vector<std::string> XMLObject::getAttachments() const { return mAttachments; } @@ -51,98 +50,56 @@ { mWrittenUID.clear(); if (version == KolabV2) { - const KCalCore::Event::Ptr i = Conversion::toKCalCore(event); - if (!i) { - Critical() << "invalid incidence"; - return std::string(); - } - if (i->uid().isEmpty()) { - i->setUid(createUuid()); - } - mWrittenUID = Conversion::toStdString(i->uid()); - //The timezone is used for created and last modified dates - const QString &xml = KolabV2::Event::eventToXML(i, QLatin1String("UTC")); - return Conversion::toStdString(xml); + Critical() << "KolabV2 is not supported."; + return {}; } const std::string result = Kolab::writeEvent(event, productId); mWrittenUID = Kolab::getSerializedUID(); + ErrorHandler::handleLibkolabxmlErrors(); return result; } Event XMLObject::readEvent(const std::string& s, Version version) { if (version == KolabV2) { - QStringList attachments; - const KCalCore::Event::Ptr event = Kolab::fromXML<KCalCore::Event::Ptr, KolabV2::Event>(QString::fromUtf8(s.c_str()).toUtf8(), attachments); - if (!event || Kolab::ErrorHandler::errorOccured()) { - Critical() << "failed to read xml"; - return Event(); - } - mAttachments.clear(); - foreach (const QString &attachment, attachments) { - mAttachments.push_back(Conversion::toStdString(attachment)); - } - return Conversion::fromKCalCore(*event); + Critical() << "KolabV2 is not supported."; + return {}; } - return Kolab::readEvent(s, false); + const Kolab::Event event = Kolab::readEvent(s, false); + ErrorHandler::handleLibkolabxmlErrors(); + return event; } std::string XMLObject::writeTodo(const Todo &event, Version version, const std::string& productId) { mWrittenUID.clear(); if (version == KolabV2) { - const KCalCore::Todo::Ptr i = Conversion::toKCalCore(event); - if (!i) { - Critical() << "invalid incidence"; - return std::string(); - } - if (i->uid().isEmpty()) { - i->setUid(createUuid()); - } - mWrittenUID = Conversion::toStdString(i->uid()); - //The timezone is used for created and last modified dates - const QString &xml = KolabV2::Task::taskToXML(i, QLatin1String("UTC")); - return Conversion::toStdString(xml); + Critical() << "KolabV2 is not supported."; + return {}; } const std::string result = Kolab::writeTodo(event, productId); mWrittenUID = Kolab::getSerializedUID(); + ErrorHandler::handleLibkolabxmlErrors(); return result; } Todo XMLObject::readTodo(const std::string& s, Version version) { if (version == KolabV2) { - QStringList attachments; - const KCalCore::Todo::Ptr event = Kolab::fromXML<KCalCore::Todo::Ptr, KolabV2::Task>(QString::fromUtf8(s.c_str()).toUtf8(), attachments); - if (!event || Kolab::ErrorHandler::errorOccured()) { - Error() << "failed to read xml"; - return Todo(); - } - mAttachments.clear(); - foreach (const QString &attachment, attachments) { - mAttachments.push_back(Conversion::toStdString(attachment)); - } - return Conversion::fromKCalCore(*event); + Critical() << "KolabV2 is not supported."; + return {}; } - return Kolab::readTodo(s, false); + const Kolab::Todo todo = Kolab::readTodo(s, false); + ErrorHandler::handleLibkolabxmlErrors(); + return todo; } std::string XMLObject::writeJournal(const Journal &event, Version version, const std::string& productId) { mWrittenUID.clear(); if (version == KolabV2) { - const KCalCore::Journal::Ptr i = Conversion::toKCalCore(event); - if (!i) { - Critical() << "invalid journal"; - return std::string(); - } - if (i->uid().isEmpty()) { - i->setUid(createUuid()); - } - mWrittenUID = Conversion::toStdString(i->uid()); - //The timezone is used for created and last modified dates - const QString &xml = KolabV2::Journal::journalToXML(i, QLatin1String("UTC")); - return Conversion::toStdString(xml); + Critical() << "KolabV2 is not supported."; + return {}; } const std::string result = Kolab::writeJournal(event, productId); mWrittenUID = Kolab::getSerializedUID(); @@ -152,19 +109,12 @@ Journal XMLObject::readJournal(const std::string& s, Version version) { if (version == KolabV2) { - QStringList attachments; - const KCalCore::Journal::Ptr event = Kolab::fromXML<KCalCore::Journal::Ptr, KolabV2::Journal>(QString::fromUtf8(s.c_str()).toUtf8(), attachments); - if (!event || Kolab::ErrorHandler::errorOccured()) { - Critical() << "failed to read xml"; - return Journal(); - } - mAttachments.clear(); - foreach (const QString &attachment, attachments) { - mAttachments.push_back(Conversion::toStdString(attachment)); - } - return Conversion::fromKCalCore(*event); + Critical() << "KolabV2 is not supported."; + return {}; } - return Kolab::readJournal(s, false); + const Kolab::Journal journal = Kolab::readJournal(s, false); + ErrorHandler::handleLibkolabxmlErrors(); + return journal; } std::string XMLObject::writeFreebusy(const Freebusy &event, Version version, const std::string& productId) @@ -172,7 +122,7 @@ mWrittenUID.clear(); if (version != KolabV3) { Critical() << "only v3 implementation available"; - return std::string(); + return {}; } const std::string result = Kolab::writeFreebusy(event, productId); mWrittenUID = Kolab::getSerializedUID(); @@ -205,114 +155,85 @@ Contact XMLObject::readContact(const std::string& s, Version version) { - if (version == KolabV2) { - const QByteArray xmlData(s.c_str(), s.size()); - QString pictureAttachmentName; - QString logoAttachmentName; - QString soundAttachmentName; - const KABC::Addressee addressee = addresseeFromKolab(xmlData, pictureAttachmentName, logoAttachmentName, soundAttachmentName); - mPictureAttachmentName = Conversion::toStdString(pictureAttachmentName); - mLogoAttachmentName = Conversion::toStdString(logoAttachmentName); - mSoundAttachmentName = Conversion::toStdString(soundAttachmentName); - return Conversion::fromKABC(addressee); + if (version == KolabV2) { + Critical() << "KolabV2 is not supported."; + return {}; } - return Kolab::readContact(s, false); + const Kolab::Contact contact = Kolab::readContact(s, false);
View file
libkolab-2.0.tar.gz/kolabformat/xmlobject.h -> libkolab-3.0.0.tar.gz/kolabformat/xmlobject.h
Changed
@@ -26,6 +26,7 @@ #endif #include <kolabformat.h> +#include <string> #include "kolabdefinitions.h"
View file
libkolab-2.0.tar.gz/mime/mimeutils.cpp -> libkolab-3.0.0.tar.gz/mime/mimeutils.cpp
Changed
@@ -19,10 +19,10 @@ #include <quuid.h> #include <QtCore/qfile.h> #include <qdom.h> -#include <kdebug.h> -#include <kabc/addressee.h> +// #include <kdatetime.h> #include "kolabformat/kolabdefinitions.h" #include "kolabformat/errorhandler.h" +#include <kolabformat.h> #include "libkolab-version.h" namespace Kolab { @@ -65,7 +65,7 @@ } Q_ASSERT(!data->contents().isEmpty()); Q_FOREACH(KMime::Content *c, data->contents()) { -// kDebug() << "searching: " << c->contentID()->identifier(); +// qDebug() << "searching: " << c->contentID()->identifier(); if ( c->contentID()->identifier() == id ) { type = c->contentType()->mimeType(); name = c->contentType()->name(); @@ -93,84 +93,35 @@ return cid.right(cid.size()-4); } -KMime::Message::Ptr createMessage(const KCalCore::Incidence::Ptr &incidencePtr, const QString &mimetype, const QString &xKolabType, const QByteArray &xml, bool v3, const QString &productId) +KMime::Message::Ptr createMessage(const QByteArray &mimetype, const QByteArray &xKolabType, const QByteArray &xml, bool v3, const QByteArray &productId, + const QByteArray &fromEmail, const QString &fromName, const QString &subject) { - KMime::Message::Ptr message = createMessage( xKolabType, v3, productId ); - if (!incidencePtr) { - Error() << "invalid incidence passed in"; - message->assemble(); - return message; - } - if ( incidencePtr->organizer() && !incidencePtr->organizer()->email().isEmpty()) { - message->from()->addAddress( incidencePtr->organizer()->email().toUtf8(), incidencePtr->organizer()->name() ); - } - message->subject()->fromUnicodeString( incidencePtr->uid(), "utf-8" ); - - KMime::Content *content = createMainPart( mimetype, xml ); - message->addContent( content ); - - Q_FOREACH (KCalCore::Attachment::Ptr attachment, incidencePtr->attachments()) { - //Serialize the attachment as attachment with uri, referencing the created mime-part - if (v3 && !attachment->uri().contains("cid:")) { - //onyl by url, skip - continue; - } - message->addContent( createAttachmentPart(fromCid(attachment->uri()).toLatin1(), attachment->mimeType(), attachment->label(), attachment->decodedData() ) ); - } - - message->assemble(); + KMime::Message::Ptr message = createMessage(xKolabType, v3, productId); + message->subject()->fromUnicodeString(subject, "utf-8"); + if (!fromEmail.isEmpty()) { + KMime::Types::Mailbox mb; + mb.setName(fromName); + mb.setAddress(fromEmail); + message->from()->addAddress(mb); + } + message->addContent(createMainPart(mimetype, xml)); return message; } -KMime::Message::Ptr createMessage(const KABC::Addressee &contact, const QString &mimetype, const QString &xKolabType, const QByteArray &xml, bool v3, const QString &prodid) +KMime::Message::Ptr createMessage(const std::string &mimetype, const std::string &xKolabType, const std::string &xml, bool v3, const std::string &productId, + const std::string &fromEmail, const std::string &fromName, const std::string &subject) { - KMime::Message::Ptr message = Mime::createMessage( xKolabType, v3, prodid ); - message->subject()->fromUnicodeString( contact.uid(), "utf-8" ); - message->from()->fromUnicodeString( contact.fullEmail(), "utf-8" ); - - KMime::Content* content = Mime::createMainPart( mimetype, xml ); - message->addContent( content ); - -// TODO add pictures as separate mimeparts -// if ( !contact.picture().isNull() ) { -// QByteArray pic; -// QBuffer buffer(&pic); -// buffer.open(QIODevice::WriteOnly); -// contact.picture().save(&buffer, "PNG"); -// buffer.close(); -// -// content = Mime::createAttachmentPart(QByteArray(), "image/png", "kolab-picture.png", pic ); -// message->addContent(content); -// } -// -// if ( !contact.logo().isNull() ) { -// QByteArray pic; -// QBuffer buffer(&pic); -// buffer.open(QIODevice::WriteOnly); -// contact.logo().save(&buffer, "PNG"); -// buffer.close(); -// -// content = Mime::createAttachmentPart(QByteArray(), "image/png", "kolab-logo.png", pic ); -// message->addContent(content); -// } -// -// if ( !contact.sound().isEmpty() ) { -// content = Mime::createAttachmentPart(QByteArray(), "audio/unknown", "sound", contact.sound() ); -// message->addContent(content); -// } - - message->assemble(); - return message; + return createMessage(QByteArray(mimetype.c_str()), QByteArray(xKolabType.c_str()), QByteArray(xml.c_str()), v3, QByteArray(productId.data()), QByteArray(fromEmail.c_str()), QString::fromStdString(fromName), QString::fromStdString(subject)); } KMime::Message::Ptr createMessage(const QString &subject, const QString &mimetype, const QString &xKolabType, const QByteArray &xml, bool v3, const QString &prodid) { - KMime::Message::Ptr message = createMessage( xKolabType, v3, prodid ); + KMime::Message::Ptr message = createMessage( xKolabType.toLatin1(), v3, prodid.toLatin1() ); if (!subject.isEmpty()) { message->subject()->fromUnicodeString( subject, "utf-8" ); } - KMime::Content *content = createMainPart( mimetype, xml ); + KMime::Content *content = createMainPart( mimetype.toLatin1(), xml ); message->addContent( content ); message->assemble(); @@ -198,106 +149,87 @@ } -KMime::Message::Ptr createMessage(const QString& xKolabType, bool v3, const QString &prodid) +KMime::Message::Ptr createMessage(const QByteArray& xKolabType, bool v3, const QByteArray &prodid) { - KMime::Message::Ptr message( new KMime::Message ); - message->date()->setDateTime( KDateTime::currentUtcDateTime() ); - KMime::Headers::Generic *h = new KMime::Headers::Generic( X_KOLAB_TYPE_HEADER, message.get(), xKolabType, "utf-8" ); - message->appendHeader( h ); + KMime::Message::Ptr message(new KMime::Message); + message->date()->setDateTime(QDateTime::currentDateTimeUtc()); + KMime::Headers::Generic* h = new KMime::Headers::Generic(X_KOLAB_TYPE_HEADER); + h->fromUnicodeString(xKolabType, "utf-8"); + message->appendHeader(h); if (v3) { - KMime::Headers::Generic *vh = new KMime::Headers::Generic( X_KOLAB_MIME_VERSION_HEADER, message.get(), KOLAB_VERSION_V3, "utf-8" ); - message->appendHeader( vh ); - } - message->userAgent()->from7BitString( prodid.toLatin1() ); - message->contentType()->setMimeType( "multipart/mixed" ); - message->contentType()->setBoundary( KMime::multiPartBoundary() ); - - message->addContent( createExplanationPart(v3) ); + KMime::Headers::Generic* hv3 = new KMime::Headers::Generic(X_KOLAB_MIME_VERSION_HEADER); + hv3->fromUnicodeString(KOLAB_VERSION_V3, "utf-8"); + message->appendHeader(hv3); + } + message->userAgent()->from7BitString(prodid); + message->contentType()->setMimeType("multipart/mixed"); + message->contentType()->setBoundary(KMime::multiPartBoundary()); + message->addContent(createExplanationPart(v3)); return message; } -KMime::Content* createMainPart(const QString& mimeType, const QByteArray& decodedContent) +KMime::Content* createMainPart(const QByteArray& mimeType, const QByteArray& decodedContent) { KMime::Content* content = new KMime::Content(); - content->contentType()->setMimeType( mimeType.toLatin1() ); - content->contentType()->setName( KOLAB_OBJECT_FILENAME, "us-ascii" ); + content->contentType()->setMimeType(mimeType); + content->contentType()->setName(KOLAB_OBJECT_FILENAME, "us-ascii"); content->contentTransferEncoding()->setEncoding( KMime::Headers::CEquPr ); content->contentDisposition()->setDisposition( KMime::Headers::CDattachment ); content->contentDisposition()->setFilename( KOLAB_OBJECT_FILENAME ); - content->setBody( decodedContent ); + content->setBody(decodedContent); return content; } -KMime::Content* createAttachmentPart(const QByteArray& cid, const QString& mimeType, const QString& fileName, const QByteArray& decodedContent) +KMime::Content* createAttachmentPart(const QByteArray& cid, const QByteArray& mimeType, const QString& fileName, const QByteArray& base64EncodedContent) { KMime::Content* content = new KMime::Content(); if (!cid.isEmpty()) { content->contentID()->setIdentifier( cid ); } - content->contentType()->setMimeType( mimeType.toLatin1() ); + content->contentType()->setMimeType( mimeType ); content->contentType()->setName( fileName, "utf-8" ); content->contentTransferEncoding()->setEncoding( KMime::Headers::CEbase64 ); content->contentDisposition()->setDisposition( KMime::Headers::CDattachment ); content->contentDisposition()->setFilename( fileName ); - content->setBody( decodedContent ); + content->setBody( base64EncodedContent ); return content; } -void getAttachments(KCalCore::Incidence::Ptr incidence, const QStringList &attachments, const KMime::Message::Ptr &mimeData) +Kolab::Attachment getAttachment(const std::string &id, const KMime::Message::Ptr &mimeData) { - if (!incidence) { - Error() << "Invalid incidence"; - return;
View file
libkolab-2.0.tar.gz/mime/mimeutils.h -> libkolab-3.0.0.tar.gz/mime/mimeutils.h
Changed
@@ -20,13 +20,12 @@ #include "kolab_export.h" -#include <kcalcore/incidence.h> -#include <kcalcore/event.h> #include <kmime/kmime_message.h> -#include <kabc/addressee.h> + class QDomDocument; namespace Kolab { + class Attachment; namespace Mime { KMime::Content* findContentByName(const KMime::Message::Ptr &data, const QString &name, QByteArray &type); @@ -38,20 +37,22 @@ * * Set the attachments listed in @param attachments on @param incidence from @param mimeData */ -//v2 -void getAttachments(KCalCore::Incidence::Ptr incidence, const QStringList &attachments, const KMime::Message::Ptr &mimeData); -//v3 -void getAttachmentsById(KCalCore::Incidence::Ptr incidence, const KMime::Message::Ptr &mimeData); +Kolab::Attachment getAttachment(const std::string &id, const KMime::Message::Ptr &mimeData); +Kolab::Attachment getAttachmentByName(const QString &name, const KMime::Message::Ptr &mimeData); + +KMime::Message::Ptr createMessage(const QByteArray &mimetype, const QByteArray &xKolabType, const QByteArray &xml, bool v3, const QByteArray &productId, + const QByteArray &fromEmail, const QString &fromName, const QString &subject); +KMime::Message::Ptr createMessage(const std::string &mimetype, const std::string &xKolabType, const std::string &xml, bool v3, const std::string &productId, + const std::string &fromEmail, const std::string &fromName, const std::string &subject); ///Generic serializing functions -KMime::Message::Ptr createMessage(const KCalCore::Incidence::Ptr &incidencePtr, const QString &mimetype, const QString &xKolabType, const QByteArray &xml, bool v3, const QString &prodid); -KMime::Message::Ptr createMessage(const KABC::Addressee &contact, const QString &mimetype, const QString &xKolabType, const QByteArray &xml, bool v3, const QString &prodid); KMime::Message::Ptr createMessage(const QString &subject, const QString &mimetype, const QString &xKolabType, const QByteArray &xml, bool v3, const QString &prodid); +KMime::Message::Ptr createMessage(const QByteArray& mimeType, bool v3, const QByteArray &prodid); KMime::Content* createExplanationPart(); -KMime::Message::Ptr createMessage(const QString& mimeType, bool v3, const QString &prodid); -KMime::Content* createMainPart(const QString& mimeType, const QByteArray& decodedContent); -KMime::Content* createAttachmentPart(const QByteArray &cid, const QString& mimeType, const QString& fileName, const QByteArray& decodedContent); +KMime::Content* createMainPart(const QByteArray& mimeType, const QByteArray& decodedContent); +KMime::Content* createAttachmentPart(const QByteArray& cid, const QByteArray& mimeType, const QString& fileName, const QByteArray& decodedContent); +QString fromCid(const QString &cid); }; }; //Namespace
View file
libkolab-2.0.tar.gz/tests/CMakeLists.txt -> libkolab-3.0.0.tar.gz/tests/CMakeLists.txt
Changed
@@ -2,29 +2,18 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_definitions(-DTEST_DATA_PATH="${CMAKE_CURRENT_SOURCE_DIR}") +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) + macro(addTest TEST_NAME) - QT4_AUTOMOC(${TEST_NAME}.cpp) add_executable(${TEST_NAME} ${TEST_NAME}.cpp) - target_link_libraries(${TEST_NAME} ${QT_QTTEST_LIBRARY} kolab_static) + target_link_libraries(${TEST_NAME} Qt5::Test kolab_static) add_test(${TEST_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${TEST_NAME}) endmacro() -QT4_AUTOMOC(benchmark.cpp) -add_executable(benchmarktest benchmark.cpp) -target_link_libraries(benchmarktest ${QT_QTTEST_LIBRARY} kolab_static) - -addTest(formattest) -addTest(upgradetest) addTest(kcalconversiontest) addTest(calendaringtest) -addTest(icalendartest) -addTest(freebusytest) -addTest(kolabobjecttest) addTest(timezonetest) -addTest(mimeobjecttest) -addTest(xmlobjecttest) -addTest(debugstreamtest) -addTest(legacyformattest) if(PHP_BINDINGS) find_path(PHP_KOLABFORMAT_PATH NAMES kolabformat.php PATHS /usr/local/lib/php/modules /usr/lib/php/modules PATH_SUFFIXES lib/php/modules lib64/php/modules)
View file
libkolab-2.0.tar.gz/tests/calendaringtest.cpp -> libkolab-3.0.0.tar.gz/tests/calendaringtest.cpp
Changed
@@ -19,10 +19,8 @@ #include "calendaringtest.h" #include <QTest> -#include <ksystemtimezone.h> #include <kolabevent.h> #include <iostream> -#include <calendaring/calendaring.h> #include <calendaring/event.h> #include <calendaring/datetimeutils.h> @@ -44,7 +42,6 @@ void CalendaringTest::initTestCase() { - QVERIFY2(KSystemTimeZones::isTimeZoneDaemonAvailable(), "Timezone support is required for this test. Either use libcalendaring or make sure KTimeZoned is available"); } void CalendaringTest::testCalendaringEvent() @@ -64,260 +61,6 @@ QCOMPARE(calEvent2.uid(), calEvent3.uid()); } -void CalendaringTest::testEventConflict_data() -{ - QTest::addColumn<Kolab::Event>( "e1" ); - QTest::addColumn<Kolab::Event>( "e2" ); - QTest::addColumn<bool>( "result" ); - { - Kolab::Event e1; - e1.setStart(Kolab::cDateTime(2011,10,10,12,1,1,true)); - e1.setEnd(Kolab::cDateTime(2011,10,11,12,1,1,true)); - - Kolab::Event e2; - e2.setStart(Kolab::cDateTime(2011,11,10,12,1,1,true)); - e2.setEnd(Kolab::cDateTime(2011,11,11,12,1,1,true)); - - QTest::newRow( "after" ) << e1 << e2 << false; - } - - { - Kolab::Event e1; - e1.setStart(Kolab::cDateTime(2011,10,10,12,1,1,true)); - e1.setEnd(Kolab::cDateTime(2011,10,11,12,1,1,true)); - - Kolab::Event e2; - e2.setStart(Kolab::cDateTime(2011,9,10,12,1,1,true)); - e2.setEnd(Kolab::cDateTime(2011,9,11,12,1,1,true)); - - QTest::newRow( "before" ) << e1 << e2 << false; - } - - { - Kolab::Event e1; - e1.setStart(Kolab::cDateTime(2011,10,10,12,1,1,true)); - e1.setEnd(Kolab::cDateTime(2011,10,11,12,1,1,true)); - - Kolab::Event e2; - e2.setStart(Kolab::cDateTime(2011,10,10,12,1,1,true)); - e2.setEnd(Kolab::cDateTime(2011,10,11,12,1,1,true)); - - QTest::newRow( "conflict" ) << e1 << e2 << true; - } - - { - Kolab::Event e1; - e1.setStart(Kolab::cDateTime("Europe/Zurich", 2011,10,10,6,1,1)); - e1.setEnd(Kolab::cDateTime("Europe/Zurich", 2011,10,10,6,1,2)); - - Kolab::Event e2; - e2.setStart(Kolab::cDateTime("Asia/Dubai",2011,10,10,6,1,1)); - e2.setEnd(Kolab::cDateTime("Asia/Dubai",2011,10,10,6,1,2)); - - QTest::newRow( "tz non-conflict" ) << e1 << e2 << false; - } - - { - Kolab::Event e1; - e1.setStart(Kolab::cDateTime("Europe/Berlin", 2011,10,10,6,1,1)); - e1.setEnd(Kolab::cDateTime("Europe/Berlin", 2011,10,10,6,1,2)); - - Kolab::Event e2; - e2.setStart(Kolab::cDateTime("Europe/Zurich",2011,10,10,6,1,1)); - e2.setEnd(Kolab::cDateTime("Europe/Zurich",2011,10,10,6,1,2)); - - QTest::newRow( "tz conflict" ) << e1 << e2 << true; - } -} - -void CalendaringTest::testEventConflict() -{ - QFETCH(Kolab::Event, e1); - QFETCH(Kolab::Event, e2); - QFETCH(bool, result); - QCOMPARE(Kolab::Calendaring::conflicts(e1,e2), result); -} - -void CalendaringTest::testEventConflictSet() -{ - std::vector<Kolab::Event> events; - events.push_back(createEvent(Kolab::cDateTime(2011,10,6,12,1,1,true), Kolab::cDateTime(2011,10,8,12,1,1,true))); - events.push_back(createEvent(Kolab::cDateTime(2011,10,7,12,1,1,true), Kolab::cDateTime(2011,10,10,12,1,1,true))); - events.push_back(createEvent(Kolab::cDateTime(2011,10,9,12,1,1,true), Kolab::cDateTime(2011,10,11,12,1,1,true))); - const std::vector< std::vector<Kolab::Event> > &result = Kolab::Calendaring::getConflictingSets(events); - - std::vector< std::vector<Kolab::Event> > expectedResult; - std::vector<Kolab::Event> r1; - r1.push_back(createEvent(Kolab::cDateTime(2011,10,6,12,1,1,true), Kolab::cDateTime(2011,10,8,12,1,1,true))); - r1.push_back(createEvent(Kolab::cDateTime(2011,10,7,12,1,1,true), Kolab::cDateTime(2011,10,10,12,1,1,true))); - expectedResult.push_back(r1); - std::vector<Kolab::Event> r2; - r2.push_back(createEvent(Kolab::cDateTime(2011,10,7,12,1,1,true), Kolab::cDateTime(2011,10,10,12,1,1,true))); - r2.push_back(createEvent(Kolab::cDateTime(2011,10,9,12,1,1,true), Kolab::cDateTime(2011,10,11,12,1,1,true))); - expectedResult.push_back(r2); - - for (std::size_t i = 0; i < result.size(); i++) { - const std::vector<Kolab::Event> &list = result.at(i); - - qDebug() << "---------_Set--------------"; - foreach(const Kolab::Event &event, list) { - qDebug() << QTest::toString(event.start()) << QTest::toString(event.end()); - } - compareEvents(result.at(i), expectedResult.at(i)); - } -} - -void CalendaringTest::testTimesInInterval_data() -{ - QTest::addColumn<Kolab::Event>( "event" ); - QTest::addColumn<Kolab::cDateTime>( "start" ); - QTest::addColumn<Kolab::cDateTime>( "end" ); - QTest::addColumn< std::vector<Kolab::cDateTime> >( "result" ); - { - { - Kolab::Event event; - event.setStart(Kolab::cDateTime(2011,1,1,1,1,1,true)); - event.setEnd(Kolab::cDateTime(2011,1,1,2,1,1,true)); - Kolab::RecurrenceRule rrule; - rrule.setFrequency(Kolab::RecurrenceRule::Daily); - rrule.setInterval(1); - rrule.setCount(5); - event.setRecurrenceRule(rrule); - - std::vector<Kolab::cDateTime> result; - result.push_back(Kolab::cDateTime(2011,1,1,1,1,1,true)); - result.push_back(Kolab::cDateTime(2011,1,2,1,1,1,true)); - result.push_back(Kolab::cDateTime(2011,1,3,1,1,1,true)); - result.push_back(Kolab::cDateTime(2011,1,4,1,1,1,true)); - result.push_back(Kolab::cDateTime(2011,1,5,1,1,1,true)); - QTest::newRow( "simple" ) << event << Kolab::cDateTime(2011,1,1,1,1,1,true) << Kolab::cDateTime(2011,1,5,1,1,1,true) << result; - } - } -} - -void CalendaringTest::testTimesInInterval() -{ - QFETCH(Kolab::Event, event); - QFETCH(Kolab::cDateTime, start); - QFETCH(Kolab::cDateTime, end); - QFETCH(std::vector<Kolab::cDateTime>, result); - QCOMPARE(Kolab::Calendaring::timeInInterval(event,start, end), result); -} - -void CalendaringTest::testTimesInIntervalBenchmark() -{ - Kolab::Event event; - event.setStart(Kolab::cDateTime(2011,1,1,1,1,1)); - event.setEnd(Kolab::cDateTime(2011,1,1,2,1,1)); - Kolab::RecurrenceRule rrule; - rrule.setFrequency(Kolab::RecurrenceRule::Daily); - rrule.setInterval(1); - rrule.setCount(500); - event.setRecurrenceRule(rrule); - - QBENCHMARK { - Kolab::Calendaring::timeInInterval(event, Kolab::cDateTime(2011,1,1,1,1,1), Kolab::cDateTime(2013,1,1,1,1,1)); - } - const std::vector<Kolab::cDateTime> &result = Kolab::Calendaring::timeInInterval(event, Kolab::cDateTime(2011,1,1,1,1,1), Kolab::cDateTime(2013,1,1,1,1,1)); - QVERIFY(result.size() == 500); -// qDebug() << QTest::toString(result); -} - -void CalendaringTest::testCalendar_data() -{ - QTest::addColumn< std::vector<Kolab::Event> >( "inputevents" ); - QTest::addColumn<Kolab::cDateTime>( "start" ); - QTest::addColumn<Kolab::cDateTime>( "end" ); - QTest::addColumn< std::vector<Kolab::Event> >( "expectedResult" ); - - { - std::vector<Kolab::Event> inputevents; - for (int day = 1; day < 28; day++) { - for (int hour = 1; hour < 20; hour+=2) { - inputevents.push_back(createEvent(Kolab::cDateTime(2012,5,day,hour,4,4, true), Kolab::cDateTime(2012,5,day,hour+1,4,4, true))); - } - } - std::vector<Kolab::Event> expectedResult; - expectedResult.push_back(createEvent(Kolab::cDateTime(2012,5,5,3,4,4, true), Kolab::cDateTime(2012,5,5,3+1,4,4, true))); - expectedResult.push_back(createEvent(Kolab::cDateTime(2012,5,5,5,4,4, true), Kolab::cDateTime(2012,5,5,5+1,4,4, true))); - expectedResult.push_back(createEvent(Kolab::cDateTime(2012,5,5,7,4,4, true), Kolab::cDateTime(2012,5,5,7+1,4,4, true)));
View file
libkolab-2.0.tar.gz/tests/calendaringtest.h -> libkolab-3.0.0.tar.gz/tests/calendaringtest.h
Changed
@@ -28,23 +28,23 @@ void testCalendaringEvent(); - void testEventConflict_data(); - void testEventConflict(); + // void testEventConflict_data(); + // void testEventConflict(); - void testEventConflictSet(); + // void testEventConflictSet(); - void testTimesInInterval_data(); - void testTimesInInterval(); - void testTimesInIntervalBenchmark(); + // void testTimesInInterval_data(); + // void testTimesInInterval(); + // void testTimesInIntervalBenchmark(); - void testCalendar_data(); - void testCalendar(); + // void testCalendar_data(); + // void testCalendar(); void delegationTest(); - void testMime(); - void testICal(); - void testIMip(); + // void testMime(); + // void testICal(); + // void testIMip(); void testRecurrence();
View file
libkolab-2.0.tar.gz/tests/kcalconversiontest.cpp -> libkolab-3.0.0.tar.gz/tests/kcalconversiontest.cpp
Changed
@@ -16,23 +16,29 @@ */ #include "kcalconversiontest.h" -#include <contact.h> +#include <QTimeZone> #include <QtCore/QObject> #include <QtTest/QtTest> -#include <ksystemtimezone.h> #include <kolabcontact.h> #include <kcalcore/recurrence.h> -#include <kabc/addressee.h> #include "conversion/kcalconversion.h" #include "conversion/kcalconversion.cpp" -#include "conversion/kabcconversion.h" #include "testhelpers.h" using namespace Kolab::Conversion; template <typename T> +void compareVectors(const QVector<T> &list, const QVector<T> &other) +{ + QCOMPARE(list.size(), other.size()); + for (int i = 0 ; i < list.size(); i++) { + QCOMPARE(list.at(i), other.at(i)); + } +} + +template <typename T> void comparePointerVectors(const QVector<T> &list, const QVector<T> &other) { QCOMPARE(list.size(), other.size()); @@ -45,39 +51,38 @@ { QCOMPARE(list.size(), other.size()); for (int i = 0 ; i < list.size(); i++) { - KCalCore::Attendee::Ptr at1 = list.at(i).constCast<KCalCore::Attendee>(); - at1->setUid(QString()); - KCalCore::Attendee::Ptr at2 = other.at(i).constCast<KCalCore::Attendee>(); - at2->setUid(QString()); - QCOMPARE(*at1, *at2); + KCalCore::Attendee at1 = list.at(i); + at1.setUid(QString()); + KCalCore::Attendee at2 = other.at(i); + at2.setUid(QString()); + QCOMPARE(at1, at2); } } void KCalConversionTest::initTestCase() { - QVERIFY2(KSystemTimeZones::isTimeZoneDaemonAvailable(), "Timezone support is required for this test. Either use libcalendaring or make sure KTimeZoned is available"); } void KCalConversionTest::testDate_data() { QTest::addColumn<Kolab::cDateTime>( "input" ); - QTest::addColumn<KDateTime>( "result" ); + QTest::addColumn<QDateTime>( "result" ); - QTest::newRow( "datetime with tz" ) << Kolab::cDateTime("Europe/Zurich",2006,1,8,12,0,0) << KDateTime(QDate(2006, 1, 8), QTime(12, 0, 0), KSystemTimeZones::zone("Europe/Zurich")); - QTest::newRow( "floating datetime" ) << Kolab::cDateTime(2006,1,8,12,0,0, false) << KDateTime(QDate(2006, 1, 8), QTime(12, 0, 0), KDateTime::Spec(KDateTime::ClockTime)); - QTest::newRow( "utc datetime" ) << Kolab::cDateTime(2006,1,8,12,0,0, true) << KDateTime(KDateTime(QDate(2006, 1, 8), QTime(12, 0, 0), KDateTime::UTC)); - QTest::newRow( "date only" ) << Kolab::cDateTime(2006,1,8) << KDateTime(QDate(2006, 1, 8)); + QTest::newRow( "datetime with tz" ) << Kolab::cDateTime("Europe/Zurich",2006,1,8,12,0,0) << QDateTime(QDate(2006, 1, 8), QTime(12, 0, 0), QTimeZone("Europe/Zurich")); + QTest::newRow( "floating datetime" ) << Kolab::cDateTime(2006,1,8,12,0,0, false) << QDateTime(QDate(2006, 1, 8), QTime(12, 0, 0), Qt::LocalTime); + QTest::newRow( "utc datetime" ) << Kolab::cDateTime(2006,1,8,12,0,0, true) << QDateTime(QDateTime(QDate(2006, 1, 8), QTime(12, 0, 0), Qt::UTC)); + QTest::newRow( "date only" ) << Kolab::cDateTime(2006,1,8, 0, 0, 0) << QDateTime(QDate(2006, 1, 8)); } void KCalConversionTest::testDate() { QFETCH(Kolab::cDateTime, input); - QFETCH(KDateTime, result); - - const KDateTime &r = Kolab::Conversion::toDate(input); + QFETCH(QDateTime, result); + qWarning() << "expected result" << result; + const QDateTime &r = Kolab::Conversion::toDate(input); QCOMPARE(r, result); - + qWarning() << "toDate" << r; const Kolab::cDateTime &r2 = Kolab::Conversion::fromDate(result); QCOMPARE(r2, input); } @@ -114,22 +119,23 @@ void KCalConversionTest::testDateTZ_data() { QTest::addColumn<Kolab::cDateTime>( "input" ); - QTest::addColumn<KDateTime>( "result" ); + QTest::addColumn<QDateTime>( "result" ); - QTest::newRow( "berlin" ) << Kolab::cDateTime("Europe/Berlin",2006,1,8,12,0,0) << KDateTime(QDate(2006, 1, 8), QTime(12, 0, 0), KSystemTimeZones::zone("Europe/Berlin")); + QTest::newRow( "berlin" ) << Kolab::cDateTime("Europe/Berlin",2006,1,8,12,0,0) << QDateTime(QDate(2006, 1, 8), QTime(12, 0, 0), QTimeZone("Europe/Berlin")); } void KCalConversionTest::testDateTZ() { QFETCH(Kolab::cDateTime, input); - QFETCH(KDateTime, result); + QFETCH(QDateTime, result); - const KDateTime &r = Kolab::Conversion::toDate(input); - QCOMPARE(result.timeZone().name(), QString::fromStdString(input.timezone())); - QCOMPARE(r.timeZone().currentOffset(), result.timeZone().currentOffset()); + const QDateTime &r = Kolab::Conversion::toDate(input); + //FIXME + QCOMPARE(result.timeZone().id(), QString::fromStdString(input.timezone()).toLatin1()); + // QCOMPARE(r.timeZone().currentOffset(), result.timeZone().currentOffset()); - const Kolab::cDateTime &r2 = Kolab::Conversion::fromDate(result); - QCOMPARE(QString::fromStdString(r2.timezone()), result.timeZone().name()); + // const Kolab::cDateTime &r2 = Kolab::Conversion::fromDate(result); + // QCOMPARE(QString::fromStdString(r2.timezone()), result.timeZone().name()); } @@ -186,17 +192,17 @@ kcal.setPriority(3); kcal.setStatus(KCalCore::Incidence::StatusConfirmed); kcal.setLocation("location"); - kcal.setOrganizer(KCalCore::Person::Ptr(new KCalCore::Person("organizer", "organizer@email"))); + kcal.setOrganizer(KCalCore::Person("organizer", "organizer@email")); //Url kcal.setNonKDECustomProperty("X-KOLAB-URL", "http://test.org"); - KCalCore::Attendee::Ptr att(new KCalCore::Attendee("attendee", "attendee@email", false, KCalCore::Attendee::NeedsAction, KCalCore::Attendee::ReqParticipant)); - att->setDelegate("mailto:delegatee<delegatee@email>"); - att->setDelegator("mailto:delegator<delegator@email>"); + KCalCore::Attendee att("attendee", "attendee@email", false, KCalCore::Attendee::NeedsAction, KCalCore::Attendee::ReqParticipant); + att.setDelegate("mailto:delegatee<delegatee@email>"); + att.setDelegator("mailto:delegator<delegator@email>"); kcal.addAttendee(att); - kcal.addAttachment(KCalCore::Attachment::Ptr(new KCalCore::Attachment(QString("uri"), "mimetype/mime"))); + kcal.addAttachment(KCalCore::Attachment(QString("uri"), "mimetype/mime")); KCalCore::Alarm::Ptr alarm = KCalCore::Alarm::Ptr(new KCalCore::Alarm(&kcal)); KCalCore::Person::List addressees; - addressees.append(KCalCore::Person::Ptr(new KCalCore::Person("name", "email@email"))); + addressees.append(KCalCore::Person("name", "email@email")); alarm->setEmailAlarm("subject", "text", addressees, QStringList()); //No support for attachments kcal.addAlarm(alarm); //TODO alarms @@ -373,7 +379,7 @@ QCOMPARE(e->dtEnd(), kcal.dtEnd()); QCOMPARE(e->duration(), kcal.duration()); QCOMPARE(e->transparency(), kcal.transparency()); - QCOMPARE(*e->recurrence(), *kcal.recurrence()); + // QCOMPARE(*e->recurrence(), *kcal.recurrence()); QCOMPARE(e->recurrenceId(), kcal.recurrenceId()); QCOMPARE(e->thisAndFuture(), kcal.thisAndFuture()); QCOMPARE(e->recurrenceType(), kcal.recurrenceType()); @@ -382,14 +388,14 @@ QCOMPARE(e->priority(), kcal.priority()); QCOMPARE(e->status(), kcal.status()); QCOMPARE(e->location(), kcal.location()); - QCOMPARE(e->organizer()->name(), kcal.organizer()->name()); - QCOMPARE(e->organizer()->email(), kcal.organizer()->email()); + QCOMPARE(e->organizer().name(), kcal.organizer().name()); + QCOMPARE(e->organizer().email(), kcal.organizer().email()); QCOMPARE(e->nonKDECustomProperty("X-KOLAB-URL"), kcal.nonKDECustomProperty("X-KOLAB-URL")); //otherwise we'd break the customProperties comparison e->removeNonKDECustomProperty("X-KOLAB-URL"); kcal.removeNonKDECustomProperty("X-KOLAB-URL"); - compareAttendeesVectors(e->attendees(), kcal.attendees()); - comparePointerVectors(e->attachments(), kcal.attachments()); + // compareAttendeesVectors(e->attendees(), kcal.attendees()); + compareVectors(e->attachments(), kcal.attachments()); // QCOMPARE(e->alarms(), kcal.alarms()); //TODO QCOMPARE(e->customProperties(), kcal.customProperties()); @@ -404,16 +410,16 @@ QCOMPARE(b.sequence(), kolab.sequence()); QCOMPARE(b.classification(), kolab.classification()); QCOMPARE(b.categories(), kolab.categories()); - QCOMPARE(b.start(), kolab.start()); - QCOMPARE(b.end(), kolab.end()); + // QCOMPARE(b.start(), kolab.start()); + // QCOMPARE(b.end(), kolab.end()); QCOMPARE(b.duration(), kolab.duration()); QCOMPARE(b.transparency(), kolab.transparency()); - QCOMPARE(b.recurrenceRule(), kolab.recurrenceRule()); + // QCOMPARE(b.recurrenceRule(), kolab.recurrenceRule()); QCOMPARE(b.recurrenceID(), kolab.recurrenceID()); QCOMPARE(b.thisAndFuture(), kolab.thisAndFuture()); - QCOMPARE(b.recurrenceDates(), kolab.recurrenceDates()); - QCOMPARE(b.exceptionDates(), kolab.exceptionDates()); + // QCOMPARE(b.recurrenceDates(), kolab.recurrenceDates()); + // QCOMPARE(b.exceptionDates(), kolab.exceptionDates()); QCOMPARE(b.summary(), kolab.summary()); QCOMPARE(b.description(), kolab.description()); @@ -515,93 +521,6 @@ QCOMPARE(b.summary(), kolab.summary()); } -void KCalConversionTest::testContactConversion_data() -{
View file
libkolab-2.0.tar.gz/tests/kcalconversiontest.h -> libkolab-3.0.0.tar.gz/tests/kcalconversiontest.h
Changed
@@ -42,12 +42,9 @@ void testJournalConversion_data(); void testJournalConversion(); - void testContactConversion_data(); - void testContactConversion(); - void testDateTZ_data(); void testDateTZ(); }; -#endif \ No newline at end of file +#endif
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/contacts/address.vcf.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/contacts/address.vcf.mime
Changed
@@ -1,6 +1,6 @@ Date: Tue, 01 Sep 2009 10:56:10 +0200 X-Kolab-Type: application/x-vnd.kolab.contact -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart3449010.4rJ2gEvUCK" Subject: TX1vqbIUlB MIME-Version: 1.0
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/contacts/bug238996.vcf.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/contacts/bug238996.vcf.mime
Changed
@@ -1,6 +1,6 @@ Date: Mon, 31 Aug 2009 18:23:30 +0200 X-Kolab-Type: application/x-vnd.kolab.contact -User-Agent: Libkolab-x.x.x +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart3762459.HDmZFN3AqE" Subject: Huu5X7hfYy From: Firstname Lastname <first@email.org>
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/contacts/complex.vcf.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/contacts/complex.vcf.mime
Changed
@@ -1,6 +1,6 @@ Date: Mon, 31 Aug 2009 18:23:30 +0200 X-Kolab-Type: application/x-vnd.kolab.contact -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart3762459.HDmZFN3AqE" Subject: Huu5X7hfYy From: Firstname Lastname <first@email.org>
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/contacts/displayname.vcf.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/contacts/displayname.vcf.mime
Changed
@@ -1,6 +1,6 @@ Date: Tue, 01 Sep 2009 09:15:59 +0200 X-Kolab-Type: application/x-vnd.kolab.contact -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart1671573.1jqa7tTDaI" Subject: sWDhiG62Ea MIME-Version: 1.0
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/contacts/emails.vcf.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/contacts/emails.vcf.mime
Changed
@@ -1,6 +1,6 @@ Date: Tue, 01 Sep 2009 13:13:40 +0200 X-Kolab-Type: application/x-vnd.kolab.contact -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart2497845.VQRhqsHbKY" Subject: zj77MLHTiw From: Email Addresses <first@email.org>
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/contacts/phonenumbers.vcf.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/contacts/phonenumbers.vcf.mime
Changed
@@ -1,6 +1,6 @@ Date: Tue, 01 Sep 2009 10:20:52 +0200 X-Kolab-Type: application/x-vnd.kolab.contact -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart5288440.YZXQeyvXcV" Subject: DskcKTX5C5 MIME-Version: 1.0
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/contacts/picture.vcf.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/contacts/picture.vcf.mime
Changed
@@ -1,6 +1,6 @@ Date: Tue, 01 Sep 2009 09:50:04 +0200 X-Kolab-Type: application/x-vnd.kolab.contact -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart3467792.lKc2nMLyO8" Subject: DVd76P1FDJ MIME-Version: 1.0
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/contacts/simple.vcf.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/contacts/simple.vcf.mime
Changed
@@ -1,6 +1,6 @@ Date: Mon, 31 Aug 2009 14:39:35 +0200 X-Kolab-Type: application/x-vnd.kolab.contact -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart8293045.ykzvriC3IH" Subject: 4xuyC0cyjV From: Volker Krause <vkrause@kde.org>
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/event/allday.ics.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/event/allday.ics.mime
Changed
@@ -1,6 +1,6 @@ Date: Tue, 01 Sep 2009 15:15:20 +0200 X-Kolab-Type: application/x-vnd.kolab.event -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart2050770.69HWcxcYtE" Subject: KOrganizer-1256760206.500 MIME-Version: 1.0
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/event/attachment.ics.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/event/attachment.ics.mime
Changed
@@ -1,6 +1,6 @@ Date: Tue, 01 Sep 2009 14:58:47 +0200 X-Kolab-Type: application/x-vnd.kolab.event -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart3083467.JSZapPgxdJ" Subject: KOrganizer-1181687251.384 MIME-Version: 1.0
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/event/complex.ics.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/event/complex.ics.mime
Changed
@@ -1,6 +1,6 @@ Date: Tue, 01 Sep 2009 14:53:03 +0200 X-Kolab-Type: application/x-vnd.kolab.event -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart1532650.N5Q3PfLWqK" Subject: KOrganizer-1687167952.818 MIME-Version: 1.0
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/event/iso8859-1.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/event/iso8859-1.mime
Changed
@@ -1,6 +1,6 @@ Date: Tue, 01 Sep 2009 13:36:50 +0200 X-Kolab-Type: application/x-vnd.kolab.event -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart3915010.RBqxP67orN" Subject: KOrganizer-1353608432.168 MIME-Version: 1.0
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/event/simple.ics.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/event/simple.ics.mime
Changed
@@ -1,6 +1,6 @@ Date: Tue, 01 Sep 2009 13:36:50 +0200 X-Kolab-Type: application/x-vnd.kolab.event -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart3915010.RBqxP67orN" Subject: KOrganizer-1353608432.168 MIME-Version: 1.0
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/event/simple_missingTypeHeader.ics.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/event/simple_missingTypeHeader.ics.mime
Changed
@@ -1,5 +1,5 @@ Date: Tue, 01 Sep 2009 13:36:50 +0200 -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart3915010.RBqxP67orN" Subject: KOrganizer-1353608432.168 MIME-Version: 1.0
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/journal/complex.ics.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/journal/complex.ics.mime
Changed
@@ -1,6 +1,6 @@ Date: Tue, 01 Sep 2009 17:00:13 +0200 X-Kolab-Type: application/x-vnd.kolab.journal -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart1324738.3KhudssxDn" Subject: KOrganizer-2037616327.585 MIME-Version: 1.0
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/journal/simple.ics.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/journal/simple.ics.mime
Changed
@@ -1,6 +1,6 @@ Date: Tue, 01 Sep 2009 16:58:01 +0200 X-Kolab-Type: application/x-vnd.kolab.journal -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart5948088.KInc4Inoe4" Subject: KOrganizer-1941104064.609 MIME-Version: 1.0
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/task/complex.ics.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/task/complex.ics.mime
Changed
@@ -1,6 +1,6 @@ Date: Tue, 01 Sep 2009 15:39:19 +0200 X-Kolab-Type: application/x-vnd.kolab.task -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart1580071.CkrsaYjaUZ" Subject: KOrganizer-396756838.184 MIME-Version: 1.0
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/task/prioritytest1.ics.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/task/prioritytest1.ics.mime
Changed
@@ -1,6 +1,6 @@ Date: Tue, 01 Sep 2009 15:17:09 +0200 X-Kolab-Type: application/x-vnd.kolab.task -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart1959111.QQxQ0WGgtU" Subject: KOrganizer-2105012348.490 MIME-Version: 1.0
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/task/prioritytest2.ics.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/task/prioritytest2.ics.mime
Changed
@@ -1,6 +1,6 @@ Date: Tue, 01 Sep 2009 15:17:09 +0200 X-Kolab-Type: application/x-vnd.kolab.task -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart1959111.QQxQ0WGgtU" Subject: KOrganizer-2105012348.490 MIME-Version: 1.0
View file
libkolab-2.0.tar.gz/tests/testfiles/v2/task/simple.ics.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v2/task/simple.ics.mime
Changed
@@ -1,6 +1,6 @@ Date: Tue, 01 Sep 2009 15:17:09 +0200 X-Kolab-Type: application/x-vnd.kolab.task -User-Agent: Akonadi Kolab Proxy Resource +User-Agent: Libkolab-3.0.0 Content-Type: multipart/mixed; boundary="nextPart1959111.QQxQ0WGgtU" Subject: KOrganizer-2105012348.490 MIME-Version: 1.0
View file
libkolab-2.0.tar.gz/tests/testfiles/v3/note/note.mime.mime -> libkolab-3.0.0.tar.gz/tests/testfiles/v3/note/note.mime.mime
Changed
@@ -22,7 +22,7 @@ Content-Disposition: attachment; filename="kolab.xml" <?xml version=3D"1.0" encoding=3D"UTF-8" standalone=3D"no" ?> -<note xmlns=3D"http://kolab.org" version=3D"3.0dev1"> +<note xmlns=3D"http://kolab.org" version=3D"3.0"> <uid>c04ad759-ff7f-0000-e12b-a41f537f0000</uid>
View file
libkolab-2.0.tar.gz/tests/testhelpers.h -> libkolab-3.0.0.tar.gz/tests/testhelpers.h
Changed
@@ -18,7 +18,7 @@ #ifndef TESTHELPERS_H #define TESTHELPERS_H -#include <contact.h> +// #include <contact.h> #include <QtCore/QObject> #include <QtTest/QtTest> @@ -26,7 +26,6 @@ #include <kcalcore/event.h> #include <kcalcore/todo.h> #include <kcalcore/journal.h> -#include <kabc/addressee.h> #include <kolabformat.h> @@ -45,10 +44,6 @@ Q_DECLARE_METATYPE(KCalCore::Todo); Q_DECLARE_METATYPE(KCalCore::Journal); -#ifndef LIBCALENDARING_DURATION_DECLARED - Q_DECLARE_METATYPE(KCalCore::Duration); -#endif - namespace QTest { template<> @@ -57,33 +52,33 @@ QByteArray ba = "Kolab::cDateTime("; ba += QByteArray::number(dt.year()) + ", " + QByteArray::number(dt.month())+ ", " + QByteArray::number(dt.day()) + ", "; ba += QByteArray::number(dt.hour()) + ", " + QByteArray::number(dt.minute()) + ", " + QByteArray::number(dt.second())+ ", "; - ba += QString(dt.isUTC()?QString("UTC"):QString("TZ: "+QString::fromStdString(dt.timezone()))).toAscii(); + ba += QByteArray(dt.isUTC()?QByteArray("UTC"):QByteArray("TZ: "+QByteArray::fromStdString(dt.timezone()))); ba += ")"; return qstrdup(ba.data()); } - template<> - char *toString(const KDateTime &dt) - { - QByteArray ba = "KDateTime("; - ba += dt.toString().toAscii(); - ba += dt.timeZone().name(); - ba += ")"; - return qstrdup(ba.data()); - } + // template<> + // char *toString(const QDateTime &dt) + // { + // QByteArray ba = "QDateTime("; + // ba += dt.toString().toAscii(); + // ba += dt.timeZone().name().toAscii(); + // ba += ")"; + // return qstrdup(ba.data()); + // } template<> char *toString(const KCalCore::Attendee &at) { QByteArray ba = "Attendee("; - ba += at.name().toAscii() + ", "; - ba += at.email().toAscii() + ", "; - ba += QString::number(at.role()) + ", "; - ba += QString::number(at.status()) + ", "; - ba += QString::number(at.RSVP()) + ", "; - ba += at.delegate().toAscii() + ", "; - ba += at.delegator().toAscii() + ", "; - ba += at.uid().toAscii() + ", "; + ba += at.name().toLatin1() + ", "; + ba += at.email().toLatin1() + ", "; + ba += QByteArray::number(at.role()) + ", "; + ba += QByteArray::number(at.status()) + ", "; + ba += QByteArray::number(at.RSVP()) + ", "; + ba += at.delegate().toLatin1() + ", "; + ba += at.delegator().toLatin1() + ", "; + ba += at.uid().toLatin1() + ", "; ba += ")"; return qstrdup(ba.data()); } @@ -94,7 +89,7 @@ { QByteArray ba = "QList<int>("; foreach(int i, l) { - ba += QString::number(i) + ", "; + ba += QByteArray::number(i) + ", "; } ba += ")"; return qstrdup(ba.data()); @@ -105,8 +100,8 @@ { QByteArray ba = "QList<int>("; foreach(const KCalCore::RecurrenceRule::WDayPos &i, l) { - ba += QString::number(i.pos()) + " "; - ba += QString::number(i.day()) + ", "; + ba += QByteArray::number(i.pos()) + " "; + ba += QByteArray::number(i.day()) + ", "; } ba += ")"; return qstrdup(ba.data()); @@ -117,7 +112,7 @@ { QByteArray ba = "KCalCore::DateList("; foreach(const QDate &i, l) { - ba += i.toString(); + ba += i.toString().toLatin1(); } ba += ")"; return qstrdup(ba.data()); @@ -127,7 +122,7 @@ char *toString(const KCalCore::DateTimeList &l) { QByteArray ba = "KCalCore::DateTimeList("; - foreach(const KDateTime &i, l) { + foreach(const QDateTime &i, l) { ba += toString(i); } ba += ")"; @@ -137,7 +132,7 @@ template<> char *toString(const KCalCore::Recurrence &at) { - at.dump(); + // at.dump(); KCalCore::RecurrenceRule *r = at.defaultRRule(); QByteArray ba; if (!r) { @@ -147,9 +142,9 @@ Q_ASSERT(at.rRules().size() == 1); ba += "Recurrence("; - ba += QString::number(r->recurrenceType()) + "\n"; - ba += QString::number(r->frequency()) + "\n"; - ba += QString::number(r->duration()) + "\n"; + ba += QByteArray::number(r->recurrenceType()) + "\n"; + ba += QByteArray::number(r->frequency()) + "\n"; + ba += QByteArray::number(r->duration()) + "\n"; ba += QByteArray(toString(r->startDt())) + "\n"; ba += QByteArray(toString(r->endDt())) + "\n"; ba += QByteArray(toString(r->bySeconds())) + "\n"; @@ -174,10 +169,10 @@ { QByteArray ba; ba += "KolabRecurrenceRule("; - ba += QString::number(at.weekStart()) + "\n"; - ba += QString::number(at.frequency()) + "\n"; - ba += QString::number(at.interval()) + "\n"; - ba += QString::number(at.count()) + "\n"; + ba += QByteArray::number(at.weekStart()) + "\n"; + ba += QByteArray::number(at.frequency()) + "\n"; + ba += QByteArray::number(at.interval()) + "\n"; + ba += QByteArray::number(at.count()) + "\n"; ba += QByteArray(toString(at.end())) + "\n"; ba += QByteArray(toString(at.bysecond())) + "\n"; ba += QByteArray(toString(at.byminute())) + "\n"; @@ -196,8 +191,8 @@ { QByteArray ba; ba += "KCalCore::Duration("; - ba += QString::number(d.isDaily()) + ", "; - ba += QString::number(d.value()) + " "; + ba += QByteArray::number(d.isDaily()) + ", "; + ba += QByteArray::number(d.value()) + " "; ba += ")"; return qstrdup(ba.data()); } @@ -206,9 +201,9 @@ char *toString(const Kolab::ContactReference &a) { QByteArray ba = "Kolab::ContactReference("; - ba += QString::fromStdString(a.email()).toAscii()+ ", "; - ba += QString::fromStdString(a.name()).toAscii()+ ", "; - ba += QString::fromStdString(a.uid()).toAscii(); + ba += QByteArray::fromStdString(a.email()) + ", "; + ba += QByteArray::fromStdString(a.name()) + ", "; + ba += QByteArray::fromStdString(a.uid()); ba += ")"; return qstrdup(ba.data()); } @@ -228,12 +223,12 @@ char *toString(const Kolab::Attendee &a) { QByteArray ba = "Kolab::Attendee("; - ba += QString::fromStdString(a.contact().email()).toAscii() + "\n"; - ba += QString::fromStdString(a.contact().name()).toAscii()+ "\n"; + ba += QByteArray::fromStdString(a.contact().email()) + "\n"; + ba += QByteArray::fromStdString(a.contact().name()) + "\n"; ba += QByteArray::number(a.partStat()) + "\n"; ba += QByteArray::number(a.role()) + "\n"; ba += QByteArray::number(a.rsvp()) + "\n"; - ba += QString::fromStdString(a.contact().uid()).toAscii()+"\n"; + ba += QByteArray::fromStdString(a.contact().uid())+"\n"; ba += QByteArray(toString(a.delegatedTo()))+"\n"; ba += QByteArray(toString(a.delegatedFrom()))+ "\n"; ba += QByteArray::number(a.cutype())+ "\n"; @@ -257,8 +252,8 @@ char *toString(const Kolab::CustomProperty &a) { QByteArray ba = "Kolab::CustomProperty("; - ba += QString::fromStdString(a.identifier).toAscii()+ ", ";
View file
libkolab-2.0.tar.gz/tests/testutils.h -> libkolab-3.0.0.tar.gz/tests/testutils.h
Changed
@@ -21,20 +21,19 @@ #include <qtemporaryfile.h> #include <qprocess.h> #include <quuid.h> -#include <kdebug.h> #include <kolabevent.h> #include <kmime/kmime_message.h> -#include "kolabformat/kolabobject.h" +// #include "kolabformat/kolabobject.h" -Q_DECLARE_METATYPE(Kolab::ObjectType); -Q_DECLARE_METATYPE(Kolab::Version); +// Q_DECLARE_METATYPE(Kolab::ObjectType); +// Q_DECLARE_METATYPE(Kolab::Version); #define KCOMPARE(actual, expected) \ do {\ if ( !(actual == expected) ) { \ - qDebug() << __FILE__ << ':' << __LINE__ << "Actual: " #actual ": " << actual << "\nExpceted: " #expected ": " << expected; \ + qDebug() << __FILE__ << ':' << __LINE__ << "Actual: " #actual ": " << actual << "\nExpected: " #expected ": " << expected; \ return false; \ } \ } while (0) @@ -42,6 +41,19 @@ #endif +#define DIFFCOMPARE(actual, expected) \ +do {\ + if ( !(actual.simplified() == expected.simplified()) ) { \ + qDebug() << "Content not the same."; \ + showDiff(expected, actual); \ + QTest::qFail("Compared versions differ.", __FILE__, __LINE__); \ + return; \ + } \ +} while (0) + +#define TESTVALUE(type, name)\ + *static_cast<type *>(QTest::qData(#name, ::qMetaTypeId<type >())) + const QString TESTFILEDIR = QString::fromLatin1(TEST_DATA_PATH "/testfiles/"); QString getPath(const char *file) { @@ -51,27 +63,31 @@ void showDiff(const QString &expected, const QString &converted) { if (expected.isEmpty() || converted.isEmpty()) { - kWarning() << "files are emtpy"; + qWarning() << "files are emtpy"; return; } if (expected == converted) { - kWarning() << "contents are the same"; + qWarning() << "contents are the same"; return; } - // QTemporaryFile expectedFile("expectedFile"); - // QTemporaryFile convertedFile("convertedFile"); - // if (expectedFile.open() && convertedFile.open()) { - // expectedFile.write(expected.toLatin1()); - // convertedFile.write(converted.toLatin1()); - // expectedFile.close(); - // convertedFile.close(); - // QProcess::execute("kompare", QStringList() << "-c" << expectedFile.fileName() << convertedFile.fileName()); - // } else { - // kWarning() << "files are not open"; - // } - - qDebug() << "EXPECTED: " << expected; - qDebug() << "CONVERTED: " << converted; + + bool showDiff = true; + if (showDiff) { + QTemporaryFile expectedFile("expectedFile"); + QTemporaryFile convertedFile("convertedFile"); + if (expectedFile.open() && convertedFile.open()) { + expectedFile.write(expected.toLatin1()); + convertedFile.write(converted.toLatin1()); + expectedFile.close(); + convertedFile.close(); + QProcess::execute("kdiff3", QStringList() << expectedFile.fileName() << convertedFile.fileName()); + } else { + qWarning() << "files are not open"; + } + } else { + qDebug() << "EXPECTED: " << expected; + qDebug() << "CONVERTED: " << converted; + } } KMime::Message::Ptr readMimeFile( const QString &fileName, bool &ok) @@ -80,7 +96,7 @@ QFile file( fileName ); ok = file.open( QFile::ReadOnly ); if (!ok) { - kWarning() << "failed to open file: " << fileName; + qWarning() << "failed to open file: " << fileName; return KMime::Message::Ptr(); } const QByteArray data = file.readAll(); @@ -100,36 +116,51 @@ content.replace(QRegExp("\\bLibkolab-\\d.\\d\\b", Qt::CaseSensitive), "Libkolab-x.x.x"); content.replace(QRegExp("\\bLibkolabxml-\\d.\\d\\b", Qt::CaseSensitive), "Libkolabxml-x.x.x"); content.replace(QRegExp("<uri>cid:*@kolab.resource.akonadi</uri>", Qt::CaseSensitive, QRegExp::Wildcard), "<uri>cid:id@kolab.resource.akonadi</uri>"); + content.replace(QRegExp("Content-ID: <*@kolab.resource.akonadi>", Qt::CaseSensitive, QRegExp::Wildcard), "Content-ID: <id@kolab.resource.akonadi>"); content.replace(QRegExp("<uri>mailto:*</uri>", Qt::CaseSensitive, QRegExp::Wildcard), "<uri>mailto:</uri>"); content.replace(QRegExp("<cal-address>mailto:*</cal-address>", Qt::CaseSensitive, QRegExp::Wildcard), "<cal-address>mailto:</cal-address>"); content.replace(QRegExp("<uri>data:*</uri>", Qt::CaseSensitive, QRegExp::Wildcard), "<uri>data:</uri>"); content.replace(QRegExp("<last-modification-date>*</last-modification-date>", Qt::CaseSensitive, QRegExp::Wildcard), "<last-modification-date></last-modification-date>"); + //We no longer support pobox, so remove pobox lines + content.replace(QRegExp("<pobox>*</pobox>", Qt::CaseSensitive, QRegExp::Wildcard), ""); content.replace(QRegExp("<timestamp>*</timestamp>", Qt::CaseSensitive, QRegExp::Wildcard), "<timestamp></timestamp>"); content.replace(QRegExp("<x-kolab-version>*</x-kolab-version>", Qt::CaseSensitive, QRegExp::Wildcard), "<x-kolab-version></x-kolab-version>"); content.replace(QRegExp("--nextPart\\S*", Qt::CaseSensitive), "--part"); content.replace(QRegExp("\\bboundary=\"nextPart[^\\n]*", Qt::CaseSensitive), "boundary"); content.replace(QRegExp("Date[^\\n]*", Qt::CaseSensitive), "Date"); + //The sort order of the attributes in kolabV2 is unpredictable + content.replace(QRegExp("<x-custom*/>", Qt::CaseSensitive, QRegExp::Wildcard), "<x-custom/>"); + //quoted-printable encoding changes where the linebreaks are every now and then (an all are valid), so we remove the linebreaks + content.replace(QRegExp("=\\n", Qt::CaseSensitive), ""); } +//QString normalizeVCardMessage(QString content) +//{ +// //The encoding changes every now and then +// content.replace(QRegExp("ENCODING=b;TYPE=png:*", Qt::CaseSensitive, QRegExp::Wildcard), "ENCODING=b;TYPE=png:picturedata"); +// return content; +//} -//Normalize incidences for comparison -void normalizeIncidence( KCalCore::Incidence::Ptr incidence) -{ - //The UID is not persistent (it's just the internal pointer), therefore we clear it - //TODO make sure that the UID does really not need to be persistent - foreach(KCalCore::Attendee::Ptr attendee, incidence->attendees()) { - attendee->setUid(QString()); - } - //FIXME even if hasDueDate can differ, it shouldn't because it breaks equality. Check why they differ in the first place. - if ( incidence->type() == KCalCore::IncidenceBase::TypeTodo ) { - KCalCore::Todo::Ptr todo = incidence.dynamicCast<KCalCore::Todo>(); - Q_ASSERT(todo.data()); - if ( !todo->hasDueDate() && !todo->hasStartDate() ) - todo->setAllDay( false ); // all day has no meaning if there are no start and due dates but may differ nevertheless - } -} +//Normalize incidences for comparison +//void normalizeIncidence( KCalCore::Incidence::Ptr incidence) +//{ +// //The UID is not persistent (it's just the internal pointer), therefore we clear it +// //TODO make sure that the UID does really not need to be persistent +// ////FIXME +// foreach(KCalCore::Attendee attendee, incidence->attendees()) { +// attendee.setUid(QString()); +// } + +// //FIXME even if hasDueDate can differ, it shouldn't because it breaks equality. Check why they differ in the first place. +// if ( incidence->type() == KCalCore::IncidenceBase::TypeTodo ) { +// KCalCore::Todo::Ptr todo = incidence.dynamicCast<KCalCore::Todo>(); +// Q_ASSERT(todo.data()); +// if ( !todo->hasDueDate() && !todo->hasStartDate() ) +// todo->setAllDay( false ); // all day has no meaning if there are no start and due dates but may differ nevertheless +// } +//} template <template <typename> class Op, typename T> static bool LexicographicalCompare( const T &_x, const T &_y ) @@ -142,75 +173,75 @@ return op( x.toString(), y.toString() ); } -bool normalizePhoneNumbers( KABC::Addressee &addressee, KABC::Addressee &refAddressee ) -{ - KABC::PhoneNumber::List phoneNumbers = addressee.phoneNumbers(); - KABC::PhoneNumber::List refPhoneNumbers = refAddressee.phoneNumbers(); - if ( phoneNumbers.size() != refPhoneNumbers.size() ) - return false; - std::sort( phoneNumbers.begin(), phoneNumbers.end(), LexicographicalCompare<std::less, KABC::PhoneNumber> ); - std::sort( refPhoneNumbers.begin(), refPhoneNumbers.end(), LexicographicalCompare<std::less, KABC::PhoneNumber> ); - - for ( int i = 0; i < phoneNumbers.size(); ++i ) { - KABC::PhoneNumber phoneNumber = phoneNumbers.at( i ); - const KABC::PhoneNumber refPhoneNumber = refPhoneNumbers.at( i ); - KCOMPARE( LexicographicalCompare<std::equal_to>( phoneNumber, refPhoneNumber ), true ); - addressee.removePhoneNumber( phoneNumber ); - phoneNumber.setId( refPhoneNumber.id() ); - addressee.insertPhoneNumber( phoneNumber ); - //Make sure that both have the same sorted order - refAddressee.removePhoneNumber( refPhoneNumber ); - refAddressee.insertPhoneNumber( refPhoneNumber ); - } -// for ( int i = 0; i < phoneNumbers.size(); ++i ) { -// kDebug() << "--------------------------------------"; -// kDebug() << addressee.phoneNumbers().at(i).toString(); -// kDebug() << refAddressee.phoneNumbers().at(i).toString(); -// } -
View file
libkolab-2.0.tar.gz/tests/timezonetest.cpp -> libkolab-3.0.0.tar.gz/tests/timezonetest.cpp
Changed
@@ -18,45 +18,17 @@ #include "timezonetest.h" #include <conversion/timezoneconverter.h> #include <conversion/commonconversion.h> -#include <kolabformat/kolabobject.h> +// #include <kolabformat/kolabobject.h> #include <kolabformat/errorhandler.h> #include "testutils.h" #include <QTest> -// #include <unicode/uversion.h> -// #include <unicode/timezone.h> -// #include <iostream> -#include <kdebug.h> #include <kcalcore/event.h> #include <kcalcore/icalformat.h> -#include <ksystemtimezone.h> - -// void icuFoo() -// { -// icu::UnicodeString s; -// UErrorCode error; -// // icu::TimeZone::getCanonicalID("GMT+01.00) Sarajevo/Warsaw/Zagreb", s, error); -// // icu::TimeZone::getCanonicalID(icu::UnicodeString::fromUTF8("Europe/Zurich"), s, error); -// icu::TimeZone::getCanonicalID(icu::UnicodeString::fromUTF8("GMT+01.00"), s, error); -// std::string cs; -// s.toUTF8String(cs); -// std::cout << "This is the new timezone: " << cs << std::endl << u_errorName(error) << std::endl; -// // -// // -// // icu::TimeZone *tz = icu::TimeZone::createTimeZone("GMT-8:00"); -// // icu::UnicodeString result; -// // tz->getDisplayName(result); -// // std::string stringresult; -// // result.toUTF8String(stringresult); -// // std::cout << stringresult; -// -// // icu::TimeZone *tz = icu::TimeZone::getStaticClassID(); -// -// } +#include <QTimeZone> void TimezoneTest::initTestCase() { - QVERIFY2(KSystemTimeZones::isTimeZoneDaemonAvailable(), "Timezone support is required for this test. Either use libcalendaring or make sure KTimeZoned is available"); } void TimezoneTest::testFromName() @@ -95,22 +67,22 @@ TimezoneConverter converter; QFETCH(QString, timezone); const QString tz = converter.normalizeTimezone(timezone); - kDebug() << tz; + qDebug() << tz; QVERIFY(!tz.isEmpty()); QVERIFY(tz != timezone); } -void TimezoneTest::testKolabObjectWriter() -{ - KCalCore::Event::Ptr event(new KCalCore::Event()); - event->setOrganizer(KCalCore::Person::Ptr()); - event->setDtStart(KDateTime(QDate(2012,11,11), QTime(1,1), KDateTime::Spec(KTimeZone("(GMT+01:00) West Central Africa")))); - KMime::Message::Ptr msg = Kolab::KolabObjectWriter::writeEvent(event); - Kolab::KolabObjectReader reader(msg); - KCalCore::Event::Ptr result = reader.getEvent(); - kDebug() << result->dtStart().timeZone().name(); - QCOMPARE(result->dtStart().timeZone().name(), KTimeZone(QLatin1String("Africa/Lagos")).name()); -} +// void TimezoneTest::testKolabObjectWriter() +// { +// KCalCore::Event::Ptr event(new KCalCore::Event()); +// event->setOrganizer(KCalCore::Person::Ptr()); +// event->setDtStart(QDateTime(QDate(2012,11,11), QTime(1,1), QTimeZone("(GMT+01:00) West Central Africa"))); +// KMime::Message::Ptr msg = Kolab::KolabObjectWriter::writeEvent(event); +// Kolab::KolabObjectReader reader(msg); +// KCalCore::Event::Ptr result = reader.getEvent(); +// qDebug() << result->dtStart().timeZone().name(); +// QCOMPARE(result->dtStart().timeZone().name(), QTimeZone(QLatin1String("Africa/Lagos")).id()); +// } // void TimezoneTest::testKolabObjectReader() // { @@ -130,7 +102,7 @@ // QCOMPARE(Kolab::ErrorHandler::instance().error(), Kolab::ErrorHandler::Debug); // // KCalCore::Incidence::Ptr convertedIncidence = reader.getIncidence(); -// kDebug() << "read incidence"; +// qDebug() << "read incidence"; // // //Parse ICalFile for comparison // QFile icalFile( icalFileName ); @@ -159,7 +131,7 @@ void TimezoneTest::testFindLegacyTimezone() { const QString normalized = TimezoneConverter::normalizeTimezone("US/Pacific"); - kDebug() << normalized; + qDebug() << normalized; QEXPECT_FAIL("", "Currently broken", Continue); QVERIFY(!normalized.isEmpty()); } @@ -167,20 +139,14 @@ void TimezoneTest::testIgnoreInvalidTimezone() { const QString normalized = TimezoneConverter::normalizeTimezone("FOOOOBAR"); - kDebug() << normalized; + qDebug() << normalized; QVERIFY(normalized.isEmpty()); } -void TimezoneTest::testTimezoneDaemonAvailable() -{ - //With KDE it should be available and with libcalendaring it should return true - QVERIFY(KSystemTimeZones::isTimeZoneDaemonAvailable()); -} - void TimezoneTest::testUTCOffset() { const Kolab::cDateTime expected(2013, 10, 23, 2, 0 ,0, true); - const KDateTime input(KDateTime::fromString("2013-10-23T04:00:00+02:00", KDateTime::RFC3339Date)); + const QDateTime input(QDateTime::fromString("2013-10-23T04:00:00+02:00", Qt::ISODate)); const Kolab::cDateTime result = Kolab::Conversion::fromDate(input); QVERIFY(!Kolab::ErrorHandler::instance().errorOccured()); QCOMPARE(result, expected); @@ -188,24 +154,25 @@ void TimezoneTest::localTimezone() { + // { + // const Kolab::cDateTime result = Kolab::Conversion::fromDate(QDateTime(QDate(2013, 10, 10), QTime(2, 0, 0), Qt::LocalZone)); + // QVERIFY(!result.timezone().empty()); + // QVERIFY(!Kolab::ErrorHandler::instance().errorOccured()); + // } { - const Kolab::cDateTime result = Kolab::Conversion::fromDate(KDateTime(QDate(2013, 10, 10), QTime(2, 0, 0), KDateTime::LocalZone)); - QVERIFY(!result.timezone().empty()); - QVERIFY(!Kolab::ErrorHandler::instance().errorOccured()); - } - { - const Kolab::cDateTime result = Kolab::Conversion::fromDate(KDateTime(QDate(2013, 10, 10), QTime(2, 0, 0), KDateTime::ClockTime)); + const Kolab::cDateTime result = Kolab::Conversion::fromDate(QDateTime(QDate(2013, 10, 10), QTime(2, 0, 0), Qt::LocalTime)); + QVERIFY(result.timezone().empty()); QVERIFY(!Kolab::ErrorHandler::instance().errorOccured()); } { - const Kolab::cDateTime result = Kolab::Conversion::fromDate(KDateTime(QDate(2013, 10, 10), QTime(2, 0, 0), KDateTime::TimeZone)); + const Kolab::cDateTime result = Kolab::Conversion::fromDate(QDateTime(QDate(2013, 10, 10), QTime(2, 0, 0), Qt::TimeZone)); QVERIFY(result.timezone().empty()); QVERIFY(!Kolab::ErrorHandler::instance().errorOccured()); } { - KDateTime dt(QDate(2013, 10, 10), QTime(2, 0, 0), KTimeZone("/etc/localzone")); + QDateTime dt(QDate(2013, 10, 10), QTime(2, 0, 0), QTimeZone("/etc/localzone")); const Kolab::cDateTime result = Kolab::Conversion::fromDate(dt); - kDebug() << result.timezone(); + qDebug() << result.timezone(); QVERIFY(result.timezone().empty()); QVERIFY(!Kolab::ErrorHandler::instance().errorOccured()); }
View file
libkolab-2.0.tar.gz/tests/timezonetest.h -> libkolab-3.0.0.tar.gz/tests/timezonetest.h
Changed
@@ -31,11 +31,8 @@ void testFromName(); void testFromHardcodedList_data(); void testFromHardcodedList(); - void testKolabObjectWriter(); - // void testKolabObjectReader(); void testFindLegacyTimezone(); void testIgnoreInvalidTimezone(); - void testTimezoneDaemonAvailable(); void testUTCOffset(); void localTimezone(); };
View file
libkolab.dsc
Changed
@@ -1,8 +1,8 @@ Format: 1.0 Source: libkolab -Binary: libkolab2, php-kolab, python-kolab, libkolab-dev +Binary: libkolab3, php-kolab, python-kolab, libkolab-dev Architecture: any -Version: 2.0~dev20151230-0~kolab16 +Version: 3.0~dev20151230-0~kolab16 Maintainer: Jeroen van Meeuwen <vanmeeuwen@kolabsys.com> Uploaders: Jeroen van Meeuwen <vanmeeuwen@kolabsys.com> Homepage: http://git.kolab.org/libkolab @@ -10,15 +10,16 @@ Build-Depends: cmake, debhelper, + libcurl4-gnutls-dev, libboost-dev, - libboost-program-options-dev, libboost-thread-dev, libboost-system-dev, - libcalendaring-dev (>= 4.9.1), - libcurl4-gnutls-dev, libkolabxml-dev (>= 1.0), libossp-uuid-dev, - libqt4-dev, + qtbase5-dev, + libkf5coreaddons-dev, + libkf5calendarcore-dev, + libkf5mime-dev, libxerces-c-dev, php-cgi | php5-cli, php-dev | php5-dev, @@ -36,5 +37,5 @@ php-kolab deb libs optional python-kolab deb python optional Files: - 00000000000000000000000000000000 0 libkolab-2.0.tar.gz + 00000000000000000000000000000000 0 libkolab-3.0.0.tar.gz 00000000000000000000000000000000 0 debian.tar.gz
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.