diff options
Diffstat (limited to 'libkcal/todo.h')
-rw-r--r-- | libkcal/todo.h | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/libkcal/todo.h b/libkcal/todo.h new file mode 100644 index 000000000..d81576d55 --- /dev/null +++ b/libkcal/todo.h @@ -0,0 +1,242 @@ +/* + This file is part of libkcal. + + Copyright (c) 2001-2003 Cornelius Schumacher <schumacher@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ +#ifndef KCAL_TODO_H +#define KCAL_TODO_H + +#include "incidence.h" + +namespace KCal { + +/** + This class provides a Todo in the sense of RFC2445. +*/ +class LIBKCAL_EXPORT Todo : public Incidence +{ + public: + typedef ListBase<Todo> List; + + Todo(); + Todo( const Todo & ); + ~Todo(); + Todo& operator=( const Todo& ); + bool operator==( const Todo& ) const; + + QCString type() const { return "Todo"; } + + /** + Returns an exact copy of this todo. The returned object is owned by the + caller. + */ + Todo *clone(); + + /** + Sets due date and time. + + @param dtDue The due date/time. + @param first Set the date of the first occurrence (if the todo is recurrent). + */ + void setDtDue(const QDateTime &dtDue, bool first = false); + /** + Returns due date and time. + + @param first If true and the todo recurs, the due date of the first + occurrence will be returned.If false and recurrent, the date of the + current occurrence will be returned. If non-recurrent, the normal due date + will be returned. + */ + QDateTime dtDue( bool first = false ) const; + /** + Returns due time as string formatted according to the users locale + settings. + */ + QString dtDueTimeStr() const; + /** + Returns due date as string formatted according to the users locale + settings. + + @param shortfmt If set to true, use short date format, if set to false use + long format. + */ + QString dtDueDateStr( bool shortfmt = true ) const; + /** + Returns due date and time as string formatted according to the users locale + settings. + */ + QString dtDueStr() const; + + /** + Returns true if the todo has a due date, otherwise return false. + */ + bool hasDueDate() const; + /** + Set if the todo has a due date. + + @param hasDueDate true if todo has a due date, otherwise false + */ + void setHasDueDate( bool hasDueDate ); + + /** + Returns true if the todo has a start date, otherwise return false. + */ + bool hasStartDate() const; + /** + Set if the todo has a start date. + + @param hasStartDate true if todo has a start date, otherwise false + */ + void setHasStartDate( bool hasStartDate ); + + /** + Returns the startdate of the todo. + @param first If true, the startdate of the todo will be returned. If the + todo recurs, the startdate of the first occurrence will be returned. + If false and the todo recurs, the relative startdate will be returned, + based on the date returned by dtRecurrence(). + */ + QDateTime dtStart( bool first = false ) const; + + /** + Sets the startdate of the todo. + */ + void setDtStart( const QDateTime &dtStart ); + + /** Returns an todo's starting time as a string formatted according to the + users locale settings. + @param first If true, the startdate of the todo will be returned. If the + todo recurs, the startdate of the first occurrence will be returned. + If false and the todo recurs, the relative startdate will be returned, + based on the date returned by dtRecurrence(). + */ + QString dtStartTimeStr( bool first = false ) const; + /** Returns an todo's starting date as a string formatted according to the + users locale settings. + @param shortfmt If true, use short date format, if set to false use + long format. + @param first If true, the startdate of the todo will be returned. If the + todo recurs, the startdate of the first occurrence will be returned. + If false and the todo recurs, the relative startdate will be returned, + based on the date returned by dtRecurrence(). + */ + QString dtStartDateStr( bool shortfmt = true, bool first = false ) const; + /** Returns an todo's starting date and time as a string formatted according + to the users locale settings. + @param first If true, the startdate of the todo will be returned. If the + todo recurs, the startdate of the first occurrence will be returned. + If false and the todo recurs, the relative startdate will be returned, + based on the date returned by dtRecurrence(). + */ + QString dtStartStr( bool first = false ) const; + + /** + Returns true if the todo is 100% completed, otherwise return false. + */ + bool isCompleted() const; + /** + Set completed state. + + @param completed If true set completed state to 100%, if false set + completed state to 0%. + */ + void setCompleted( bool completed ); + + /** + Returns how many percent of the task are completed. Returns a value + between 0 and 100. + */ + int percentComplete() const; + /** + Set how many percent of the task are completed. Valid values are in the + range from 0 to 100. + */ + void setPercentComplete( int ); + + /** + Returns date and time when todo was completed. + */ + QDateTime completed() const; + /** + Returns string contaiting date and time when the todo was completed + formatted according to the users locale settings. + */ + QString completedStr() const; + /** + Set date and time of completion. + */ + void setCompleted( const QDateTime &completed ); + + /** + Returns true, if todo has a date associated with completion, otherwise + return false. + */ + bool hasCompletedDate() const; + + /** + Sets the due date/time of the current occurrence if recurrent. + */ + void setDtRecurrence( const QDateTime &dt ); + + /** + Returns the due date/time of the current occurrence if recurrent. + */ + QDateTime dtRecurrence() const; + + /** + Returns true if the date specified is one on which the todo will + recur. Todo's are a special case, hence the overload. It adds an extra + check, which make it return false if there's an occurrence between + the recurstart and today. + */ + virtual bool recursOn( const QDate &date ) const; + + /** + Returns true if this todo is overdue (e.g. due date is lower than today + and not completed), else false. + */ + bool isOverdue() const; + + protected: + /** Return the end date/time of the base incidence. */ + virtual QDateTime endDateRecurrenceBase() const { return dtDue(); } + + private: + bool accept(Visitor &v) { return v.visit( this ); } + /** Returns true if the todo got a new date, else false will be returned. */ + bool recurTodo(); + + QDateTime mDtDue; // due date of todo + // (first occurrence if recurrent) + QDateTime mDtRecurrence; // due date of recurrence + + bool mHasDueDate; // if todo has associated due date + bool mHasStartDate; // if todo has associated start date + + QDateTime mCompleted; + bool mHasCompletedDate; + + int mPercentComplete; + + class Private; + Private *d; +}; + +} + +#endif |