summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt3
-rw-r--r--libkcal/icalformatimpl.cpp3
2 files changed, 6 insertions, 0 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 52590d8..21cee6e 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,205 +1,208 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3********** VERSION 2.1.17 ************ 3********** VERSION 2.1.17 ************
4 4
5KO/Pi: 5KO/Pi:
6Added option to display times in What's Next View on two lines. 6Added option to display times in What's Next View on two lines.
7(Useful for display on the Zaurus with 240x320 screen) 7(Useful for display on the Zaurus with 240x320 screen)
8Removed "Allday" for allday events of one day duration in What's Next View. 8Removed "Allday" for allday events of one day duration in What's Next View.
9Added date range for allday events of more than one day duration in What's Next View. 9Added date range for allday events of more than one day duration in What's Next View.
10Fixed two problems in the data importing from Outlook: 10Fixed two problems in the data importing from Outlook:
11 Fixed the duplicated import if the summary, location or description had whitespaces at the end. 11 Fixed the duplicated import if the summary, location or description had whitespaces at the end.
12 Fixed a problem importing certain recurrence rules. 12 Fixed a problem importing certain recurrence rules.
13 13
14A journal in an ics file may have no dtStart value (as files from KNotes, which stores its notes in an ics journal file).
15If now a journal has no dtStart value the dtStart value is set to the created value of the journal when loading the file. That makes it possible to view and edit "notes" from KNotes. Simply add another Resource in KO/Pi which is a copy of the ics file from KNotes. You will find the "notes" in KO/Pi as a journal entry on the date you created it.
16
14********** VERSION 2.1.16 ************ 17********** VERSION 2.1.16 ************
15 18
16Fixed a problem with the menu bar in KO/Pi and using the "Menu" hardware key on the Zaurus. 19Fixed a problem with the menu bar in KO/Pi and using the "Menu" hardware key on the Zaurus.
17Added columns for datetime in todo view: Last modified, created and last modified subtodo 20Added columns for datetime in todo view: Last modified, created and last modified subtodo
18Fixed a bug in agenda view displaying recurring multiday events which are longer than two days. 21Fixed a bug in agenda view displaying recurring multiday events which are longer than two days.
19Made conflict detection up to 4 times faster. 22Made conflict detection up to 4 times faster.
20 23
21********** VERSION 2.1.15 ************ 24********** VERSION 2.1.15 ************
22 25
23Fixed two layout problems on the Z: 26Fixed two layout problems on the Z:
24Made the with of the newly added buttons on the Quick-Todo smaller. 27Made the with of the newly added buttons on the Quick-Todo smaller.
25Made listweek layout in 2 columns on the Z760 in portait screen and full menubar visible. 28Made listweek layout in 2 columns on the Z760 in portait screen and full menubar visible.
26 29
27 30
28********** VERSION 2.1.14 ************ 31********** VERSION 2.1.14 ************
29 32
30Added some buttons to the KO/Pi Quick-todo line to make it possible to quickly access some todo view layout settings like display all flat/open/close and hide/show running/done. 33Added some buttons to the KO/Pi Quick-todo line to make it possible to quickly access some todo view layout settings like display all flat/open/close and hide/show running/done.
31Added a button to add a subtodo quickly. 34Added a button to add a subtodo quickly.
32 35
33Added a possibility to search for conflicting events. (In the Action menu. Keyboard shortcut "q", shift+q or ctrl +q ). 36Added a possibility to search for conflicting events. (In the Action menu. Keyboard shortcut "q", shift+q or ctrl +q ).
34Added an option to change the layout of the list week to column mode. 37Added an option to change the layout of the list week to column mode.
35 38
36Fixed some usability problems in pi-sync mode by adding some progress information about file transfer. 39Fixed some usability problems in pi-sync mode by adding some progress information about file transfer.
37 40
38Fixed pi-sync problems with the new multi calendar feature. 41Fixed pi-sync problems with the new multi calendar feature.
39Now pi-sync behaviour should be: 42Now pi-sync behaviour should be:
401) Local sends file request ( as usual ) 431) Local sends file request ( as usual )
412) Remote sends file which contains data of all enabled ( the calendar where the "eye" column is checked ) calendars. 442) Remote sends file which contains data of all enabled ( the calendar where the "eye" column is checked ) calendars.
423) Local syncs with data, adds new entries to default calendar and sends file back ( as usual ). 453) Local syncs with data, adds new entries to default calendar and sends file back ( as usual ).
43 If the data which local receives contains entries which are on disabled calendars on local this entries are updated and not added as duplicates to the default calendar. 46 If the data which local receives contains entries which are on disabled calendars on local this entries are updated and not added as duplicates to the default calendar.
444) Remote updates the data and adds new entries to default calendar. Readonly entries are not changed on remote. 474) Remote updates the data and adds new entries to default calendar. Readonly entries are not changed on remote.
45 If the data which remote receives contains entries which are on disabled calendars on remote this entries are updated and not added as duplicates to the default calendar. 48 If the data which remote receives contains entries which are on disabled calendars on remote this entries are updated and not added as duplicates to the default calendar.
46 49
47Summary: 50Summary:
48No new item ( new created after the last sync ) in a disabled calendar is propagated to the sync partner. Readonly items are synced and added/changed on the sync partner if it is not readonly on the sync partner. 51No new item ( new created after the last sync ) in a disabled calendar is propagated to the sync partner. Readonly items are synced and added/changed on the sync partner if it is not readonly on the sync partner.
49If you have different calendars on remote and local and some of them disabled you may get some "strange" bahaviour. 52If you have different calendars on remote and local and some of them disabled you may get some "strange" bahaviour.
50Well, the syncing has become quite complicated ... you should have no problems if you enable all calendars. 53Well, the syncing has become quite complicated ... you should have no problems if you enable all calendars.
51 54
52********** VERSION 2.1.13 ************ 55********** VERSION 2.1.13 ************
53 56
54Fixed a problem in KA/Pi search. 57Fixed a problem in KA/Pi search.
55Fixed some minor problems in KO/Pi. 58Fixed some minor problems in KO/Pi.
56Added calendar selection possibility to the todo view popup and to the event/todo/journal editor. 59Added calendar selection possibility to the todo view popup and to the event/todo/journal editor.
57 60
58Fixed memory usage problems in KA/Pi: 61Fixed memory usage problems in KA/Pi:
59When loading data KA/Pi did load the file data twice. 62When loading data KA/Pi did load the file data twice.
60Example: 63Example:
61 A 600k file did consume 1200k memory during loading process. 64 A 600k file did consume 1200k memory during loading process.
62 This is fixed, it does now consume only 600k during loading process. 65 This is fixed, it does now consume only 600k during loading process.
63When saving data KA/Pi did consume a lot of memory for the data parsing during the save process. 66When saving data KA/Pi did consume a lot of memory for the data parsing during the save process.
64This is fixed. 67This is fixed.
65Example: 68Example:
66 Before saving a 600k file KA/Pi did consume 21.7 Meg of Ram. 69 Before saving a 600k file KA/Pi did consume 21.7 Meg of Ram.
67 When saving KA/Pi did consume 28.6 Meg of Ram. That causes a crash on the Zaurus because there was no memeory left in the system. 70 When saving KA/Pi did consume 28.6 Meg of Ram. That causes a crash on the Zaurus because there was no memeory left in the system.
68 Now KA/Pi is consuming on saving the same data 22.0 Meg of Ram during the save process. 71 Now KA/Pi is consuming on saving the same data 22.0 Meg of Ram during the save process.
69Note: The memory usage of KA/Pi after the data is loaded/saved has not changed. 72Note: The memory usage of KA/Pi after the data is loaded/saved has not changed.
70The saving of data may be a bit slower now. 73The saving of data may be a bit slower now.
71 74
72Fixed memory usage problems in KO/Pi: 75Fixed memory usage problems in KO/Pi:
73When KO/Pi did save the data to file, it did not release the used buffers after saving. 76When KO/Pi did save the data to file, it did not release the used buffers after saving.
74The used buffer was released after saving the next time, but there was new buffer space allocated again on that save operation. 77The used buffer was released after saving the next time, but there was new buffer space allocated again on that save operation.
75This is fixed. 78This is fixed.
76Example: 79Example:
77 When saving a 400k file KO/Pi do now use 400k less memory now. 80 When saving a 400k file KO/Pi do now use 400k less memory now.
78 81
79Optimized memory usage in KO/Pi Agenda view: 82Optimized memory usage in KO/Pi Agenda view:
80KO/Pi is storing some paint information in extra buffers for faster repainting of the agenda view. 83KO/Pi is storing some paint information in extra buffers for faster repainting of the agenda view.
81These buffers were not made smaller (i.e. downsized) because of performance reasons. 84These buffers were not made smaller (i.e. downsized) because of performance reasons.
82The handling of these buffers are now much smarter: 85The handling of these buffers are now much smarter:
83Two (of six) buffers are removed completely. 86Two (of six) buffers are removed completely.
84The remaing four buffers are now downsized after not using the agenda view for 45 seconds. 87The remaing four buffers are now downsized after not using the agenda view for 45 seconds.
85Such that the memory usage of KO/Pi is smaller now in general ( because 2 buffers are removed) and is much smaller when not using the agenda view. That is very important when using fastload for KO/Pi. 88Such that the memory usage of KO/Pi is smaller now in general ( because 2 buffers are removed) and is much smaller when not using the agenda view. That is very important when using fastload for KO/Pi.
86 89
87Worst case example ( for a maximum size agenda content): 90Worst case example ( for a maximum size agenda content):
88 When resizing the agenda content to a large scale, KO/Pi did use 17Meg of mem ( and did not use less memory until it was stopped). Now KO/Pi is using on the same operation only 14.3 Meg of mem and after 45 seconds not using the agenda view it uses only 9.4 Meg of mem. 91 When resizing the agenda content to a large scale, KO/Pi did use 17Meg of mem ( and did not use less memory until it was stopped). Now KO/Pi is using on the same operation only 14.3 Meg of mem and after 45 seconds not using the agenda view it uses only 9.4 Meg of mem.
89 92
90When switching to an unused Agenda view now KO/Pi is upizing the buffers again. This takes less than a second. Such that switching to Agenda view (after not using it for more than 45 seconds) is now a bit slower. 93When switching to an unused Agenda view now KO/Pi is upizing the buffers again. This takes less than a second. Such that switching to Agenda view (after not using it for more than 45 seconds) is now a bit slower.
91 94
92Summary: 95Summary:
93Many memory wasting problems of KA/Pi and KO/Pi fixed such that it is better to use on the Zaurus. 96Many memory wasting problems of KA/Pi and KO/Pi fixed such that it is better to use on the Zaurus.
94 97
95********** VERSION 2.1.12 ************ 98********** VERSION 2.1.12 ************
96 99
97KO/Pi: 100KO/Pi:
98Many small usability fixes, e.g. rearranged the popup menus such that they are better to use on the Zaurus. 101Many small usability fixes, e.g. rearranged the popup menus such that they are better to use on the Zaurus.
99Fixed a problem with the month view when file was saved but KO/Pi was not the active window. 102Fixed a problem with the month view when file was saved but KO/Pi was not the active window.
100Fixed some problems in the resource config dialog (e.g. added a warning if you set all calendars to read-only). 103Fixed some problems in the resource config dialog (e.g. added a warning if you set all calendars to read-only).
101Fixed some other small problems. 104Fixed some other small problems.
102 105
103********** VERSION 2.1.11 ************ 106********** VERSION 2.1.11 ************
104 107
105KO/Pi: 108KO/Pi:
106Because we can have many calendars now in KO/Pi we can have more than one journal entry per day. 109Because we can have many calendars now in KO/Pi we can have more than one journal entry per day.
107Added features to handle (and add ) more than one journal entry per day. 110Added features to handle (and add ) more than one journal entry per day.
108Added option for a journal title. 111Added option for a journal title.
109 112
110Added info about the calendar, the item belongs to, to the event/todo/journal viewer. 113Added info about the calendar, the item belongs to, to the event/todo/journal viewer.
111Fixed a problem of the alarm of completed recurring todos. 114Fixed a problem of the alarm of completed recurring todos.
112Added to the event/todo editor to set quickly the category of an item. 115Added to the event/todo editor to set quickly the category of an item.
113 116
114 117
115Fixed some problems when calling KO/Pi or KA/Pi from the alarm applet. 118Fixed some problems when calling KO/Pi or KA/Pi from the alarm applet.
116 119
117Added KA/Pi multi sync to the multi sync called from the alarm applet. 120Added KA/Pi multi sync to the multi sync called from the alarm applet.
118 121
119********** VERSION 2.1.10 ************ 122********** VERSION 2.1.10 ************
120 123
121KO/Pi: 124KO/Pi:
122Importing Birthdays will now create another file resource "Birthdays" and import the birthday data from KA/Pi into that file. 125Importing Birthdays will now create another file resource "Birthdays" and import the birthday data from KA/Pi into that file.
123When a multidayevent is selected in monthview all occurences of this event in the monthview are now hightlighted. 126When a multidayevent is selected in monthview all occurences of this event in the monthview are now hightlighted.
124Fixed a bug in searching for a small timerange, i.e. one day. 127Fixed a bug in searching for a small timerange, i.e. one day.
125 128
126KA/Pi: 129KA/Pi:
127Fixed two problems in csv export. 130Fixed two problems in csv export.
128Fixed problems when calling the contact selection dialog from KO/Pi or OM/Pi. 131Fixed problems when calling the contact selection dialog from KO/Pi or OM/Pi.
129 132
130********** VERSION 2.1.9 ************ 133********** VERSION 2.1.9 ************
131 134
132KO/Pi: 135KO/Pi:
133Fixed some problems of the new search options in the search dialog. 136Fixed some problems of the new search options in the search dialog.
134Fixed some problems in the new resource config options. 137Fixed some problems in the new resource config options.
135Changed the recurrence edit of events and todos such that the recurrence edit page now is notified about a change of the start date on the first page. 138Changed the recurrence edit of events and todos such that the recurrence edit page now is notified about a change of the start date on the first page.
136Fixed a problem creating new events in the agenda view if at the day/time is already an agenda item shown: 139Fixed a problem creating new events in the agenda view if at the day/time is already an agenda item shown:
137Now you can click on the bottom/top of an allday agenda item or on the left/right side of an agenda item to get the "new todo/new event" popup. 140Now you can click on the bottom/top of an allday agenda item or on the left/right side of an agenda item to get the "new todo/new event" popup.
138 141
139Fixed a problem in recurrence range in syncing with DTM. 142Fixed a problem in recurrence range in syncing with DTM.
140 143
141KA/Pi: 144KA/Pi:
142Made it posiible to show in the contact overview the details of all data available for that contact( e.g. office, spouse, children, nickname ...) 145Made it posiible to show in the contact overview the details of all data available for that contact( e.g. office, spouse, children, nickname ...)
143 146
144PwM/Pi: 147PwM/Pi:
145Added "sec" to the timeout config settings to make it clear the timeout values are seconds. 148Added "sec" to the timeout config settings to make it clear the timeout values are seconds.
146 149
147********** VERSION 2.1.8 ************ 150********** VERSION 2.1.8 ************
148 151
149KO/Pi: 152KO/Pi:
150Added info about the completion state of a todo in the ListView/Searchdialog. 153Added info about the completion state of a todo in the ListView/Searchdialog.
151If in TodoView is selected "do not show compledted todos" then completed todos are not shown in the ListView as well. 154If in TodoView is selected "do not show compledted todos" then completed todos are not shown in the ListView as well.
152Fixed some updating problems when changing the filter. 155Fixed some updating problems when changing the filter.
153 156
154KA/Pi: 157KA/Pi:
155In the addressee selection dialog now the formatted name is shown, if not empty. 158In the addressee selection dialog now the formatted name is shown, if not empty.
156Added a column "category" to the addressee selection dialog to make it possible to sort addressees after category. 159Added a column "category" to the addressee selection dialog to make it possible to sort addressees after category.
157Now in the addressee selection dialog a selected contact is remove with a single click from the selected list. 160Now in the addressee selection dialog a selected contact is remove with a single click from the selected list.
158 161
159Fixed in the file selector on the Zaurus the problem that symbolic links to files/dirs were ignored. 162Fixed in the file selector on the Zaurus the problem that symbolic links to files/dirs were ignored.
160Fixed the sorting for size in the file selector on the Z. 163Fixed the sorting for size in the file selector on the Z.
161 164
162Changed the color selection dialog on the Zaurus to a more user friendly version. 165Changed the color selection dialog on the Zaurus to a more user friendly version.
163 166
164********** VERSION 2.1.7 ************ 167********** VERSION 2.1.7 ************
165 168
166KO/Pi: 169KO/Pi:
167Fixed several problems in the new Resource handling. 170Fixed several problems in the new Resource handling.
168Added more options to the search dialog. 171Added more options to the search dialog.
169Fixed a problem in the Month view. 172Fixed a problem in the Month view.
170Added more options to the dialog when setting a todo to stopped. 173Added more options to the dialog when setting a todo to stopped.
171 174
172Fixed two small problems in KO/Pi Alarm applet. 175Fixed two small problems in KO/Pi Alarm applet.
173 176
174********** VERSION 2.1.6 ************ 177********** VERSION 2.1.6 ************
175 178
176This release is for testing only. 179This release is for testing only.
177 180
178KO/Pi: 181KO/Pi:
179Added to the list view (the list view is used in search dialog as well) the possibility to print it. 182Added to the list view (the list view is used in search dialog as well) the possibility to print it.
180Added to the list view the possibility to hide entries, if you do not want to print all entries of the list view. 183Added to the list view the possibility to hide entries, if you do not want to print all entries of the list view.
181Added to the list view the possibility to add all subtodos of selected todos to an export/beam. 184Added to the list view the possibility to add all subtodos of selected todos to an export/beam.
182Added to the search dialog the possibility to make an additive search such that you can get a better list for export/printout. 185Added to the search dialog the possibility to make an additive search such that you can get a better list for export/printout.
183Added to the search dialog the possibility to hide the checkboxes such that there is more space for the list view on the Zaurus. 186Added to the search dialog the possibility to hide the checkboxes such that there is more space for the list view on the Zaurus.
184Fixed a problem in the AlarmTimer Applet: Now utf8 messages are displayed properly. 187Fixed a problem in the AlarmTimer Applet: Now utf8 messages are displayed properly.
185 188
186Added support for multiple calendar files in KO/Pi. Only local ical (*.ics) files are supported as calendars. 189Added support for multiple calendar files in KO/Pi. Only local ical (*.ics) files are supported as calendars.
187In the sync profile config it is still missing to specify a particular calendar to sync with this profile. That setting will be added later. 190In the sync profile config it is still missing to specify a particular calendar to sync with this profile. That setting will be added later.
188Now on every sync the set of calendars is synced which are enabled in the resource view. 191Now on every sync the set of calendars is synced which are enabled in the resource view.
189 192
190A calendar is enabled in the resource view if the "eye" column is checked. 193A calendar is enabled in the resource view if the "eye" column is checked.
191You can set a calendar to be the default for new items( "+" column ). 194You can set a calendar to be the default for new items( "+" column ).
192You can tell KO/Pi to ignore all alarm of a calendar ( "bell" column ) and you can set it readonly. 195You can tell KO/Pi to ignore all alarm of a calendar ( "bell" column ) and you can set it readonly.
193To find out how to add a new calendar and how to remove a calendar is left as an exercise to the reader ... 196To find out how to add a new calendar and how to remove a calendar is left as an exercise to the reader ...
194 197
195 198
196********** VERSION 2.1.5 ************ 199********** VERSION 2.1.5 ************
197 200
198This is the new stable version. 201This is the new stable version.
199Bugfix: 202Bugfix:
200Fixed a problem with agenda popup on the desktop in KO/Pi. 203Fixed a problem with agenda popup on the desktop in KO/Pi.
201Fixed a crash when reloading file, e.g. after a passive pi-sync synchronization. 204Fixed a crash when reloading file, e.g. after a passive pi-sync synchronization.
202Added config option to not display completed todos in agenda view. 205Added config option to not display completed todos in agenda view.
203Addressee view is now using the formatted name, if defined. 206Addressee view is now using the formatted name, if defined.
204That makes it possible to display "lastname, firstname" in that view now. 207That makes it possible to display "lastname, firstname" in that view now.
205To set the formatted name for all contacts, please use menu: 208To set the formatted name for all contacts, please use menu:
diff --git a/libkcal/icalformatimpl.cpp b/libkcal/icalformatimpl.cpp
index 3e28714..4794bc9 100644
--- a/libkcal/icalformatimpl.cpp
+++ b/libkcal/icalformatimpl.cpp
@@ -834,384 +834,387 @@ Todo *ICalFormatImpl::readTodo(icalcomponent *vtodo)
834 p = icalcomponent_get_next_property(vtodo,ICAL_ANY_PROPERTY); 834 p = icalcomponent_get_next_property(vtodo,ICAL_ANY_PROPERTY);
835 } 835 }
836 836
837 return todo; 837 return todo;
838} 838}
839 839
840Event *ICalFormatImpl::readEvent(icalcomponent *vevent) 840Event *ICalFormatImpl::readEvent(icalcomponent *vevent)
841{ 841{
842 Event *event = new Event; 842 Event *event = new Event;
843 event->setFloats(false); 843 event->setFloats(false);
844 844
845 readIncidence(vevent,event); 845 readIncidence(vevent,event);
846 846
847 icalproperty *p = icalcomponent_get_first_property(vevent,ICAL_ANY_PROPERTY); 847 icalproperty *p = icalcomponent_get_first_property(vevent,ICAL_ANY_PROPERTY);
848 848
849// int intvalue; 849// int intvalue;
850 icaltimetype icaltime; 850 icaltimetype icaltime;
851 851
852 QStringList categories; 852 QStringList categories;
853 QString transparency; 853 QString transparency;
854 854
855 while (p) { 855 while (p) {
856 icalproperty_kind kind = icalproperty_isa(p); 856 icalproperty_kind kind = icalproperty_isa(p);
857 switch (kind) { 857 switch (kind) {
858 858
859 case ICAL_DTEND_PROPERTY: // start date and time 859 case ICAL_DTEND_PROPERTY: // start date and time
860 icaltime = icalproperty_get_dtend(p); 860 icaltime = icalproperty_get_dtend(p);
861 if (icaltime.is_date) { 861 if (icaltime.is_date) {
862 event->setFloats( true ); 862 event->setFloats( true );
863 // End date is non-inclusive 863 // End date is non-inclusive
864 QDate endDate = readICalDate( icaltime ).addDays( -1 ); 864 QDate endDate = readICalDate( icaltime ).addDays( -1 );
865 mCompat->fixFloatingEnd( endDate ); 865 mCompat->fixFloatingEnd( endDate );
866 if ( endDate < event->dtStart().date() ) { 866 if ( endDate < event->dtStart().date() ) {
867 endDate = event->dtStart().date(); 867 endDate = event->dtStart().date();
868 } 868 }
869 event->setDtEnd( QDateTime( endDate, QTime( 0, 0, 0 ) ) ); 869 event->setDtEnd( QDateTime( endDate, QTime( 0, 0, 0 ) ) );
870 } else { 870 } else {
871 event->setDtEnd(readICalDateTime(icaltime)); 871 event->setDtEnd(readICalDateTime(icaltime));
872 } 872 }
873 break; 873 break;
874 874
875// TODO: 875// TODO:
876 // at this point, there should be at least a start or end time. 876 // at this point, there should be at least a start or end time.
877 // fix up for events that take up no time but have a time associated 877 // fix up for events that take up no time but have a time associated
878#if 0 878#if 0
879 if (!(vo = isAPropertyOf(vevent, VCDTstartProp))) 879 if (!(vo = isAPropertyOf(vevent, VCDTstartProp)))
880 anEvent->setDtStart(anEvent->dtEnd()); 880 anEvent->setDtStart(anEvent->dtEnd());
881 if (!(vo = isAPropertyOf(vevent, VCDTendProp))) 881 if (!(vo = isAPropertyOf(vevent, VCDTendProp)))
882 anEvent->setDtEnd(anEvent->dtStart()); 882 anEvent->setDtEnd(anEvent->dtStart());
883#endif 883#endif
884 884
885// TODO: exdates 885// TODO: exdates
886#if 0 886#if 0
887 // recurrence exceptions 887 // recurrence exceptions
888 if ((vo = isAPropertyOf(vevent, VCExDateProp)) != 0) { 888 if ((vo = isAPropertyOf(vevent, VCExDateProp)) != 0) {
889 anEvent->setExDates(s = fakeCString(vObjectUStringZValue(vo))); 889 anEvent->setExDates(s = fakeCString(vObjectUStringZValue(vo)));
890 deleteStr(s); 890 deleteStr(s);
891 } 891 }
892#endif 892#endif
893 893
894#if 0 894#if 0
895 // secrecy 895 // secrecy
896 if ((vo = isAPropertyOf(vevent, VCClassProp)) != 0) { 896 if ((vo = isAPropertyOf(vevent, VCClassProp)) != 0) {
897 anEvent->setSecrecy(s = fakeCString(vObjectUStringZValue(vo))); 897 anEvent->setSecrecy(s = fakeCString(vObjectUStringZValue(vo)));
898 deleteStr(s); 898 deleteStr(s);
899 } 899 }
900 else 900 else
901 anEvent->setSecrecy("PUBLIC"); 901 anEvent->setSecrecy("PUBLIC");
902 902
903 // attachments 903 // attachments
904 tmpStrList.clear(); 904 tmpStrList.clear();
905 initPropIterator(&voi, vevent); 905 initPropIterator(&voi, vevent);
906 while (moreIteration(&voi)) { 906 while (moreIteration(&voi)) {
907 vo = nextVObject(&voi); 907 vo = nextVObject(&voi);
908 if (strcmp(vObjectName(vo), VCAttachProp) == 0) { 908 if (strcmp(vObjectName(vo), VCAttachProp) == 0) {
909 tmpStrList.append(s = fakeCString(vObjectUStringZValue(vo))); 909 tmpStrList.append(s = fakeCString(vObjectUStringZValue(vo)));
910 deleteStr(s); 910 deleteStr(s);
911 } 911 }
912 } 912 }
913 anEvent->setAttachments(tmpStrList); 913 anEvent->setAttachments(tmpStrList);
914 914
915 // resources 915 // resources
916 if ((vo = isAPropertyOf(vevent, VCResourcesProp)) != 0) { 916 if ((vo = isAPropertyOf(vevent, VCResourcesProp)) != 0) {
917 QString resources = (s = fakeCString(vObjectUStringZValue(vo))); 917 QString resources = (s = fakeCString(vObjectUStringZValue(vo)));
918 deleteStr(s); 918 deleteStr(s);
919 tmpStrList.clear(); 919 tmpStrList.clear();
920 index1 = 0; 920 index1 = 0;
921 index2 = 0; 921 index2 = 0;
922 QString resource; 922 QString resource;
923 while ((index2 = resources.find(';', index1)) != -1) { 923 while ((index2 = resources.find(';', index1)) != -1) {
924 resource = resources.mid(index1, (index2 - index1)); 924 resource = resources.mid(index1, (index2 - index1));
925 tmpStrList.append(resource); 925 tmpStrList.append(resource);
926 index1 = index2; 926 index1 = index2;
927 } 927 }
928 anEvent->setResources(tmpStrList); 928 anEvent->setResources(tmpStrList);
929 } 929 }
930#endif 930#endif
931 931
932 case ICAL_RELATEDTO_PROPERTY: // releated event (parent) 932 case ICAL_RELATEDTO_PROPERTY: // releated event (parent)
933 event->setRelatedToUid(QString::fromUtf8(icalproperty_get_relatedto(p))); 933 event->setRelatedToUid(QString::fromUtf8(icalproperty_get_relatedto(p)));
934 mEventsRelate.append(event); 934 mEventsRelate.append(event);
935 break; 935 break;
936 936
937 case ICAL_TRANSP_PROPERTY: // Transparency 937 case ICAL_TRANSP_PROPERTY: // Transparency
938 if(icalproperty_get_transp(p) == ICAL_TRANSP_TRANSPARENT ) 938 if(icalproperty_get_transp(p) == ICAL_TRANSP_TRANSPARENT )
939 event->setTransparency( Event::Transparent ); 939 event->setTransparency( Event::Transparent );
940 else 940 else
941 event->setTransparency( Event::Opaque ); 941 event->setTransparency( Event::Opaque );
942 break; 942 break;
943 943
944 default: 944 default:
945// kdDebug(5800) << "ICALFormat::readEvent(): Unknown property: " << kind 945// kdDebug(5800) << "ICALFormat::readEvent(): Unknown property: " << kind
946// << endl; 946// << endl;
947 break; 947 break;
948 } 948 }
949 949
950 p = icalcomponent_get_next_property(vevent,ICAL_ANY_PROPERTY); 950 p = icalcomponent_get_next_property(vevent,ICAL_ANY_PROPERTY);
951 } 951 }
952 952
953 QString msade = event->nonKDECustomProperty("X-MICROSOFT-CDO-ALLDAYEVENT"); 953 QString msade = event->nonKDECustomProperty("X-MICROSOFT-CDO-ALLDAYEVENT");
954 if (!msade.isNull()) { 954 if (!msade.isNull()) {
955 bool floats = (msade == QString::fromLatin1("TRUE")); 955 bool floats = (msade == QString::fromLatin1("TRUE"));
956 kdDebug(5800) << "ICALFormat::readEvent(): all day event: " << floats << endl; 956 kdDebug(5800) << "ICALFormat::readEvent(): all day event: " << floats << endl;
957 event->setFloats(floats); 957 event->setFloats(floats);
958 if (floats) { 958 if (floats) {
959 QDateTime endDate = event->dtEnd(); 959 QDateTime endDate = event->dtEnd();
960 event->setDtEnd(endDate.addDays(-1)); 960 event->setDtEnd(endDate.addDays(-1));
961 } 961 }
962 } 962 }
963 963
964 // some stupid vCal exporters ignore the standard and use Description 964 // some stupid vCal exporters ignore the standard and use Description
965 // instead of Summary for the default field. Correct for this. 965 // instead of Summary for the default field. Correct for this.
966 if (event->summary().isEmpty() && 966 if (event->summary().isEmpty() &&
967 !(event->description().isEmpty())) { 967 !(event->description().isEmpty())) {
968 QString tmpStr = event->description().simplifyWhiteSpace(); 968 QString tmpStr = event->description().simplifyWhiteSpace();
969 event->setDescription(""); 969 event->setDescription("");
970 event->setSummary(tmpStr); 970 event->setSummary(tmpStr);
971 } 971 }
972 972
973 return event; 973 return event;
974} 974}
975 975
976FreeBusy *ICalFormatImpl::readFreeBusy(icalcomponent *vfreebusy) 976FreeBusy *ICalFormatImpl::readFreeBusy(icalcomponent *vfreebusy)
977{ 977{
978 FreeBusy *freebusy = new FreeBusy; 978 FreeBusy *freebusy = new FreeBusy;
979 979
980 readIncidenceBase(vfreebusy,freebusy); 980 readIncidenceBase(vfreebusy,freebusy);
981 981
982 icalproperty *p = icalcomponent_get_first_property(vfreebusy,ICAL_ANY_PROPERTY); 982 icalproperty *p = icalcomponent_get_first_property(vfreebusy,ICAL_ANY_PROPERTY);
983 983
984 icaltimetype icaltime; 984 icaltimetype icaltime;
985 icalperiodtype icalperiod; 985 icalperiodtype icalperiod;
986 QDateTime period_start, period_end; 986 QDateTime period_start, period_end;
987 987
988 while (p) { 988 while (p) {
989 icalproperty_kind kind = icalproperty_isa(p); 989 icalproperty_kind kind = icalproperty_isa(p);
990 switch (kind) { 990 switch (kind) {
991 991
992 case ICAL_DTSTART_PROPERTY: // start date and time 992 case ICAL_DTSTART_PROPERTY: // start date and time
993 icaltime = icalproperty_get_dtstart(p); 993 icaltime = icalproperty_get_dtstart(p);
994 freebusy->setDtStart(readICalDateTime(icaltime)); 994 freebusy->setDtStart(readICalDateTime(icaltime));
995 break; 995 break;
996 996
997 case ICAL_DTEND_PROPERTY: // start End Date and Time 997 case ICAL_DTEND_PROPERTY: // start End Date and Time
998 icaltime = icalproperty_get_dtend(p); 998 icaltime = icalproperty_get_dtend(p);
999 freebusy->setDtEnd(readICalDateTime(icaltime)); 999 freebusy->setDtEnd(readICalDateTime(icaltime));
1000 break; 1000 break;
1001 1001
1002 case ICAL_FREEBUSY_PROPERTY: //Any FreeBusy Times 1002 case ICAL_FREEBUSY_PROPERTY: //Any FreeBusy Times
1003 icalperiod = icalproperty_get_freebusy(p); 1003 icalperiod = icalproperty_get_freebusy(p);
1004 period_start = readICalDateTime(icalperiod.start); 1004 period_start = readICalDateTime(icalperiod.start);
1005 period_end = readICalDateTime(icalperiod.end); 1005 period_end = readICalDateTime(icalperiod.end);
1006 freebusy->addPeriod(period_start, period_end); 1006 freebusy->addPeriod(period_start, period_end);
1007 break; 1007 break;
1008 1008
1009 default: 1009 default:
1010 kdDebug(5800) << "ICALFormat::readIncidence(): Unknown property: " << kind 1010 kdDebug(5800) << "ICALFormat::readIncidence(): Unknown property: " << kind
1011 << endl; 1011 << endl;
1012 break; 1012 break;
1013 } 1013 }
1014 p = icalcomponent_get_next_property(vfreebusy,ICAL_ANY_PROPERTY); 1014 p = icalcomponent_get_next_property(vfreebusy,ICAL_ANY_PROPERTY);
1015 } 1015 }
1016 1016
1017 return freebusy; 1017 return freebusy;
1018} 1018}
1019 1019
1020Journal *ICalFormatImpl::readJournal(icalcomponent *vjournal) 1020Journal *ICalFormatImpl::readJournal(icalcomponent *vjournal)
1021{ 1021{
1022 Journal *journal = new Journal; 1022 Journal *journal = new Journal;
1023 1023
1024 readIncidence(vjournal,journal); 1024 readIncidence(vjournal,journal);
1025 1025
1026 if ( !journal->dtStart().isValid() && journal->created().isValid() ) {
1027 journal->setDtStart( journal->created() );
1028 }
1026 return journal; 1029 return journal;
1027} 1030}
1028 1031
1029Attendee *ICalFormatImpl::readAttendee(icalproperty *attendee) 1032Attendee *ICalFormatImpl::readAttendee(icalproperty *attendee)
1030{ 1033{
1031 icalparameter *p = 0; 1034 icalparameter *p = 0;
1032 1035
1033 QString email = QString::fromUtf8(icalproperty_get_attendee(attendee)); 1036 QString email = QString::fromUtf8(icalproperty_get_attendee(attendee));
1034 1037
1035 QString name; 1038 QString name;
1036 QString uid = QString::null; 1039 QString uid = QString::null;
1037 p = icalproperty_get_first_parameter(attendee,ICAL_CN_PARAMETER); 1040 p = icalproperty_get_first_parameter(attendee,ICAL_CN_PARAMETER);
1038 if (p) { 1041 if (p) {
1039 name = QString::fromUtf8(icalparameter_get_cn(p)); 1042 name = QString::fromUtf8(icalparameter_get_cn(p));
1040 } else { 1043 } else {
1041 } 1044 }
1042 1045
1043 bool rsvp=false; 1046 bool rsvp=false;
1044 p = icalproperty_get_first_parameter(attendee,ICAL_RSVP_PARAMETER); 1047 p = icalproperty_get_first_parameter(attendee,ICAL_RSVP_PARAMETER);
1045 if (p) { 1048 if (p) {
1046 icalparameter_rsvp rsvpParameter = icalparameter_get_rsvp(p); 1049 icalparameter_rsvp rsvpParameter = icalparameter_get_rsvp(p);
1047 if (rsvpParameter == ICAL_RSVP_TRUE) rsvp = true; 1050 if (rsvpParameter == ICAL_RSVP_TRUE) rsvp = true;
1048 } 1051 }
1049 1052
1050 Attendee::PartStat status = Attendee::NeedsAction; 1053 Attendee::PartStat status = Attendee::NeedsAction;
1051 p = icalproperty_get_first_parameter(attendee,ICAL_PARTSTAT_PARAMETER); 1054 p = icalproperty_get_first_parameter(attendee,ICAL_PARTSTAT_PARAMETER);
1052 if (p) { 1055 if (p) {
1053 icalparameter_partstat partStatParameter = icalparameter_get_partstat(p); 1056 icalparameter_partstat partStatParameter = icalparameter_get_partstat(p);
1054 switch(partStatParameter) { 1057 switch(partStatParameter) {
1055 default: 1058 default:
1056 case ICAL_PARTSTAT_NEEDSACTION: 1059 case ICAL_PARTSTAT_NEEDSACTION:
1057 status = Attendee::NeedsAction; 1060 status = Attendee::NeedsAction;
1058 break; 1061 break;
1059 case ICAL_PARTSTAT_ACCEPTED: 1062 case ICAL_PARTSTAT_ACCEPTED:
1060 status = Attendee::Accepted; 1063 status = Attendee::Accepted;
1061 break; 1064 break;
1062 case ICAL_PARTSTAT_DECLINED: 1065 case ICAL_PARTSTAT_DECLINED:
1063 status = Attendee::Declined; 1066 status = Attendee::Declined;
1064 break; 1067 break;
1065 case ICAL_PARTSTAT_TENTATIVE: 1068 case ICAL_PARTSTAT_TENTATIVE:
1066 status = Attendee::Tentative; 1069 status = Attendee::Tentative;
1067 break; 1070 break;
1068 case ICAL_PARTSTAT_DELEGATED: 1071 case ICAL_PARTSTAT_DELEGATED:
1069 status = Attendee::Delegated; 1072 status = Attendee::Delegated;
1070 break; 1073 break;
1071 case ICAL_PARTSTAT_COMPLETED: 1074 case ICAL_PARTSTAT_COMPLETED:
1072 status = Attendee::Completed; 1075 status = Attendee::Completed;
1073 break; 1076 break;
1074 case ICAL_PARTSTAT_INPROCESS: 1077 case ICAL_PARTSTAT_INPROCESS:
1075 status = Attendee::InProcess; 1078 status = Attendee::InProcess;
1076 break; 1079 break;
1077 } 1080 }
1078 } 1081 }
1079 1082
1080 Attendee::Role role = Attendee::ReqParticipant; 1083 Attendee::Role role = Attendee::ReqParticipant;
1081 p = icalproperty_get_first_parameter(attendee,ICAL_ROLE_PARAMETER); 1084 p = icalproperty_get_first_parameter(attendee,ICAL_ROLE_PARAMETER);
1082 if (p) { 1085 if (p) {
1083 icalparameter_role roleParameter = icalparameter_get_role(p); 1086 icalparameter_role roleParameter = icalparameter_get_role(p);
1084 switch(roleParameter) { 1087 switch(roleParameter) {
1085 case ICAL_ROLE_CHAIR: 1088 case ICAL_ROLE_CHAIR:
1086 role = Attendee::Chair; 1089 role = Attendee::Chair;
1087 break; 1090 break;
1088 default: 1091 default:
1089 case ICAL_ROLE_REQPARTICIPANT: 1092 case ICAL_ROLE_REQPARTICIPANT:
1090 role = Attendee::ReqParticipant; 1093 role = Attendee::ReqParticipant;
1091 break; 1094 break;
1092 case ICAL_ROLE_OPTPARTICIPANT: 1095 case ICAL_ROLE_OPTPARTICIPANT:
1093 role = Attendee::OptParticipant; 1096 role = Attendee::OptParticipant;
1094 break; 1097 break;
1095 case ICAL_ROLE_NONPARTICIPANT: 1098 case ICAL_ROLE_NONPARTICIPANT:
1096 role = Attendee::NonParticipant; 1099 role = Attendee::NonParticipant;
1097 break; 1100 break;
1098 } 1101 }
1099 } 1102 }
1100 1103
1101 p = icalproperty_get_first_parameter(attendee,ICAL_X_PARAMETER); 1104 p = icalproperty_get_first_parameter(attendee,ICAL_X_PARAMETER);
1102 uid = icalparameter_get_xvalue(p); 1105 uid = icalparameter_get_xvalue(p);
1103 // This should be added, but there seems to be a libical bug here. 1106 // This should be added, but there seems to be a libical bug here.
1104 /*while (p) { 1107 /*while (p) {
1105 // if (icalparameter_get_xname(p) == "X-UID") { 1108 // if (icalparameter_get_xname(p) == "X-UID") {
1106 uid = icalparameter_get_xvalue(p); 1109 uid = icalparameter_get_xvalue(p);
1107 p = icalproperty_get_next_parameter(attendee,ICAL_X_PARAMETER); 1110 p = icalproperty_get_next_parameter(attendee,ICAL_X_PARAMETER);
1108 } */ 1111 } */
1109 1112
1110 return new Attendee( name, email, rsvp, status, role, uid ); 1113 return new Attendee( name, email, rsvp, status, role, uid );
1111} 1114}
1112 1115
1113Attachment *ICalFormatImpl::readAttachment(icalproperty *attach) 1116Attachment *ICalFormatImpl::readAttachment(icalproperty *attach)
1114{ 1117{
1115 icalattach *a = icalproperty_get_attach(attach); 1118 icalattach *a = icalproperty_get_attach(attach);
1116 icalparameter_value v = ICAL_VALUE_NONE; 1119 icalparameter_value v = ICAL_VALUE_NONE;
1117 icalparameter_encoding e = ICAL_ENCODING_NONE; 1120 icalparameter_encoding e = ICAL_ENCODING_NONE;
1118 1121
1119 Attachment *attachment = 0; 1122 Attachment *attachment = 0;
1120 /* 1123 /*
1121 icalparameter *vp = icalproperty_get_first_parameter(attach, ICAL_VALUE_PARAMETER); 1124 icalparameter *vp = icalproperty_get_first_parameter(attach, ICAL_VALUE_PARAMETER);
1122 if (vp) 1125 if (vp)
1123 v = icalparameter_get_value(vp); 1126 v = icalparameter_get_value(vp);
1124 1127
1125 icalparameter *ep = icalproperty_get_first_parameter(attach, ICAL_ENCODING_PARAMETER); 1128 icalparameter *ep = icalproperty_get_first_parameter(attach, ICAL_ENCODING_PARAMETER);
1126 if (ep) 1129 if (ep)
1127 e = icalparameter_get_encoding(ep); 1130 e = icalparameter_get_encoding(ep);
1128 */ 1131 */
1129 int isurl = icalattach_get_is_url (a); 1132 int isurl = icalattach_get_is_url (a);
1130 if (isurl == 0) 1133 if (isurl == 0)
1131 attachment = new Attachment((const char*)icalattach_get_data(a)); 1134 attachment = new Attachment((const char*)icalattach_get_data(a));
1132 else { 1135 else {
1133 attachment = new Attachment(QString(icalattach_get_url(a))); 1136 attachment = new Attachment(QString(icalattach_get_url(a)));
1134 } 1137 }
1135 1138
1136 icalparameter *p = icalproperty_get_first_parameter(attach, ICAL_FMTTYPE_PARAMETER); 1139 icalparameter *p = icalproperty_get_first_parameter(attach, ICAL_FMTTYPE_PARAMETER);
1137 if (p) 1140 if (p)
1138 attachment->setMimeType(QString(icalparameter_get_fmttype(p))); 1141 attachment->setMimeType(QString(icalparameter_get_fmttype(p)));
1139 1142
1140 return attachment; 1143 return attachment;
1141} 1144}
1142#include <qtextcodec.h> 1145#include <qtextcodec.h>
1143void ICalFormatImpl::readIncidence(icalcomponent *parent,Incidence *incidence) 1146void ICalFormatImpl::readIncidence(icalcomponent *parent,Incidence *incidence)
1144{ 1147{
1145 readIncidenceBase(parent,incidence); 1148 readIncidenceBase(parent,incidence);
1146 1149
1147 icalproperty *p = icalcomponent_get_first_property(parent,ICAL_ANY_PROPERTY); 1150 icalproperty *p = icalcomponent_get_first_property(parent,ICAL_ANY_PROPERTY);
1148 bool readrec = false; 1151 bool readrec = false;
1149 const char *text; 1152 const char *text;
1150 int intvalue; 1153 int intvalue;
1151 icaltimetype icaltime; 1154 icaltimetype icaltime;
1152 icaldurationtype icalduration; 1155 icaldurationtype icalduration;
1153 struct icalrecurrencetype rectype; 1156 struct icalrecurrencetype rectype;
1154 QStringList categories; 1157 QStringList categories;
1155 1158
1156 while (p) { 1159 while (p) {
1157 icalproperty_kind kind = icalproperty_isa(p); 1160 icalproperty_kind kind = icalproperty_isa(p);
1158 switch (kind) { 1161 switch (kind) {
1159 1162
1160 case ICAL_CREATED_PROPERTY: 1163 case ICAL_CREATED_PROPERTY:
1161 icaltime = icalproperty_get_created(p); 1164 icaltime = icalproperty_get_created(p);
1162 incidence->setCreated(readICalDateTime(icaltime)); 1165 incidence->setCreated(readICalDateTime(icaltime));
1163 break; 1166 break;
1164 1167
1165 case ICAL_SEQUENCE_PROPERTY: // sequence 1168 case ICAL_SEQUENCE_PROPERTY: // sequence
1166 intvalue = icalproperty_get_sequence(p); 1169 intvalue = icalproperty_get_sequence(p);
1167 incidence->setRevision(intvalue); 1170 incidence->setRevision(intvalue);
1168 break; 1171 break;
1169 1172
1170 case ICAL_LASTMODIFIED_PROPERTY: // last modification date 1173 case ICAL_LASTMODIFIED_PROPERTY: // last modification date
1171 icaltime = icalproperty_get_lastmodified(p); 1174 icaltime = icalproperty_get_lastmodified(p);
1172 incidence->setLastModified(readICalDateTime(icaltime)); 1175 incidence->setLastModified(readICalDateTime(icaltime));
1173 break; 1176 break;
1174 1177
1175 case ICAL_DTSTART_PROPERTY: // start date and time 1178 case ICAL_DTSTART_PROPERTY: // start date and time
1176 icaltime = icalproperty_get_dtstart(p); 1179 icaltime = icalproperty_get_dtstart(p);
1177 if (icaltime.is_date) { 1180 if (icaltime.is_date) {
1178 incidence->setDtStart(QDateTime(readICalDate(icaltime),QTime(0,0,0))); 1181 incidence->setDtStart(QDateTime(readICalDate(icaltime),QTime(0,0,0)));
1179 incidence->setFloats(true); 1182 incidence->setFloats(true);
1180 } else { 1183 } else {
1181 incidence->setDtStart(readICalDateTime(icaltime)); 1184 incidence->setDtStart(readICalDateTime(icaltime));
1182 } 1185 }
1183 break; 1186 break;
1184 1187
1185 case ICAL_DURATION_PROPERTY: // start date and time 1188 case ICAL_DURATION_PROPERTY: // start date and time
1186 icalduration = icalproperty_get_duration(p); 1189 icalduration = icalproperty_get_duration(p);
1187 incidence->setDuration(readICalDuration(icalduration)); 1190 incidence->setDuration(readICalDuration(icalduration));
1188 break; 1191 break;
1189 1192
1190 case ICAL_DESCRIPTION_PROPERTY: // description 1193 case ICAL_DESCRIPTION_PROPERTY: // description
1191 text = icalproperty_get_description(p); 1194 text = icalproperty_get_description(p);
1192 incidence->setDescription(QString::fromUtf8(text)); 1195 incidence->setDescription(QString::fromUtf8(text));
1193 break; 1196 break;
1194 1197
1195 case ICAL_SUMMARY_PROPERTY: // summary 1198 case ICAL_SUMMARY_PROPERTY: // summary
1196 { 1199 {
1197 text = icalproperty_get_summary(p); 1200 text = icalproperty_get_summary(p);
1198 incidence->setSummary(QString::fromUtf8(text)); 1201 incidence->setSummary(QString::fromUtf8(text));
1199 } 1202 }
1200 break; 1203 break;
1201 case ICAL_STATUS_PROPERTY: // summary 1204 case ICAL_STATUS_PROPERTY: // summary
1202 { 1205 {
1203 if ( ICAL_STATUS_CANCELLED == icalproperty_get_status(p) ) 1206 if ( ICAL_STATUS_CANCELLED == icalproperty_get_status(p) )
1204 incidence->setCancelled( true ); 1207 incidence->setCancelled( true );
1205 } 1208 }
1206 break; 1209 break;
1207 1210
1208 case ICAL_LOCATION_PROPERTY: // location 1211 case ICAL_LOCATION_PROPERTY: // location
1209 text = icalproperty_get_location(p); 1212 text = icalproperty_get_location(p);
1210 incidence->setLocation(QString::fromUtf8(text)); 1213 incidence->setLocation(QString::fromUtf8(text));
1211 break; 1214 break;
1212 1215
1213 case ICAL_RECURRENCEID_PROPERTY: 1216 case ICAL_RECURRENCEID_PROPERTY:
1214 icaltime = icalproperty_get_recurrenceid(p); 1217 icaltime = icalproperty_get_recurrenceid(p);
1215 incidence->setRecurrenceID( readICalDateTime(icaltime) ); 1218 incidence->setRecurrenceID( readICalDateTime(icaltime) );
1216 //qDebug(" RecurrenceID %s",incidence->recurrenceID().toString().latin1() ); 1219 //qDebug(" RecurrenceID %s",incidence->recurrenceID().toString().latin1() );
1217 break; 1220 break;