24#ifndef KCAL_RECURRENCERULE_H
25#define KCAL_RECURRENCERULE_H
27#include "kcal_export.h"
33#include <QtCore/QList>
41typedef SortableList<QTime> TimeList;
52 virtual ~RuleObserver() {}
74 explicit WDayPos(
int ps = 0,
short dy = 0 ) : mDay( dy ), mPos( ps ) {}
75 short day()
const {
return mDay; }
76 int pos()
const {
return mPos; }
77 void setDay(
short dy ) { mDay = dy; }
78 void setPos(
int ps ) { mPos = ps; }
81 return mDay == pos2.mDay && mPos == pos2.mPos;
95 bool operator!=(
const RecurrenceRule &r )
const {
return !operator==(r); }
99 void setReadOnly(
bool readOnly );
104 bool isReadOnly()
const;
111 void setRecurrenceType( PeriodType period );
112 PeriodType recurrenceType()
const;
120 uint frequency()
const;
125 void setFrequency(
int freq );
132 KDateTime startDt()
const;
145 void setStartDt(
const KDateTime &start );
155 void setAllDay(
bool allDay );
162 KDateTime endDt(
bool *result = 0 )
const;
166 void setEndDt(
const KDateTime &endDateTime );
172 int duration()
const;
176 void setDuration(
int duration );
179 int durationTo(
const KDateTime &dt )
const;
182 int durationTo(
const QDate &date )
const;
198 void shiftTimes(
const KDateTime::Spec &oldSpec,
const KDateTime::Spec &newSpec );
206 bool recursOn(
const QDate &date,
const KDateTime::Spec &timeSpec )
const;
214 bool recursAt(
const KDateTime &dt )
const;
223 bool dateMatchesRules(
const KDateTime &dt )
const;
231 TimeList recurTimesOn(
const QDate &date,
const KDateTime::Spec &timeSpec )
const;
244 DateTimeList timesInInterval(
const KDateTime &start,
const KDateTime &end )
const;
251 KDateTime getNextDate(
const KDateTime &preDateTime )
const;
259 KDateTime getPreviousDate(
const KDateTime &afterDateTime )
const;
261 void setBySeconds(
const QList<int> bySeconds );
262 void setByMinutes(
const QList<int> byMinutes );
263 void setByHours(
const QList<int> byHours );
265 void setByDays(
const QList<WDayPos> byDays );
266 void setByMonthDays(
const QList<int> byMonthDays );
267 void setByYearDays(
const QList<int> byYearDays );
268 void setByWeekNumbers(
const QList<int> byWeekNumbers );
269 void setByMonths(
const QList<int> byMonths );
270 void setBySetPos(
const QList<int> bySetPos );
271 void setWeekStart(
short weekStart );
273 const QList<int> &bySeconds()
const;
274 const QList<int> &byMinutes()
const;
275 const QList<int> &byHours()
const;
277 const QList<WDayPos> &byDays()
const;
278 const QList<int> &byMonthDays()
const;
279 const QList<int> &byYearDays()
const;
280 const QList<int> &byWeekNumbers()
const;
281 const QList<int> &byMonths()
const;
282 const QList<int> &bySetPos()
const;
283 short weekStart()
const;
292 void setRRule(
const QString &rrule );
293 QString rrule()
const;
303 void addObserver( RuleObserver *observer );
311 void removeObserver( RuleObserver *observer );
This class provides a template for lists of pointers.
structure for describing the n-th weekday of the month/year.
This class represents a recurrence rule for a calendar incidence.
PeriodType
enum for describing the frequency how an event recurs, if at all.
A QList which can be sorted.
SortableList< QDate > DateList
List of dates.
SortableList< KDateTime > DateTimeList
List of times.
This file is part of the API for handling calendar data and defines the ListBase class.
This file is part of the API for handling calendar data and defines the Sortable List class.