Development/Tutorials/PIM/ical: Difference between revisions
< Development | Tutorials
Line 57: | Line 57: | ||
== build and run it == | == build and run it == | ||
cmake . && make -j8 && ./kdestart | 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. |
Revision as of 09:10, 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.
Loading a calendar
Here is the easiest test case: A program that loads /tmp/test.ics.
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.