[pim/akonadi-calendar] /: Make use of KCalendarCore 6.30 functions when available

Volker Krause <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit 5dcb67102318a1840b571c9d6350b825da26b5e0 by Volker Krause.
Committed on 15/08/2026 at 13:30.
Pushed by vkrause into branch 'master'.

Make use of KCalendarCore 6.30 functions when available

This removes the last uses of KCalUtils here, so once the minimum KF
version reaches 6.30 we can drop that entirely here.

M  +16   -8    autotests/itiphandlertest.cpp
M  +2    -2    autotests/itiphandlertest.h
M  +10   -2    serializers/akonadi_serializer_kcalcore.cpp
M  +0    -1    src/todomodel.cpp

https://invent.kde.org/pim/akonadi-calendar/-/commit/5dcb67102318a1840b571c9d6350b825da26b5e0

diff --git a/autotests/itiphandlertest.cpp b/autotests/itiphandlertest.cpp
index d25e6980..d052e34f 100644
--- a/autotests/itiphandlertest.cpp
+++ b/autotests/itiphandlertest.cpp
@@ -220,7 +220,7 @@ void ITIPHandlerTest::testProcessITIPMessage()
 
     m_expectedResult = expectedResult;
 
-    QString const iCalData = icalData(data_filename);
+    const auto iCalData = icalData(data_filename);
     Akonadi::Item::List items;
     processItip(iCalData, receiver, action, expectedNumIncidences, items);
 
@@ -295,16 +295,16 @@ void ITIPHandlerTest::testProcessITIPMessages()
 
     for (int i = 0; i < invitation_filenames.count(); i++) {
         // First accept the invitation that creates the incidence:
-        QString const iCalData = icalData(invitation_filenames.at(i));
+        const auto iCalData = icalData(invitation_filenames.at(i));
         Item::List items;
         qDebug() << "Processing " << invitation_filenames.at(i);
         processItip(iCalData, receiver, actions.at(i), -1, items);
     }
 
-    QString const expectedICalData = icalData(expected_filename);
+    const auto expectedICalData = icalData(expected_filename);
     KCalendarCore::MemoryCalendar::Ptr const expectedCalendar = KCalendarCore::MemoryCalendar::Ptr(new KCalendarCore::MemoryCalendar(QTimeZone::utc()));
     KCalendarCore::ICalFormat format;
-    format.fromString(expectedCalendar, expectedICalData);
+    QVERIFY(format.fromRawString(expectedCalendar, expectedICalData));
     compareCalendars(expectedCalendar); // Here's where the cool and complex comparisons are done
 
     cleanup();
@@ -346,7 +346,7 @@ void ITIPHandlerTest::testProcessITIPMessageCancel()
     m_expectedResult = Akonadi::ITIPHandler::ResultSuccess;
 
     // First accept the invitation that creates the incidence:
-    QString iCalData = icalData(creation_data_filename);
+    auto iCalData = icalData(creation_data_filename);
     Item::List items;
     processItip(iCalData, receiver, QStringLiteral("accepted"), 1, items);
 
@@ -593,13 +593,13 @@ void ITIPHandlerTest::createITIPHandler()
     connect(m_itipHandler, &ITIPHandler::iTipMessageProcessed, this, &ITIPHandlerTest::oniTipMessageProcessed);
 }
 
-QString ITIPHandlerTest::icalData(const QString &data_filename)
+QByteArray ITIPHandlerTest::icalData(const QString &data_filename)
 {
     QString const absolutePath = QFINDTESTDATA("itip_data/"_L1 + data_filename);
-    return QString::fromLatin1(readFile(absolutePath));
+    return readFile(absolutePath);
 }
 
-void ITIPHandlerTest::processItip(const QString &icaldata,
+void ITIPHandlerTest::processItip(const QByteArray &icaldata,
                                   const QString &receiver,
                                   const QString &action,
                                   int expectedNumIncidences,
@@ -610,7 +610,15 @@ void ITIPHandlerTest::processItip(const QString &icaldata,
 
     MemoryCalendar::Ptr calendar(new MemoryCalendar(QTimeZone::systemTimeZone()));
     ICalFormat format;
+#if KCALENDARCORE_VERSION < QT_VERSION_CHECK(6, 30, 0)
+    const auto message = format.parseScheduleMessage(calendar, QString::fromUtf8(icaldata));
+#else
     const auto message = format.parseScheduleMessage(calendar, icaldata);
+#endif
+    if (!message) {
+        QSKIP("invalid input");
+        return;
+    }
     m_itipHandler->processiTIPMessage(receiver, message, action);
     waitForIt();
 
diff --git a/autotests/itiphandlertest.h b/autotests/itiphandlertest.h
index 8fd7dc8d..8ec06ec9 100644
--- a/autotests/itiphandlertest.h
+++ b/autotests/itiphandlertest.h
@@ -44,8 +44,8 @@ private:
     void waitForSignals();
     void cleanup();
     void createITIPHandler();
-    QString icalData(const QString &filename);
-    void processItip(const QString &icaldata, const QString &receiver, const QString &action, int expectedNumIncidences, Akonadi::Item::List &items);
+    QByteArray icalData(const QString &filename);
+    void processItip(const QByteArray &icaldata, const QString &receiver, const QString &action, int expectedNumIncidences, Akonadi::Item::List &items);
     KCalendarCore::Attendee ourAttendee(const KCalendarCore::Incidence::Ptr &incidence) const;
 
 public Q_SLOTS:
diff --git a/serializers/akonadi_serializer_kcalcore.cpp b/serializers/akonadi_serializer_kcalcore.cpp
index 286ba086..06ec4400 100644
--- a/serializers/akonadi_serializer_kcalcore.cpp
+++ b/serializers/akonadi_serializer_kcalcore.cpp
@@ -13,7 +13,9 @@
 #include <KCalendarCore/Event>
 #include <KCalendarCore/Todo>
 
+#if KCALENDARCORE_VERSION < QT_VERSION_CHECK(6, 30, 0)
 #include <KCalUtils/Stringify>
+#endif
 
 #include <KLocalizedString>
 
@@ -22,7 +24,6 @@
 #include <QIODevice>
 
 using namespace KCalendarCore;
-using namespace KCalUtils;
 using namespace Akonadi;
 
 SerializerPluginKCalCore::SerializerPluginKCalCore() = default;
@@ -231,7 +232,14 @@ static void compareIncidence(AbstractDifferencesReporter *reporter, const Incide
     }
 
     if (left->status() != right->status()) {
-        reporter->addProperty(AbstractDifferencesReporter::ConflictMode, i18n("Status"), Stringify::incidenceStatus(left), Stringify::incidenceStatus(right));
+#if KCALENDARCORE_VERSION < QT_VERSION_CHECK(6, 30, 0)
+        reporter->addProperty(AbstractDifferencesReporter::ConflictMode,
+                              i18n("Status"),
+                              KCalUtils::Stringify::incidenceStatus(left),
+                              KCalUtils::Stringify::incidenceStatus(right));
+#else
+        reporter->addProperty(AbstractDifferencesReporter::ConflictMode, i18n("Status"), left->statusName(), right->statusName());
+#endif
     }
 
     if (left->secrecy() != right->secrecy()) {
diff --git a/src/todomodel.cpp b/src/todomodel.cpp
index 9d85011f..eb8492e1 100644
--- a/src/todomodel.cpp
+++ b/src/todomodel.cpp
@@ -17,7 +17,6 @@ using namespace Qt::Literals::StringLiterals;
 #include <Akonadi/IncidenceTreeModel>
 #include <Akonadi/TagCache>
 
-#include <KCalUtils/IncidenceFormatter>
 #if KCALENDARCORE_VERSION < QT_VERSION_CHECK(6, 29, 0)
 #include <KCalUtils/DndFactory>
 #include <KCalUtils/ICalDrag>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.