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 }