/************************************************************************** * Copyright (C) 2004 by Reinhold Kainhofer * * * * 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. * ***************************************************************************/ #ifndef API_BLOG_H #define API_BLOG_H #include #include #include #include #include #include #include /** This is the main interface for blog backends @author ian reinhart geiser, Reinhold Kainhofer */ namespace KBlog { class BlogPosting { public: BlogPosting() {} virtual ~BlogPosting() {} TQString userID() const { return mUserID; } void setUserID( const TQString &userID ) { mUserID = userID; } TQString blogID() const { return mBlogID; } void setBlogID( const TQString &blogID ) { mBlogID = blogID; } TQString postID() const { return mPostID; } void setPostID( const TQString &postID ) { assignPostID( postID ); mPostID = postID; } TQString title() const { return mTitle; } void setTitle( const TQString &title ) { mTitle = title; } TQString content() const { return mContent; } void setContent( const TQString &content ) { mContent = content; } TQString category() const { return mCategory; } void setCategory( const TQString &category ) { mCategory = category; } TQString fingerprint() const { return mFingerprint; } void setFingerprint( const TQString &fp ) { mFingerprint = fp; } TQDateTime dateTime() const { return mDateTime; } void setDateTime( const TQDateTime &datetime ) { mDateTime = datetime; } TQDateTime creationDateTime() const { return mCreationDateTime; } void setCreationDateTime( const TQDateTime &datetime ) { mCreationDateTime = datetime; } TQDateTime modificationDateTime() const { return mModificationDateTime; } void setModificationDateTime( const TQDateTime &datetime ) { mModificationDateTime = datetime; } virtual void wasDeleted( bool ) {} virtual void wasUploaded( bool ) {} virtual void error( int /*code*/, const TQString &/*error*/ ) {} protected: // Override this method to detect the new postID assigned when adding a new post virtual void assignPostID( const TQString &/*postID*/ ) {} TQString mUserID; TQString mBlogID; TQString mPostID; TQString mTitle; TQString mContent; TQString mCategory; TQString mFingerprint; TQDateTime mDateTime; TQDateTime mCreationDateTime; TQDateTime mModificationDateTime; }; class APIBlog : public TQObject { Q_OBJECT public: APIBlog( const KURL &server, TQObject *parent = 0L, const char *name = 0L ); virtual ~APIBlog(); virtual TQString interfaceName() const = 0; void setAppID( const TQString &appID ) { mAppID = appID; } TQString appID() const { return mAppID; } void setPassword( const TQString &pass ) { mPassword = pass; } TQString password() const { return mPassword; } void setUsername( const TQString &uname ) { mUsername = uname; } TQString username() const { return mUsername; } void setURL( const KURL& url ) { mServerURL = url; } KURL url() const { return mServerURL; } void setDownloadCount( int nr ) { mDownloadCount = nr; } int downloadCount() const { return mDownloadCount; } static void dumpBlog( BlogPosting *blog ); enum blogFunctions { bloggerGetUserInfo, bloggerGetUsersBlogs, bloggerGetRecentPosts, bloggerNewPost, bloggerEditPost, bloggerDeletePost, bloggerGetPost, bloggerGetTemplate, bloggerSetTemplate }; virtual TQString getFunctionName( blogFunctions type ) = 0; virtual TQValueList defaultArgs( const TQString &id = TQString() ); virtual TDEIO::Job *createUserInfoJob() = 0; virtual TDEIO::Job *createListFoldersJob() = 0; virtual TDEIO::TransferJob *createListItemsJob( const KURL &url ) = 0; virtual TDEIO::TransferJob *createDownloadJob( const KURL &url ) = 0; virtual TDEIO::TransferJob *createUploadJob( const KURL &url, KBlog::BlogPosting *posting ) = 0; virtual TDEIO::TransferJob *createUploadNewJob( KBlog::BlogPosting *posting ) = 0; virtual TDEIO::Job *createRemoveJob( const KURL &url, const TQString &postid ) = 0; virtual bool interpretUserInfoJob( TDEIO::Job *job ) = 0; virtual void interpretListFoldersJob( TDEIO::Job *job ) = 0; virtual bool interpretListItemsJob( TDEIO::Job *job ) = 0; virtual bool interpretDownloadItemsJob( TDEIO::Job *job ) = 0; static KCal::Journal *journalFromPosting( KBlog::BlogPosting *post ); static KBlog::BlogPosting *postingFromJournal( KCal::Journal *journal ); signals: // TODO: Connect these void userInfoRetrieved( const TQString &nickname, const TQString &userid, const TQString &email ); void folderInfoRetrieved( const TQString &id, const TQString &name ); void itemOnServer( const KURL &remoteURL ); void itemDownloaded( KCal::Incidence *j, const TQString &localID, const KURL &remoteURL, const TQString &fingerprint, const TQString &storageLocation ); protected: KURL mServerURL; TQString mPassword; TQString mUsername; TQString mAppID; int mDownloadCount; }; } #endif