KCalCore Library
freebusy.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00031 #ifndef KCALCORE_FREEBUSY_H
00032 #define KCALCORE_FREEBUSY_H
00033
00034 #include "kcalcore_export.h"
00035 #include "event.h"
00036 #include "freebusyperiod.h"
00037 #include "incidencebase.h"
00038 #include "period.h"
00039
00040 #include <QtCore/QMetaType>
00041
00042 namespace KCalCore {
00043
00044 class FreeBusy;
00045
00052 class KCALCORE_EXPORT FreeBusy : public IncidenceBase
00053 {
00054 friend KCALCORE_EXPORT QDataStream &operator<<( QDataStream &s,
00055 const KCalCore::FreeBusy::Ptr &freebusy );
00056 friend KCALCORE_EXPORT QDataStream &operator>>( QDataStream &s,
00057 KCalCore::FreeBusy::Ptr &freebusy );
00058
00059 public:
00060
00064 typedef QSharedPointer<FreeBusy> Ptr;
00065
00069 typedef QVector<Ptr> List;
00070
00074 FreeBusy();
00075
00080 FreeBusy( const FreeBusy &other );
00081
00086 explicit FreeBusy( const Period::List &busyPeriods );
00087
00092 explicit FreeBusy( const FreeBusyPeriod::List &busyPeriods );
00093
00100 FreeBusy( const KDateTime &start, const KDateTime &end );
00101
00109 FreeBusy( const Event::List &events, const KDateTime &start, const KDateTime &end );
00110
00114 ~FreeBusy();
00115
00120 IncidenceType type() const;
00121
00126 QByteArray typeStr() const;
00127
00135 virtual void setDtStart( const KDateTime &start );
00136
00144 void setDtEnd( const KDateTime &end );
00145
00151 virtual KDateTime dtEnd() const;
00152
00157 virtual void shiftTimes( const KDateTime::Spec &oldSpec,
00158 const KDateTime::Spec &newSpec );
00159
00163 Period::List busyPeriods() const;
00164
00168 FreeBusyPeriod::List fullBusyPeriods() const;
00169
00176 void addPeriod( const KDateTime &start, const KDateTime &end );
00177
00184 void addPeriod( const KDateTime &start, const Duration &duration );
00185
00193 void addPeriods( const Period::List &list );
00194
00202 void addPeriods( const FreeBusyPeriod::List &list );
00203
00207 void sortList();
00208
00214 void merge( FreeBusy::Ptr freebusy );
00215
00220 KDateTime dateTime( DateTimeRole role ) const;
00221
00226 void setDateTime( const KDateTime &dateTime, DateTimeRole role );
00227
00232 QLatin1String mimeType() const;
00233
00237 static QLatin1String freeBusyMimeType();
00238
00239 protected:
00244 virtual bool equals( const IncidenceBase &freebusy ) const;
00245
00250 virtual IncidenceBase &assign( const IncidenceBase &other );
00251
00256 virtual void virtual_hook( int id, void *data );
00257
00258 private:
00263 bool accept( Visitor &v, IncidenceBase::Ptr incidence );
00264
00271 FreeBusy &operator=( const FreeBusy &other );
00272
00273
00274 class Private;
00275 Private *const d;
00276
00277 };
00278
00282 KCALCORE_EXPORT QDataStream &operator<<( QDataStream &stream,
00283 const KCalCore::FreeBusy::Ptr &freebusy );
00287 KCALCORE_EXPORT QDataStream &operator>>( QDataStream &stream,
00288 KCalCore::FreeBusy::Ptr &freebusy );
00289 }
00290
00291
00292 Q_DECLARE_TYPEINFO( KCalCore::FreeBusy::Ptr, Q_MOVABLE_TYPE );
00293 Q_DECLARE_METATYPE( KCalCore::FreeBusy::Ptr )
00294
00295
00296 #endif