summaryrefslogtreecommitdiffstats
path: root/tderesources/slox/kcalresourceslox.h
diff options
context:
space:
mode:
Diffstat (limited to 'tderesources/slox/kcalresourceslox.h')
-rw-r--r--tderesources/slox/kcalresourceslox.h168
1 files changed, 168 insertions, 0 deletions
diff --git a/tderesources/slox/kcalresourceslox.h b/tderesources/slox/kcalresourceslox.h
new file mode 100644
index 00000000..6735b993
--- /dev/null
+++ b/tderesources/slox/kcalresourceslox.h
@@ -0,0 +1,168 @@
+/*
+ This file is part of tdepim.
+
+ Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org>
+
+ 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 <tqptrlist.h>
+#include <tqstring.h>
+#include <tqdatetime.h>
+#include <tqdom.h>
+
+#include <kurl.h>
+#include <kconfig.h>
+#include <kdirwatch.h>
+#include <tdepimmacros.h>
+
+#include <libkcal/incidence.h>
+#include <libkcal/todo.h>
+#include <libkcal/calendarlocal.h>
+#include <libkcal/icalformat.h>
+#include <libkcal/resourcecached.h>
+
+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; }
+
+ KABC::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;
+
+ KABC::Lock *mLock;
+
+ WebdavHandler mWebdavHandler;
+
+ SloxAccounts *mAccounts;
+};
+
+#endif