diff --git a/agents/followupreminderagent/followupreminderagent.h b/agents/followupreminderagent/followupreminderagent.h --- a/agents/followupreminderagent/followupreminderagent.h +++ b/agents/followupreminderagent/followupreminderagent.h @@ -36,6 +36,7 @@ public Q_SLOTS: void reload(); + void addReminder(const QString &messageId, Akonadi::Item::Id messageItemId, const QString &to, const QString &subject, const QDate &followupDate, Akonadi::Item::Id todoId); protected: void itemAdded(const Akonadi::Item &item, const Akonadi::Collection &collection) override; diff --git a/agents/followupreminderagent/followupreminderagent.cpp b/agents/followupreminderagent/followupreminderagent.cpp --- a/agents/followupreminderagent/followupreminderagent.cpp +++ b/agents/followupreminderagent/followupreminderagent.cpp @@ -22,6 +22,8 @@ #include #include "followupreminderadaptor.h" #include "followupreminderagentsettings.h" +#include + #include #include @@ -115,6 +117,19 @@ } } +void FollowUpReminderAgent::addReminder(const QString &messageId, Akonadi::Item::Id messageItemId, const QString &to, const QString &subject, const QDate &followupDate, Akonadi::Item::Id todoId) +{ + auto info = new FollowUpReminder::FollowUpReminderInfo(); + info->setMessageId(messageId); + info->setOriginalMessageItemId(messageItemId); + info->setTo(to); + info->setSubject(subject); + info->setFollowUpReminderDate(followupDate); + info->setTodoId(todoId); + + mManager->addReminder(info); +} + QString FollowUpReminderAgent::printDebugInfo() const { return mManager->printDebugInfo(); diff --git a/agents/followupreminderagent/followupremindermanager.h b/agents/followupreminderagent/followupremindermanager.h --- a/agents/followupreminderagent/followupremindermanager.h +++ b/agents/followupreminderagent/followupremindermanager.h @@ -36,6 +36,7 @@ ~FollowUpReminderManager(); void load(bool forceReloadConfig = false); + void addReminder(FollowUpReminder::FollowUpReminderInfo *reminder); // takes ownership void checkFollowUp(const Akonadi::Item &item, const Akonadi::Collection &col); Q_REQUIRED_RESULT QString printDebugInfo() const; diff --git a/agents/followupreminderagent/followupremindermanager.cpp b/agents/followupreminderagent/followupremindermanager.cpp --- a/agents/followupreminderagent/followupremindermanager.cpp +++ b/agents/followupreminderagent/followupremindermanager.cpp @@ -85,6 +85,15 @@ } } +void FollowUpReminderManager::addReminder(FollowUpReminder::FollowUpReminderInfo *info) +{ + if (info->isValid()) { + FollowUpReminderUtil::writeFollowupReminderInfo(FollowUpReminderUtil::defaultConfig(), info, true); + } else { + delete info; + } +} + void FollowUpReminderManager::slotReparseConfiguration() { load(true); diff --git a/agents/followupreminderagent/org.freedesktop.Akonadi.FollowUpReminder.xml b/agents/followupreminderagent/org.freedesktop.Akonadi.FollowUpReminder.xml --- a/agents/followupreminderagent/org.freedesktop.Akonadi.FollowUpReminder.xml +++ b/agents/followupreminderagent/org.freedesktop.Akonadi.FollowUpReminder.xml @@ -11,5 +11,14 @@ + + + + + + + + +