Difference between revisions of "Development/Tutorials/PIM/ical"

Jump to: navigation, search
(main.cpp)
(build and run it)
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.


Content is available under Creative Commons License SA 4.0 unless otherwise noted.