24#include "kptduration.h"
26#include <tqdatetime.h>
46 CalendarDay(
int state);
47 CalendarDay(TQDate date,
int state=0);
48 CalendarDay(CalendarDay *day);
51 bool load(TQDomElement &element);
52 void save(TQDomElement &element)
const;
54 const TQPtrList<TQPair<TQTime, TQTime> > &workingIntervals()
const {
return m_workingIntervals; }
55 void addInterval(TQPair<TQTime, TQTime> *interval);
56 void addInterval(TQPair<TQTime, TQTime> interval) { addInterval(
new TQPair<TQTime, TQTime>(interval)); }
57 void clearIntervals() { m_workingIntervals.clear(); }
58 void setIntervals(TQPtrList<TQPair<TQTime, TQTime> > intervals) {
59 m_workingIntervals.clear();
60 m_workingIntervals = intervals;
63 TQTime startOfDay()
const;
64 TQTime endOfDay()
const;
66 TQDate date()
const {
return m_date; }
67 void setDate(TQDate date) { m_date = date; }
68 int state()
const {
return m_state; }
69 void setState(
int state) { m_state = state; }
71 bool operator==(
const CalendarDay *day)
const;
72 bool operator==(
const CalendarDay &day)
const;
73 bool operator!=(
const CalendarDay *day)
const;
74 bool operator!=(
const CalendarDay &day)
const;
80 Duration effort(
const TQTime &start,
const TQTime &end);
87 TQPair<TQTime, TQTime> interval(
const TQTime &start,
const TQTime &end)
const;
89 bool hasInterval()
const;
95 bool hasInterval(
const TQTime &start,
const TQTime &end)
const;
97 Duration duration()
const;
99 const CalendarDay ©(
const CalendarDay &day);
104 TQPtrList<TQPair<TQTime, TQTime> > m_workingIntervals;
108 void printDebug(TQCString indent=
"");
112class CalendarWeekdays {
116 CalendarWeekdays(CalendarWeekdays *weekdays);
119 bool load(TQDomElement &element);
120 void save(TQDomElement &element)
const;
122 void addWeekday(CalendarDay *day) { m_weekdays.append(day); }
123 const TQPtrList<CalendarDay> &weekdays()
const {
return m_weekdays; }
129 CalendarDay *weekday(
int day)
const;
130 CalendarDay *weekday(
const TQDate &date)
const {
return weekday(date.dayOfWeek()-1); }
131 CalendarDay *replace(
int weekday, CalendarDay *day) {
132 CalendarDay *d = m_weekdays.at(weekday);
133 m_weekdays.replace(weekday, day);
138 void setWeekday(IntMap::iterator it,
int state) { m_weekdays.at(it.key())->setState(state); }
140 int state(
const TQDate &date)
const;
141 int state(
int weekday)
const;
142 void setState(
int weekday,
int state);
144 const TQPtrList<TQPair<TQTime, TQTime> > &intervals(
int weekday)
const;
145 void setIntervals(
int weekday, TQPtrList<TQPair<TQTime, TQTime> >intervals);
146 void clearIntervals(
int weekday);
148 bool operator==(
const CalendarWeekdays *weekdays)
const;
149 bool operator!=(
const CalendarWeekdays *weekdays)
const;
151 Duration effort(
const TQDate &date,
const TQTime &start,
const TQTime &end);
159 TQPair<TQTime, TQTime> interval(
const TQDate date,
const TQTime &start,
const TQTime &end)
const;
164 bool hasInterval(
const TQDate date,
const TQTime &start,
const TQTime &end)
const;
165 bool hasInterval()
const;
167 Duration duration()
const;
168 Duration duration(
int weekday)
const;
171 TQTime startOfDay(
int weekday)
const;
173 TQTime endOfDay(
int weekday)
const;
175 const CalendarWeekdays ©(
const CalendarWeekdays &weekdays);
178 TQPtrList<CalendarDay> m_weekdays;
183 void printDebug(TQCString indent=
"");
208 Calendar(TQString name, Calendar *parent=0);
209 Calendar(Calendar *calendar);
212 TQString name()
const {
return m_name; }
213 void setName(TQString name) { m_name = name; }
215 Calendar *parent()
const {
return m_parent; }
216 void setParent(Calendar *parent) { m_parent = parent; }
218 Project *project()
const {
return m_project; }
219 void setProject(
Project *project);
221 bool isDeleted()
const {
return m_deleted; }
222 void setDeleted(
bool yes);
224 TQString id()
const {
return m_id; }
225 bool setId(TQString
id);
228 bool load(TQDomElement &element);
229 void save(TQDomElement &element)
const;
235 CalendarDay *
findDay(
const TQDate &date,
bool skipUndefined=
false)
const;
236 bool addDay(CalendarDay *day) {
return m_days.insert(0, day); }
237 bool removeDay(CalendarDay *day) {
return m_days.removeRef(day); }
238 CalendarDay *takeDay(CalendarDay *day) {
return m_days.take(m_days.find(day)); }
239 const TQPtrList<CalendarDay> &days()
const {
return m_days; }
247 IntMap weekdaysMap() {
return m_weekdays->map(); }
248 void setWeekday(IntMap::iterator it,
int state) { m_weekdays->setWeekday(it, state); }
249 CalendarWeekdays *weekdays() {
return m_weekdays; }
250 CalendarDay *weekday(
int day)
const {
return m_weekdays->weekday(day); }
252 TQString parentId()
const {
return m_parentId; }
253 void setParentId(TQString
id) { m_parentId = id; }
255 bool hasParent(Calendar *cal);
261 Duration
effort(
const TQDate &date,
const TQTime &start,
const TQTime &end)
const;
266 Duration
effort(
const DateTime &start,
const DateTime &end)
const;
274 TQPair<DateTime, DateTime>
firstInterval(
const DateTime &start,
const DateTime &end)
const;
282 TQPair<TQTime, TQTime>
firstInterval(
const TQDate &date,
const TQTime &start,
const TQTime &end)
const;
288 bool hasInterval(
const DateTime &start,
const DateTime &end)
const;
294 bool hasInterval(
const TQDate &date,
const TQTime &start,
const TQTime &end)
const;
307 Calendar *findCalendar()
const {
return findCalendar(m_id); }
308 Calendar *findCalendar(
const TQString &
id)
const;
309 bool removeId() {
return removeId(m_id); }
310 bool removeId(
const TQString &
id);
311 void insertId(
const TQString &
id);
314 const Calendar ©(Calendar &calendar);
325 TQPtrList<CalendarDay> m_days;
326 CalendarWeekdays *m_weekdays;
330 void printDebug(TQCString indent=
"");
334class StandardWorktime
338 StandardWorktime(StandardWorktime* worktime);
342 Duration durationYear()
const {
return m_year; }
344 double year()
const {
return m_year.toDouble(Duration::Unit_h); }
346 void setYear(
const Duration year) { m_year = year; }
348 void setYear(
double hours) { m_year = Duration((TQ_INT64)(hours*60.0*60.0)); }
351 Duration durationMonth()
const {
return m_month; }
353 double month()
const {
return m_month.toDouble(Duration::Unit_h); }
355 void setMonth(
const Duration month) { m_month = month; }
357 void setMonth(
double hours) { m_month = Duration((TQ_INT64)(hours*60.0*60.0)); }
360 Duration durationWeek()
const {
return m_week; }
362 double week()
const {
return m_week.toDouble(Duration::Unit_h); }
364 void setWeek(
const Duration week) { m_week = week; }
366 void setWeek(
double hours) { m_week = Duration((TQ_INT64)(hours*60.0*60.0)); }
369 Duration durationDay()
const {
return m_day; }
371 double day()
const {
return m_day.toDouble(Duration::Unit_h); }
373 void setDay(
const Duration day) { m_day = day; }
375 void setDay(
double hours) { m_day = Duration((TQ_INT64)(hours*60.0*60.0)); }
377 bool load(TQDomElement &element);
378 void save(TQDomElement &element)
const;
380 Calendar *calendar()
const {
return m_calendar; }
391 Calendar *m_calendar;
395 void printDebug(TQCString indent=
"");
int parentDayState(const TQDate &date) const
Returns the state of definition for parents day date in it.
CalendarDay * findDay(const TQDate &date, bool skipUndefined=false) const
Find the definition for the day date.
TQPair< DateTime, DateTime > firstInterval(const DateTime &start, const DateTime &end) const
Returns the first 'work interval' for the interval starting at start and ending at end.
bool hasInterval(const DateTime &start, const DateTime &end) const
Returns true if at least a part of a 'work interval' exists for the interval starting at start and en...
DateTime firstAvailableAfter(const DateTime &time, const DateTime &limit)
Find the first available time after time before limit.
Duration effort(const TQDate &date, const TQTime &start, const TQTime &end) const
Returns the amount of 'worktime' that can be done on the date date between the times start and end.
DateTime firstAvailableBefore(const DateTime &time, const DateTime &limit)
Find the first available time backwards from time.
DateTime is a TQDateTime which knows about Duration.
Project is the main node in a project, it contains child nodes and possibly sub-projects.