summaryrefslogtreecommitdiffstats
path: root/kresources/carddav/job.h
diff options
context:
space:
mode:
Diffstat (limited to 'kresources/carddav/job.h')
-rw-r--r--kresources/carddav/job.h161
1 files changed, 161 insertions, 0 deletions
diff --git a/kresources/carddav/job.h b/kresources/carddav/job.h
new file mode 100644
index 000000000..6d6f8a8ae
--- /dev/null
+++ b/kresources/carddav/job.h
@@ -0,0 +1,161 @@
+/*=========================================================================
+| KCardDAV
+|--------------------------------------------------------------------------
+| (c) 2010 Timothy Pearson
+|
+| This project is released under the GNU General Public License.
+| Please see the file COPYING for more details.
+|--------------------------------------------------------------------------
+| Job class for accessing remote address books.
+ ========================================================================*/
+
+/*=========================================================================
+| INCLUDES
+ ========================================================================*/
+
+#ifndef KABCDAV_JOB_H
+#define KABCDAV_JOB_H
+
+#include <qthread.h>
+#include <qstring.h>
+#include <qdatetime.h>
+#include <qapplication.h>
+
+extern "C" {
+ #include <libcarddav/carddav.h>
+}
+
+namespace KABC {
+
+/*=========================================================================
+| CLASS
+ ========================================================================*/
+
+/**
+ * Calendar job.
+ */
+class CardDavJob : public QThread {
+
+public:
+
+ /**
+ * @param url URL to load.
+ */
+ CardDavJob(const QString& url = QString());
+
+ virtual ~CardDavJob();
+
+ /**
+ * Sets a new URL to load.
+ */
+ virtual void setUrl(const QString& s) {
+ mUrl = s;
+ }
+
+ /**
+ * Sets the parent qobject.
+ */
+ virtual void setParent(QObject *s) {
+ mParent = s;
+ }
+
+ /**
+ * Sets the type (0==read, 1==write)
+ */
+ virtual void setType(int s) {
+ mType = s;
+ }
+
+ /**
+ * @return URL to load.
+ */
+ virtual QString url() const {
+ return mUrl;
+ }
+
+ /**
+ * @return parent object
+ */
+ virtual QObject *parent() {
+ return mParent;
+ }
+
+ /**
+ * @return type
+ */
+ virtual int type() {
+ return mType;
+ }
+
+ /**
+ * @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 carddavRuntime specific libcarddav runtime information. This pointer should not be saved for the usage
+ * outside of runJob.
+ * @return libcarddav response code (see CARDDAV_RESPONSE)
+ */
+ virtual int runJob(runtime_info* carddavRuntime) = 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 carddav_error* err);
+
+private:
+
+ QString mUrl;
+ bool mError;
+ QString mErrorString;
+ long mErrorNumber;
+ QObject *mParent;
+ int mType;
+
+ void enableCarddavDebug(runtime_info*);
+};
+
+} // namespace KABC
+
+#endif // KABCDAV_JOB_H
+