summaryrefslogtreecommitdiffabout
path: root/libkcal
Unidiff
Diffstat (limited to 'libkcal') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/calstorage.h2
-rw-r--r--libkcal/filestorage.cpp4
-rw-r--r--libkcal/filestorage.h2
-rw-r--r--libkcal/icalformat.cpp24
-rw-r--r--libkcal/icalformat.h3
5 files changed, 7 insertions, 28 deletions
diff --git a/libkcal/calstorage.h b/libkcal/calstorage.h
index 72972ea..82c8682 100644
--- a/libkcal/calstorage.h
+++ b/libkcal/calstorage.h
@@ -1,52 +1,52 @@
1/* 1/*
2 This file is part of libkcal. 2 This file is part of libkcal.
3 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20#ifndef KCAL_CALSTORAGE_H 20#ifndef KCAL_CALSTORAGE_H
21#define KCAL_CALSTORAGE_H 21#define KCAL_CALSTORAGE_H
22 22
23namespace KCal { 23namespace KCal {
24 24
25class Calendar; 25class Calendar;
26 26
27/** 27/**
28 This class provides the interface to the storage of a calendar. 28 This class provides the interface to the storage of a calendar.
29*/ 29*/
30class CalStorage 30class CalStorage
31{ 31{
32 public: 32 public:
33 CalStorage( Calendar *calendar ) 33 CalStorage( Calendar *calendar )
34 { 34 {
35 mCalendar = calendar; 35 mCalendar = calendar;
36 } 36 }
37 virtual ~CalStorage() {} 37 virtual ~CalStorage() {}
38 38
39 Calendar *calendar() const { return mCalendar; } 39 Calendar *calendar() const { return mCalendar; }
40 40
41 virtual bool open() = 0; 41 virtual bool open() = 0;
42 virtual bool load(bool = false ) = 0; 42 virtual bool load( ) = 0;
43 virtual bool save() = 0; 43 virtual bool save() = 0;
44 virtual bool close() = 0; 44 virtual bool close() = 0;
45 45
46 private: 46 private:
47 Calendar *mCalendar; 47 Calendar *mCalendar;
48}; 48};
49 49
50} 50}
51 51
52#endif 52#endif
diff --git a/libkcal/filestorage.cpp b/libkcal/filestorage.cpp
index 00c15d9..a139124 100644
--- a/libkcal/filestorage.cpp
+++ b/libkcal/filestorage.cpp
@@ -31,107 +31,107 @@
31#include "vcalformat.h" 31#include "vcalformat.h"
32#include "icalformat.h" 32#include "icalformat.h"
33 33
34#include "filestorage.h" 34#include "filestorage.h"
35 35
36using namespace KCal; 36using namespace KCal;
37 37
38FileStorage::FileStorage( Calendar *cal, const QString &fileName, 38FileStorage::FileStorage( Calendar *cal, const QString &fileName,
39 CalFormat *format ) 39 CalFormat *format )
40 : CalStorage( cal ), 40 : CalStorage( cal ),
41 mFileName( fileName ), 41 mFileName( fileName ),
42 mSaveFormat( format ) 42 mSaveFormat( format )
43{ 43{
44} 44}
45 45
46FileStorage::~FileStorage() 46FileStorage::~FileStorage()
47{ 47{
48 delete mSaveFormat; 48 delete mSaveFormat;
49} 49}
50 50
51void FileStorage::setFileName( const QString &fileName ) 51void FileStorage::setFileName( const QString &fileName )
52{ 52{
53 mFileName = fileName; 53 mFileName = fileName;
54} 54}
55 55
56QString FileStorage::fileName()const 56QString FileStorage::fileName()const
57{ 57{
58 return mFileName; 58 return mFileName;
59} 59}
60 60
61 61
62void FileStorage::setSaveFormat( CalFormat *format ) 62void FileStorage::setSaveFormat( CalFormat *format )
63{ 63{
64 delete mSaveFormat; 64 delete mSaveFormat;
65 mSaveFormat = format; 65 mSaveFormat = format;
66} 66}
67 67
68CalFormat *FileStorage::saveFormat()const 68CalFormat *FileStorage::saveFormat()const
69{ 69{
70 return mSaveFormat; 70 return mSaveFormat;
71} 71}
72 72
73 73
74bool FileStorage::open() 74bool FileStorage::open()
75{ 75{
76 return true; 76 return true;
77} 77}
78 78
79bool FileStorage::load( bool quick ) 79bool FileStorage::load( )
80{ 80{
81 kdDebug(5800) << "FileStorage::load(): '" << mFileName << "'" << endl; 81 kdDebug(5800) << "FileStorage::load(): '" << mFileName << "'" << endl;
82 82
83 // do we want to silently accept this, or make some noise? Dunno... 83 // do we want to silently accept this, or make some noise? Dunno...
84 // it is a semantical thing vs. a practical thing. 84 // it is a semantical thing vs. a practical thing.
85 if (mFileName.isEmpty()) return false; 85 if (mFileName.isEmpty()) return false;
86 86
87 // Always try to load with iCalendar. It will detect, if it is actually a 87 // Always try to load with iCalendar. It will detect, if it is actually a
88 // vCalendar file. 88 // vCalendar file.
89 ICalFormat iCal (quick ); 89 ICalFormat iCal;
90 90
91 bool success = iCal.load( calendar(), mFileName); 91 bool success = iCal.load( calendar(), mFileName);
92 92
93 if ( !success ) { 93 if ( !success ) {
94 if ( iCal.exception() ) { 94 if ( iCal.exception() ) {
95// kdDebug(5800) << "---Error: " << mFormat->exception()->errorCode() << endl; 95// kdDebug(5800) << "---Error: " << mFormat->exception()->errorCode() << endl;
96 if ( iCal.exception()->errorCode() == ErrorFormat::CalVersion1 ) { 96 if ( iCal.exception()->errorCode() == ErrorFormat::CalVersion1 ) {
97 // Expected non vCalendar file, but detected vCalendar 97 // Expected non vCalendar file, but detected vCalendar
98 kdDebug(5800) << "FileStorage::load() Fallback to VCalFormat" << endl; 98 kdDebug(5800) << "FileStorage::load() Fallback to VCalFormat" << endl;
99 VCalFormat vCal; 99 VCalFormat vCal;
100 success = vCal.load( calendar(), mFileName ); 100 success = vCal.load( calendar(), mFileName );
101 calendar()->setLoadedProductId( vCal.productId() ); 101 calendar()->setLoadedProductId( vCal.productId() );
102 } else { 102 } else {
103 return false; 103 return false;
104 } 104 }
105 } else { 105 } else {
106 kdDebug(5800) << "Warning! There should be set an exception." << endl; 106 kdDebug(5800) << "Warning! There should be set an exception." << endl;
107 return false; 107 return false;
108 } 108 }
109 } else { 109 } else {
110// kdDebug(5800) << "---Success" << endl; 110// kdDebug(5800) << "---Success" << endl;
111 calendar()->setLoadedProductId( iCal.loadedProductId() ); 111 calendar()->setLoadedProductId( iCal.loadedProductId() );
112 } 112 }
113 113
114 calendar()->setModified( false ); 114 calendar()->setModified( false );
115 115
116 return true; 116 return true;
117} 117}
118 118
119bool FileStorage::save() 119bool FileStorage::save()
120{ 120{
121 if ( mFileName.isEmpty() ) return false; 121 if ( mFileName.isEmpty() ) return false;
122 122
123 bool success; 123 bool success;
124 124
125 if ( mSaveFormat ) { 125 if ( mSaveFormat ) {
126 success = mSaveFormat->save( calendar(), mFileName); 126 success = mSaveFormat->save( calendar(), mFileName);
127 } else { 127 } else {
128 ICalFormat iCal; 128 ICalFormat iCal;
129 success = iCal.save( calendar(), mFileName); 129 success = iCal.save( calendar(), mFileName);
130 } 130 }
131 131
132 if ( success ) calendar()->setModified( false ); 132 if ( success ) calendar()->setModified( false );
133 133
134 return success; 134 return success;
135} 135}
136 136
137bool FileStorage::close() 137bool FileStorage::close()
diff --git a/libkcal/filestorage.h b/libkcal/filestorage.h
index e9dc15e..17010ac 100644
--- a/libkcal/filestorage.h
+++ b/libkcal/filestorage.h
@@ -1,58 +1,58 @@
1/* 1/*
2 This file is part of libkcal. 2 This file is part of libkcal.
3 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20#ifndef KCAL_FILESTORAGE_H 20#ifndef KCAL_FILESTORAGE_H
21#define KCAL_FILESTORAGE_H 21#define KCAL_FILESTORAGE_H
22 22
23#include "calstorage.h" 23#include "calstorage.h"
24 24
25namespace KCal { 25namespace KCal {
26 26
27/** 27/**
28 This class provides a calendar storage as a local file. 28 This class provides a calendar storage as a local file.
29*/ 29*/
30class FileStorage : public CalStorage 30class FileStorage : public CalStorage
31{ 31{
32 public: 32 public:
33 FileStorage( Calendar *, const QString &fileName = QString::null, 33 FileStorage( Calendar *, const QString &fileName = QString::null,
34 CalFormat *format = 0 ); 34 CalFormat *format = 0 );
35 virtual ~FileStorage(); 35 virtual ~FileStorage();
36 36
37 void setFileName( const QString &mFileName ); 37 void setFileName( const QString &mFileName );
38 QString fileName()const; 38 QString fileName()const;
39 39
40 /** 40 /**
41 FileStorage takes ownership of format object. 41 FileStorage takes ownership of format object.
42 */ 42 */
43 void setSaveFormat( CalFormat * ); 43 void setSaveFormat( CalFormat * );
44 CalFormat *saveFormat()const; 44 CalFormat *saveFormat()const;
45 45
46 bool open(); 46 bool open();
47 bool load(bool quick = false ); 47 bool load( );
48 bool save(); 48 bool save();
49 bool close(); 49 bool close();
50 50
51 private: 51 private:
52 QString mFileName; 52 QString mFileName;
53 CalFormat *mSaveFormat; 53 CalFormat *mSaveFormat;
54}; 54};
55 55
56} 56}
57 57
58#endif 58#endif
diff --git a/libkcal/icalformat.cpp b/libkcal/icalformat.cpp
index f2e7dfc..3a2aac6 100644
--- a/libkcal/icalformat.cpp
+++ b/libkcal/icalformat.cpp
@@ -5,170 +5,150 @@
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include <qdatetime.h> 21#include <qdatetime.h>
22#include <qstring.h> 22#include <qstring.h>
23#include <qptrlist.h> 23#include <qptrlist.h>
24#include <qregexp.h> 24#include <qregexp.h>
25#include <qclipboard.h> 25#include <qclipboard.h>
26#include <qfile.h> 26#include <qfile.h>
27#include <qtextstream.h> 27#include <qtextstream.h>
28#include <qtextcodec.h> 28#include <qtextcodec.h>
29#include <stdlib.h> 29#include <stdlib.h>
30 30
31#include <kdebug.h> 31#include <kdebug.h>
32#include <kglobal.h> 32#include <kglobal.h>
33#include <klocale.h> 33#include <klocale.h>
34 34
35extern "C" { 35extern "C" {
36 #include <ical.h> 36 #include <ical.h>
37 #include <icalss.h> 37 #include <icalss.h>
38 #include <icalparser.h> 38 #include <icalparser.h>
39 #include <icalrestriction.h> 39 #include <icalrestriction.h>
40} 40}
41 41
42#include "calendar.h" 42#include "calendar.h"
43#include "calendarlocal.h" 43#include "calendarlocal.h"
44#include "journal.h" 44#include "journal.h"
45 45
46#include "icalformat.h" 46#include "icalformat.h"
47#include "icalformatimpl.h" 47#include "icalformatimpl.h"
48 48
49#define _ICAL_VERSION "2.0" 49#define _ICAL_VERSION "2.0"
50 50
51using namespace KCal; 51using namespace KCal;
52 52
53ICalFormat::ICalFormat(bool quick ) 53ICalFormat::ICalFormat( )
54{ 54{
55 mQuicksave = false; //quick;
56 mImpl = new ICalFormatImpl( this ); 55 mImpl = new ICalFormatImpl( this );
57 tzOffsetMin = 0; 56 tzOffsetMin = 0;
58 //qDebug("new ICalFormat() "); 57 //qDebug("new ICalFormat() ");
59} 58}
60 59
61ICalFormat::~ICalFormat() 60ICalFormat::~ICalFormat()
62{ 61{
63 delete mImpl; 62 delete mImpl;
64 //qDebug("delete ICalFormat "); 63 //qDebug("delete ICalFormat ");
65} 64}
66 65
67bool ICalFormat::load( Calendar *calendar, const QString &fileName) 66bool ICalFormat::load( Calendar *calendar, const QString &fileName)
68{ 67{
69 68
70 clearException(); 69 clearException();
71 70
72 QFile file( fileName ); 71 QFile file( fileName );
73 if (!file.open( IO_ReadOnly ) ) { 72 if (!file.open( IO_ReadOnly ) ) {
74 setException(new ErrorFormat(ErrorFormat::LoadError)); 73 setException(new ErrorFormat(ErrorFormat::LoadError));
75 return false; 74 return false;
76 } 75 }
77 QTextStream ts( &file ); 76 QTextStream ts( &file );
78 QString text; 77 QString text;
79#if 0 78
80 if ( !mQuicksave ) {
81 qDebug("KO: No quickload!");
82 ts.setEncoding( QTextStream::Latin1 );
83 text = ts.read();
84 } else {
85 ts.setCodec( QTextCodec::codecForName("utf8") );
86 text = ts.read();
87 }
88#endif
89 ts.setEncoding( QTextStream::Latin1 ); 79 ts.setEncoding( QTextStream::Latin1 );
90 text = ts.read(); 80 text = ts.read();
91 file.close(); 81 file.close();
92 82
93 return fromString( calendar, text ); 83 return fromString( calendar, text );
94} 84}
95 85
96//#include <qdatetime.h> 86//#include <qdatetime.h>
97bool ICalFormat::save( Calendar *calendar, const QString &fileName ) 87bool ICalFormat::save( Calendar *calendar, const QString &fileName )
98{ 88{
99 //kdDebug(5800) << "ICalFormat::save(): " << fileName << endl; 89 //kdDebug(5800) << "ICalFormat::save(): " << fileName << endl;
100 //qDebug("ICalFormat::save "); 90 //qDebug("ICalFormat::save ");
101 clearException(); 91 clearException();
102 QString text = toString( calendar ); 92 QString text = toString( calendar );
103 //return false; 93 //return false;
104 // qDebug("to string takes ms: %d ",is.elapsed() ); 94 // qDebug("to string takes ms: %d ",is.elapsed() );
105 if ( text.isNull() ) return false; 95 if ( text.isNull() ) return false;
106 96
107 // TODO: write backup file 97 // TODO: write backup file
108 //is.restart(); 98 //is.restart();
109 QFile file( fileName ); 99 QFile file( fileName );
110 if (!file.open( IO_WriteOnly ) ) { 100 if (!file.open( IO_WriteOnly ) ) {
111 setException(new ErrorFormat(ErrorFormat::SaveError, 101 setException(new ErrorFormat(ErrorFormat::SaveError,
112 i18n("Could not open file '%1'").arg(fileName))); 102 i18n("Could not open file '%1'").arg(fileName)));
113 return false; 103 return false;
114 } 104 }
115 QTextStream ts( &file ); 105 QTextStream ts( &file );
116 106
117// #ifdef DESKTOP_VERSION
118// mQuicksave = false;
119// #endif
120// if ( mQuicksave ) {
121// ts << text.utf8();
122// } else {
123// ts.setEncoding( QTextStream::Latin1 );
124// ts << text;
125// //ts << text.latin1();
126// }
127 ts.setEncoding( QTextStream::Latin1 ); 107 ts.setEncoding( QTextStream::Latin1 );
128 ts << text; 108 ts << text;
129 file.close(); 109 file.close();
130 //qDebug("saving file takes ms: %d ", is.elapsed() ); 110 //qDebug("saving file takes ms: %d ", is.elapsed() );
131 return true; 111 return true;
132} 112}
133 113
134bool ICalFormat::fromString( Calendar *cal, const QString &text ) 114bool ICalFormat::fromString( Calendar *cal, const QString &text )
135{ 115{
136 setTimeZone( cal->timeZoneId(), !cal->isLocalTime() ); 116 setTimeZone( cal->timeZoneId(), !cal->isLocalTime() );
137 // qDebug("ICalFormat::fromString tz: %s ", cal->timeZoneId().latin1()); 117 // qDebug("ICalFormat::fromString tz: %s ", cal->timeZoneId().latin1());
138 // Get first VCALENDAR component. 118 // Get first VCALENDAR component.
139 // TODO: Handle more than one VCALENDAR or non-VCALENDAR top components 119 // TODO: Handle more than one VCALENDAR or non-VCALENDAR top components
140 icalcomponent *calendar; 120 icalcomponent *calendar;
141 121
142 //calendar = icalcomponent_new_from_string( text.local8Bit().data()); 122 //calendar = icalcomponent_new_from_string( text.local8Bit().data());
143 // good calendar = icalcomponent_new_from_string( text.utf8().data()); 123 // good calendar = icalcomponent_new_from_string( text.utf8().data());
144 calendar = icalcomponent_new_from_string( (char*)text.latin1()); 124 calendar = icalcomponent_new_from_string( (char*)text.latin1());
145 if (!calendar) { 125 if (!calendar) {
146 setException(new ErrorFormat(ErrorFormat::ParseErrorIcal)); 126 setException(new ErrorFormat(ErrorFormat::ParseErrorIcal));
147 return false; 127 return false;
148 } 128 }
149 129
150 bool success = true; 130 bool success = true;
151 131
152 if (icalcomponent_isa(calendar) != ICAL_VCALENDAR_COMPONENT) { 132 if (icalcomponent_isa(calendar) != ICAL_VCALENDAR_COMPONENT) {
153 setException(new ErrorFormat(ErrorFormat::NoCalendar)); 133 setException(new ErrorFormat(ErrorFormat::NoCalendar));
154 success = false; 134 success = false;
155 } else { 135 } else {
156 // put all objects into their proper places 136 // put all objects into their proper places
157 if ( !mImpl->populate( cal, calendar ) ) { 137 if ( !mImpl->populate( cal, calendar ) ) {
158 if ( !exception() ) { 138 if ( !exception() ) {
159 setException(new ErrorFormat(ErrorFormat::ParseErrorKcal)); 139 setException(new ErrorFormat(ErrorFormat::ParseErrorKcal));
160 } 140 }
161 success = false; 141 success = false;
162 } else 142 } else
163 mLoadedProductId = mImpl->loadedProductId(); 143 mLoadedProductId = mImpl->loadedProductId();
164 } 144 }
165 145
166 icalcomponent_free( calendar ); 146 icalcomponent_free( calendar );
167 147
168 return success; 148 return success;
169} 149}
170 150
171Incidence *ICalFormat::fromString( const QString &text ) 151Incidence *ICalFormat::fromString( const QString &text )
172{ 152{
173 CalendarLocal cal( mTimeZoneId ); 153 CalendarLocal cal( mTimeZoneId );
174 fromString(&cal, text); 154 fromString(&cal, text);
diff --git a/libkcal/icalformat.h b/libkcal/icalformat.h
index 236efbf..485ab6e 100644
--- a/libkcal/icalformat.h
+++ b/libkcal/icalformat.h
@@ -1,116 +1,115 @@
1/* 1/*
2 This file is part of libkcal. 2 This file is part of libkcal.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20#ifndef ICALFORMAT_H 20#ifndef ICALFORMAT_H
21#define ICALFORMAT_H 21#define ICALFORMAT_H
22 22
23#include <qstring.h> 23#include <qstring.h>
24 24
25#include "scheduler.h" 25#include "scheduler.h"
26 26
27#include "calformat.h" 27#include "calformat.h"
28 28
29namespace KCal { 29namespace KCal {
30 30
31class ICalFormatImpl; 31class ICalFormatImpl;
32 32
33/** 33/**
34 This class implements the iCalendar format. It provides methods for 34 This class implements the iCalendar format. It provides methods for
35 loading/saving/converting iCalendar format data into the internal KOrganizer 35 loading/saving/converting iCalendar format data into the internal KOrganizer
36 representation as Calendar and Events. 36 representation as Calendar and Events.
37 37
38 @short iCalendar format implementation 38 @short iCalendar format implementation
39*/ 39*/
40class ICalFormat : public CalFormat { 40class ICalFormat : public CalFormat {
41 public: 41 public:
42 /** Create new iCalendar format. */ 42 /** Create new iCalendar format. */
43 ICalFormat( bool quick = false ); 43 ICalFormat( );
44 virtual ~ICalFormat(); 44 virtual ~ICalFormat();
45 45
46 /** 46 /**
47 Loads a calendar on disk in iCalendar format into calendar. 47 Loads a calendar on disk in iCalendar format into calendar.
48 Returns true if successful, else returns false. Provides more error 48 Returns true if successful, else returns false. Provides more error
49 information by exception(). 49 information by exception().
50 @param calendar Calendar object to be filled. 50 @param calendar Calendar object to be filled.
51 @param fileName The name of the calendar file on disk. 51 @param fileName The name of the calendar file on disk.
52 */ 52 */
53 bool load( Calendar *, const QString &fileName ); 53 bool load( Calendar *, const QString &fileName );
54 /** 54 /**
55 Writes out the calendar to disk in iCalendar format. Returns true if 55 Writes out the calendar to disk in iCalendar format. Returns true if
56 successful and false on error. 56 successful and false on error.
57 57
58 @param calendar The Calendar object to be written. 58 @param calendar The Calendar object to be written.
59 @param fileName The name of the calendar file on disk. 59 @param fileName The name of the calendar file on disk.
60 */ 60 */
61 bool save( Calendar *, const QString &fileName ); 61 bool save( Calendar *, const QString &fileName );
62 62
63 /** 63 /**
64 Parse string and populate calendar with that information. 64 Parse string and populate calendar with that information.
65 */ 65 */
66 bool fromString( Calendar *, const QString & ); 66 bool fromString( Calendar *, const QString & );
67 /** 67 /**
68 Parse string and return first ical component. 68 Parse string and return first ical component.
69 */ 69 */
70 Incidence *fromString( const QString & ); 70 Incidence *fromString( const QString & );
71 /** 71 /**
72 Return calendar information as string. 72 Return calendar information as string.
73 */ 73 */
74 QString toString( Calendar * ); 74 QString toString( Calendar * );
75 /** 75 /**
76 Return incidence as full iCalendar formatted text. 76 Return incidence as full iCalendar formatted text.
77 */ 77 */
78 QString toICalString( Incidence * ); 78 QString toICalString( Incidence * );
79 /** 79 /**
80 Return incidence as iCalendar formatted text. 80 Return incidence as iCalendar formatted text.
81 */ 81 */
82 QString toString( Incidence * ); 82 QString toString( Incidence * );
83 /** 83 /**
84 Return recurrence as iCalendar formatted text. 84 Return recurrence as iCalendar formatted text.
85 */ 85 */
86 QString toString( Recurrence * ); 86 QString toString( Recurrence * );
87 /** 87 /**
88 Parse string and fill recurrence object with 88 Parse string and fill recurrence object with
89 that information 89 that information
90 */ 90 */
91 //bool fromString ( Recurrence *, const QString& ); 91 //bool fromString ( Recurrence *, const QString& );
92 92
93 /** Create a scheduling message for event \a e using method \m */ 93 /** Create a scheduling message for event \a e using method \m */
94 QString createScheduleMessage(IncidenceBase *e,Scheduler::Method m); 94 QString createScheduleMessage(IncidenceBase *e,Scheduler::Method m);
95 /** Parse scheduling message provided as string \s */ 95 /** Parse scheduling message provided as string \s */
96 ScheduleMessage *parseScheduleMessage( Calendar *, const QString &s); 96 ScheduleMessage *parseScheduleMessage( Calendar *, const QString &s);
97 97
98 /** Set id of used time zone and whether this time zone is UTC or not. */ 98 /** Set id of used time zone and whether this time zone is UTC or not. */
99 void setTimeZone( const QString &id, bool utc ); 99 void setTimeZone( const QString &id, bool utc );
100 QString timeZoneId() const; 100 QString timeZoneId() const;
101 int timeOffset(); 101 int timeOffset();
102 const char * tzString(); 102 const char * tzString();
103 bool utc() const; 103 bool utc() const;
104 104
105 private: 105 private:
106 ICalFormatImpl *mImpl; 106 ICalFormatImpl *mImpl;
107 bool mQuicksave;
108 QString mTimeZoneId; 107 QString mTimeZoneId;
109 QCString mTzString; 108 QCString mTzString;
110 int tzOffsetMin; 109 int tzOffsetMin;
111 bool mUtc; 110 bool mUtc;
112}; 111};
113 112
114} 113}
115 114
116#endif 115#endif