Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kcalendarcore for openSUSE:Factory checked in at 2022-07-11 19:08:25 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kcalendarcore (Old) and /work/SRC/openSUSE:Factory/.kcalendarcore.new.1523 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kcalendarcore" Mon Jul 11 19:08:25 2022 rev:34 rq:988116 version:5.96.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kcalendarcore/kcalendarcore.changes 2022-06-17 21:20:43.586715247 +0200 +++ /work/SRC/openSUSE:Factory/.kcalendarcore.new.1523/kcalendarcore.changes 2022-07-11 19:09:34.679624489 +0200 @@ -1,0 +2,13 @@ +Sun Jul 3 11:55:47 UTC 2022 - Christophe Giboudeaux <christo...@krop.fr> + +- Update to 5.96.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/5/5.96.0 +- Changes since 5.95.0: + * Don't drop custom properties with non-text value types + * Add calendar loading state property + * Fix UTC offset timezone loading with latest Qt 5.15.x + * Change the xCalFormat classes to use a hierarchical dptr + +------------------------------------------------------------------- Old: ---- kcalendarcore-5.95.0.tar.xz kcalendarcore-5.95.0.tar.xz.sig New: ---- kcalendarcore-5.96.0.tar.xz kcalendarcore-5.96.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kcalendarcore.spec ++++++ --- /var/tmp/diff_new_pack.93XTNg/_old 2022-07-11 19:09:35.079625069 +0200 +++ /var/tmp/diff_new_pack.93XTNg/_new 2022-07-11 19:09:35.091625087 +0200 @@ -16,14 +16,14 @@ # -%define _tar_path 5.95 +%define _tar_path 5.96 # Full KF5 version (e.g. 5.33.0) %{!?_kf5_version: %global _kf5_version %{version}} # Last major and minor KF5 version (e.g. 5.33) %{!?_kf5_bugfix_version: %define _kf5_bugfix_version %(echo %{_kf5_version} | awk -F. '{print $1"."$2}')} %bcond_without released Name: kcalendarcore -Version: 5.95.0 +Version: 5.96.0 Release: 0 Summary: Library to access and handle calendar data License: LGPL-2.0-or-later ++++++ kcalendarcore-5.95.0.tar.xz -> kcalendarcore-5.96.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcalendarcore-5.95.0/CMakeLists.txt new/kcalendarcore-5.96.0/CMakeLists.txt --- old/kcalendarcore-5.95.0/CMakeLists.txt 2022-06-04 10:14:45.000000000 +0200 +++ new/kcalendarcore-5.96.0/CMakeLists.txt 2022-07-02 16:29:36.000000000 +0200 @@ -1,11 +1,11 @@ cmake_minimum_required(VERSION 3.16) -set(KF_VERSION "5.95.0") # handled by release scripts +set(KF_VERSION "5.96.0") # handled by release scripts project(KCalendarCore VERSION ${KF_VERSION}) # ECM setup include(FeatureSummary) -find_package(ECM 5.95.0 NO_MODULE) +find_package(ECM 5.96.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) @@ -22,6 +22,7 @@ include(ECMGenerateHeaders) include(ECMGeneratePriFile) include(ECMGeneratePkgConfigFile) +include(ECMDeprecationSettings) include(ECMSetupVersion) include(ECMQtDeclareLoggingCategory) @@ -70,9 +71,9 @@ INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} ) - -add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050f02) - +ecm_set_disabled_deprecation_versions( + QT 5.15.2 +) ########### Targets ########### add_subdirectory(src) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcalendarcore-5.95.0/autotests/testicalformat.cpp new/kcalendarcore-5.96.0/autotests/testicalformat.cpp --- old/kcalendarcore-5.95.0/autotests/testicalformat.cpp 2022-06-04 10:14:45.000000000 +0200 +++ new/kcalendarcore-5.96.0/autotests/testicalformat.cpp 2022-07-02 16:29:36.000000000 +0200 @@ -512,3 +512,32 @@ QCOMPARE(duration.asSeconds(), 7200); QCOMPARE(format.toString(duration), QLatin1String("PT2H")); } + +void ICalFormatTest::testNonTextCustomProperties() +{ + const auto input = QLatin1String( + "BEGIN:VCALENDAR\n" + "VERSION:2.0\n" + "BEGIN:VEVENT\n" + "X-APPLE-TRAVEL-START;ROUTING=CAR;VALUE=URI;X-ADDRESS=Bingerdenallee 1\\n\n" + " 6921 JN Duiven\\nNederland;X-TITLE=Home:\n" + "X-APPLE-TRAVEL-DURATION;VALUE=DURATION:PT45M\n" + "X-APPLE-STRUCTURED-LOCATION;VALUE=URI;X-ADDRESS=Olympus 1\\n3524 WB Utre\n" + " cht\\nThe Netherlands;X-APPLE-RADIUS=49.91307222863458;X-TITLE=Olympus 1\n" + " :geo:52.063921,5.128511\n" + "BEGIN:VALARM\n" + "TRIGGER;X-APPLE-RELATED-TRAVEL=-PT30M:-PT1H15M\n" + "END:VALARM\n" + "END:VEVENT\n" + "END:VCALENDAR\n"); + ICalFormat format; + MemoryCalendar::Ptr cal(new MemoryCalendar(QTimeZone::utc())); + QVERIFY(format.fromString(cal, input)); + const auto events = cal->events(); + QCOMPARE(events.size(), 1); + + const auto event = events[0]; + QCOMPARE(event->nonKDECustomProperty("X-APPLE-TRAVEL-DURATION"), QLatin1String("PT45M")); + QCOMPARE(event->nonKDECustomProperty("X-APPLE-TRAVEL-START"), QString()); + QCOMPARE(event->nonKDECustomProperty("X-APPLE-STRUCTURED-LOCATION"), QLatin1String("geo:52.063921,5.128511")); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcalendarcore-5.95.0/autotests/testicalformat.h new/kcalendarcore-5.96.0/autotests/testicalformat.h --- old/kcalendarcore-5.95.0/autotests/testicalformat.h 2022-06-04 10:14:45.000000000 +0200 +++ new/kcalendarcore-5.96.0/autotests/testicalformat.h 2022-07-02 16:29:36.000000000 +0200 @@ -31,6 +31,7 @@ void testUidGenerationStability(); void testUidGenerationUniqueness(); void testIcalFormat(); + void testNonTextCustomProperties(); }; #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcalendarcore-5.95.0/src/CMakeLists.txt new/kcalendarcore-5.96.0/src/CMakeLists.txt --- old/kcalendarcore-5.95.0/src/CMakeLists.txt 2022-06-04 10:14:45.000000000 +0200 +++ new/kcalendarcore-5.96.0/src/CMakeLists.txt 2022-07-02 16:29:36.000000000 +0200 @@ -101,7 +101,7 @@ GROUP_BASE_NAME KF VERSION ${KF_VERSION} DEPRECATED_BASE_VERSION 0 - DEPRECATION_VERSIONS 5.64 5.89 5.91 5.95 + DEPRECATION_VERSIONS 5.64 5.89 5.91 5.95 5.96 EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT} ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcalendarcore-5.95.0/src/calendar.cpp new/kcalendarcore-5.96.0/src/calendar.cpp --- old/kcalendarcore-5.95.0/src/calendar.cpp 2022-06-04 10:14:45.000000000 +0200 +++ new/kcalendarcore-5.96.0/src/calendar.cpp 2022-07-02 16:29:36.000000000 +0200 @@ -1401,3 +1401,18 @@ Q_EMIT accessModeChanged(); } } + +bool Calendar::isLoading() const +{ + return d->mIsLoading; +} + +void Calendar::setIsLoading(bool isLoading) +{ + if (d->mIsLoading == isLoading) { + return; + } + + d->mIsLoading = isLoading; + Q_EMIT isLoadingChanged(); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcalendarcore-5.95.0/src/calendar.h new/kcalendarcore-5.96.0/src/calendar.h --- old/kcalendarcore-5.95.0/src/calendar.h 2022-06-04 10:14:45.000000000 +0200 +++ new/kcalendarcore-5.96.0/src/calendar.h 2022-07-02 16:29:36.000000000 +0200 @@ -138,6 +138,7 @@ Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) Q_PROPERTY(QIcon icon READ icon WRITE setIcon NOTIFY iconChanged) Q_PROPERTY(KCalendarCore::AccessMode accessMode READ accessMode WRITE setAccessMode NOTIFY accessModeChanged) + Q_PROPERTY(bool isLoading READ isLoading NOTIFY isLoadingChanged) public: /** @@ -338,6 +339,13 @@ void setAccessMode(const AccessMode mode); /** + * Returns @c true if the calendar is still loading its data and thus + * read access will not return complete (or even any) results. + * @since 5.96 + */ + bool isLoading() const; + + /** Clears out the current calendar, freeing all used memory etc. */ virtual void close() = 0; @@ -1482,6 +1490,15 @@ bool deletionTracking() const; /** + * Sets the loading state of this calendar. + * This is false by default and only needs to be called for calendars + * that implement asynchronous loading. + * @since 5.96 + * @see isLoading() + */ + void setIsLoading(bool isLoading); + + /** @copydoc IncidenceBase::virtual_hook() */ @@ -1529,6 +1546,13 @@ */ void ownerChanged(); + /** + * Emitted when the loading state changed. + * @since 5.96 + * @see isLoading() + */ + void isLoadingChanged(); + private: friend class ICalFormat; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcalendarcore-5.95.0/src/calendar_p.h new/kcalendarcore-5.96.0/src/calendar_p.h --- old/kcalendarcore-5.95.0/src/calendar_p.h 2022-06-04 10:14:45.000000000 +0200 +++ new/kcalendarcore-5.96.0/src/calendar_p.h 2022-07-02 16:29:36.000000000 +0200 @@ -75,6 +75,7 @@ QMap<QString, Incidence::List> mIncidenceRelations; bool batchAddingInProgress = false; bool mDeletionTracking = false; + bool mIsLoading = false; QString mId; QString mName; QIcon mIcon; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcalendarcore-5.95.0/src/calformat.cpp new/kcalendarcore-5.96.0/src/calformat.cpp --- old/kcalendarcore-5.95.0/src/calformat.cpp 2022-06-04 10:14:45.000000000 +0200 +++ new/kcalendarcore-5.96.0/src/calformat.cpp 2022-07-02 16:29:36.000000000 +0200 @@ -17,89 +17,74 @@ */ #include "calformat.h" +#include "calformat_p.h" #include "exceptions.h" #include <QUuid> using namespace KCalendarCore; -/** - Private class that helps to provide binary compatibility between releases. - @internal -*/ -//@cond PRIVATE -class Q_DECL_HIDDEN KCalendarCore::CalFormat::Private -{ -public: - Private() - { - } - ~Private() - { - delete mException; - } - static QString mApplication; // Name of application, for creating unique ID strings - static QString mProductId; // PRODID string to write to calendar files - QString mLoadedProductId; // PRODID string loaded from calendar file - Exception *mException = nullptr; -}; - -QString CalFormat::Private::mApplication = QStringLiteral("libkcal"); -QString CalFormat::Private::mProductId = QStringLiteral("-//K Desktop Environment//NONSGML libkcal 4.3//EN"); -//@endcond +CalFormatPrivate::~CalFormatPrivate() = default; + +QString CalFormatPrivate::mApplication = QStringLiteral("libkcal"); +QString CalFormatPrivate::mProductId = QStringLiteral("-//K Desktop Environment//NONSGML libkcal 4.3//EN"); +#if KCALENDARCORE_BUILD_DEPRECATED_SINCE(5, 96) CalFormat::CalFormat() - : d(new KCalendarCore::CalFormat::Private) + : d_ptr(new KCalendarCore::CalFormatPrivate) +{ +} +#endif + +CalFormat::CalFormat(CalFormatPrivate *dd) + : d_ptr(dd) { } CalFormat::~CalFormat() { clearException(); - delete d; } void CalFormat::clearException() { - delete d->mException; - d->mException = nullptr; + d_ptr->mException.reset(); } void CalFormat::setException(Exception *exception) { - delete d->mException; - d->mException = exception; + d_ptr->mException.reset(exception); } Exception *CalFormat::exception() const { - return d->mException; + return d_ptr->mException.get(); } void CalFormat::setApplication(const QString &application, const QString &productID) { - Private::mApplication = application; - Private::mProductId = productID; + CalFormatPrivate::mApplication = application; + CalFormatPrivate::mProductId = productID; } const QString &CalFormat::application() { - return Private::mApplication; + return CalFormatPrivate::mApplication; } const QString &CalFormat::productId() { - return Private::mProductId; + return CalFormatPrivate::mProductId; } QString CalFormat::loadedProductId() { - return d->mLoadedProductId; + return d_ptr->mLoadedProductId; } void CalFormat::setLoadedProductId(const QString &id) { - d->mLoadedProductId = id; + d_ptr->mLoadedProductId = id; } QString CalFormat::createUniqueId() @@ -107,9 +92,11 @@ return QUuid::createUuid().toString().mid(1, 36); } +#if KCALENDARCORE_BUILD_DEPRECATED_SINCE(5, 96) void CalFormat::virtual_hook(int id, void *data) { Q_UNUSED(id); Q_UNUSED(data); Q_ASSERT(false); } +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcalendarcore-5.95.0/src/calformat.h new/kcalendarcore-5.96.0/src/calformat.h --- old/kcalendarcore-5.95.0/src/calformat.h 2022-06-04 10:14:45.000000000 +0200 +++ new/kcalendarcore-5.96.0/src/calformat.h 2022-07-02 16:29:36.000000000 +0200 @@ -21,8 +21,11 @@ #include <QString> +#include <memory> + namespace KCalendarCore { +class CalFormatPrivate; class Exception; /** @@ -35,10 +38,14 @@ class KCALENDARCORE_EXPORT CalFormat { public: +#if KCALENDARCORE_BUILD_DEPRECATED_SINCE(5, 96) /** Constructs a new Calendar Format object. + @deprecated since 5.96, unused with the move to hierarchical dptrs. */ + KCALENDARCORE_DEPRECATED_VERSION(5, 96, "unused, see API docs") CalFormat(); +#endif /** Destructor. @@ -165,17 +172,26 @@ */ void setLoadedProductId(const QString &id); +#if KCALENDARCORE_BUILD_DEPRECATED_SINCE(5, 96) /** @copydoc IncidenceBase::virtual_hook() + @deprecated since 5.96 unused, hierarchical dptrs provide the same ABI compatible extension vector + as this class is not intended to be inherited externally. */ + KCALENDARCORE_DEPRECATED_VERSION(5, 96, "unused, see API docs") virtual void virtual_hook(int id, void *data); +#endif + + //@cond PRIVATE + CalFormat(CalFormatPrivate *dd); + std::unique_ptr<CalFormatPrivate> d_ptr; + //@endcond private: //@cond PRIVATE Q_DISABLE_COPY(CalFormat) - class Private; - Private *const d; + Q_DECLARE_PRIVATE(CalFormat) //@endcond }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcalendarcore-5.95.0/src/calformat_p.h new/kcalendarcore-5.96.0/src/calformat_p.h --- old/kcalendarcore-5.95.0/src/calformat_p.h 1970-01-01 01:00:00.000000000 +0100 +++ new/kcalendarcore-5.96.0/src/calformat_p.h 2022-07-02 16:29:36.000000000 +0200 @@ -0,0 +1,25 @@ +/* + SPDX-FileCopyrightText: 2001 Cornelius Schumacher <schumac...@kde.org> + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#ifndef KCALCORE_CALFORMAT_P_H +#define KCALCORE_CALFORMAT_P_H + +#include "exceptions.h" + +namespace KCalendarCore +{ +class CalFormatPrivate +{ +public: + virtual ~CalFormatPrivate(); + + static QString mApplication; // Name of application, for creating unique ID strings + static QString mProductId; // PRODID string to write to calendar files + QString mLoadedProductId; // PRODID string loaded from calendar file + std::unique_ptr<Exception> mException; +}; +} + +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcalendarcore-5.95.0/src/icalformat.cpp new/kcalendarcore-5.96.0/src/icalformat.cpp --- old/kcalendarcore-5.95.0/src/icalformat.cpp 2022-06-04 10:14:45.000000000 +0200 +++ new/kcalendarcore-5.96.0/src/icalformat.cpp 2022-07-02 16:29:36.000000000 +0200 @@ -17,6 +17,7 @@ */ #include "icalformat.h" #include "calendar_p.h" +#include "calformat_p.h" #include "icalformat_p.h" #include "icaltimezones_p.h" #include "kcalendarcore_debug.h" @@ -37,10 +38,10 @@ using namespace KCalendarCore; //@cond PRIVATE -class Q_DECL_HIDDEN KCalendarCore::ICalFormat::Private +class KCalendarCore::ICalFormatPrivate : public KCalendarCore::CalFormatPrivate { public: - Private(ICalFormat *parent) + ICalFormatPrivate(ICalFormat *parent) : mImpl(parent) , mTimeZone(QTimeZone::utc()) { @@ -51,14 +52,13 @@ //@endcond ICalFormat::ICalFormat() - : d(new Private(this)) + : CalFormat(new ICalFormatPrivate(this)) { } ICalFormat::~ICalFormat() { icalmemory_free_ring(); - delete d; } bool ICalFormat::load(const Calendar::Ptr &calendar, const QString &fileName) @@ -144,6 +144,8 @@ Incidence::Ptr ICalFormat::readIncidence(const QByteArray &string) { + Q_D(ICalFormat); + // Let's defend const correctness until the very gates of hell^Wlibical icalcomponent *calendar = icalcomponent_new_from_string(const_cast<char *>(string.constData())); if (!calendar) { @@ -179,6 +181,8 @@ bool ICalFormat::fromRawString(const Calendar::Ptr &cal, const QByteArray &string, bool deleted, const QString ¬ebook) { + Q_D(ICalFormat); + // Get first VCALENDAR component. // TODO: Handle more than one VCALENDAR or non-VCALENDAR top components icalcomponent *calendar; @@ -233,6 +237,8 @@ Incidence::Ptr ICalFormat::fromString(const QString &string) { + Q_D(ICalFormat); + MemoryCalendar::Ptr cal(new MemoryCalendar(d->mTimeZone)); fromString(cal, string); @@ -242,6 +248,8 @@ QString ICalFormat::toString(const Calendar::Ptr &cal, const QString ¬ebook, bool deleted) { + Q_D(ICalFormat); + icalcomponent *calendar = d->mImpl.createCalendarComponent(cal); icalcomponent *component; @@ -321,6 +329,8 @@ QString ICalFormat::toICalString(const Incidence::Ptr &incidence) { + Q_D(ICalFormat); + MemoryCalendar::Ptr cal(new MemoryCalendar(d->mTimeZone)); cal->addIncidence(Incidence::Ptr(incidence->clone())); return toString(cal.staticCast<Calendar>()); @@ -333,6 +343,7 @@ QByteArray ICalFormat::toRawString(const Incidence::Ptr &incidence) { + Q_D(ICalFormat); TimeZoneList tzUsedList; icalcomponent *component = d->mImpl.writeIncidence(incidence, iTIPRequest, &tzUsedList); @@ -364,6 +375,7 @@ QString ICalFormat::toString(RecurrenceRule *recurrence) { + Q_D(ICalFormat); icalproperty *property = icalproperty_new_rrule(d->mImpl.writeRecurrenceRule(recurrence)); QString text = QString::fromUtf8(icalproperty_as_ical_string(property)); icalproperty_free(property); @@ -372,6 +384,7 @@ QString KCalendarCore::ICalFormat::toString(const KCalendarCore::Duration &duration) const { + Q_D(const ICalFormat); const auto icalDuration = d->mImpl.writeICalDuration(duration); // contrary to the libical API docs, the returned string is actually freed by icalmemory_free_ring, // freeing it here explicitly causes a double deletion failure @@ -380,6 +393,7 @@ bool ICalFormat::fromString(RecurrenceRule *recurrence, const QString &rrule) { + Q_D(ICalFormat); if (!recurrence) { return false; } @@ -400,6 +414,7 @@ Duration ICalFormat::durationFromString(const QString &duration) const { + Q_D(const ICalFormat); icalerror_clear_errno(); const auto icalDuration = icaldurationtype_from_string(duration.toUtf8().constData()); if (icalerrno != ICAL_NO_ERROR) { @@ -411,6 +426,7 @@ QString ICalFormat::createScheduleMessage(const IncidenceBase::Ptr &incidence, iTIPMethod method) { + Q_D(ICalFormat); icalcomponent *message = nullptr; if (incidence->type() == Incidence::TypeEvent || incidence->type() == Incidence::TypeTodo) { @@ -456,6 +472,7 @@ FreeBusy::Ptr ICalFormat::parseFreeBusy(const QString &str) { + Q_D(ICalFormat); clearException(); icalcomponent *message = icalparser_parse_string(str.toUtf8().constData()); @@ -489,6 +506,7 @@ ScheduleMessage::Ptr ICalFormat::parseScheduleMessage(const Calendar::Ptr &cal, const QString &messageText) { + Q_D(ICalFormat); setTimeZone(cal->timeZone()); clearException(); @@ -645,22 +663,27 @@ void ICalFormat::setTimeZone(const QTimeZone &timeZone) { + Q_D(ICalFormat); d->mTimeZone = timeZone; } QTimeZone ICalFormat::timeZone() const { + Q_D(const ICalFormat); return d->mTimeZone; } QByteArray ICalFormat::timeZoneId() const { + Q_D(const ICalFormat); return d->mTimeZone.id(); } +#if KCALENDARCORE_BUILD_DEPRECATED_SINCE(5, 96) void ICalFormat::virtual_hook(int id, void *data) { Q_UNUSED(id); Q_UNUSED(data); Q_ASSERT(false); } +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcalendarcore-5.95.0/src/icalformat.h new/kcalendarcore-5.96.0/src/icalformat.h --- old/kcalendarcore-5.95.0/src/icalformat.h 2022-06-04 10:14:45.000000000 +0200 +++ new/kcalendarcore-5.96.0/src/icalformat.h 2022-07-02 16:29:36.000000000 +0200 @@ -24,6 +24,7 @@ namespace KCalendarCore { class FreeBusy; +class ICalFormatPrivate; class Incidence; class IncidenceBase; class RecurrenceRule; @@ -221,17 +222,21 @@ Q_REQUIRED_RESULT QByteArray timeZoneId() const; protected: +#if KCALENDARCORE_BUILD_DEPRECATED_SINCE(5, 96) /** @copydoc IncidenceBase::virtual_hook() */ void virtual_hook(int id, void *data) override; +#endif private: //@cond PRIVATE Q_DISABLE_COPY(ICalFormat) - class Private; - Private *const d; + Q_DECLARE_PRIVATE(ICalFormat) +#if KCALENDARCORE_BUILD_DEPRECATED_SINCE(5, 96) + void *unused; // former dptr, just kept for ABI compatibility +#endif //@endcond }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcalendarcore-5.95.0/src/icalformat_p.cpp new/kcalendarcore-5.96.0/src/icalformat_p.cpp --- old/kcalendarcore-5.95.0/src/icalformat_p.cpp 2022-06-04 10:14:45.000000000 +0200 +++ new/kcalendarcore-5.96.0/src/icalformat_p.cpp 2022-07-02 16:29:36.000000000 +0200 @@ -1938,8 +1938,7 @@ // Calling icalvalue_get_text( value ) on a datetime value crashes. nvalue = QString::fromUtf8(icalvalue_get_text(value)); } else { - p = icalcomponent_get_next_property(parent, ICAL_X_PROPERTY); - continue; + nvalue = QString::fromUtf8(icalproperty_get_value_as_string(p)); } } const char *name = icalproperty_get_x_name(p); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcalendarcore-5.95.0/src/icaltimezones.cpp new/kcalendarcore-5.96.0/src/icaltimezones.cpp --- old/kcalendarcore-5.95.0/src/icaltimezones.cpp 2022-06-04 10:14:45.000000000 +0200 +++ new/kcalendarcore-5.96.0/src/icaltimezones.cpp 2022-07-02 16:29:36.000000000 +0200 @@ -486,7 +486,7 @@ // If the VTIMEZONE is a known IANA time zone don't bother parsing the rest // of the VTIMEZONE, get QTimeZone directly from Qt - if (QTimeZone::isTimeZoneIdAvailable(icalTz.id)) { + if (QTimeZone::isTimeZoneIdAvailable(icalTz.id) || icalTz.id.startsWith("UTC")) { icalTz.qZone = QTimeZone(icalTz.id); return icalTz; } else { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcalendarcore-5.95.0/src/vcalformat.cpp new/kcalendarcore-5.96.0/src/vcalformat.cpp --- old/kcalendarcore-5.95.0/src/vcalformat.cpp 2022-06-04 10:14:45.000000000 +0200 +++ new/kcalendarcore-5.96.0/src/vcalformat.cpp 2022-07-02 16:29:36.000000000 +0200 @@ -23,6 +23,7 @@ */ #include "vcalformat.h" #include "calendar.h" +#include "calformat_p.h" #include "exceptions.h" #include "kcalendarcore_debug.h" @@ -61,7 +62,7 @@ c.remove(c.indexOf(x)); } -class Q_DECL_HIDDEN KCalendarCore::VCalFormat::Private +class KCalendarCore::VCalFormatPrivate : public CalFormatPrivate { public: Calendar::Ptr mCalendar; @@ -72,13 +73,12 @@ //@endcond VCalFormat::VCalFormat() - : d(new KCalendarCore::VCalFormat::Private) + : CalFormat(new KCalendarCore::VCalFormatPrivate) { } VCalFormat::~VCalFormat() { - delete d; } static void mimeErrorHandler(char *e) @@ -88,6 +88,7 @@ bool VCalFormat::load(const Calendar::Ptr &calendar, const QString &fileName) { + Q_D(VCalFormat); d->mCalendar = calendar; clearException(); @@ -132,6 +133,7 @@ bool VCalFormat::fromRawString(const Calendar::Ptr &calendar, const QByteArray &string, bool deleted, const QString ¬ebook) { + Q_D(VCalFormat); d->mCalendar = calendar; if (!string.size()) { @@ -170,6 +172,7 @@ Todo::Ptr VCalFormat::VTodoToEvent(VObject *vtodo) { + Q_D(VCalFormat); VObject *vo = nullptr; VObjectIterator voi; char *s = nullptr; @@ -636,6 +639,7 @@ Event::Ptr VCalFormat::VEventToEvent(VObject *vevent) { + Q_D(VCalFormat); VObject *vo = nullptr; VObjectIterator voi; char *s = nullptr; @@ -1210,6 +1214,7 @@ QString VCalFormat::qDateTimeToISO(const QDateTime &dt, bool zulu) { + Q_D(VCalFormat); if (!dt.isValid()) { return QString(); } @@ -1235,6 +1240,7 @@ QDateTime VCalFormat::ISOToQDateTime(const QString &dtStr) { + Q_D(VCalFormat); #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) auto noAllocString = QStringView{dtStr}; #else @@ -1352,6 +1358,7 @@ // that is used internally in the VCalFormat. void VCalFormat::populate(VObject *vcal, bool deleted, const QString ¬ebook) { + Q_D(VCalFormat); Q_UNUSED(notebook); // this function will populate the caldict dictionary and other event // lists. It turns vevents into Events and then inserts them. @@ -1699,6 +1706,7 @@ void VCalFormat::writeCustomProperties(VObject *o, const Incidence::Ptr &i) { + Q_D(VCalFormat); const QMap<QByteArray, QString> custom = i->customProperties(); for (auto cIt = custom.cbegin(); cIt != custom.cend(); ++cIt) { const QByteArray property = cIt.key(); @@ -1710,9 +1718,11 @@ } } +#if KCALENDARCORE_BUILD_DEPRECATED_SINCE(5, 96) void VCalFormat::virtual_hook(int id, void *data) { Q_UNUSED(id); Q_UNUSED(data); Q_ASSERT(false); } +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kcalendarcore-5.95.0/src/vcalformat.h new/kcalendarcore-5.96.0/src/vcalformat.h --- old/kcalendarcore-5.95.0/src/vcalformat.h 2022-06-04 10:14:45.000000000 +0200 +++ new/kcalendarcore-5.96.0/src/vcalformat.h 2022-07-02 16:29:36.000000000 +0200 @@ -47,6 +47,7 @@ { class Event; class Todo; +class VCalFormatPrivate; /** @brief @@ -196,17 +197,21 @@ void writeCustomProperties(VObject *o, const Incidence::Ptr &i); protected: +#if KCALENDARCORE_BUILD_DEPRECATED_SINCE(5, 96) /** @copydoc IncidenceBase::virtual_hook() */ void virtual_hook(int id, void *data) override; +#endif private: //@cond PRIVATE Q_DISABLE_COPY(VCalFormat) - class Private; - Private *const d; + Q_DECLARE_PRIVATE(VCalFormat) +#if KCALENDARCORE_BUILD_DEPRECATED_SINCE(5, 96) + void *unused; // former dptr, just kept for ABI compatibility +#endif //@endcond };