1/*
2 This file is part of the kcalcore library.
3
4 Copyright (c) 2001-2003 Cornelius Schumacher <schumacher@kde.org>
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version.
10
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details.
15
16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA.
20*/
21/**
22 @file
23 This file is part of the API for handling calendar data and
24 defines the Period class.
25
26 @brief
27 Represents a period of time.
28
29 @author Cornelius Schumacher \<schumacher@kde.org\>
30*/
31
32#ifndef KCALCORE_FREEBUSYPERIOD_H
33#define KCALCORE_FREEBUSYPERIOD_H
34
35#include "kcalcore_export.h"
36#include "period.h"
37
38#include <QtCore/QMetaType>
39
40namespace KCalCore {
41
42/**
43 The period can be defined by either a start time and an end time or
44 by a start time and a duration.
45*/
46class KCALCORE_EXPORT FreeBusyPeriod : public Period
47{
48public:
49 /**
50 List of periods.
51 */
52 typedef QVector<FreeBusyPeriod> List;
53
54 /**
55 Constructs a period without a duration.
56 */
57 FreeBusyPeriod();
58
59 /**
60 Constructs a period from @p start to @p end.
61
62 @param start the time the period begins.
63 @param end the time the period ends.
64 */
65 FreeBusyPeriod(const KDateTime &start, const KDateTime &end);
66
67 /**
68 Constructs a period from @p start and lasting @p duration.
69
70 @param start the time when the period starts.
71 @param duration how long the period lasts.
72 */
73 FreeBusyPeriod(const KDateTime &start, const Duration &duration);
74
75 /**
76 Constructs a period by copying another period object
77
78 @param period the period to copy
79 */
80
81 FreeBusyPeriod(const FreeBusyPeriod &period);
82
83 /**
84 Constructs a period by copying another period object
85
86 @param period the period to copy
87 */
88
89 FreeBusyPeriod(const Period &period); //krazy:exclude=explicit
90
91 /**
92 Destroys a period.
93 */
94 ~FreeBusyPeriod();
95
96 /**
97 Sets this period equal to the @p other one.
98
99 @param other is the other period to compare.
100 */
101 FreeBusyPeriod &operator=(const FreeBusyPeriod &other);
102
103 /**
104 Sets the period summary.
105 @param summary is the period summary string.
106 @see summary().
107 */
108 void setSummary(const QString &summary);
109
110 /**
111 Returns the period summary.
112 @see setSummary()
113 */
114 QString summary() const;
115
116 /**
117 Sets the period location.
118 @param location is the period location string.
119 @see location().
120 */
121 void setLocation(const QString &location);
122
123 /**
124 Returns the period location.
125 @see setLocation()
126 */
127 QString location() const;
128
129private:
130 //@cond PRIVATE
131 class Private;
132 Private *const d;
133 //@endcond
134
135 friend KCALCORE_EXPORT QDataStream &operator<<(QDataStream &stream,
136 const KCalCore::FreeBusyPeriod &period);
137 friend KCALCORE_EXPORT QDataStream &operator>>(QDataStream &stream,
138 KCalCore::FreeBusyPeriod &period);
139};
140
141/** Write @p period to the datastream @p stream, in binary format. */
142KCALCORE_EXPORT QDataStream &operator<<(QDataStream &stream,
143 const KCalCore::FreeBusyPeriod &period);
144
145/** Read a Period object into @p period from @p stream, in binary format. */
146KCALCORE_EXPORT QDataStream &operator>>(QDataStream &stream, KCalCore::FreeBusyPeriod &period);
147}
148
149//@cond PRIVATE
150Q_DECLARE_METATYPE(KCalCore::FreeBusyPeriod)
151//@endcond
152
153#endif
154