libkcal

incidence.h
1 /*
2  This file is part of libkcal.
3 
4  Copyright (c) 2001-2003 Cornelius Schumacher <schumacher@kde.org>
5  Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
6 
7  This library is free software; you can redistribute it and/or
8  modify it under the terms of the GNU Library General Public
9  License as published by the Free Software Foundation; either
10  version 2 of the License, or (at your option) any later version.
11 
12  This library is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  Library General Public License for more details.
16 
17  You should have received a copy of the GNU Library General Public License
18  along with this library; see the file COPYING.LIB. If not, write to
19  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20  Boston, MA 02110-1301, USA.
21 */
22 #ifndef INCIDENCE_H
23 #define INCIDENCE_H
24 
25 #include <tqdatetime.h>
26 #include <tqstringlist.h>
27 #include <tqvaluelist.h>
28 
29 #include "recurrence.h"
30 #include "alarm.h"
31 #include "attachment.h"
32 #include "libkcal_export.h"
33 
34 #include "incidencebase.h"
35 #include <tdemacros.h>
36 
37 namespace KCal {
38 
39 class Calendar;
40 
41 typedef TQStringList IncidenceList;
42 typedef TQStringList::iterator IncidenceListIterator;
43 
47 class LIBKCAL_EXPORT Incidence : public IncidenceBase, public Recurrence::Observer
48 {
49  public:
54  template<class T>
56  {
57  public:
58  AddVisitor( T *r ) : mResource( r ) {}
59 
60  bool visit( Event *e ) { return mResource->addEvent( e ); }
61  bool visit( Todo *t ) { return mResource->addTodo( t ); }
62  bool visit( Journal *j ) { return mResource->addJournal( j ); }
63 
64  private:
65  T *mResource;
66  };
67 
72  template<class T>
74  {
75  public:
76  AddSubResourceVisitor( T *r, const TQString &subResource )
77  : mResource( r ), mSubResource( subResource ) {}
78 
79  protected:
80  bool visit( Event *e )
81  {
82  return mResource->addEvent( e, mSubResource );
83  }
84  bool visit( Todo *t )
85  {
86  return mResource->addTodo( t, mSubResource );
87  }
88  bool visit( Journal *j )
89  {
90  return mResource->addJournal( j, mSubResource );
91  }
92 
93  private:
94  T *mResource;
95  TQString mSubResource;
96  };
97 
102  template<class T>
104  {
105  public:
106  DeleteVisitor( T *r ) : mResource( r ) {}
107 
108  bool visit( Event *e ) { mResource->deleteEvent( e ); return true; }
109  bool visit( Todo *t ) { mResource->deleteTodo( t ); return true; }
110  bool visit( Journal *j ) { mResource->deleteJournal( j ); return true; }
111 
112  private:
113  T *mResource;
114  };
115 
117  enum Status {
118  StatusNone, StatusTentative, StatusConfirmed, StatusCompleted,
119  StatusNeedsAction, StatusCanceled, StatusInProcess, StatusDraft,
120  StatusFinal,
121  StatusX // indicates a non-standard status string
122  };
123 
125  enum { SecrecyPublic = 0, SecrecyPrivate = 1, SecrecyConfidential = 2 };
126 
127  typedef ListBase<Incidence> List;
128 
129  Incidence();
130  Incidence( const Incidence & );
131  ~Incidence();
132 
133  Incidence& operator=( const Incidence &i );
134  bool operator==( const Incidence & ) const;
135 
139  virtual Incidence *clone() = 0;
140 
147  void setReadOnly( bool readonly );
148 
150  void setFloats( bool f );
151 
157  void recreate();
158 
162  void setCreated( const TQDateTime & );
166  TQDateTime created() const;
167 
171  void setRevision( int rev );
175  int revision() const;
176 
180  virtual void setDtStart( const TQDateTime &dtStart );
184  virtual TQDateTime dtEnd() const { return TQDateTime(); }
185 
189  void setDescription( const TQString &description );
193  TQString description() const;
194 
198  void setSummary( const TQString &summary );
202  TQString summary() const;
203 
207  void setCategories( const TQStringList &categories );
211  void setCategories(const TQString &catStr);
215  TQStringList categories() const;
219  TQString categoriesStr() const;
220 
226  void setRelatedToUid(const TQString &);
232  TQString relatedToUid() const;
236  void setRelatedTo(Incidence *relatedTo);
240  Incidence *relatedTo() const;
244  Incidence::List relations() const;
248  void addRelation(Incidence *);
252  void removeRelation(Incidence *);
253 
254 
255 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
256 // %%%%% Recurrence-related methods
257 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
258 
263  Recurrence *recurrence() const;
264 
266  void clearRecurrence();
267 
271  bool doesRecur() const;
272  uint recurrenceType() const;
273 
278  virtual bool recursOn( const TQDate &qd ) const;
283  bool recursAt( const TQDateTime &qdt ) const;
284 
291  virtual bool recursOn( const TQDate &qd, Calendar *cal ) const;
298  bool recursAt( const TQDateTime &qdt, Calendar *cal ) const;
299 
308  virtual TQValueList<TQDateTime> startDateTimesForDate( const TQDate &date ) const;
309 
318  virtual TQValueList<TQDateTime> startDateTimesForDateTime( const TQDateTime &datetime ) const;
319 
321  virtual TQDateTime endDateForStart( const TQDateTime &startDt ) const;
322 
323 
324 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
325 // %%%%% Attachment-related methods
326 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
327 
331  void addAttachment( Attachment *attachment );
335  void deleteAttachment( Attachment *attachment );
339  void deleteAttachments( const TQString &mime );
343  Attachment::List attachments() const;
347  Attachment::List attachments( const TQString &mime ) const;
351  void clearAttachments();
352 
353 
354 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
355 // %%%%% Secrecy and Status methods
356 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
357 
362  void setSecrecy( int );
366  int secrecy() const;
370  TQString secrecyStr() const;
374  static TQStringList secrecyList();
378  static TQString secrecyName( int );
379 
384  void setStatus( Status status );
390  void setCustomStatus( const TQString &status );
394  Status status() const;
398  TQString statusStr() const;
402  static TQString statusName( Status );
403 
404 
405 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
406 // %%%%% Other methods
407 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
408 
412  void setResources( const TQStringList &resources );
416  TQStringList resources() const;
417 
423  void setPriority( int priority );
428  int priority() const;
429 
435  bool hasRecurrenceID() const;
436 
443  void setHasRecurrenceID( bool hasRecurrenceID );
444 
451  void setRecurrenceID( const TQDateTime &recurrenceID );
452 
459  TQDateTime recurrenceID() const;
460 
466  void addChildIncidence( TQString childIncidence );
467 
473  void deleteChildIncidence( TQString childIncidence );
474 
480  IncidenceList childIncidences() const;
481 
482 
483 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
484 // %%%%% Alarm-related methods
485 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
486 
490  const Alarm::List &alarms() const;
494  Alarm *newAlarm();
498  void addAlarm( Alarm * );
502  void removeAlarm( Alarm * );
506  void clearAlarms();
510  bool isAlarmEnabled() const;
511 
512 
513 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
514 // %%%%% Other methods
515 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
516 
517 
518 
522  void setLocation(const TQString &location);
526  TQString location() const;
527 
537  void setSchedulingID( const TQString& sid );
542  TQString schedulingID() const;
543 
547  virtual void recurrenceUpdated( Recurrence * );
548  protected:
552  virtual TQDateTime endDateRecurrenceBase() const { return dtStart(); }
553 
554  private:
555  int mRevision;
556 
557  // base components of jounal, event and todo
558  TQDateTime mCreated;
559  TQString mDescription;
560  TQString mSummary;
561  TQStringList mCategories;
562  Incidence *mRelatedTo;
563  TQString mRelatedToUid;
564  Incidence::List mRelations;
565  Attachment::List mAttachments;
566  TQStringList mResources;
567 
568  TQString mStatusString;
569  Status mStatus;
570  int mSecrecy;
571  int mPriority; // 1 = highest, 2 = less, etc.
572 
573  Alarm::List mAlarms;
574  Recurrence *mRecurrence;
575 
576  TQString mLocation;
577 
578  // Scheduling ID - used only to identify between scheduling mails
579  TQString mSchedulingID;
580 
581  TQDateTime mRecurrenceID; // recurrenceID
582  bool mHasRecurrenceID; // if incidence has recurrenceID
583 
584  IncidenceList mChildRecurrenceEvents;
585 
586  class Private;
587  Private *d;
588 };
589 
590 }
591 
592 #endif
This class represents an alarm notification.
Definition: alarm.h:46
This class represents information related to an attachment.
Definition: attachment.h:35
This is the main "calendar" object class.
Definition: calendar.h:171
This class provides an Event in the sense of RFC2445.
Definition: event.h:33
This class provides the interface for a visitor of calendar components.
Definition: incidencebase.h:55
This class provides the base class common to all calendar components.
Definition: incidencebase.h:46
This class implements a visitor for adding an Incidence to a resource plus subresource supporting add...
Definition: incidence.h:74
bool visit(Journal *j)
Reimplement this function in your concrete subclass of IncidenceBase::Visitor to perform actions on a...
Definition: incidence.h:88
bool visit(Todo *t)
Reimplement this function in your concrete subclass of IncidenceBase::Visitor to perform actions on a...
Definition: incidence.h:84
bool visit(Event *e)
Reimplement this function in your concrete subclass of IncidenceBase::Visitor to perform actions on a...
Definition: incidence.h:80
This class implements a visitor for adding an Incidence to a resource supporting addEvent(),...
Definition: incidence.h:56
bool visit(Journal *j)
Reimplement this function in your concrete subclass of IncidenceBase::Visitor to perform actions on a...
Definition: incidence.h:62
bool visit(Todo *t)
Reimplement this function in your concrete subclass of IncidenceBase::Visitor to perform actions on a...
Definition: incidence.h:61
bool visit(Event *e)
Reimplement this function in your concrete subclass of IncidenceBase::Visitor to perform actions on a...
Definition: incidence.h:60
This class implements a visitor for deleting an Incidence from a resource supporting deleteEvent(),...
Definition: incidence.h:104
bool visit(Journal *j)
Reimplement this function in your concrete subclass of IncidenceBase::Visitor to perform actions on a...
Definition: incidence.h:110
bool visit(Event *e)
Reimplement this function in your concrete subclass of IncidenceBase::Visitor to perform actions on a...
Definition: incidence.h:108
bool visit(Todo *t)
Reimplement this function in your concrete subclass of IncidenceBase::Visitor to perform actions on a...
Definition: incidence.h:109
This class provides the base class common to all calendar components.
Definition: incidence.h:48
virtual Incidence * clone()=0
Return copy of this object.
virtual TQDateTime dtEnd() const
Return the incidence's ending date/time as a TQDateTime.
Definition: incidence.h:184
Status
Enumeration for describing an event's status.
Definition: incidence.h:117
virtual TQDateTime endDateRecurrenceBase() const
Return the end date/time of the base incidence (e.g.
Definition: incidence.h:552
This class provides a Journal in the sense of RFC2445.
Definition: journal.h:34
This class represents a recurrence rule for a calendar incidence.
Definition: recurrence.h:90
This class provides a Todo in the sense of RFC2445.
Definition: todo.h:32
Namespace KCal is for global classes, objects and/or functions in libkcal.
Definition: alarm.h:38