summaryrefslogtreecommitdiffstats
path: root/kresources/caldav/job.h
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-05-24 17:21:58 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-05-24 17:21:58 +0000
commita71c4476a79950040c9007f84af25cef4e28b351 (patch)
tree20d54bfeb827604e6b1c4ca01e9702346ddcc068 /kresources/caldav/job.h
parent45c9a75f1220817f57304df51e018f8cc66aaea4 (diff)
downloadtdepim-a71c4476a79950040c9007f84af25cef4e28b351.tar.gz
tdepim-a71c4476a79950040c9007f84af25cef4e28b351.zip
Initial CalDAV support
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1130194 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kresources/caldav/job.h')
-rw-r--r--kresources/caldav/job.h131
1 files changed, 131 insertions, 0 deletions
diff --git a/kresources/caldav/job.h b/kresources/caldav/job.h
new file mode 100644
index 000000000..853ef5610
--- /dev/null
+++ b/kresources/caldav/job.h
@@ -0,0 +1,131 @@
+/*=========================================================================
+| KCalDAV
+|--------------------------------------------------------------------------
+| (c) 2010 Timothy Pearson
+| (c) 2009 Kumaran Santhanam (initial KDE4 version)
+|
+| This project is released under the GNU General Public License.
+| Please see the file COPYING for more details.
+|--------------------------------------------------------------------------
+| Job class for accessing remote calendars.
+ ========================================================================*/
+
+/*=========================================================================
+| INCLUDES
+ ========================================================================*/
+
+#ifndef KCALDAV_JOB_H
+#define KCALDAV_JOB_H
+
+#include <qthread.h>
+#include <qstring.h>
+#include <qdatetime.h>
+
+extern "C" {
+ #include <libcaldav/caldav.h>
+}
+
+namespace KCal {
+
+/*=========================================================================
+| CLASS
+ ========================================================================*/
+
+/**
+ * Calendar job.
+ */
+class CalDavJob : public QThread {
+
+public:
+
+ /**
+ * @param url URL to load.
+ */
+ CalDavJob(const QString& url = QString());
+
+ virtual ~CalDavJob();
+
+ /**
+ * Sets a new URL to load.
+ */
+ virtual void setUrl(const QString& s) {
+ mUrl = s;
+ }
+
+ /**
+ * @return URL to load.
+ */
+ virtual QString url() const {
+ return mUrl;
+ }
+
+ /**
+ * @return true if downloading process failed.
+ */
+ virtual bool error() const {
+ return mError;
+ }
+
+ /**
+ * @return an error string.
+ */
+ virtual QString errorString() const {
+ return mErrorString;
+ }
+
+ /**
+ * @return an error number.
+ */
+ virtual long errorNumber() const {
+ return mErrorNumber;
+ }
+
+protected:
+
+ virtual void run();
+
+ /**
+ * Main run method for jobs. Jobs should not override run() method.
+ * Instead of this they should override this one.
+ * @param caldavRuntime specific libcaldav runtime information. This pointer should not be saved for the usage
+ * outside of runJob.
+ * @return libcaldav response code (see CALDAV_RESPONSE)
+ */
+ virtual int runJob(runtime_info* caldavRuntime) = 0;
+
+ /**
+ * Some cleaning. Jobs may (and usually should) override this method.
+ */
+ virtual void cleanJob() {
+ mError = false;
+ mErrorString = "";
+ mErrorNumber = 0;
+ }
+
+ /**
+ * Sets an error string to @p err. Also sets an error flag.
+ */
+ void setErrorString(const QString& str, const long number);
+
+ /**
+ * Process an error.
+ * Subclasses can overwrite this method, if some special error message handling
+ * should be done. Call setErrorString() to set the error after processing is done.
+ * @param err error structure.
+ */
+ virtual void processError(const caldav_error* err);
+
+private:
+
+ QString mUrl;
+ bool mError;
+ QString mErrorString;
+ long mErrorNumber;
+
+ void enableCaldavDebug(runtime_info*);
+};
+
+} // namespace KCal
+
+#endif // KCALDAV_JOB_H
+