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

Jump to: navigation, search
(events)
 
(5 intermediate revisions by one user not shown)
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.
  
= Loading a calendar =
+
= Writing a calendar =
Here is the easiest test case: A program that loads /tmp/test.ics.
+
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 ==
Line 21: Line 21:
 
<pre>
 
<pre>
 
/*
 
/*
This is a test case for KDE's iCalendar functionality.
+
This is a demo/test case for KDE's iCalendar functionality.
(c) 2008 by Thorsten Staerk
+
(c) 2008-2011 by Thorsten Staerk
 
*/
 
*/
  
Line 28: Line 28:
 
#include <kapplication.h>
 
#include <kapplication.h>
 
#include <kaboutdata.h>
 
#include <kaboutdata.h>
#include <kmessagebox.h>
 
 
#include <kcmdlineargs.h>
 
#include <kcmdlineargs.h>
 
#include <KMainWindow>
 
#include <KMainWindow>
Line 47: Line 46:
 
   cal=resource;
 
   cal=resource;
 
   cal->load();
 
   cal->load();
 +
  KCal::Todo* todo1 = new KCal::Todo();
 +
  todo1->setSummary("test todo");
 +
  cal->addTodo(todo1);
 
   KABC::Lock *lock = cal->lock();
 
   KABC::Lock *lock = cal->lock();
 
   cal->save();
 
   cal->save();
Line 52: Line 54:
 
}
 
}
 
</pre>
 
</pre>
 +
 +
== 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.
 +
 +
= events =
 +
Now we will create an event in the calendar. The files are available here:
 +
* [http://quickgit.kde.org/?p=kdeexamples.git&a=blob_plain&f=ical/event/main.cpp main.cpp]
 +
* [http://quickgit.kde.org/?p=kdeexamples.git&a=blob_plain&f=ical/event/CMakeLists.txt CMakeLists.txt]

Latest revision as of 10:38, 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.

Contents

[edit] 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".

[edit] 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 )

[edit] 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();
}

[edit] build and run it

cmake . && make -j8 && ./kdestart

[edit] 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.

[edit] events

Now we will create an event in the calendar. The files are available here:


This page was last modified on 26 September 2011, at 10:38. This page has been accessed 6,897 times. Content is available under Creative Commons License SA 3.0 as well as the GNU Free Documentation License 1.2.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal