summaryrefslogtreecommitdiffabout
path: root/libkcal
Unidiff
Diffstat (limited to 'libkcal') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/attachment.cpp38
-rw-r--r--libkcal/attachment.h71
-rw-r--r--libkcal/icalformatimpl.cpp4
-rw-r--r--libkcal/incidence.cpp12
4 files changed, 96 insertions, 29 deletions
diff --git a/libkcal/attachment.cpp b/libkcal/attachment.cpp
index 1ead923..520ac95 100644
--- a/libkcal/attachment.cpp
+++ b/libkcal/attachment.cpp
@@ -1,10 +1,11 @@
1/* 1/*
2 This file is part of libkcal. 2 This file is part of libkcal.
3
3 Copyright (c) 2002 Michael Brade <brade@kde.org> 4 Copyright (c) 2002 Michael Brade <brade@kde.org>
4 5
5 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
9 10
10 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
@@ -17,44 +18,57 @@
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
19*/ 20*/
20 21
21#include "attachment.h" 22#include "attachment.h"
22 23
23using namespace KCal; 24using namespace KCal;
24 25
26Attachment::Attachment( const Attachment &attachment)
27{
28 mMimeType = attachment.mMimeType;
29 mData = attachment.mData;
30 mBinary = attachment.mBinary;
31 mShowInline = attachment.mShowInline;
32 mLabel = attachment.mLabel;
33}
34
25Attachment::Attachment(const QString& uri, const QString& mime) 35Attachment::Attachment(const QString& uri, const QString& mime)
26{ 36{
27 mMimeType = mime; 37 mMimeType = mime;
28 mData = uri; 38 mData = uri;
29 mBinary = false; 39 mBinary = false;
40 mShowInline = false;
41 mLabel = QString::null;
30} 42}
31 43
32Attachment::Attachment(const char *base64, const QString& mime) 44Attachment::Attachment(const char *base64, const QString& mime)
33{ 45{
34 mMimeType = mime; 46 mMimeType = mime;
35 mData = QString::fromUtf8(base64); 47 mData = QString::fromUtf8(base64);
36 mBinary = true; 48 mBinary = true;
49 mShowInline = false;
50 mLabel = QString::null;
37} 51}
38 52
39bool Attachment::isURI() const 53bool Attachment::isUri() const
40{ 54{
41 return !mBinary; 55 return !mBinary;
42} 56}
43 57
44QString Attachment::uri() const 58QString Attachment::uri() const
45{ 59{
46 if (!mBinary) 60 if (!mBinary)
47 return mData; 61 return mData;
48 else 62 else
49 return QString::null; 63 return QString::null;
50} 64}
51 65
52void Attachment::setURI(const QString& uri) 66void Attachment::setUri(const QString& uri)
53{ 67{
54 mData = uri; 68 mData = uri;
55 mBinary = false; 69 mBinary = false;
56} 70}
57 71
58bool Attachment::isBinary() const 72bool Attachment::isBinary() const
59{ 73{
60 return mBinary; 74 return mBinary;
@@ -79,8 +93,28 @@ QString Attachment::mimeType() const
79 return mMimeType; 93 return mMimeType;
80} 94}
81 95
82void Attachment::setMimeType(const QString& mime) 96void Attachment::setMimeType(const QString& mime)
83{ 97{
84 mMimeType = mime; 98 mMimeType = mime;
85} 99}
86 100
101bool Attachment::showInline() const
102{
103 return mShowInline;
104}
105
106void Attachment::setShowInline( bool showinline )
107{
108 mShowInline = showinline;
109}
110
111QString Attachment::label() const
112{
113 return mLabel;
114}
115
116void Attachment::setLabel( const QString& label )
117{
118 mLabel = label;
119}
120
diff --git a/libkcal/attachment.h b/libkcal/attachment.h
index cdf2458..5301420 100644
--- a/libkcal/attachment.h
+++ b/libkcal/attachment.h
@@ -1,10 +1,11 @@
1/* 1/*
2 This file is part of libkcal. 2 This file is part of libkcal.
3
3 Copyright (c) 2002 Michael Brade <brade@kde.org> 4 Copyright (c) 2002 Michael Brade <brade@kde.org>
4 5
5 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
9 10
10 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
@@ -12,58 +13,82 @@
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 14 Library General Public License for more details.
14 15
15 You should have received a copy of the GNU Library General Public License 16 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 17 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
19*/ 20*/
21#ifndef KCAL_ATTACHMENT_H
22#define KCAL_ATTACHMENT_H
20 23
21#ifndef _ATTACHMENT_H
22#define _ATTACHMENT_H
23 24
24#include <qstring.h>
25 25
26#include <qstring.h>
26 27
27namespace KCal { 28namespace KCal {
28 29
29/** 30/**
30 * This class represents information related to an attachment. 31 This class represents information related to an attachment.
31 */ 32*/
32class Attachment 33class Attachment
33{ 34{
34public: 35 public:
36
35 /** 37 /**
36 * Create a Reference to some URI. 38 Create a Reference to some URI by copying an existing Attachment.
37 * @param uri the uri this attachment refers to 39
38 * @param mime the mime type of the resource being linked to 40 @param attachment the attachment to be duplicated
39 */ 41 */
40 Attachment(const QString& uri, const QString& mime = QString::null); 42 Attachment( const Attachment &attachment );
41 43
42 /** 44 /**
43 * Create a binary attachment. 45 Create a Reference to some URI.
44 * @param base64 the attachment in base64 format 46
45 * @param mime the mime type of the attachment 47 @param uri the uri this attachment refers to
46 */ 48 @param mime the mime type of the resource being linked to
47 Attachment(const char *base64, const QString& mime = QString::null); 49 */
48 50 Attachment( const QString &uri, const QString &mime = QString::null );
49 /* The VALUE parameter in Cal */ 51
50 bool isURI() const; 52 /**
53 Create a binary attachment.
54
55 @param base64 the attachment in base64 format
56 @param mime the mime type of the attachment
57 */
58 Attachment( const char *base64, const QString &mime = QString::null );
59
60 /* The VALUE parameter in iCal */
61 bool isUri() const;
51 QString uri() const; 62 QString uri() const;
52 void setURI(const QString& uri); 63 void setUri( const QString &uri );
53 64
54 bool isBinary() const; 65 bool isBinary() const;
55 char *data() const; 66 char *data() const;
56 void setData(const char *base64); 67 void setData( const char *base64 );
57 68
58 /* The optional FMTTYPE parameter in iCal */ 69 /* The optional FMTTYPE parameter in iCal */
59 QString mimeType() const; 70 QString mimeType() const;
60 void setMimeType(const QString& mime); 71 void setMimeType( const QString &mime );
61private: 72
73 /* The custom X-CONTENT-DISPOSITION parameter, used by OGo etc. */
74 bool showInline() const;
75 void setShowInline( bool showinline );
76
77 /* The custom X-LABEL parameter to show a human-readable title */
78 QString label() const;
79 void setLabel( const QString &label );
80
81 private:
62 QString mMimeType; 82 QString mMimeType;
63 QString mData; 83 QString mData;
64 bool mBinary; 84 bool mBinary;
85 bool mShowInline;
86 QString mLabel;
87
88 class Private;
89 Private *d;
65}; 90};
66 91
67} 92}
68 93
69#endif 94#endif
diff --git a/libkcal/icalformatimpl.cpp b/libkcal/icalformatimpl.cpp
index 53aa039..65eabc8 100644
--- a/libkcal/icalformatimpl.cpp
+++ b/libkcal/icalformatimpl.cpp
@@ -509,23 +509,23 @@ icalproperty *ICalFormatImpl::writeAttendee(Attendee *attendee)
509 509
510 return p; 510 return p;
511} 511}
512 512
513icalproperty *ICalFormatImpl::writeAttachment(Attachment *att) 513icalproperty *ICalFormatImpl::writeAttachment(Attachment *att)
514{ 514{
515#if 0 515#if 0
516 icalattachtype* attach = icalattachtype_new(); 516 icalattachtype* attach = icalattachtype_new();
517 if (att->isURI()) 517 if (att->isUri())
518 icalattachtype_set_url(attach, att->uri().utf8().data()); 518 icalattachtype_set_url(attach, att->uri().utf8().data());
519 else 519 else
520 icalattachtype_set_base64(attach, att->data(), 0); 520 icalattachtype_set_base64(attach, att->data(), 0);
521#endif 521#endif
522 icalattach *attach; 522 icalattach *attach;
523 if (att->isURI()) 523 if (att->isUri())
524 attach = icalattach_new_from_url( att->uri().utf8().data()); 524 attach = icalattach_new_from_url( att->uri().utf8().data());
525 else 525 else
526 attach = icalattach_new_from_data ( (unsigned char *)att->data(), 0, 0); 526 attach = icalattach_new_from_data ( (unsigned char *)att->data(), 0, 0);
527 icalproperty *p = icalproperty_new_attach(attach); 527 icalproperty *p = icalproperty_new_attach(attach);
528 if (!att->mimeType().isEmpty()) 528 if (!att->mimeType().isEmpty())
529 icalproperty_add_parameter(p,icalparameter_new_fmttype(att->mimeType().utf8().data())); 529 icalproperty_add_parameter(p,icalparameter_new_fmttype(att->mimeType().utf8().data()));
530 530
531 if (att->isBinary()) { 531 if (att->isBinary()) {
diff --git a/libkcal/incidence.cpp b/libkcal/incidence.cpp
index 549014e..39c14f5 100644
--- a/libkcal/incidence.cpp
+++ b/libkcal/incidence.cpp
@@ -51,20 +51,27 @@ Incidence::Incidence( const Incidence &i ) : IncidenceBase( i )
51// TODO: reenable attributes currently commented out. 51// TODO: reenable attributes currently commented out.
52 mRevision = i.mRevision; 52 mRevision = i.mRevision;
53 mCreated = i.mCreated; 53 mCreated = i.mCreated;
54 mDescription = i.mDescription; 54 mDescription = i.mDescription;
55 mSummary = i.mSummary; 55 mSummary = i.mSummary;
56 mCategories = i.mCategories; 56 mCategories = i.mCategories;
57// Incidence *mRelatedTo; Incidence *mRelatedTo; 57// Incidence *mRelatedTo; Incidence *mRelatedTo;
58 mRelatedTo = 0; 58 mRelatedTo = 0;
59 mRelatedToUid = i.mRelatedToUid; 59 mRelatedToUid = i.mRelatedToUid;
60// QPtrList<Incidence> mRelations; QPtrList<Incidence> mRelations; 60// QPtrList<Incidence> mRelations; QPtrList<Incidence> mRelations;
61 mExDates = i.mExDates; 61 mExDates = i.mExDates;
62 mAttachments = i.mAttachments; 62 QPtrListIterator<Attachment> itat( i.mAttachments );
63 Attachment *at;
64 while( (at = itat.current()) ) {
65 Attachment *a = new Attachment( *at );
66 mAttachments.append( a );
67 ++itat;
68 }
69 mAttachments.setAutoDelete( true );
63 mResources = i.mResources; 70 mResources = i.mResources;
64 mSecrecy = i.mSecrecy; 71 mSecrecy = i.mSecrecy;
65 mPriority = i.mPriority; 72 mPriority = i.mPriority;
66 mLocation = i.mLocation; 73 mLocation = i.mLocation;
67 mCancelled = i.mCancelled; 74 mCancelled = i.mCancelled;
68 mHasStartDate = i.mHasStartDate; 75 mHasStartDate = i.mHasStartDate;
69 QPtrListIterator<Alarm> it( i.mAlarms ); 76 QPtrListIterator<Alarm> it( i.mAlarms );
70 const Alarm *a; 77 const Alarm *a;
@@ -752,16 +759,17 @@ bool Incidence::isAlarmEnabled() const
752 return false; 759 return false;
753} 760}
754#include <stdlib.h> 761#include <stdlib.h>
755Recurrence *Incidence::recurrence() 762Recurrence *Incidence::recurrence()
756{ 763{
757 if ( ! mRecurrence ) { 764 if ( ! mRecurrence ) {
758 mRecurrence = new Recurrence(this); 765 mRecurrence = new Recurrence(this);
759 mRecurrence->setRecurStart( dtStart() ); 766 mRecurrence->setRecurStart( dtStart() );
767 mRecurrence->setRecurReadOnly( isReadOnly());
760 //qDebug("creating new recurence "); 768 //qDebug("creating new recurence ");
761 //abort(); 769 //abort();
762 } 770 }
763 return mRecurrence; 771 return mRecurrence;
764} 772}
765void Incidence::setRecurrence( Recurrence * r) 773void Incidence::setRecurrence( Recurrence * r)
766{ 774{
767 if ( mRecurrence ) 775 if ( mRecurrence )