Development/Tutorials/PIM/ical: Difference between revisions
Appearance
< Development | Tutorials
No edit summary |
|||
| Line 1: | Line 1: | ||
[http://en.wikipedia.org/wiki/ICalendar iCal] is a standardized data format for storing appointments, events and todos in a calendar file. It is being used by Apple and Outlook. Using the KDE libraries you can read and write files in this format. | [http://en.wikipedia.org/wiki/ICalendar iCal] is a standardized data format for storing appointments, events and todos in a calendar file. It is being used by Apple and Outlook. Using the KDE libraries you can read and write files in this format. | ||
= | = Writing a calendar = | ||
As a start, we will write a program that generates the calendar file /tmp/test.ics containing one todo named "test todo". | |||
== CMakeLists.txt == | == CMakeLists.txt == | ||
Revision as of 09:13, 26 September 2011
iCal is a standardized data format for storing appointments, events and todos in a calendar file. It is being used by Apple and Outlook. Using the KDE libraries you can read and write files in this format.
Writing a calendar
As a start, we will write a program that generates the calendar file /tmp/test.ics containing one todo named "test todo".
CMakeLists.txt
PROJECT( kde4start )
FIND_PACKAGE(KDE4 REQUIRED)
INCLUDE_DIRECTORIES( ${KDE4_INCLUDES} . )
SET(kde4startSources main.cpp )
KDE4_ADD_EXECUTABLE(kde4start ${kde4startSources} )
TARGET_LINK_LIBRARIES(kde4start ${KDE4_KDEUI_LIBS} ${KDE4_KCAL_LIBS} ${KDE4_KPARTS_LIBS} kdepim kcal_resourceremote )
main.cpp
/*
This is a demo/test case for KDE's iCalendar functionality.
(c) 2008-2011 by Thorsten Staerk
*/
#include <QString>
#include <kapplication.h>
#include <kaboutdata.h>
#include <kcmdlineargs.h>
#include <KMainWindow>
#include <kcal/resourcecalendar.h>
#include <kcal/resourcecached.h>
#include <kcal/resourcelocal.h>
int main (int argc, char *argv[])
{
const QByteArray& ba=QByteArray("test");
const KLocalizedString name=ki18n("myName");
KAboutData aboutData( ba, ba, name, ba, name);
KCmdLineArgs::init( argc, argv, &aboutData );
KApplication khello;
KCal::ResourceCalendar* cal;
KCal::ResourceCached* resource;
resource=new KCal::ResourceLocal("/tmp/test.ics");
cal=resource;
cal->load();
KCal::Todo* todo1 = new KCal::Todo();
todo1->setSummary("test todo");
cal->addTodo(todo1);
KABC::Lock *lock = cal->lock();
cal->save();
lock->unlock();
}
build and run it
cmake . && make -j8 && ./kdestart
result
If we delete /tmp/test.ics and then run the program, the file will look about like this:
# cat /tmp/test.ics BEGIN:VCALENDAR PRODID:-//K Desktop Environment//NONSGML libkcal 4.3//EN VERSION:2.0 BEGIN:VTODO DTSTAMP:20110926T090835Z CREATED:20110926T090835Z UID:libkcal-1018318974.1052 LAST-MODIFIED:20110926T090835Z SUMMARY:test todo PERCENT-COMPLETE:0 END:VTODO END:VCALENDAR
However, the UID is calculated by random. If we run the program several times, it will append new todos, not overwrite any.