diff -r 86af6c333601 -r 0446eb7b28aa smf/inc/smfplugins/smfcontacts/smfpostproviderplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/smf/inc/smfplugins/smfcontacts/smfpostproviderplugin.h Thu Apr 15 15:35:36 2010 +0530 @@ -0,0 +1,197 @@ +/** + * Copyright (c) 2010 Sasken Communication Technologies Ltd. + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of the "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html" + * + * Initial Contributors: + * Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution + * + * Contributors: + * Manasij Roy, Nalina Hariharan + * + * @section DESCRIPTION + * + * Interface specification for getting/posting updates to a social site + * + */ + + +#ifndef SMFPOSTPROVIDERPLUGIN_H_ +#define SMFPOSTPROVIDERPLUGIN_H_ + +#include +#include +#include +#include + +// Forward declaration +class SmfPluginManagerUtil; + +/** + * SmfPresenceInfo. + * Indicates the presence information of user like Online, Offline, Busy, + * Do no disturb, Appear Offline etc. + */ +enum SmfPresenceInfo + { + ENotSupported, + EOnline, + EOffline, + EBusy, + EDoNotDisturb, + EAppearOffline, + EOther + }; + +/** + * @ingroup smf_plugin_group + * Interface to get/update the posts to a service provider. This class + * provides basic functionality to allow applications to obtain list of + * posts, updates posts or change the presence information to a social + * networking service. + * + * All of the functionality described here should be implemented by a service + * specific plug-in. + */ +class SmfPostProviderPlugin : public SmfPluginBase + { + Q_OBJECT +public: + /** + * Constructor with default argument + * @param aUtil The SmfPluginManagerUtil instance. The plugins can + * call the method getAuthKeys() of this class, with its pluginID to + * get the OAuth keys, keys are returned only if this plugin is + * authorised by Smf franework + */ + SmfPostProviderPlugin( SmfPluginManagerUtil* aUtil ); + + /** + * Destructor + */ + ~SmfPostProviderPlugin( ); + + /** + * Method that returns maximum no of chars (unicode) that service + * provider can post without truncation. Negative value means + * no limit + * @return Max characters that can be posted without truncation + */ + virtual qint32 maxCharsInPost( ) const = 0; + /** + * Method that returns maximum no of items that can be returned + * in a single query to getPosts. Negative value means feature + * not supported. + * @return Max items that can be returned in a single query + */ + virtual qint32 maxItems( ) const = 0; + + /** + * supportedFormats ( ) const = 0; + + /** + * Method that returns whether this SP supports Appearence + * @return Returns true if Appearance is supported, else false. + * @see SmfAppearenceInfo + */ + virtual bool supportsAppearence ( ) const = 0; + + /** + * Method to get the latest posts + * @param aRequest [out] The request data to be sent to network + * @param aUser The user's contact in this SP, omit for self contact + * @param aPageNum The page to be extracted + * @param aItemsPerPage Number of items per page + * @return SmfPluginError Plugin error if any, else SmfPluginErrNone + */ + virtual SmfPluginError retrieve( SmfPluginRequestData &aRequest, + const SmfContact &aUser = 0, + const int aPageNum = SMF_FIRST_PAGE, + const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0; + + + /** + * Method to update a post to own area. + * @param aRequest [out] The request data to be sent to network + * @param aPostData The post data to be posted + * @param aLocation The location + * @return SmfPluginError Plugin error if any, else SmfPluginErrNone + */ + virtual SmfPluginError post( SmfPluginRequestData &aRequest, + const SmfPost &aPostData, + const SmfPlace &aLocation ) = 0; + + /** + * Method to update the last post to own area with new data + * @param aRequest [out] The request data to be sent to network + * @param aPostData The edited/new data to be posted + * @return SmfPluginError Plugin error if any, else SmfPluginErrNone + */ + virtual SmfPluginError updatePost( SmfPluginRequestData &aRequest, + const SmfPost &aPostData ) = 0; + + /** + * Method to update a post to a particular contact + * @param aRequest [out] The request data to be sent to network + * @param aPostData The post data to be posted + * @param aContact The contact where the data has to be posted + * @param aLocation The location + * @return SmfPluginError Plugin error if any, else SmfPluginErrNone + */ + virtual SmfPluginError postDirected( SmfPluginRequestData &aRequest, + const SmfPost &aPostData, + const SmfContact &aContact, + const SmfPlace &aLocation = NULL ) = 0; + + + /** + * Method to post a comment on a post. + * @param aRequest [out] The request data to be sent to network + * @param aTarget Post on which comment has to be posted + * @param aComment comment to be posted + * @param aLocation location data + */ + virtual SmfPluginError commentOnAPost(SmfPluginRequestData &aRequest, + const SmfPost& aTarget, + const SmfPost& aComment, + const SmfPlace &aLocation = NULL); + + /** + * Method to update the presence information of the user + * @param aRequest [out] The request data to be sent to network + * @param aAppearence The appearence information + * @param aStatus The status string + * @return SmfPluginError Plugin error if any, else SmfPluginErrNone + */ + virtual SmfPluginError postAppearence( SmfPluginRequestData &aRequest, + const SmfPresenceInfo &aAppearence, + const QString &aStatus ) = 0; + + /** + * Share /a contact's post to user's friends and followers + * (e.g. retweet in twitter, share on facebook) + * @param aRequest [out] The request data to be sent to network + * @param aPostData data to be posted + * @param aContact contact to which the post belonged + * @param aEdited whether user changed items within the post + * @return SmfPluginError Plugin error if any, else SmfPluginErrNone + */ + virtual SmfPluginError sharePost( SmfPluginRequestData &aRequest, + const SmfPost& aPostData, + const SmfContact& aContact, + const bool &aEdited); + + + }; + +Q_DECLARE_INTERFACE( SmfPostProviderPlugin, "org.symbian.smf.plugin.contact.posts/v1.0" ); + +#endif /* SMFPOSTPROVIDERPLUGIN_H_ */