summaryrefslogtreecommitdiffabout
path: root/libkcal
authorzautrix <zautrix>2005-07-04 19:17:50 (UTC)
committer zautrix <zautrix>2005-07-04 19:17:50 (UTC)
commit2710cddd5b0b69efc1c5a7f8516d5b451ff258f1 (patch) (unidiff)
treeabcfa306ccfcdf7aba536cc3f476c0bdbe9ef12b /libkcal
parent4f3238355f67a256f338986ca13322ef23960895 (diff)
downloadkdepimpi-2710cddd5b0b69efc1c5a7f8516d5b451ff258f1.zip
kdepimpi-2710cddd5b0b69efc1c5a7f8516d5b451ff258f1.tar.gz
kdepimpi-2710cddd5b0b69efc1c5a7f8516d5b451ff258f1.tar.bz2
free ring buffer
Diffstat (limited to 'libkcal') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/icalformat.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/libkcal/icalformat.cpp b/libkcal/icalformat.cpp
index d9fe40b..5877406 100644
--- a/libkcal/icalformat.cpp
+++ b/libkcal/icalformat.cpp
@@ -99,180 +99,182 @@ bool ICalFormat::save( Calendar *calendar, const QString &fileName )
99 QFile file( fileName ); 99 QFile file( fileName );
100 if (!file.open( IO_WriteOnly ) ) { 100 if (!file.open( IO_WriteOnly ) ) {
101 setException(new ErrorFormat(ErrorFormat::SaveError, 101 setException(new ErrorFormat(ErrorFormat::SaveError,
102 i18n("Could not open file '%1'").arg(fileName))); 102 i18n("Could not open file '%1'").arg(fileName)));
103 return false; 103 return false;
104 } 104 }
105 QTextStream ts( &file ); 105 QTextStream ts( &file );
106 106
107 ts.setEncoding( QTextStream::Latin1 ); 107 ts.setEncoding( QTextStream::Latin1 );
108 ts << text; 108 ts << text;
109 file.close(); 109 file.close();
110 //qDebug("saving file takes ms: %d ", is.elapsed() ); 110 //qDebug("saving file takes ms: %d ", is.elapsed() );
111 return true; 111 return true;
112} 112}
113 113
114bool ICalFormat::fromString( Calendar *cal, const QString &text ) 114bool ICalFormat::fromString( Calendar *cal, const QString &text )
115{ 115{
116 setTimeZone( cal->timeZoneId(), !cal->isLocalTime() ); 116 setTimeZone( cal->timeZoneId(), !cal->isLocalTime() );
117 // qDebug("ICalFormat::fromString tz: %s ", cal->timeZoneId().latin1()); 117 // qDebug("ICalFormat::fromString tz: %s ", cal->timeZoneId().latin1());
118 // Get first VCALENDAR component. 118 // Get first VCALENDAR component.
119 // TODO: Handle more than one VCALENDAR or non-VCALENDAR top components 119 // TODO: Handle more than one VCALENDAR or non-VCALENDAR top components
120 icalcomponent *calendar; 120 icalcomponent *calendar;
121 121
122 //calendar = icalcomponent_new_from_string( text.local8Bit().data()); 122 //calendar = icalcomponent_new_from_string( text.local8Bit().data());
123 // good calendar = icalcomponent_new_from_string( text.utf8().data()); 123 // good calendar = icalcomponent_new_from_string( text.utf8().data());
124 calendar = icalcomponent_new_from_string( (char*)text.latin1()); 124 calendar = icalcomponent_new_from_string( (char*)text.latin1());
125 if (!calendar) { 125 if (!calendar) {
126 setException(new ErrorFormat(ErrorFormat::ParseErrorIcal)); 126 setException(new ErrorFormat(ErrorFormat::ParseErrorIcal));
127 return false; 127 return false;
128 } 128 }
129 129
130 bool success = true; 130 bool success = true;
131 131
132 if (icalcomponent_isa(calendar) != ICAL_VCALENDAR_COMPONENT) { 132 if (icalcomponent_isa(calendar) != ICAL_VCALENDAR_COMPONENT) {
133 setException(new ErrorFormat(ErrorFormat::NoCalendar)); 133 setException(new ErrorFormat(ErrorFormat::NoCalendar));
134 success = false; 134 success = false;
135 } else { 135 } else {
136 // put all objects into their proper places 136 // put all objects into their proper places
137 if ( !mImpl->populate( cal, calendar ) ) { 137 if ( !mImpl->populate( cal, calendar ) ) {
138 if ( !exception() ) { 138 if ( !exception() ) {
139 setException(new ErrorFormat(ErrorFormat::ParseErrorKcal)); 139 setException(new ErrorFormat(ErrorFormat::ParseErrorKcal));
140 } 140 }
141 success = false; 141 success = false;
142 } else 142 } else
143 mLoadedProductId = mImpl->loadedProductId(); 143 mLoadedProductId = mImpl->loadedProductId();
144 } 144 }
145 145
146 icalcomponent_free( calendar ); 146 icalcomponent_free( calendar );
147 icalmemory_free_ring();
147 148
148 return success; 149 return success;
149} 150}
150 151
151Incidence *ICalFormat::fromString( const QString &text ) 152Incidence *ICalFormat::fromString( const QString &text )
152{ 153{
153 CalendarLocal cal( mTimeZoneId ); 154 CalendarLocal cal( mTimeZoneId );
154 fromString(&cal, text); 155 fromString(&cal, text);
155 156
156 Incidence *ical = 0; 157 Incidence *ical = 0;
157 QPtrList<Event> elist = cal.events(); 158 QPtrList<Event> elist = cal.events();
158 if ( elist.count() > 0 ) { 159 if ( elist.count() > 0 ) {
159 ical = elist.first(); 160 ical = elist.first();
160 } else { 161 } else {
161 QPtrList<Todo> tlist = cal.todos(); 162 QPtrList<Todo> tlist = cal.todos();
162 if ( tlist.count() > 0 ) { 163 if ( tlist.count() > 0 ) {
163 ical = tlist.first(); 164 ical = tlist.first();
164 } else { 165 } else {
165 QPtrList<Journal> jlist = cal.journals(); 166 QPtrList<Journal> jlist = cal.journals();
166 if ( jlist.count() > 0 ) { 167 if ( jlist.count() > 0 ) {
167 ical = jlist.first(); 168 ical = jlist.first();
168 } 169 }
169 } 170 }
170 } 171 }
171 return ical; 172 return ical;
172} 173}
173#include <qapp.h> 174#include <qapp.h>
174 175
175QString ICalFormat::toString( Calendar *cal ) 176QString ICalFormat::toString( Calendar *cal )
176{ 177{
177 178
178 setTimeZone( cal->timeZoneId(), !cal->isLocalTime() ); 179 setTimeZone( cal->timeZoneId(), !cal->isLocalTime() );
179 180
180 icalcomponent *calendar = mImpl->createCalendarComponent(cal); 181 icalcomponent *calendar = mImpl->createCalendarComponent(cal);
181 182
182 icalcomponent *component; 183 icalcomponent *component;
183 184
184 // todos 185 // todos
185 QPtrList<Todo> todoList = cal->rawTodos(); 186 QPtrList<Todo> todoList = cal->rawTodos();
186 QPtrListIterator<Todo> qlt(todoList); 187 QPtrListIterator<Todo> qlt(todoList);
187 for (; qlt.current(); ++qlt) { 188 for (; qlt.current(); ++qlt) {
188 component = mImpl->writeTodo(qlt.current()); 189 component = mImpl->writeTodo(qlt.current());
189 icalcomponent_add_component(calendar,component); 190 icalcomponent_add_component(calendar,component);
190 //qDebug(" todos "); 191 //qDebug(" todos ");
191 qApp->processEvents(); 192 qApp->processEvents();
192 } 193 }
193 // events 194 // events
194 QPtrList<Event> events = cal->rawEvents(); 195 QPtrList<Event> events = cal->rawEvents();
195 Event *ev; 196 Event *ev;
196 for(ev=events.first();ev;ev=events.next()) { 197 for(ev=events.first();ev;ev=events.next()) {
197 component = mImpl->writeEvent(ev); 198 component = mImpl->writeEvent(ev);
198 icalcomponent_add_component(calendar,component); 199 icalcomponent_add_component(calendar,component);
199 //qDebug("events "); 200 //qDebug("events ");
200 qApp->processEvents(); 201 qApp->processEvents();
201 } 202 }
202 203
203 // journals 204 // journals
204 QPtrList<Journal> journals = cal->journals(); 205 QPtrList<Journal> journals = cal->journals();
205 Journal *j; 206 Journal *j;
206 for(j=journals.first();j;j=journals.next()) { 207 for(j=journals.first();j;j=journals.next()) {
207 component = mImpl->writeJournal(j); 208 component = mImpl->writeJournal(j);
208 icalcomponent_add_component(calendar,component); 209 icalcomponent_add_component(calendar,component);
209 //qDebug("journals "); 210 //qDebug("journals ");
210 qApp->processEvents(); 211 qApp->processEvents();
211 } 212 }
212 const char *text; 213 const char *text;
213 QString ret =""; 214 QString ret ="";
214 text = icalcomponent_as_ical_string( calendar ); 215 text = icalcomponent_as_ical_string( calendar );
215 qApp->processEvents(); 216 qApp->processEvents();
216 217
217 // text = "BEGIN:VCALENDAR\nPRODID\n :-//K Desktop Environment//NONSGML libkcal 3.1//EN\nVERSION\n :2.0\nBEGIN:VEVENT\nDTSTAMP\n :20031231T213514Z\nORGANIZER\n :MAILTO:lutz@putz.de\nCREATED\n :20031231T213513Z\nUID\n :libkcal-1295166342.120\nSEQUENCE\n :0\nLAST-MODIFIED\n :20031231T213513Z\nSUMMARY\n :test1\nCLASS\n :PUBLIC\nPRIORITY\n :3\nDTSTART\n :20040101T090000Z\nDTEND\n :20040101T110000Z\nTRANSP\n :OPAQUE\nEND:VEVENT\nEND:VCALENDAR\n"; 218 // text = "BEGIN:VCALENDAR\nPRODID\n :-//K Desktop Environment//NONSGML libkcal 3.1//EN\nVERSION\n :2.0\nBEGIN:VEVENT\nDTSTAMP\n :20031231T213514Z\nORGANIZER\n :MAILTO:lutz@putz.de\nCREATED\n :20031231T213513Z\nUID\n :libkcal-1295166342.120\nSEQUENCE\n :0\nLAST-MODIFIED\n :20031231T213513Z\nSUMMARY\n :test1\nCLASS\n :PUBLIC\nPRIORITY\n :3\nDTSTART\n :20040101T090000Z\nDTEND\n :20040101T110000Z\nTRANSP\n :OPAQUE\nEND:VEVENT\nEND:VCALENDAR\n";
218 219
219 220
220 if ( text ) { 221 if ( text ) {
221 ret = QString ( text ); 222 ret = QString ( text );
222 } 223 }
223 icalcomponent_free( calendar ); 224 icalcomponent_free( calendar );
224 225
225 if (!text) { 226 if (!text) {
226 setException(new ErrorFormat(ErrorFormat::SaveError, 227 setException(new ErrorFormat(ErrorFormat::SaveError,
227 i18n("libical error"))); 228 i18n("libical error")));
229 icalmemory_free_ring();
228 return QString::null; 230 return QString::null;
229 } 231 }
230 232 icalmemory_free_ring();
231 return ret; 233 return ret;
232} 234}
233 235
234QString ICalFormat::toICalString( Incidence *incidence ) 236QString ICalFormat::toICalString( Incidence *incidence )
235{ 237{
236 CalendarLocal cal( mTimeZoneId ); 238 CalendarLocal cal( mTimeZoneId );
237 cal.addIncidence( incidence->clone() ); 239 cal.addIncidence( incidence->clone() );
238 return toString( &cal ); 240 return toString( &cal );
239} 241}
240 242
241QString ICalFormat::toString( Incidence *incidence ) 243QString ICalFormat::toString( Incidence *incidence )
242{ 244{
243 icalcomponent *component; 245 icalcomponent *component;
244 246
245 component = mImpl->writeIncidence( incidence ); 247 component = mImpl->writeIncidence( incidence );
246 248
247 const char *text = icalcomponent_as_ical_string( component ); 249 const char *text = icalcomponent_as_ical_string( component );
248 250
249 icalcomponent_free( component ); 251 icalcomponent_free( component );
250 252
251 return QString::fromLocal8Bit( text ); 253 return QString::fromLocal8Bit( text );
252} 254}
253 255
254QString ICalFormat::toString( Recurrence *recurrence ) 256QString ICalFormat::toString( Recurrence *recurrence )
255{ 257{
256 icalproperty *property; 258 icalproperty *property;
257 property = mImpl->writeRecurrenceRule( recurrence ); 259 property = mImpl->writeRecurrenceRule( recurrence );
258 const char *text = icalproperty_as_ical_string( property ); 260 const char *text = icalproperty_as_ical_string( property );
259 icalproperty_free( property ); 261 icalproperty_free( property );
260 return QString::fromLocal8Bit( text ); 262 return QString::fromLocal8Bit( text );
261} 263}
262/* 264/*
263bool ICalFormat::fromString( Recurrence * recurrence, const QString& rrule ) 265bool ICalFormat::fromString( Recurrence * recurrence, const QString& rrule )
264{ 266{
265 bool success = true; 267 bool success = true;
266 icalerror_clear_errno(); 268 icalerror_clear_errno();
267 struct icalrecurrencetype recur = icalrecurrencetype_from_string( rrule ); 269 struct icalrecurrencetype recur = icalrecurrencetype_from_string( rrule );
268 if ( icalerrno != ICAL_NO_ERROR ) { 270 if ( icalerrno != ICAL_NO_ERROR ) {
269 kdDebug() << "Recurrence parsing error: " << icalerror_strerror( icalerrno ) << endl; 271 kdDebug() << "Recurrence parsing error: " << icalerror_strerror( icalerrno ) << endl;
270 success = false; 272 success = false;
271 } 273 }
272 274
273 if ( success ) { 275 if ( success ) {
274 mImpl->readRecurrence( recur, recurrence ); 276 mImpl->readRecurrence( recur, recurrence );
275 } 277 }
276 278
277 return success; 279 return success;
278} 280}