File indexing completed on 2025-01-19 04:56:45
0001 /* 0002 * SPDX-FileCopyrightText: 2015 Kevin Ottens <ervin@kde.org> 0003 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0004 */ 0005 0006 0007 #include "gentodo.h" 0008 0009 #include <KCalendarCore/Todo> 0010 #include <QDateTime> 0011 #include <akonadi/akonadiserializer.h> 0012 0013 using namespace Testlib; 0014 using Akonadi::Serializer; 0015 0016 GenTodo::GenTodo(const Akonadi::Item &item) 0017 : m_item(item) 0018 { 0019 m_item.setMimeType(KCalendarCore::Todo::todoMimeType()); 0020 if (!m_item.hasPayload<KCalendarCore::Todo::Ptr>()) 0021 m_item.setPayload(KCalendarCore::Todo::Ptr::create()); 0022 } 0023 0024 Testlib::GenTodo::operator Akonadi::Item() 0025 { 0026 return m_item; 0027 } 0028 0029 GenTodo &GenTodo::withId(Akonadi::Item::Id id) 0030 { 0031 m_item.setId(id); 0032 return *this; 0033 } 0034 0035 GenTodo &GenTodo::withParent(Akonadi::Collection::Id id) 0036 { 0037 m_item.setParentCollection(Akonadi::Collection(id)); 0038 return *this; 0039 } 0040 0041 GenTodo &GenTodo::withContexts(const QStringList &contextUids) 0042 { 0043 auto todo = m_item.payload<KCalendarCore::Todo::Ptr>(); 0044 if (contextUids.isEmpty()) 0045 todo->removeCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyContextList()); 0046 else 0047 todo->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyContextList(), contextUids.join(',')); 0048 return *this; 0049 } 0050 0051 GenTodo &GenTodo::asProject(bool value) 0052 { 0053 auto todo = m_item.payload<KCalendarCore::Todo::Ptr>(); 0054 if (value) 0055 todo->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsProject(), QStringLiteral("1")); 0056 else 0057 todo->removeCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsProject()); 0058 return *this; 0059 } 0060 0061 GenTodo &GenTodo::asContext(bool value) 0062 { 0063 auto todo = m_item.payload<KCalendarCore::Todo::Ptr>(); 0064 if (value) 0065 todo->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsContext(), QStringLiteral("1")); 0066 else 0067 todo->removeCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsContext()); 0068 return *this; 0069 } 0070 0071 GenTodo &GenTodo::withUid(const QString &uid) 0072 { 0073 m_item.payload<KCalendarCore::Todo::Ptr>()->setUid(uid); 0074 return *this; 0075 } 0076 0077 GenTodo &GenTodo::withParentUid(const QString &uid) 0078 { 0079 m_item.payload<KCalendarCore::Todo::Ptr>()->setRelatedTo(uid); 0080 return *this; 0081 } 0082 0083 GenTodo &GenTodo::withTitle(const QString &title) 0084 { 0085 m_item.payload<KCalendarCore::Todo::Ptr>()->setSummary(title); 0086 return *this; 0087 } 0088 0089 GenTodo &GenTodo::withText(const QString &text) 0090 { 0091 m_item.payload<KCalendarCore::Todo::Ptr>()->setDescription(text); 0092 return *this; 0093 } 0094 0095 GenTodo &GenTodo::done(bool value) 0096 { 0097 m_item.payload<KCalendarCore::Todo::Ptr>()->setCompleted(value); 0098 return *this; 0099 } 0100 0101 GenTodo &GenTodo::withDoneDate(const QString &date) 0102 { 0103 m_item.payload<KCalendarCore::Todo::Ptr>()->setCompleted(QDate::fromString(date, Qt::ISODate).startOfDay()); 0104 return *this; 0105 } 0106 0107 GenTodo &GenTodo::withDoneDate(const QDate &date) 0108 { 0109 m_item.payload<KCalendarCore::Todo::Ptr>()->setCompleted(date.startOfDay()); 0110 return *this; 0111 } 0112 0113 GenTodo &GenTodo::withStartDate(const QString &date) 0114 { 0115 m_item.payload<KCalendarCore::Todo::Ptr>()->setDtStart(QDate::fromString(date, Qt::ISODate).startOfDay()); 0116 return *this; 0117 } 0118 0119 GenTodo &GenTodo::withStartDate(const QDate &date) 0120 { 0121 m_item.payload<KCalendarCore::Todo::Ptr>()->setDtStart(date.startOfDay()); 0122 return *this; 0123 } 0124 0125 GenTodo &GenTodo::withDueDate(const QString &date) 0126 { 0127 m_item.payload<KCalendarCore::Todo::Ptr>()->setDtDue(QDate::fromString(date, Qt::ISODate).startOfDay()); 0128 return *this; 0129 } 0130 0131 GenTodo &GenTodo::withDueDate(const QDate &date) 0132 { 0133 m_item.payload<KCalendarCore::Todo::Ptr>()->setDtDue(date.startOfDay()); 0134 return *this; 0135 }