home *** CD-ROM | disk | FTP | other *** search
- /*
- 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
-