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,109 +1,112 @@
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
diff --git a/libkcal/icalformatimpl.cpp b/libkcal/icalformatimpl.cpp
index 3e28714..4794bc9 100644
--- a/libkcal/icalformatimpl.cpp
+++ b/libkcal/icalformatimpl.cpp
@@ -930,192 +930,195 @@ Event *ICalFormatImpl::readEvent(icalcomponent *vevent)
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);