diff options
Diffstat (limited to 'kresources/carddav/job.h')
-rw-r--r-- | kresources/carddav/job.h | 161 |
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 + |