diff --git a/src/akonadi/akonadiserializer.cpp b/src/akonadi/akonadiserializer.cpp --- a/src/akonadi/akonadiserializer.cpp +++ b/src/akonadi/akonadiserializer.cpp @@ -198,19 +198,13 @@ task->setText(todo->description()); task->setDone(todo->isCompleted()); #if KCALCORE_VERSION >= QT_VERSION_CHECK(5, 6, 80) - if (todo->allDay()) { - task->setDoneDate(QDateTime(todo->completed().date(), QTime(), Qt::UTC)); - task->setStartDate(QDateTime(todo->dtStart().date(), QTime(), Qt::UTC)); - task->setDueDate(QDateTime(todo->dtDue().date(), QTime(), Qt::UTC)); - } else { - task->setDoneDate(todo->completed().toUTC()); - task->setStartDate(todo->dtStart().toUTC()); - task->setDueDate(todo->dtDue().toUTC()); - } + task->setDoneDate(todo->completed().toLocalTime().date()); + task->setStartDate(todo->dtStart().toLocalTime().date()); + task->setDueDate(todo->dtDue().toLocalTime().date()); #else - task->setDoneDate(todo->completed().dateTime().toUTC()); - task->setStartDate(todo->dtStart().dateTime().toUTC()); - task->setDueDate(todo->dtDue().dateTime().toUTC()); + task->setDoneDate(todo->completed().dateTime().toLocalTime().date()); + task->setStartDate(todo->dtStart().dateTime().toLocalTime().date()); + task->setDueDate(todo->dtDue().dateTime().toLocalTime().date()); #endif task->setProperty("itemId", item.id()); task->setProperty("parentCollectionId", item.parentCollection().id()); @@ -290,16 +284,11 @@ // We only support all-day todos, so ignore timezone information and possible effect from timezone on dates // KCalCore reads "DUE;VALUE=DATE:20171130" as QDateTime(QDate(2017, 11, 30), QTime(), Qt::LocalTime), for lack of timezone information - // so we should never call toUtc() on that, it would mess up the date. Instead we force UTC while preserving the date. + // so we should never call toUtc() on that, it would mess up the date. // If one day we want to support time information, we need to add a task->isAllDay()/setAllDay(). -#if KCALCORE_VERSION >= QT_VERSION_CHECK(5, 6, 80) - todo->setDtStart(QDateTime(task->startDate().date(), QTime(), Qt::UTC)); - todo->setDtDue(QDateTime(task->dueDate().date(), QTime(), Qt::UTC)); + todo->setDtStart(QDateTime(task->startDate())); + todo->setDtDue(QDateTime(task->dueDate())); todo->setAllDay(true); -#else - todo->setDtStart(KDateTime(task->startDate(), KDateTime::UTC)); - todo->setDtDue(KDateTime(task->dueDate(), KDateTime::UTC)); -#endif if (task->property("todoUid").isValid()) { todo->setUid(task->property("todoUid").toString()); @@ -350,7 +339,7 @@ // Needs to be done after all other dates are positioned // since this applies the recurrence logic if (task->isDone()) - todo->setCompleted(KDateTime(task->doneDate())); + todo->setCompleted(QDateTime(task->doneDate(), QTime(), Qt::UTC)); else todo->setCompleted(false); diff --git a/src/akonadi/akonaditaskqueries.cpp b/src/akonadi/akonaditaskqueries.cpp --- a/src/akonadi/akonaditaskqueries.cpp +++ b/src/akonadi/akonaditaskqueries.cpp @@ -107,7 +107,7 @@ { if (!m_findWorkdayTopLevel) { m_workdayPollTimer->start(); - m_today = Utils::DateTime::currentDateTime().date(); + m_today = Utils::DateTime::currentDate(); } auto fetch = m_helpers->fetchItems(StorageInterface::Tasks); @@ -117,10 +117,10 @@ const Domain::Task::Ptr task = m_serializer->createTaskFromItem(item); - const QDate doneDate = task->doneDate().date(); - const QDate startDate = task->startDate().date(); - const QDate dueDate = task->dueDate().date(); - const QDate today = Utils::DateTime::currentDateTime().date(); + const QDate doneDate = task->doneDate(); + const QDate startDate = task->startDate(); + const QDate dueDate = task->dueDate(); + const QDate today = Utils::DateTime::currentDate(); const bool pastStartDate = startDate.isValid() && startDate <= today; const bool pastDueDate = dueDate.isValid() && dueDate <= today; @@ -168,7 +168,7 @@ void TaskQueries::onWorkdayPollTimeout() { - auto newDate = Utils::DateTime::currentDateTime().date(); + auto newDate = Utils::DateTime::currentDate(); if (m_findWorkdayTopLevel && m_today != newDate) { m_today = newDate; m_findWorkdayTopLevel->reset(); diff --git a/src/domain/task.h b/src/domain/task.h --- a/src/domain/task.h +++ b/src/domain/task.h @@ -26,7 +26,7 @@ #define DOMAIN_TASK_H #include "artifact.h" -#include +#include #include namespace Domain { @@ -36,8 +36,8 @@ Q_OBJECT Q_PROPERTY(bool running READ isRunning WRITE setRunning NOTIFY runningChanged) Q_PROPERTY(bool done READ isDone WRITE setDone NOTIFY doneChanged) - Q_PROPERTY(QDateTime startDate READ startDate WRITE setStartDate NOTIFY startDateChanged) - Q_PROPERTY(QDateTime dueDate READ dueDate WRITE setDueDate NOTIFY dueDateChanged) + Q_PROPERTY(QDate startDate READ startDate WRITE setStartDate NOTIFY startDateChanged) + Q_PROPERTY(QDate dueDate READ dueDate WRITE setDueDate NOTIFY dueDateChanged) Q_PROPERTY(Domain::Task::Recurrence recurrence READ recurrence WRITE setRecurrence NOTIFY recurrenceChanged) Q_PROPERTY(Domain::Task::Delegate delegate READ delegate WRITE setDelegate NOTIFY delegateChanged) Q_PROPERTY(Domain::Task::Attachments attachements READ attachments WRITE setAttachments NOTIFY attachmentsChanged) @@ -123,39 +123,39 @@ bool isRunning() const; bool isDone() const; - QDateTime startDate() const; - QDateTime dueDate() const; - QDateTime doneDate() const; + QDate startDate() const; + QDate dueDate() const; + QDate doneDate() const; Recurrence recurrence() const; Attachments attachments() const; Delegate delegate() const; public slots: void setRunning(bool running); void setDone(bool done); - void setDoneDate(const QDateTime &doneDate); - void setStartDate(const QDateTime &startDate); - void setDueDate(const QDateTime &dueDate); + void setDoneDate(const QDate &doneDate); + void setStartDate(const QDate &startDate); + void setDueDate(const QDate &dueDate); void setRecurrence(Domain::Task::Recurrence recurrence); void setAttachments(const Domain::Task::Attachments &attachments); void setDelegate(const Domain::Task::Delegate &delegate); signals: void runningChanged(bool isRunning); void doneChanged(bool isDone); - void doneDateChanged(const QDateTime &doneDate); - void startDateChanged(const QDateTime &startDate); - void dueDateChanged(const QDateTime &dueDate); + void doneDateChanged(const QDate &doneDate); + void startDateChanged(const QDate &startDate); + void dueDateChanged(const QDate &dueDate); void recurrenceChanged(Domain::Task::Recurrence recurrence); void attachmentsChanged(const Domain::Task::Attachments &attachments); void delegateChanged(const Domain::Task::Delegate &delegate); private: bool m_running; bool m_done; - QDateTime m_startDate; - QDateTime m_dueDate; - QDateTime m_doneDate; + QDate m_startDate; + QDate m_dueDate; + QDate m_doneDate; Recurrence m_recurrence; Attachments m_attachments; Delegate m_delegate; diff --git a/src/domain/task.cpp b/src/domain/task.cpp --- a/src/domain/task.cpp +++ b/src/domain/task.cpp @@ -55,44 +55,44 @@ if (m_done == done) return; - const QDateTime doneDate = done ? Utils::DateTime::currentDateTime() : QDateTime(); + const QDate doneDate = done ? Utils::DateTime::currentDate() : QDate(); m_done = done; m_doneDate = doneDate; emit doneChanged(done); emit doneDateChanged(doneDate); } -void Task::setDoneDate(const QDateTime &doneDate) +void Task::setDoneDate(const QDate &doneDate) { if (m_doneDate == doneDate) return; m_doneDate = doneDate; emit doneDateChanged(doneDate); } -QDateTime Task::startDate() const +QDate Task::startDate() const { return m_startDate; } -void Task::setStartDate(const QDateTime &startDate) +void Task::setStartDate(const QDate &startDate) { if (m_startDate == startDate) return; m_startDate = startDate; emit startDateChanged(startDate); } -QDateTime Task::dueDate() const +QDate Task::dueDate() const { return m_dueDate; } -QDateTime Task::doneDate() const +QDate Task::doneDate() const { return m_doneDate; } @@ -120,7 +120,7 @@ emit runningChanged(running); } -void Task::setDueDate(const QDateTime &dueDate) +void Task::setDueDate(const QDate &dueDate) { if (m_dueDate == dueDate) return; diff --git a/src/presentation/artifacteditormodel.h b/src/presentation/artifacteditormodel.h --- a/src/presentation/artifacteditormodel.h +++ b/src/presentation/artifacteditormodel.h @@ -25,7 +25,7 @@ #ifndef PRESENTATION_ARTIFACTEDITORMODEL_H #define PRESENTATION_ARTIFACTEDITORMODEL_H -#include +#include #include #include @@ -48,8 +48,8 @@ Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged) Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged) Q_PROPERTY(bool done READ isDone WRITE setDone NOTIFY doneChanged) - Q_PROPERTY(QDateTime startDate READ startDate WRITE setStartDate NOTIFY startDateChanged) - Q_PROPERTY(QDateTime dueDate READ dueDate WRITE setDueDate NOTIFY dueDateChanged) + Q_PROPERTY(QDate startDate READ startDate WRITE setStartDate NOTIFY startDateChanged) + Q_PROPERTY(QDate dueDate READ dueDate WRITE setDueDate NOTIFY dueDateChanged) Q_PROPERTY(Domain::Task::Recurrence recurrence READ recurrence WRITE setRecurrence NOTIFY recurrenceChanged) Q_PROPERTY(QAbstractItemModel* attachmentModel READ attachmentModel CONSTANT) Q_PROPERTY(QString delegateText READ delegateText NOTIFY delegateTextChanged) @@ -77,8 +77,8 @@ QString text() const; QString title() const; bool isDone() const; - QDateTime startDate() const; - QDateTime dueDate() const; + QDate startDate() const; + QDate dueDate() const; Domain::Task::Recurrence recurrence() const; QAbstractItemModel *attachmentModel() const; QString delegateText() const; @@ -92,8 +92,8 @@ void setText(const QString &text); void setTitle(const QString &title); void setDone(bool done); - void setStartDate(const QDateTime &start); - void setDueDate(const QDateTime &due); + void setStartDate(const QDate &start); + void setDueDate(const QDate &due); void setRecurrence(Domain::Task::Recurrence recurrence); void delegate(const QString &name, const QString &email); @@ -109,17 +109,17 @@ void textChanged(const QString &text); void titleChanged(const QString &title); void doneChanged(bool done); - void startDateChanged(const QDateTime &date); - void dueDateChanged(const QDateTime &due); + void startDateChanged(const QDate &date); + void dueDateChanged(const QDate &due); void recurrenceChanged(Domain::Task::Recurrence recurrence); void delegateTextChanged(const QString &delegateText); private slots: void onTextChanged(const QString &text); void onTitleChanged(const QString &title); void onDoneChanged(bool done); - void onStartDateChanged(const QDateTime &start); - void onDueDateChanged(const QDateTime &due); + void onStartDateChanged(const QDate &start); + void onDueDateChanged(const QDate &due); void onRecurrenceChanged(Domain::Task::Recurrence recurrence); void onDelegateChanged(const Domain::Task::Delegate &delegate); @@ -131,8 +131,8 @@ void applyNewText(const QString &text); void applyNewTitle(const QString &title); void applyNewDone(bool done); - void applyNewStartDate(const QDateTime &start); - void applyNewDueDate(const QDateTime &due); + void applyNewStartDate(const QDate &start); + void applyNewDueDate(const QDate &due); void applyNewRecurrence(Domain::Task::Recurrence recurrence); Domain::Artifact::Ptr m_artifact; @@ -142,8 +142,8 @@ QString m_text; QString m_title; bool m_done; - QDateTime m_start; - QDateTime m_due; + QDate m_start; + QDate m_due; Domain::Task::Recurrence m_recurrence; AttachmentModel *m_attachmentModel; QString m_delegateText; diff --git a/src/presentation/artifacteditormodel.cpp b/src/presentation/artifacteditormodel.cpp --- a/src/presentation/artifacteditormodel.cpp +++ b/src/presentation/artifacteditormodel.cpp @@ -139,8 +139,8 @@ m_text = QString(); m_title = QString(); m_done = false; - m_start = QDateTime(); - m_due = QDateTime(); + m_start = QDate(); + m_due = QDate(); m_recurrence = Domain::Task::NoRecurrence; m_attachmentModel->setTask(Domain::Task::Ptr()); m_delegateText = QString(); @@ -224,12 +224,12 @@ return m_done; } -QDateTime ArtifactEditorModel::startDate() const +QDate ArtifactEditorModel::startDate() const { return m_start; } -QDateTime ArtifactEditorModel::dueDate() const +QDate ArtifactEditorModel::dueDate() const { return m_due; } @@ -288,15 +288,15 @@ setSaveNeeded(true); } -void ArtifactEditorModel::setStartDate(const QDateTime &start) +void ArtifactEditorModel::setStartDate(const QDate &start) { if (m_start == start) return; applyNewStartDate(start); setSaveNeeded(true); } -void ArtifactEditorModel::setDueDate(const QDateTime &due) +void ArtifactEditorModel::setDueDate(const QDate &due) { if (m_due == due) return; @@ -408,13 +408,13 @@ applyNewDone(done); } -void ArtifactEditorModel::onStartDateChanged(const QDateTime &start) +void ArtifactEditorModel::onStartDateChanged(const QDate &start) { if (!m_editingInProgress) applyNewStartDate(start); } -void ArtifactEditorModel::onDueDateChanged(const QDateTime &due) +void ArtifactEditorModel::onDueDateChanged(const QDate &due) { if (!m_editingInProgress) applyNewDueDate(due); @@ -488,13 +488,13 @@ emit doneChanged(m_done); } -void ArtifactEditorModel::applyNewStartDate(const QDateTime &start) +void ArtifactEditorModel::applyNewStartDate(const QDate &start) { m_start = start; emit startDateChanged(m_start); } -void ArtifactEditorModel::applyNewDueDate(const QDateTime &due) +void ArtifactEditorModel::applyNewDueDate(const QDate &due) { m_due = due; emit dueDateChanged(m_due); diff --git a/src/presentation/artifactfilterproxymodel.cpp b/src/presentation/artifactfilterproxymodel.cpp --- a/src/presentation/artifactfilterproxymodel.cpp +++ b/src/presentation/artifactfilterproxymodel.cpp @@ -28,6 +28,7 @@ #include "domain/artifact.h" #include "domain/task.h" +#include "utils/datetime.h" #include "presentation/querytreemodelbase.h" @@ -82,7 +83,7 @@ if (!task->startDate().isValid()) return false; - return task->startDate() > QDateTime::currentDateTime(); + return task->startDate() > Utils::DateTime::currentDate(); } bool ArtifactFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const @@ -107,12 +108,12 @@ return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent); } -static QDateTime validDt(const QDateTime &date = QDateTime()) +static QDate validDt(const QDate &date = QDate()) { if (date.isValid()) return date; - return QDateTime::fromTime_t(std::numeric_limits::max() - 1); + return QDate(10000, 12, 31); } bool ArtifactFilterProxyModel::lessThan(const QModelIndex &left, const QModelIndex &right) const @@ -126,11 +127,13 @@ const auto leftTask = leftArtifact.objectCast(); const auto rightTask = rightArtifact.objectCast(); - const QDateTime leftDue = leftTask ? validDt(leftTask->dueDate()) : validDt().addSecs(1); - const QDateTime rightDue = rightTask ? validDt(rightTask->dueDate()) : validDt().addSecs(1); + // The addDays(1) is so that we sort non-tasks (e.g. notes) at the end - const QDateTime leftStart = leftTask ? validDt(leftTask->startDate()) : validDt().addSecs(1); - const QDateTime rightStart = rightTask ? validDt(rightTask->startDate()) : validDt().addSecs(1); + const QDate leftDue = leftTask ? validDt(leftTask->dueDate()) : validDt().addDays(1); + const QDate rightDue = rightTask ? validDt(rightTask->dueDate()) : validDt().addDays(1); + + const QDate leftStart = leftTask ? validDt(leftTask->startDate()) : validDt().addDays(1); + const QDate rightStart = rightTask ? validDt(rightTask->startDate()) : validDt().addDays(1); return leftDue < rightDue || leftStart < rightStart; diff --git a/src/presentation/availabletaskpagesmodel.cpp b/src/presentation/availabletaskpagesmodel.cpp --- a/src/presentation/availabletaskpagesmodel.cpp +++ b/src/presentation/availabletaskpagesmodel.cpp @@ -330,7 +330,7 @@ if (auto task = droppedArtifact.objectCast()) { - task->setStartDate(Utils::DateTime::currentDateTime()); + task->setStartDate(Utils::DateTime::currentDate()); const auto job = m_taskRepository->update(task); installHandler(job, i18n("Cannot update task %1 to Workday", task->title())); diff --git a/src/presentation/workdaypagemodel.cpp b/src/presentation/workdaypagemodel.cpp --- a/src/presentation/workdaypagemodel.cpp +++ b/src/presentation/workdaypagemodel.cpp @@ -56,7 +56,7 @@ auto task = Domain::Task::Ptr::create(); task->setTitle(title); if (!parentTask) - task->setStartDate(Utils::DateTime::currentDateTime()); + task->setStartDate(Utils::DateTime::currentDate()); const auto job = parentTask ? m_taskRepository->createChild(task, parentTask) : m_taskRepository->create(task); installHandler(job, i18n("Cannot add task %1 in Workday", title)); @@ -165,7 +165,7 @@ const auto job = m_taskRepository->associate(parentTask, childTask); installHandler(job, i18n("Cannot move task %1 as sub-task of %2", childTask->title(), parentTask->title())); } else { - childTask->setStartDate(Utils::DateTime::currentDateTime()); + childTask->setStartDate(Utils::DateTime::currentDate()); auto job = m_taskRepository->dissociate(childTask); installHandler(job, i18n("Cannot deparent task %1 from its parent", childTask->title())); diff --git a/src/widgets/itemdelegate.cpp b/src/widgets/itemdelegate.cpp --- a/src/widgets/itemdelegate.cpp +++ b/src/widgets/itemdelegate.cpp @@ -33,6 +33,7 @@ #include "domain/note.h" #include "domain/task.h" #include "presentation/querytreemodelbase.h" +#include "utils/datetime.h" using namespace Widgets; @@ -80,12 +81,13 @@ const auto isSelected = (opt.state & QStyle::State_Selected); const auto isEditing = (opt.state & QStyle::State_Editing); - const auto startDate = task ? task->startDate() : QDateTime(); - const auto dueDate = task ? task->dueDate() : QDateTime(); + const auto startDate = task ? task->startDate() : QDate(); + const auto dueDate = task ? task->dueDate() : QDate(); - const auto onStartDate = startDate.isValid() && startDate.date() <= QDate::currentDate(); - const auto pastDueDate = dueDate.isValid() && dueDate.date() < QDate::currentDate(); - const auto onDueDate = dueDate.isValid() && dueDate.date() == QDate::currentDate(); + const auto currentDate = Utils::DateTime::currentDate(); + const auto onStartDate = startDate.isValid() && startDate <= currentDate; + const auto pastDueDate = dueDate.isValid() && dueDate < currentDate; + const auto onDueDate = dueDate.isValid() && dueDate == currentDate; const auto taskDelegate = task ? task->delegate() : Domain::Task::Delegate(); @@ -111,7 +113,7 @@ : baseColor; const auto summaryText = taskDelegate.isValid() ? i18n("(%1) %2", taskDelegate.display(), opt.text) : opt.text; - const auto dueDateText = dueDate.isValid() ? QLocale().toString(dueDate.date(), QLocale::ShortFormat) + const auto dueDateText = dueDate.isValid() ? QLocale().toString(dueDate, QLocale::ShortFormat) : QString(); const auto textMargin = style->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, widget) + 1; diff --git a/src/widgets/pageview.cpp b/src/widgets/pageview.cpp --- a/src/widgets/pageview.cpp +++ b/src/widgets/pageview.cpp @@ -50,6 +50,7 @@ #include "presentation/metatypes.h" #include "presentation/querytreemodelbase.h" #include "presentation/runningtaskmodelinterface.h" +#include "utils/datetime.h" namespace Widgets { class PageTreeView : public QTreeView @@ -429,7 +430,7 @@ auto task = currentArtifact().objectCast(); Q_ASSERT(task); // the action is supposed to be disabled otherwise if (task->startDate().isNull()) - task->setStartDate(QDateTime::currentDateTime()); + task->setStartDate(Utils::DateTime::currentDate()); m_runningTaskModel->setRunningTask(task); } diff --git a/tests/features/cuke-steps.cpp b/tests/features/cuke-steps.cpp --- a/tests/features/cuke-steps.cpp +++ b/tests/features/cuke-steps.cpp @@ -96,7 +96,7 @@ m_sourceModel(Q_NULLPTR), monitorSpy(Q_NULLPTR) { - qputenv("ZANSHIN_OVERRIDE_DATETIME", "2015-03-10"); + qputenv("ZANSHIN_OVERRIDE_DATE", "2015-03-10"); static bool initializedDependencies = false; diff --git a/tests/testlib/gentodo.h b/tests/testlib/gentodo.h --- a/tests/testlib/gentodo.h +++ b/tests/testlib/gentodo.h @@ -47,11 +47,11 @@ GenTodo &withText(const QString &text); GenTodo &done(bool value = true); GenTodo &withDoneDate(const QString &date); - GenTodo &withDoneDate(const QDateTime &date); + GenTodo &withDoneDate(const QDate &date); GenTodo &withStartDate(const QString &date); - GenTodo &withStartDate(const QDateTime &date); + GenTodo &withStartDate(const QDate &date); GenTodo &withDueDate(const QString &date); - GenTodo &withDueDate(const QDateTime &date); + GenTodo &withDueDate(const QDate &date); GenTodo &withDelegate(const QString &name, const QString &email); GenTodo &withNoDelegate(); diff --git a/tests/testlib/gentodo.cpp b/tests/testlib/gentodo.cpp --- a/tests/testlib/gentodo.cpp +++ b/tests/testlib/gentodo.cpp @@ -24,11 +24,8 @@ #include "gentodo.h" #include -#include +#include #include -#if KCALCORE_VERSION < QT_VERSION_CHECK(5, 6, 80) -#include -#endif using namespace Testlib; @@ -109,50 +106,39 @@ return *this; } -#if KCALCORE_VERSION >= QT_VERSION_CHECK(5, 6, 80) - -template -static QDateTime KDateTime(const T& input) { - QDateTime dt(input); - dt.setTimeSpec(Qt::UTC); - return dt; -} - -#endif - GenTodo &GenTodo::withDoneDate(const QString &date) { - m_item.payload()->setCompleted(KDateTime(QDate::fromString(date, Qt::ISODate))); + m_item.payload()->setCompleted(QDateTime(QDate::fromString(date, Qt::ISODate))); return *this; } -GenTodo &GenTodo::withDoneDate(const QDateTime &date) +GenTodo &GenTodo::withDoneDate(const QDate &date) { - m_item.payload()->setCompleted(KDateTime(date)); + m_item.payload()->setCompleted(QDateTime(date)); return *this; } GenTodo &GenTodo::withStartDate(const QString &date) { - m_item.payload()->setDtStart(KDateTime(QDate::fromString(date, Qt::ISODate))); + m_item.payload()->setDtStart(QDateTime(QDate::fromString(date, Qt::ISODate))); return *this; } -GenTodo &GenTodo::withStartDate(const QDateTime &date) +GenTodo &GenTodo::withStartDate(const QDate &date) { - m_item.payload()->setDtStart(KDateTime(date)); + m_item.payload()->setDtStart(QDateTime(date)); return *this; } GenTodo &GenTodo::withDueDate(const QString &date) { - m_item.payload()->setDtDue(KDateTime(QDate::fromString(date, Qt::ISODate))); + m_item.payload()->setDtDue(QDateTime(QDate::fromString(date, Qt::ISODate))); return *this; } -GenTodo &GenTodo::withDueDate(const QDateTime &date) +GenTodo &GenTodo::withDueDate(const QDate &date) { - m_item.payload()->setDtDue(KDateTime(date)); + m_item.payload()->setDtDue(QDateTime(date)); return *this; } diff --git a/tests/units/akonadi/akonadiserializertest.cpp b/tests/units/akonadi/akonadiserializertest.cpp --- a/tests/units/akonadi/akonadiserializertest.cpp +++ b/tests/units/akonadi/akonadiserializertest.cpp @@ -44,14 +44,9 @@ #endif -static void setTodoDates(KCalCore::Todo::Ptr todo, const QDateTime &start, const QDateTime &due) { -#if KCALCORE_VERSION >= QT_VERSION_CHECK(5, 6, 80) - todo->setDtStart(start); - todo->setDtDue(due); -#else - todo->setDtStart(KDateTime(start, KDateTime::UTC)); - todo->setDtDue(KDateTime(due, KDateTime::UTC)); -#endif +static void setTodoDates(KCalCore::Todo::Ptr todo, const QDate &start, const QDate &due) { + todo->setDtStart(QDateTime(start)); + todo->setDtDue(QDateTime(due)); } class AkonadiSerializerTest : public QObject @@ -526,16 +521,16 @@ QTest::addColumn("summary"); QTest::addColumn("content"); QTest::addColumn("isDone"); - QTest::addColumn("doneDate"); - QTest::addColumn("startDate"); - QTest::addColumn("dueDate"); + QTest::addColumn("doneDate"); + QTest::addColumn("startDate"); + QTest::addColumn("dueDate"); QTest::addColumn("delegateName"); QTest::addColumn("delegateEmail"); - QTest::newRow("nominal case") << "summary" << "content" << false << QDateTime() << QDateTime(QDate(2013, 11, 24)) << QDateTime(QDate(2014, 03, 01)) << "John Doe" << "j@d.com"; - QTest::newRow("done case") << "summary" << "content" << true << QDateTime(QDate(2013, 11, 30)) << QDateTime(QDate(2013, 11, 24)) << QDateTime(QDate(2014, 03, 01)) << "John Doe" << "j@d.com"; - QTest::newRow("done without doneDate case") << "summary" << "content" << true << QDateTime() << QDateTime(QDate(2013, 11, 24)) << QDateTime(QDate(2014, 03, 01)) << "John Doe" << "j@d.com"; - QTest::newRow("empty case") << QString() << QString() << false << QDateTime() << QDateTime() << QDateTime() << QString() << QString(); + QTest::newRow("nominal case") << "summary" << "content" << false << QDate() << QDate(2013, 11, 24) << QDate(2014, 03, 01) << "John Doe" << "j@d.com"; + QTest::newRow("done case") << "summary" << "content" << true << QDate(2013, 11, 30) << QDate(2013, 11, 24) << QDate(2014, 03, 01) << "John Doe" << "j@d.com"; + QTest::newRow("done without doneDate case") << "summary" << "content" << true << QDate() << QDate(2013, 11, 24) << QDate(2014, 03, 01) << "John Doe" << "j@d.com"; + QTest::newRow("empty case") << QString() << QString() << false << QDate() << QDate() << QDate() << QString() << QString(); } void shouldCreateTaskFromItem() @@ -546,24 +541,19 @@ QFETCH(QString, summary); QFETCH(QString, content); QFETCH(bool, isDone); - QFETCH(QDateTime, doneDate); - QFETCH(QDateTime, startDate); - QFETCH(QDateTime, dueDate); + QFETCH(QDate, doneDate); + QFETCH(QDate, startDate); + QFETCH(QDate, dueDate); QFETCH(QString, delegateName); QFETCH(QString, delegateEmail); - // Switch to UTC - doneDate.setTimeSpec(Qt::UTC); - startDate.setTimeSpec(Qt::UTC); - dueDate.setTimeSpec(Qt::UTC); - // ... stored in a todo... KCalCore::Todo::Ptr todo(new KCalCore::Todo); todo->setSummary(summary); todo->setDescription(content); if (isDone) - todo->setCompleted(KDateTime(doneDate)); + todo->setCompleted(QDateTime(doneDate)); else todo->setCompleted(isDone); @@ -665,9 +655,9 @@ QTest::addColumn("updatedSummary"); QTest::addColumn("updatedContent"); QTest::addColumn("updatedDone"); - QTest::addColumn("updatedDoneDate"); - QTest::addColumn("updatedStartDate"); - QTest::addColumn("updatedDueDate"); + QTest::addColumn("updatedDoneDate"); + QTest::addColumn("updatedStartDate"); + QTest::addColumn("updatedDueDate"); QTest::addColumn("updatedRelated"); QTest::addColumn("updatedRecurs"); QTest::addColumn("updatedAttachmentData"); @@ -679,9 +669,9 @@ QTest::addColumn("updatedDelegateEmail"); QTest::addColumn("updatedRunning"); - QTest::newRow("no change") << "summary" << "content" << false << QDateTime() << QDateTime(QDate(2013, 11, 24)) << QDateTime(QDate(2014, 03, 01)) << "my-uid" << false << QByteArrayList() << QStringList() << QStringList() << QStringList() << QStringList() << "John Doe" << "j@d.com" << false; - QTest::newRow("changed") << "new summary" << "new content" << true << QDateTime(QDate(2013, 11, 28)) << QDateTime(QDate(2013, 11, 25)) << QDateTime(QDate(2014, 03, 02)) << "my-new-uid" << true << QByteArrayList({"foo", "# bar", QByteArray()}) << QStringList({QString(), QString(), "https://www.kde.org"}) << QStringList({"label1", "label2", "label3"}) << QStringList({"text/plain", "text/markdown", "text/html"}) << QStringList({"text-plain", "text-markdown", "text-html"}) << "John Smith" << "j@s.com" << false; - QTest::newRow("set_to_running") << "summary" << "content" << false << QDateTime() << QDateTime(QDate(2013, 11, 24)) << QDateTime(QDate(2014, 03, 01)) << "my-uid" << false << QByteArrayList() << QStringList() << QStringList() << QStringList() << QStringList() << "John Doe" << "j@d.com" << true; + QTest::newRow("no change") << "summary" << "content" << false << QDate() << QDate(2013, 11, 24) << QDate(2014, 03, 01) << "my-uid" << false << QByteArrayList() << QStringList() << QStringList() << QStringList() << QStringList() << "John Doe" << "j@d.com" << false; + QTest::newRow("changed") << "new summary" << "new content" << true << QDate(2013, 11, 28) << QDate(2013, 11, 25) << QDate(2014, 03, 02) << "my-new-uid" << true << QByteArrayList({"foo", "# bar", QByteArray()}) << QStringList({QString(), QString(), "https://www.kde.org"}) << QStringList({"label1", "label2", "label3"}) << QStringList({"text/plain", "text/markdown", "text/html"}) << QStringList({"text-plain", "text-markdown", "text-html"}) << "John Smith" << "j@s.com" << false; + QTest::newRow("set_to_running") << "summary" << "content" << false << QDate() << QDate(2013, 11, 24) << QDate(2014, 03, 01) << "my-uid" << false << QByteArrayList() << QStringList() << QStringList() << QStringList() << QStringList() << "John Doe" << "j@d.com" << true; } void shouldUpdateTaskFromItem() @@ -693,7 +683,7 @@ originalTodo->setSummary(QStringLiteral("summary")); originalTodo->setDescription(QStringLiteral("content")); originalTodo->setCompleted(false); - setTodoDates(originalTodo, QDateTime(QDate(2013, 11, 24)), QDateTime(QDate(2014, 03, 01))); + setTodoDates(originalTodo, QDate(2013, 11, 24), QDate(2014, 03, 01)); originalTodo->setRelatedTo(QStringLiteral("my-uid")); KCalCore::Attendee::Ptr originalAttendee(new KCalCore::Attendee(QStringLiteral("John Doe"), @@ -722,9 +712,9 @@ QFETCH(QString, updatedSummary); QFETCH(QString, updatedContent); QFETCH(bool, updatedDone); - QFETCH(QDateTime, updatedDoneDate); - QFETCH(QDateTime, updatedStartDate); - QFETCH(QDateTime, updatedDueDate); + QFETCH(QDate, updatedDoneDate); + QFETCH(QDate, updatedStartDate); + QFETCH(QDate, updatedDueDate); QFETCH(QString, updatedRelated); QFETCH(bool, updatedRecurs); QFETCH(QByteArrayList, updatedAttachmentData); @@ -736,11 +726,6 @@ QFETCH(QString, updatedDelegateEmail); QFETCH(bool, updatedRunning); - // Switch to UTC - updatedDoneDate.setTimeSpec(Qt::UTC); - updatedStartDate.setTimeSpec(Qt::UTC); - updatedDueDate.setTimeSpec(Qt::UTC); - // ... in a new todo... KCalCore::Todo::Ptr updatedTodo(new KCalCore::Todo); updatedTodo->setSummary(updatedSummary); @@ -797,9 +782,9 @@ QCOMPARE(task->title(), updatedSummary); QCOMPARE(task->text(), updatedContent); QCOMPARE(task->isDone(), updatedDone); - QCOMPARE(task->doneDate(), updatedDoneDate.toUTC()); - QCOMPARE(task->startDate(), updatedStartDate.toUTC()); - QCOMPARE(task->dueDate(), updatedDueDate.toUTC()); + QCOMPARE(task->doneDate(), updatedDoneDate); + QCOMPARE(task->startDate(), updatedStartDate); + QCOMPARE(task->dueDate(), updatedDueDate); QCOMPARE(task->property("todoUid").toString(), updatedTodo->uid()); QCOMPARE(task->property("relatedUid").toString(), updatedTodo->relatedTo()); QCOMPARE(task->property("itemId").toLongLong(), updatedItem.id()); @@ -822,9 +807,9 @@ QCOMPARE(task->title(), updatedSummary); QCOMPARE(task->text(), updatedContent); QCOMPARE(task->isDone(), updatedDone); - QCOMPARE(task->doneDate(), updatedDoneDate.toUTC()); - QCOMPARE(task->startDate(), updatedStartDate.toUTC()); - QCOMPARE(task->dueDate(), updatedDueDate.toUTC()); + QCOMPARE(task->doneDate(), updatedDoneDate); + QCOMPARE(task->startDate(), updatedStartDate); + QCOMPARE(task->dueDate(), updatedDueDate); QCOMPARE(task->property("todoUid").toString(), updatedTodo->uid()); QCOMPARE(task->property("relatedUid").toString(), updatedTodo->relatedTo()); QCOMPARE(task->property("itemId").toLongLong(), updatedItem.id()); @@ -912,15 +897,15 @@ // GIVEN // Data... - const QDateTime today(QDate::currentDate(), QTime(0, 0), Qt::UTC); - const QDateTime doneDate(QDate(2013, 11, 20), QTime(0, 0), Qt::UTC); - const QDateTime startDate(QDate(2013, 11, 10), QTime(0, 0), Qt::UTC); + const QDate today(QDate::currentDate()); + const QDate doneDate(2013, 11, 20); + const QDate startDate(2013, 11, 10); // ... stored in a todo... KCalCore::Todo::Ptr todo(new KCalCore::Todo); todo->setSummary(QStringLiteral("summary")); #if KCALCORE_VERSION >= QT_VERSION_CHECK(5, 6, 80) - todo->setDtStart(startDate); + todo->setDtStart(QDateTime(startDate)); #else todo->setDtStart(KDateTime(startDate, KDateTime::UTC)); #endif @@ -947,8 +932,8 @@ // THEN QCOMPARE(task->recurrence(), Domain::Task::RecursMonthly); QVERIFY(!task->isDone()); - const QDateTime lastOccurrence(QDate(today.date().year(), today.date().month(), 10), QTime(0, 0), Qt::UTC); - if (today.date().day() >= 10) + const QDate lastOccurrence(QDate(today.year(), today.month(), 10)); + if (today.day() >= 10) QCOMPARE(task->startDate(), lastOccurrence.addMonths(1)); else QCOMPARE(task->startDate(), lastOccurrence); @@ -962,9 +947,9 @@ const QString summary = QStringLiteral("summary"); const QString content = QStringLiteral("content"); const bool isDone = true; - const QDateTime doneDate(QDate(2013, 11, 30), QTime(0, 0), Qt::UTC); - const QDateTime startDate(QDate(2013, 11, 24), QTime(0, 0), Qt::UTC); - const QDateTime dueDate(QDate(2014, 03, 01), QTime(0, 0), Qt::UTC); + const QDate doneDate(2013, 11, 30); + const QDate startDate(2013, 11, 24); + const QDate dueDate(2014, 03, 01); // ... stored in a todo... KCalCore::Todo::Ptr originalTodo(new KCalCore::Todo); @@ -1019,9 +1004,9 @@ const QString summary = QStringLiteral("summary"); const QString content = QStringLiteral("content"); const bool isDone = true; - const QDateTime doneDate(QDate(2013, 11, 30), QTime(0, 0), Qt::UTC); - const QDateTime startDate(QDate(2013, 11, 24), QTime(0, 0), Qt::UTC); - const QDateTime dueDate(QDate(2014, 03, 01), QTime(0, 0), Qt::UTC); + const QDate doneDate(2013, 11, 30); + const QDate startDate(2013, 11, 24); + const QDate dueDate(2014, 03, 01); // ... stored in a todo... KCalCore::Todo::Ptr originalTodo(new KCalCore::Todo); @@ -1081,9 +1066,9 @@ QTest::addColumn("summary"); QTest::addColumn("content"); QTest::addColumn("isDone"); - QTest::addColumn("doneDate"); - QTest::addColumn("startDate"); - QTest::addColumn("dueDate"); + QTest::addColumn("doneDate"); + QTest::addColumn("startDate"); + QTest::addColumn("dueDate"); QTest::addColumn("itemId"); QTest::addColumn("parentCollectionId"); QTest::addColumn("todoUid"); @@ -1108,43 +1093,43 @@ uriAttachment.setIconName("text-html"); attachments.append(uriAttachment); - QTest::newRow("nominal case (no id)") << "summary" << "content" << false << QDateTime() - << QDateTime(QDate(2013, 11, 24)) << QDateTime(QDate(2014, 03, 01)) + QTest::newRow("nominal case (no id)") << "summary" << "content" << false << QDate() + << QDate(2013, 11, 24) << QDate(2014, 03, 01) << qint64(-1) << qint64(-1) << QString() << Domain::Task::NoRecurrence << attachments << Domain::Task::Delegate(QStringLiteral("John Doe"), QStringLiteral("j@d.com")) << false; - QTest::newRow("nominal case (daily)") << "summary" << "content" << false << QDateTime() - << QDateTime(QDate(2013, 11, 24)) << QDateTime(QDate(2014, 03, 01)) + QTest::newRow("nominal case (daily)") << "summary" << "content" << false << QDate() + << QDate(2013, 11, 24) << QDate(2014, 03, 01) << qint64(-1) << qint64(-1) << QString() << Domain::Task::RecursDaily << Domain::Task::Attachments() << Domain::Task::Delegate(QStringLiteral("John Doe"), QStringLiteral("j@d.com")) << false; - QTest::newRow("nominal case (weekly)") << "summary" << "content" << false << QDateTime() - << QDateTime(QDate(2013, 11, 24)) << QDateTime(QDate(2014, 03, 01)) + QTest::newRow("nominal case (weekly)") << "summary" << "content" << false << QDate() + << QDate(2013, 11, 24) << QDate(2014, 03, 01) << qint64(-1) << qint64(-1) << QString() << Domain::Task::RecursWeekly << Domain::Task::Attachments() << Domain::Task::Delegate(QStringLiteral("John Doe"), QStringLiteral("j@d.com")) << false; - QTest::newRow("nominal case (monthly)") << "summary" << "content" << false << QDateTime() - << QDateTime(QDate(2013, 11, 24)) << QDateTime(QDate(2014, 03, 01)) + QTest::newRow("nominal case (monthly)") << "summary" << "content" << false << QDate() + << QDate(2013, 11, 24) << QDate(2014, 03, 01) << qint64(-1) << qint64(-1) << QString() << Domain::Task::RecursMonthly << Domain::Task::Attachments() << Domain::Task::Delegate(QStringLiteral("John Doe"), QStringLiteral("j@d.com")) << false; - QTest::newRow("done case (no id)") << "summary" << "content" << true << QDateTime(QDate(2013, 11, 30)) - << QDateTime(QDate(2013, 11, 24)) << QDateTime(QDate(2014, 03, 01)) + QTest::newRow("done case (no id)") << "summary" << "content" << true << QDate(2013, 11, 30) + << QDate(2013, 11, 24) << QDate(2014, 03, 01) << qint64(-1) << qint64(-1) << QString() << Domain::Task::NoRecurrence << Domain::Task::Attachments() << Domain::Task::Delegate(QStringLiteral("John Doe"), QStringLiteral("j@d.com")) << false; - QTest::newRow("empty case (no id)") << QString() << QString() << false << QDateTime() - << QDateTime() << QDateTime() + QTest::newRow("empty case (no id)") << QString() << QString() << false << QDate() + << QDate() << QDate() << qint64(-1) << qint64(-1) << QString() << Domain::Task::NoRecurrence << Domain::Task::Attachments() @@ -1160,29 +1145,29 @@ << false; #endif - QTest::newRow("nominal case (with id)") << "summary" << "content" << false << QDateTime() - << QDateTime(QDate(2013, 11, 24)) << QDateTime(QDate(2014, 03, 01)) + QTest::newRow("nominal case (with id)") << "summary" << "content" << false << QDate() + << QDate(2013, 11, 24) << QDate(2014, 03, 01) << qint64(42) << qint64(43) << "my-uid" << Domain::Task::NoRecurrence << Domain::Task::Attachments() << Domain::Task::Delegate(QStringLiteral("John Doe"), QStringLiteral("j@d.com")) << false; - QTest::newRow("done case (with id)") << "summary" << "content" << true << QDateTime(QDate(2013, 11, 30)) - << QDateTime(QDate(2013, 11, 24)) << QDateTime(QDate(2014, 03, 01)) + QTest::newRow("done case (with id)") << "summary" << "content" << true << QDate(2013, 11, 30) + << QDate(2013, 11, 24) << QDate(2014, 03, 01) << qint64(42) << qint64(43) << "my-uid" << Domain::Task::NoRecurrence << Domain::Task::Attachments() << Domain::Task::Delegate(QStringLiteral("John Doe"), QStringLiteral("j@d.com")) << false; - QTest::newRow("empty case (with id)") << QString() << QString() << false << QDateTime() - << QDateTime() << QDateTime() + QTest::newRow("empty case (with id)") << QString() << QString() << false << QDate() + << QDate() << QDate() << qint64(42) << qint64(43) << "my-uid" << Domain::Task::NoRecurrence << Domain::Task::Attachments() << Domain::Task::Delegate() << false; - QTest::newRow("nominal case (running)") << "running" << QString() << false << QDateTime() - << QDateTime(QDate(2013, 11, 24)) << QDateTime(QDate(2014, 03, 01)) + QTest::newRow("nominal case (running)") << "running" << QString() << false << QDate() + << QDate(2013, 11, 24) << QDate(2014, 03, 01) << qint64(-1) << qint64(-1) << QString() << Domain::Task::NoRecurrence << Domain::Task::Attachments() @@ -1198,22 +1183,17 @@ QFETCH(QString, summary); QFETCH(QString, content); QFETCH(bool, isDone); - QFETCH(QDateTime, doneDate); - QFETCH(QDateTime, startDate); - QFETCH(QDateTime, dueDate); + QFETCH(QDate, doneDate); + QFETCH(QDate, startDate); + QFETCH(QDate, dueDate); QFETCH(qint64, itemId); QFETCH(qint64, parentCollectionId); QFETCH(QString, todoUid); QFETCH(Domain::Task::Recurrence, recurrence); QFETCH(Domain::Task::Attachments, attachments); QFETCH(Domain::Task::Delegate, delegate); QFETCH(bool, running); - // Switch to UTC - doneDate.setTimeSpec(Qt::UTC); - startDate.setTimeSpec(Qt::UTC); - dueDate.setTimeSpec(Qt::UTC); - // ... stored in a task auto task = Domain::Task::Ptr::create(); task->setTitle(summary); @@ -1260,19 +1240,19 @@ QCOMPARE(todo->description(), content); QCOMPARE(todo->isCompleted(), isDone); #if KCALCORE_VERSION >= QT_VERSION_CHECK(5, 6, 80) - QCOMPARE(todo->completed().toUTC(), doneDate); - QCOMPARE(todo->dtStart().toUTC(), startDate); - QCOMPARE(todo->dtDue().toUTC(), dueDate); + QCOMPARE(todo->completed().toLocalTime().date(), doneDate); + QCOMPARE(todo->dtStart().toLocalTime().date(), startDate); + QCOMPARE(todo->dtDue().toLocalTime().date(), dueDate); if (todo->dtStart().isValid()) { - QCOMPARE(int(todo->dtStart().timeSpec()), int(Qt::UTC)); + QCOMPARE(int(todo->dtStart().timeSpec()), int(Qt::LocalTime)); } QVERIFY(todo->allDay()); // this is always true currently... #else - QCOMPARE(todo->completed().dateTime().toUTC(), doneDate); - QCOMPARE(todo->dtStart().dateTime().toUTC(), startDate); - QCOMPARE(todo->dtDue().dateTime().toUTC(), dueDate); + QCOMPARE(todo->completed().dateTime().date(), doneDate); + QCOMPARE(todo->dtStart().dateTime().date(), startDate); + QCOMPARE(todo->dtDue().dateTime().date(), dueDate); if (todo->dtStart().isValid()) { - QCOMPARE(int(todo->dtStart().timeType()), int(KDateTime::UTC)); + QCOMPARE(int(todo->dtStart().timeType()), int(KDateTime::LocalTime)); } QCOMPARE(todo->dtStart().isDateOnly(), todo->allDay()); @@ -1321,9 +1301,9 @@ const QString summary = QStringLiteral("summary"); const QString content = QStringLiteral("content"); const bool isDone = true; - const QDateTime doneDate(QDate(2013, 11, 30), QTime(0, 0), Qt::UTC); - const QDateTime startDate(QDate(2013, 11, 24), QTime(0, 0), Qt::UTC); - const QDateTime dueDate(QDate(2014, 03, 01), QTime(0, 0), Qt::UTC); + const QDate doneDate(QDate(2013, 11, 30)); + const QDate startDate(QDate(2013, 11, 24)); + const QDate dueDate(QDate(2014, 03, 01)); // ... create a task Domain::Task::Ptr task(new Domain::Task); @@ -2670,7 +2650,7 @@ // Investigation into how to differentiate all-day events from events with time, // using QDateTime only. Doesn't seem to be possible. - void KDateTimeShouldStillBeNeeded() // although I wish it wasn't... + void noWayToHaveQDateTimeWithoutTime() { // GIVEN a QDateTime without time information QDateTime dateOnly(QDate(2016, 6, 12), QTime(-1, -1, -1)); diff --git a/tests/units/akonadi/akonaditaskqueriestest.cpp b/tests/units/akonadi/akonaditaskqueriestest.cpp --- a/tests/units/akonadi/akonaditaskqueriestest.cpp +++ b/tests/units/akonadi/akonaditaskqueriestest.cpp @@ -1384,7 +1384,7 @@ QTest::addColumn("isExpectedInWorkday"); QTest::addColumn("item2"); - const auto today = Utils::DateTime::currentDateTime(); + const auto today = Utils::DateTime::currentDate(); QTest::newRow("todayTask") << true << Akonadi::Item(GenTodo() @@ -1421,25 +1421,25 @@ .withStartDate(today) .withDueDate(today) .done() - .withDoneDate(QDateTime(today.date(), QTime(12, 00)))); + .withDoneDate(today)); QTest::newRow("startTodayDoneTask") << true << Akonadi::Item(GenTodo() .withStartDate(today) .done() - .withDoneDate(QDateTime(today.date(), QTime(12, 00)))); + .withDoneDate(today)); QTest::newRow("endTodayDoneTask") << true << Akonadi::Item(GenTodo() .withDueDate(today) .done() - .withDoneDate(QDateTime(today.date(), QTime(12, 00)))); + .withDoneDate(today)); } void shouldLookInAllWorkdayReportedForAllTasks() { // GIVEN - const auto today = Utils::DateTime::currentDateTime(); + const auto today = Utils::DateTime::currentDate(); AkonadiFakeData data; // Two top level collections @@ -1449,7 +1449,7 @@ // One task in the first collection data.createItem(GenTodo().withId(42).withParent(42) .withTitle(QStringLiteral("42")).withUid(QStringLiteral("uid-42")) - .withStartDate(today.addSecs(300))); + .withStartDate(today)); // One task in the second collection (from data driven set) QFETCH(Akonadi::Item, item2); @@ -1485,8 +1485,8 @@ void shouldLookInAllWorkdayReportedForAllTasksWhenOverrideDate() { // GIVEN - qputenv("ZANSHIN_OVERRIDE_DATETIME", "2015-03-10"); - const auto today = Utils::DateTime::currentDateTime(); + qputenv("ZANSHIN_OVERRIDE_DATE", "2015-03-10"); + const auto today = Utils::DateTime::currentDate(); AkonadiFakeData data; // Two top level collections @@ -1501,7 +1501,7 @@ // One task in the second collection data.createItem(GenTodo().withId(43).withParent(43) .withTitle(QStringLiteral("43")).withUid(QStringLiteral("uid-43")) - .withStartDate(today.addSecs(3600))); + .withStartDate(today)); // WHEN auto serializer = Akonadi::Serializer::Ptr(new Akonadi::Serializer); @@ -1526,8 +1526,8 @@ void shouldPollForCurrentDayToListWorkday() { // GIVEN - qputenv("ZANSHIN_OVERRIDE_DATETIME", "2015-03-10T23:59:59UTC"); - const auto today = Utils::DateTime::currentDateTime(); + qputenv("ZANSHIN_OVERRIDE_DATE", "2015-03-10"); + const auto today = Utils::DateTime::currentDate(); AkonadiFakeData data; // Two top level collections @@ -1562,7 +1562,7 @@ QCOMPARE(result->data().at(0)->title(), QStringLiteral("42")); // WHEN - qputenv("ZANSHIN_OVERRIDE_DATETIME", "2015-03-11T00:01:00UTC"); + qputenv("ZANSHIN_OVERRIDE_DATE", "2015-03-11"); QTest::qWait(1000); TestHelpers::waitForEmptyJobQueue(); @@ -1575,7 +1575,7 @@ void shouldNotListWorkdayTasksTwiceIfTheyHaveAParentInWorkday() { // GIVEN - const auto today = Utils::DateTime::currentDateTime(); + const auto today = Utils::DateTime::currentDate(); AkonadiFakeData data; // One top level collection @@ -1586,9 +1586,9 @@ // Five tasks in the collection, two start today, three not, all forming an ancestry line data.createItem(GenTodo().withParent(42).withId(42).withTitle(QStringLiteral("42")).withUid("42")); - data.createItem(GenTodo().withParent(42).withId(43).withTitle(QStringLiteral("43")).withUid("43").withParentUid("42").withStartDate(today.addSecs(300))); + data.createItem(GenTodo().withParent(42).withId(43).withTitle(QStringLiteral("43")).withUid("43").withParentUid("42").withStartDate(today)); data.createItem(GenTodo().withParent(42).withId(44).withTitle(QStringLiteral("44")).withUid("44").withParentUid("43")); - data.createItem(GenTodo().withParent(42).withId(45).withTitle(QStringLiteral("45")).withUid("45").withParentUid("44").withStartDate(today.addSecs(300))); + data.createItem(GenTodo().withParent(42).withId(45).withTitle(QStringLiteral("45")).withUid("45").withParentUid("44").withStartDate(today)); data.createItem(GenTodo().withParent(42).withId(46).withTitle(QStringLiteral("46")).withUid("46").withParentUid("45")); // WHEN diff --git a/tests/units/domain/tasktest.cpp b/tests/units/domain/tasktest.cpp --- a/tests/units/domain/tasktest.cpp +++ b/tests/units/domain/tasktest.cpp @@ -48,9 +48,9 @@ QCOMPARE(t.text(), QString()); QCOMPARE(t.title(), QString()); QCOMPARE(t.isDone(), false); - QCOMPARE(t.startDate(), QDateTime()); - QCOMPARE(t.dueDate(), QDateTime()); - QCOMPARE(t.doneDate(), QDateTime()); + QCOMPARE(t.startDate(), QDate()); + QCOMPARE(t.dueDate(), QDate()); + QCOMPARE(t.doneDate(), QDate()); QCOMPARE(t.recurrence(), Domain::Task::NoRecurrence); QVERIFY(t.attachments().isEmpty()); QVERIFY(!t.delegate().isValid()); @@ -180,35 +180,35 @@ { Task t; QSignalSpy spy(&t, &Task::startDateChanged); - t.setStartDate(QDateTime(QDate(2014, 1, 13))); + t.setStartDate(QDate(2014, 1, 13)); QCOMPARE(spy.count(), 1); QCOMPARE(spy.first().first().toDateTime(), QDateTime(QDate(2014, 1, 13))); } void shouldNotNotifyIdenticalStartDateChanges() { Task t; - t.setStartDate(QDateTime(QDate(2014, 1, 13))); + t.setStartDate(QDate(2014, 1, 13)); QSignalSpy spy(&t, &Task::startDateChanged); - t.setStartDate(QDateTime(QDate(2014, 1, 13))); + t.setStartDate(QDate(2014, 1, 13)); QCOMPARE(spy.count(), 0); } void shouldNotifyDueDateChanges() { Task t; QSignalSpy spy(&t, &Task::dueDateChanged); - t.setDueDate(QDateTime(QDate(2014, 1, 13))); + t.setDueDate(QDate(2014, 1, 13)); QCOMPARE(spy.count(), 1); QCOMPARE(spy.first().first().toDateTime(), QDateTime(QDate(2014, 1, 13))); } void shouldNotNotifyIdenticalDueDateChanges() { Task t; - t.setDueDate(QDateTime(QDate(2014, 1, 13))); + t.setDueDate(QDate(2014, 1, 13)); QSignalSpy spy(&t, &Task::dueDateChanged); - t.setDueDate(QDateTime(QDate(2014, 1, 13))); + t.setDueDate(QDate(2014, 1, 13)); QCOMPARE(spy.count(), 0); } @@ -279,17 +279,17 @@ { Task t; QSignalSpy spy(&t, &Task::doneDateChanged); - t.setDoneDate(QDateTime(QDate(2014, 1, 13))); + t.setDoneDate(QDate(2014, 1, 13)); QCOMPARE(spy.count(), 1); - QCOMPARE(spy.first().first().toDateTime(), QDateTime(QDate(2014, 1, 13))); + QCOMPARE(spy.first().first().toDate(), QDate(2014, 1, 13)); } void shouldNotNotifyIdenticalDoneDateChanges() { Task t; - t.setDoneDate(QDateTime(QDate(2014, 1, 13))); + t.setDoneDate(QDate(2014, 1, 13)); QSignalSpy spy(&t, &Task::doneDateChanged); - t.setDoneDate(QDateTime(QDate(2014, 1, 13))); + t.setDoneDate(QDate(2014, 1, 13)); QCOMPARE(spy.count(), 0); } @@ -299,7 +299,7 @@ QSignalSpy spy(&t, &Task::doneDateChanged); t.setDone(true); QCOMPARE(spy.count(), 1); - QCOMPARE(spy.takeFirst().at(0).toDateTime().date(), Utils::DateTime::currentDateTime().date()); + QCOMPARE(spy.takeFirst().at(0).toDate(), Utils::DateTime::currentDate()); } void shouldNotifyDoneDateUnset() @@ -310,7 +310,7 @@ QSignalSpy spy(&t, &Task::doneDateChanged); t.setDone(false); QCOMPARE(spy.count(), 1); - QCOMPARE(spy.takeFirst().at(0).toDateTime(), QDateTime()); + QCOMPARE(spy.takeFirst().at(0).toDate(), QDate()); } }; diff --git a/tests/units/presentation/artifacteditormodeltest.cpp b/tests/units/presentation/artifacteditormodeltest.cpp --- a/tests/units/presentation/artifacteditormodeltest.cpp +++ b/tests/units/presentation/artifacteditormodeltest.cpp @@ -119,8 +119,8 @@ task->setText(QStringLiteral("description")); task->setTitle(QStringLiteral("title")); task->setDone(true); - task->setStartDate(QDateTime::currentDateTime()); - task->setDueDate(QDateTime::currentDateTime().addDays(2)); + task->setStartDate(QDate::currentDate()); + task->setDueDate(QDate::currentDate().addDays(2)); task->setRecurrence(Domain::Task::RecursDaily); task->setAttachments(attachments); task->setDelegate(Domain::Task::Delegate(QStringLiteral("John Doe"), QStringLiteral("john@doe.com"))); @@ -151,12 +151,12 @@ QCOMPARE(model.property("done").toBool(), task->isDone()); QCOMPARE(startSpy.size(), 1); - QCOMPARE(startSpy.takeFirst().at(0).toDateTime(), task->startDate()); - QCOMPARE(model.property("startDate").toDateTime(), task->startDate()); + QCOMPARE(startSpy.takeFirst().at(0).toDate(), task->startDate()); + QCOMPARE(model.property("startDate").toDate(), task->startDate()); QCOMPARE(dueSpy.size(), 1); - QCOMPARE(dueSpy.takeFirst().at(0).toDateTime(), task->dueDate()); - QCOMPARE(model.property("dueDate").toDateTime(), task->dueDate()); + QCOMPARE(dueSpy.takeFirst().at(0).toDate(), task->dueDate()); + QCOMPARE(model.property("dueDate").toDate(), task->dueDate()); QCOMPARE(recurrenceSpy.size(), 1); QCOMPARE(recurrenceSpy.takeFirst().at(0).value(), task->recurrence()); @@ -212,12 +212,12 @@ QCOMPARE(model.property("done").toBool(), false); QCOMPARE(startSpy.size(), 1); - QVERIFY(startSpy.takeFirst().at(0).toDateTime().isNull()); - QVERIFY(model.property("startDate").toDateTime().isNull()); + QVERIFY(startSpy.takeFirst().at(0).toDate().isNull()); + QVERIFY(model.property("startDate").toDate().isNull()); QCOMPARE(dueSpy.size(), 1); - QVERIFY(dueSpy.takeFirst().at(0).toDateTime().isNull()); - QVERIFY(model.property("dueDate").toDateTime().isNull()); + QVERIFY(dueSpy.takeFirst().at(0).toDate().isNull()); + QVERIFY(model.property("dueDate").toDate().isNull()); QCOMPARE(delegateSpy.size(), 1); QVERIFY(delegateSpy.takeFirst().at(0).toString().isEmpty()); @@ -258,13 +258,13 @@ QTest::newRow("task start") << Domain::Artifact::Ptr(Domain::Task::Ptr::create()) << QByteArray("startDate") - << QVariant(QDateTime::currentDateTime()) - << QByteArray(SIGNAL(startDateChanged(QDateTime))); + << QVariant(QDate::currentDate()) + << QByteArray(SIGNAL(startDateChanged(QDate))); QTest::newRow("task due") << Domain::Artifact::Ptr(Domain::Task::Ptr::create()) << QByteArray("dueDate") - << QVariant(QDateTime::currentDateTime().addDays(2)) - << QByteArray(SIGNAL(dueDateChanged(QDateTime))); + << QVariant(QDate::currentDate().addDays(2)) + << QByteArray(SIGNAL(dueDateChanged(QDate))); QTest::newRow("task recurrence") << Domain::Artifact::Ptr(Domain::Task::Ptr::create()) << QByteArray("recurrence") diff --git a/tests/units/presentation/artifactfilterproxymodeltest.cpp b/tests/units/presentation/artifactfilterproxymodeltest.cpp --- a/tests/units/presentation/artifactfilterproxymodeltest.cpp +++ b/tests/units/presentation/artifactfilterproxymodeltest.cpp @@ -30,6 +30,7 @@ #include "presentation/artifactfilterproxymodel.h" #include "presentation/querytreemodelbase.h" +#include "utils/datetime.h" Q_DECLARE_METATYPE(QList) @@ -44,8 +45,8 @@ auto task = Domain::Task::Ptr::create(); task->setTitle(title); task->setText(text); - task->setStartDate(QDateTime(start)); - task->setDueDate(QDateTime(due)); + task->setStartDate(start); + task->setDueDate(due); auto item = new QStandardItem; item->setData(task->title(), Qt::DisplayRole); @@ -68,6 +69,11 @@ } private slots: + void initTestCase() + { + qputenv("ZANSHIN_OVERRIDE_DATE", "2015-03-11"); + } + void shouldHaveDefaultState() { Presentation::ArtifactFilterProxyModel proxy; @@ -108,9 +114,10 @@ { // GIVEN QStandardItemModel input; - input.appendRow(createTaskItem(QStringLiteral("1. past"), QStringLiteral(""), QDate::currentDate().addDays(-1))); - input.appendRow(createTaskItem(QStringLiteral("2. present"), QStringLiteral(""), QDate::currentDate())); - input.appendRow(createTaskItem(QStringLiteral("3. future"), QStringLiteral(""), QDate::currentDate().addDays(1))); + const auto today = Utils::DateTime::currentDate(); + input.appendRow(createTaskItem(QStringLiteral("1. past"), QStringLiteral(""), today.addDays(-1))); + input.appendRow(createTaskItem(QStringLiteral("2. present"), QStringLiteral(""), today)); + input.appendRow(createTaskItem(QStringLiteral("3. future"), QStringLiteral(""), today.addDays(1))); input.appendRow(createTaskItem(QStringLiteral("4. whatever"), QStringLiteral(""))); Presentation::ArtifactFilterProxyModel output; diff --git a/tests/units/presentation/availabletaskpagesmodeltest.cpp b/tests/units/presentation/availabletaskpagesmodeltest.cpp --- a/tests/units/presentation/availabletaskpagesmodeltest.cpp +++ b/tests/units/presentation/availabletaskpagesmodeltest.cpp @@ -365,7 +365,7 @@ model->dropMimeData(data.get(), Qt::MoveAction, -1, -1, workdayIndex); // THEN - QCOMPARE(taskToDrop5->startDate().date(), Utils::DateTime::currentDateTime().date()); + QCOMPARE(taskToDrop5->startDate(), Utils::DateTime::currentDate()); // WHEN two task are drop on the workday Domain::Task::Ptr taskToDrop6(new Domain::Task); @@ -378,8 +378,8 @@ model->dropMimeData(data.get(), Qt::MoveAction, -1, -1, workdayIndex); // THEN - QCOMPARE(taskToDrop6->startDate().date(), Utils::DateTime::currentDateTime().date()); - QCOMPARE(taskToDrop7->startDate().date(), Utils::DateTime::currentDateTime().date()); + QCOMPARE(taskToDrop6->startDate(), Utils::DateTime::currentDate()); + QCOMPARE(taskToDrop7->startDate(), Utils::DateTime::currentDate()); } diff --git a/tests/units/presentation/workdaypagemodeltest.cpp b/tests/units/presentation/workdaypagemodeltest.cpp --- a/tests/units/presentation/workdaypagemodeltest.cpp +++ b/tests/units/presentation/workdaypagemodeltest.cpp @@ -48,7 +48,7 @@ { // GIVEN - const auto today = Utils::DateTime::currentDateTime(); + const auto today = Utils::DateTime::currentDate(); // Three tasks auto task1 = Domain::Task::Ptr::create(); @@ -241,7 +241,7 @@ // THEN QVERIFY(taskRepositoryMock(&Domain::TaskRepository::dissociate).when(childTask5).exactly(1)); QVERIFY(taskRepositoryMock(&Domain::TaskRepository::update).when(childTask5).exactly(0)); - QCOMPARE(childTask5->startDate().date(), today.date()); + QCOMPARE(childTask5->startDate(), today); } void shouldAddTasksInWorkdayPage() @@ -260,15 +260,15 @@ // WHEN auto title = QStringLiteral("New task"); - auto today = Utils::DateTime::currentDateTime(); + auto today = Utils::DateTime::currentDate(); auto task = workday.addItem(title).objectCast(); // THEN QVERIFY(taskRepositoryMock(&Domain::TaskRepository::create).when(any()).exactly(1)); QVERIFY(task); QCOMPARE(task->title(), title); - QCOMPARE(task->startDate().date(), today.date()); + QCOMPARE(task->startDate(), today); } void shouldAddChildTask() diff --git a/tests/units/testlib/gentodotest.cpp b/tests/units/testlib/gentodotest.cpp --- a/tests/units/testlib/gentodotest.cpp +++ b/tests/units/testlib/gentodotest.cpp @@ -152,25 +152,25 @@ void shouldAllowToSetDoneDate() { // GIVEN - Akonadi::Item item = GenTodo().withDoneDate(QDateTime(QDate(2015, 4, 12), QTime(12, 00))); + Akonadi::Item item = GenTodo().withDoneDate(QDate(2015, 4, 12)); // THEN - QCOMPARE(item.payload()->completed().date(), QDate(2015, 04, 12)); + QCOMPARE(item.payload()->completed().toLocalTime().date(), QDate(2015, 04, 12)); } void shouldAllowToSetDoneDateString() { // GIVEN Akonadi::Item item = GenTodo().withDoneDate(QStringLiteral("2015-04-12")); // THEN - QCOMPARE(item.payload()->completed().date(), QDate(2015, 04, 12)); + QCOMPARE(item.payload()->completed().toLocalTime().date(), QDate(2015, 04, 12)); } void shouldAllowToSetStartDate() { // GIVEN - Akonadi::Item item = GenTodo().withStartDate(QDateTime(QDate(2015, 4, 12))); + Akonadi::Item item = GenTodo().withStartDate(QDate(2015, 4, 12)); // THEN QCOMPARE(item.payload()->dtStart().date(), QDate(2015, 04, 12)); @@ -188,7 +188,7 @@ void shouldAllowToSetDueDate() { // GIVEN - Akonadi::Item item = GenTodo().withDueDate(QDateTime(QDate(2015, 4, 12))); + Akonadi::Item item = GenTodo().withDueDate(QDate(2015, 4, 12)); // THEN QCOMPARE(item.payload()->dtDue().date(), QDate(2015, 04, 12)); diff --git a/tests/units/widgets/pageviewtest.cpp b/tests/units/widgets/pageviewtest.cpp --- a/tests/units/widgets/pageviewtest.cpp +++ b/tests/units/widgets/pageviewtest.cpp @@ -832,16 +832,16 @@ // THEN QCOMPARE(stubRunningTaskModel.property("runningTask").value(), task1); - QCOMPARE(task1->startDate().date(), QDate::currentDate()); + QCOMPARE(task1->startDate(), QDate::currentDate()); // WHEN starting the second task QModelIndex index2 = stubPageModel.itemModel.index(1, 0); centralView->selectionModel()->setCurrentIndex(index2, QItemSelectionModel::ClearAndSelect); runTaskAction->trigger(); // THEN QCOMPARE(stubRunningTaskModel.property("runningTask").value(), task2); - QCOMPARE(task2->startDate().date(), QDate::currentDate()); + QCOMPARE(task2->startDate(), QDate::currentDate()); } };