diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 (patch) | |
tree | 67208f7c145782a7e90b123b982ca78d88cc2c87 /libkcal/scheduler.h | |
download | tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.tar.gz tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'libkcal/scheduler.h')
-rw-r--r-- | libkcal/scheduler.h | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/libkcal/scheduler.h b/libkcal/scheduler.h new file mode 100644 index 000000000..0aa4b366a --- /dev/null +++ b/libkcal/scheduler.h @@ -0,0 +1,193 @@ +/* + 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_SCHEDULER_H +#define KCAL_SCHEDULER_H + +#include <qstring.h> +#include <qptrlist.h> + +#include "libkcal_export.h" + +namespace KCal { + +class IncidenceBase; +class Event; +class Calendar; +class ICalFormat; +class FreeBusyCache; + +/** + This class provides an encapsulation of a scheduling message. It associates an + incidence with a method and status information. This class is used by the + Scheduler class. + + @short A Scheduling message +*/ +class ScheduleMessage +{ + public: + /** + Message status. + */ + enum Status { PublishNew, PublishUpdate, Obsolete, RequestNew, + RequestUpdate, Unknown }; + + /** + Create a scheduling message with method as defined in Scheduler::Method + and a status. + */ + ScheduleMessage( IncidenceBase *, int method, Status status ); + ~ScheduleMessage() {}; + + /** + Return event associated with this message. + */ + IncidenceBase *event() { return mIncidence; } + /** + Return iTIP method associated with this message. + */ + int method() { return mMethod; } + /** + Return status of this message. + */ + Status status() { return mStatus; } + /** + Return error message if there is any. + */ + QString error() { return mError; } + + /** + Return a human-readable name for an iTIP message status. + */ + static QString statusName( Status status ); + + private: + IncidenceBase *mIncidence; + int mMethod; + Status mStatus; + QString mError; + + class Private; + Private *d; +}; + +/** + This class provides an encapsulation of iTIP transactions. It is an abstract + base class for inheritance by implementations of the iTIP scheme like iMIP or + iRIP. +*/ +class LIBKCAL_EXPORT Scheduler +{ + public: + /** + iTIP methods. + */ + enum Method { Publish,Request,Refresh,Cancel,Add,Reply,Counter, + Declinecounter,NoMethod }; + + /** + Create scheduler for calendar specified as argument. + */ + Scheduler( Calendar *calendar ); + virtual ~Scheduler(); + + /** + iTIP publish action + */ + virtual bool publish( IncidenceBase *incidence, + const QString &recipients ) = 0; + /** + Perform iTIP transaction on incidence. The method is specified as the + method argument and can be any valid iTIP method. + */ + virtual bool performTransaction( IncidenceBase *incidence, + Method method ) = 0; + /** + Perform iTIP transaction on incidence to specified recipient(s). The + method is specified as the method argumanet and can be any valid iTIP + method. + */ + virtual bool performTransaction( IncidenceBase *incidence, Method method, + const QString &recipients ) = 0; + /** + Retrieve incoming iTIP transactions. + */ + virtual QPtrList<ScheduleMessage> retrieveTransactions() = 0; + + /** + Accept transaction. The incidence argument specifies the iCal compoennt + on which the transaction acts. The status is the result of processing a + iTIP message with the current calendar and specifies the action to be + taken for this incidence. + */ + bool acceptTransaction( IncidenceBase *, Method method, + ScheduleMessage::Status status ); + + /** + Return a machine-readable name for a iTIP method. + */ + static QString methodName( Method ); + /** + Return a translated human-readable name for a iTIP method. + */ + static QString translatedMethodName( Method ); + + virtual bool deleteTransaction( IncidenceBase *incidence ); + + /** + Returns the directory where the free-busy information is stored. + */ + virtual QString freeBusyDir() = 0; + + /** + Set free/busy cache used to store free/busy information. + */ + void setFreeBusyCache( FreeBusyCache * ); + /** + Return free/busy cache. + */ + FreeBusyCache *freeBusyCache() const; + + protected: + bool acceptPublish( IncidenceBase *, ScheduleMessage::Status status, + Method method ); + bool acceptRequest( IncidenceBase *, ScheduleMessage::Status status ); + bool acceptAdd( IncidenceBase *, ScheduleMessage::Status status ); + bool acceptCancel( IncidenceBase *, ScheduleMessage::Status status ); + bool acceptDeclineCounter( IncidenceBase *, + ScheduleMessage::Status status ); + bool acceptReply( IncidenceBase *, ScheduleMessage::Status status, + Method method ); + bool acceptRefresh( IncidenceBase *, ScheduleMessage::Status status ); + bool acceptCounter( IncidenceBase *, ScheduleMessage::Status status ); + bool acceptFreeBusy( IncidenceBase *, Method method ); + + Calendar *mCalendar; + ICalFormat *mFormat; + + private: + class Private; + Private *d; +}; + +} + +#endif |