summaryrefslogtreecommitdiffstats
path: root/conduits/vcalconduit/todoRecord.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'conduits/vcalconduit/todoRecord.cpp')
-rw-r--r--conduits/vcalconduit/todoRecord.cpp141
1 files changed, 141 insertions, 0 deletions
diff --git a/conduits/vcalconduit/todoRecord.cpp b/conduits/vcalconduit/todoRecord.cpp
new file mode 100644
index 0000000..228b150
--- /dev/null
+++ b/conduits/vcalconduit/todoRecord.cpp
@@ -0,0 +1,141 @@
+/* vcalRecord.cpp KPilot
+**
+** Copyright (C) 2006 by Adriaan de Groot <groot@kde.org>
+** Copyright (C) 2002-2003 by Reinhold Kainhofer
+** Copyright (C) 2001 by Dan Pilone
+**
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-pim@kde.org
+*/
+
+#include "options.h"
+
+#include <libkcal/calendar.h>
+#include <libkcal/calendarlocal.h>
+#include <libkcal/recurrence.h>
+#include <libkcal/vcalformat.h>
+
+#include "pilot.h"
+#include "pilotTodoEntry.h"
+
+#include "kcalRecord.h"
+#include "todoRecord.h"
+
+bool KCalSync::setTodoEntry(PilotTodoEntry *de,
+ const KCal::Todo *todo,
+ const CategoryAppInfo &info)
+{
+ FUNCTIONSETUP;
+ if (!de || !todo) {
+ DEBUGKPILOT << fname << ": NULL todo given... Skipping it" << endl;
+ return false;
+ }
+
+ // set secrecy, start/end times, alarms, recurrence, exceptions, summary and description:
+ if (todo->secrecy()!=KCal::Todo::SecrecyPublic)
+ {
+ de->setSecret( true );
+ }
+
+ // update it from the iCalendar Todo.
+
+ if (todo->hasDueDate()) {
+ struct tm t = writeTm(todo->dtDue());
+ de->setDueDate(t);
+ de->setIndefinite(0);
+ } else {
+ de->setIndefinite(1);
+ }
+
+ // TODO: take recurrence (code in VCAlConduit) from ActionNames
+
+ setCategory(de, todo, info);
+
+ // TODO: sync the alarm from ActionNames. Need to extend PilotTodoEntry
+ de->setPriority(todo->priority());
+
+ de->setComplete(todo->isCompleted());
+
+ // what we call summary pilot calls description.
+ de->setDescription(todo->summary());
+
+ // what we call description pilot puts as a separate note
+ de->setNote(todo->description());
+
+ DEBUGKPILOT << "-------- " << todo->summary() << endl;
+ return de->pack();
+}
+
+bool KCalSync::setTodo(KCal::Todo *e,
+ const PilotTodoEntry *de,
+ const CategoryAppInfo &info)
+{
+ FUNCTIONSETUP;
+
+ if (!e)
+ {
+ DEBUGKPILOT << fname
+ << ": null todo entry given. skipping..." << endl;
+ return false;
+ }
+ if (!de)
+ {
+ DEBUGKPILOT << fname
+ << "! NULL todo entry given... Skipping it" << endl;
+ return false;
+ }
+
+
+ e->setPilotId(de->id());
+ DEBUGKPILOT<<fname<<": set KCal item to pilotId: [" << e->pilotId() << "] ..."<<endl;
+
+ e->setSecrecy(de->isSecret() ? KCal::Todo::SecrecyPrivate : KCal::Todo::SecrecyPublic);
+
+ if (de->getIndefinite()) {
+ e->setHasDueDate(false);
+ } else {
+ e->setDtDue(readTm(de->getDueDate()));
+ e->setHasDueDate(true);
+ }
+
+ // Categories
+ setCategory(e, de, info);
+
+ // PRIORITY //
+ e->setPriority(de->getPriority());
+
+ // COMPLETED? //
+ e->setCompleted(de->getComplete());
+ if ( de->getComplete() && !e->hasCompletedDate() ) {
+ e->setCompleted( TQDateTime::currentDateTime() );
+ }
+
+ e->setSummary(de->getDescription());
+ e->setDescription(de->getNote());
+
+ // NOTE: This MUST be done last, since every other set* call
+ // calls updated(), which will trigger an
+ // setSyncStatus(SYNCMOD)!!!
+ e->setSyncStatus(KCal::Incidence::SYNCNONE);
+
+ return true;
+}