/* This file is part of tdepim. Copyright (c) 2004 Cornelius Schumacher This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef KCALRESOURCESLOX_H #define KCALRESOURCESLOX_H #include "sloxbase.h" #include "webdavhandler.h" #include #include #include #include #include #include #include #include #include #include #include #include #include namespace TDEIO { class FileCopyJob; class Job; class DavJob; } namespace KCal { class SloxPrefs; } namespace KPIM { class ProgressItem; } class SloxAccounts; /** This class provides a calendar stored as a remote file. */ class KDE_EXPORT KCalResourceSlox : public KCal::ResourceCached, public SloxBase { Q_OBJECT friend class KCalResourceSloxConfig; public: /** Reload policy. @see setReloadPolicy(), reloadPolicy() */ enum { ReloadNever, ReloadOnStartup, ReloadOnceADay, ReloadAlways }; /** Create resource from configuration information stored in TDEConfig object. */ KCalResourceSlox( const TDEConfig * ); KCalResourceSlox( const KURL &url ); ~KCalResourceSlox(); void readConfig( const TDEConfig *config ); void writeConfig( TDEConfig *config ); KCal::SloxPrefs *prefs() const { return mPrefs; } TDEABC::Lock *lock(); bool isSaving(); void dump() const; protected slots: void slotLoadEventsResult( TDEIO::Job * ); void slotLoadTodosResult( TDEIO::Job * ); void slotUploadResult( TDEIO::Job * ); void slotEventsProgress( TDEIO::Job *job, unsigned long percent ); void slotTodosProgress( TDEIO::Job *job, unsigned long percent ); void slotUploadProgress( TDEIO::Job *job, unsigned long percent ); void cancelLoadEvents(); void cancelLoadTodos(); void cancelUpload(); protected: void doClose(); bool doLoad(); bool doSave(); void requestEvents(); void requestTodos(); void uploadIncidences(); void parseMembersAttribute( const TQDomElement &e, KCal::Incidence *incidence ); void parseReadRightsAttribute( const TQDomElement &e, KCal::Incidence *incidence ); void parseIncidenceAttribute( const TQDomElement &e, KCal::Incidence *incidence ); void parseTodoAttribute( const TQDomElement &e, KCal::Todo *todo ); void parseEventAttribute( const TQDomElement &e, KCal::Event *event ); void parseRecurrence( const TQDomNode &n, KCal::Event *event ); void createIncidenceAttributes( TQDomDocument &doc, TQDomElement &parent, KCal::Incidence *incidence ); void createEventAttributes( TQDomDocument &doc, TQDomElement &parent, KCal::Event *event ); void createTodoAttributes( TQDomDocument &doc, TQDomElement &parent, KCal::Todo *todo ); void createRecurrenceAttributes( TQDomDocument &doc, TQDomElement &parent, KCal::Incidence *incidence ); bool confirmSave(); TQString sloxIdToEventUid( const TQString &sloxId ); TQString sloxIdToTodoUid( const TQString &sloxId ); private: void init(); KCal::SloxPrefs *mPrefs; TDEIO::DavJob *mLoadEventsJob; TDEIO::DavJob *mLoadTodosJob; TDEIO::DavJob *mUploadJob; KPIM::ProgressItem *mLoadEventsProgress; KPIM::ProgressItem *mLoadTodosProgress; KPIM::ProgressItem *mUploadProgress; KCal::Incidence *mUploadedIncidence; bool mUploadIsDelete; TDEABC::Lock *mLock; WebdavHandler mWebdavHandler; SloxAccounts *mAccounts; }; #endif