Updating the sample plugin and other related changes for clients and plugins
authorcgandhi <chandradeep.gandhi@sasken.com>
Thu, 15 Apr 2010 15:35:36 +0530
changeset 3 0446eb7b28aa
parent 2 86af6c333601
child 4 969092730d34
Updating the sample plugin and other related changes for clients and plugins
Doxyfile
example/clientapi/example_usage.cpp
example/clientapi/smf/inc/common/SmfClientGlobal.h
example/clientapi/smf/inc/common/smfcomment/smfcomment.h
example/clientapi/smf/inc/common/smfcomment/smfcomment_p.h
example/clientapi/smf/inc/common/smfcontacts/smfcontact.h
example/clientapi/smf/inc/common/smfcontacts/smfcontact_p.h
example/clientapi/smf/inc/common/smfcontacts/smfgroup.h
example/clientapi/smf/inc/common/smfcontacts/smfgroup_p.h
example/clientapi/smf/inc/common/smfcontacts/smfpost.h
example/clientapi/smf/inc/common/smfcontacts/smfpost_p.h
example/clientapi/smf/inc/common/smfdes.h
example/clientapi/smf/inc/common/smfevent/smfevent.h
example/clientapi/smf/inc/common/smfevent/smfevent_p.h
example/clientapi/smf/inc/common/smfglobal.h
example/clientapi/smf/inc/common/smfmusic/smfalbum.h
example/clientapi/smf/inc/common/smfmusic/smfalbum_p.h
example/clientapi/smf/inc/common/smfmusic/smfartists.h
example/clientapi/smf/inc/common/smfmusic/smfartists_p.h
example/clientapi/smf/inc/common/smfmusic/smflyrics.h
example/clientapi/smf/inc/common/smfmusic/smflyrics_p.h
example/clientapi/smf/inc/common/smfmusic/smfmusicfingerprint.h
example/clientapi/smf/inc/common/smfmusic/smfmusicfingerprint_p.h
example/clientapi/smf/inc/common/smfmusic/smfmusicprofile.h
example/clientapi/smf/inc/common/smfmusic/smfmusicprofile_p.h
example/clientapi/smf/inc/common/smfmusic/smfmusicrating.h
example/clientapi/smf/inc/common/smfmusic/smfmusicrating_p.h
example/clientapi/smf/inc/common/smfmusic/smfplaylist.h
example/clientapi/smf/inc/common/smfmusic/smfplaylist_p.h
example/clientapi/smf/inc/common/smfmusic/smfsubtitle.h
example/clientapi/smf/inc/common/smfmusic/smfsubtitle_p.h
example/clientapi/smf/inc/common/smfmusic/smftrackinfo.h
example/clientapi/smf/inc/common/smfmusic/smftrackinfo_p.h
example/clientapi/smf/inc/common/smfpictures/smfpicture.h
example/clientapi/smf/inc/common/smfpictures/smfpicture_p.h
example/clientapi/smf/inc/common/smfplace/smfplace.h
example/clientapi/smf/inc/common/smfplace/smfplace_p.h
example/clientapi/smf/inc/smfclient/smfclient.h
example/clientapi/smf/inc/smfclient/smfcontactfetcher.h
example/clientapi/smf/inc/smfclient/smfgallery.h
example/clientapi/smf/inc/smfclient/smfmusic.h
example/clientapi/smf/inc/smfclient/smfpostprovider.h
example/clientapi/smf/inc/smfclient/smfprovider.h
example/clientapi/smf/inc/smfplugins/base/smfpluginbase.h
example/clientapi/smf/inc/smfplugins/base/smfproviderbase.h
example/clientapi/smf/inc/smfplugins/base/smfproviderbase_p.h
example/clientapi/smf/inc/smfplugins/smfcontacts/smfcontactfetcherplugin.h
example/clientapi/smf/inc/smfplugins/smfcontacts/smfpostproviderplugin.h
example/clientapi/smf/inc/smfplugins/smfmusic/smflyricsserviceplugin.h
example/clientapi/smf/inc/smfplugins/smfmusic/smfmusiceventsplugin.h
example/clientapi/smf/inc/smfplugins/smfmusic/smfmusicsearchplugin.h
example/clientapi/smf/inc/smfplugins/smfmusic/smfmusicserviceplugin.h
example/clientapi/smf/inc/smfplugins/smfmusic/smfplaylistserviceplugin.h
example/clientapi/smf/inc/smfplugins/smfpictures/smfgalleryplugin.h
example/sampleplugin/sampleplugin.cpp
example/sampleplugin/sampleplugin.h
smf/inc/common/smfclientglobal.h
smf/inc/common/smfcomment/smfcomment.h
smf/inc/common/smfcomment/smfcomment_p.h
smf/inc/common/smfcontacts/smfcontact.h
smf/inc/common/smfcontacts/smfcontact_p.h
smf/inc/common/smfcontacts/smfgroup.h
smf/inc/common/smfcontacts/smfgroup_p.h
smf/inc/common/smfcontacts/smfpost.h
smf/inc/common/smfcontacts/smfpost_p.h
smf/inc/common/smfdes.h
smf/inc/common/smfevent/smfevent.h
smf/inc/common/smfevent/smfevent_p.h
smf/inc/common/smfglobal.h
smf/inc/common/smfmusic/smfalbum.h
smf/inc/common/smfmusic/smfalbum_p.h
smf/inc/common/smfmusic/smfartists.h
smf/inc/common/smfmusic/smfartists_p.h
smf/inc/common/smfmusic/smflyrics.h
smf/inc/common/smfmusic/smflyrics_p.h
smf/inc/common/smfmusic/smfmusicfingerprint.h
smf/inc/common/smfmusic/smfmusicfingerprint_p.h
smf/inc/common/smfmusic/smfmusicprofile.h
smf/inc/common/smfmusic/smfmusicprofile_p.h
smf/inc/common/smfmusic/smfmusicrating.h
smf/inc/common/smfmusic/smfmusicrating_p.h
smf/inc/common/smfmusic/smfplaylist.h
smf/inc/common/smfmusic/smfplaylist_p.h
smf/inc/common/smfmusic/smfsubtitle.h
smf/inc/common/smfmusic/smfsubtitle_p.h
smf/inc/common/smfmusic/smftrackinfo.h
smf/inc/common/smfmusic/smftrackinfo_p.h
smf/inc/common/smfpictures/smfpicture.h
smf/inc/common/smfpictures/smfpicture_p.h
smf/inc/common/smfplace/smfplace.h
smf/inc/common/smfplace/smfplace_p.h
smf/inc/smfclient/smfclient.h
smf/inc/smfclient/smfcontactfetcher.h
smf/inc/smfclient/smfgallery.h
smf/inc/smfclient/smfmusic.h
smf/inc/smfclient/smfpostprovider.h
smf/inc/smfclient/smfprovider.h
smf/inc/smfplugins/base/smfpluginbase.h
smf/inc/smfplugins/base/smfpluginutil.h
smf/inc/smfplugins/base/smfproviderbase.h
smf/inc/smfplugins/base/smfproviderbase_p.h
smf/inc/smfplugins/smfcontacts/smfcontactfetcherplugin.h
smf/inc/smfplugins/smfcontacts/smfpostproviderplugin.h
smf/inc/smfplugins/smfmusic/smflyricsserviceplugin.h
smf/inc/smfplugins/smfmusic/smfmusiceventsplugin.h
smf/inc/smfplugins/smfmusic/smfmusicsearchplugin.h
smf/inc/smfplugins/smfmusic/smfmusicserviceplugin.h
smf/inc/smfplugins/smfmusic/smfplaylistserviceplugin.h
smf/inc/smfplugins/smfpictures/smfgalleryplugin.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Doxyfile	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,279 @@
+# Doxyfile 1.5.5
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+DOXYFILE_ENCODING      = UTF-8
+PROJECT_NAME           = SMF
+PROJECT_NUMBER         = 
+OUTPUT_DIRECTORY       = doc
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = "The $name class" \
+                         "The $name widget" \
+                         "The $name file" \
+                         is \
+                         provides \
+                         specifies \
+                         contains \
+                         represents \
+                         a \
+                         an \
+                         the
+ALWAYS_DETAILED_SEC    = NO
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = YES
+STRIP_FROM_PATH        = 
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = NO
+QT_AUTOBRIEF           = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+SEPARATE_MEMBER_PAGES  = NO
+TAB_SIZE               = 8
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = NO
+OPTIMIZE_OUTPUT_JAVA   = NO
+OPTIMIZE_FOR_FORTRAN   = NO
+OPTIMIZE_OUTPUT_VHDL   = NO
+BUILTIN_STL_SUPPORT    = NO
+CPP_CLI_SUPPORT        = NO
+SIP_SUPPORT            = NO
+DISTRIBUTE_GROUP_DOC   = NO
+SUBGROUPING            = YES
+TYPEDEF_HIDES_STRUCT   = NO
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = YES
+EXTRACT_STATIC         = YES
+EXTRACT_LOCAL_CLASSES  = YES
+EXTRACT_LOCAL_METHODS  = NO
+EXTRACT_ANON_NSPACES   = NO
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = NO
+CASE_SENSE_NAMES       = NO
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = NO
+SORT_GROUP_NAMES       = NO
+SORT_BY_SCOPE_NAME     = NO
+GENERATE_TODOLIST      = YES
+GENERATE_TESTLIST      = YES
+GENERATE_BUGLIST       = YES
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+SHOW_DIRECTORIES       = NO
+FILE_VERSION_FILTER    = 
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = NO
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = 
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = smf example
+INPUT_ENCODING         = UTF-8
+FILE_PATTERNS          = *.c \
+                         *.cc \
+                         *.cxx \
+                         *.cpp \
+                         *.c++ \
+                         *.d \
+                         *.java \
+                         *.ii \
+                         *.ixx \
+                         *.ipp \
+                         *.i++ \
+                         *.inl \
+                         *.h \
+                         *.hh \
+                         *.hxx \
+                         *.hpp \
+                         *.h++ \
+                         *.idl \
+                         *.odl \
+                         *.cs \
+                         *.php \
+                         *.php3 \
+                         *.inc \
+                         *.m \
+                         *.mm \
+                         *.dox \
+                         *.py \
+                         *.f90 \
+                         *.f \
+                         *.vhd \
+                         *.vhdl
+RECURSIVE              = YES
+EXCLUDE                = 
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = 
+EXCLUDE_SYMBOLS        = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = *
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = 
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = YES
+INLINE_SOURCES         = YES
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION    = YES
+REFERENCES_LINK_SOURCE = YES
+USE_HTAGS              = YES
+VERBATIM_HEADERS       = YES
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = NO
+COLS_IN_ALPHA_INDEX    = 5
+IGNORE_PREFIX          = 
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = YES
+HTML_OUTPUT            = html
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = 
+HTML_FOOTER            = 
+HTML_STYLESHEET        = 
+HTML_ALIGN_MEMBERS     = YES
+GENERATE_HTMLHELP      = NO
+GENERATE_DOCSET        = NO
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+HTML_DYNAMIC_SECTIONS  = NO
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+BINARY_TOC             = NO
+TOC_EXPAND             = NO
+DISABLE_INDEX          = NO
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = NO
+TREEVIEW_WIDTH         = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = NO
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = YES
+USE_PDFLATEX           = YES
+LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = NO
+RTF_OUTPUT             = rtf
+COMPACT_RTF            = NO
+RTF_HYPERLINKS         = NO
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = NO
+XML_OUTPUT             = xml
+XML_SCHEMA             = 
+XML_DTD                = 
+XML_PROGRAMLISTING     = YES
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX = 
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = NO
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           = 
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = 
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+TAGFILES               = 
+GENERATE_TAGFILE       = 
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = NO
+MSCGEN_PATH            = 
+HIDE_UNDOC_RELATIONS   = YES
+HAVE_DOT               = YES
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = YES
+GROUP_GRAPHS           = YES
+UML_LOOK               = NO
+TEMPLATE_RELATIONS     = NO
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = YES
+CALL_GRAPH             = YES
+CALLER_GRAPH           = NO
+GRAPHICAL_HIERARCHY    = YES
+DIRECTORY_GRAPH        = YES
+DOT_IMAGE_FORMAT       = png
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+DOT_GRAPH_MAX_NODES    = 50
+MAX_DOT_GRAPH_DEPTH    = 1000
+DOT_TRANSPARENT        = YES
+DOT_MULTI_TARGETS      = NO
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+SEARCHENGINE           = NO
--- a/example/clientapi/example_usage.cpp	Tue Apr 06 16:35:37 2010 +0530
+++ b/example/clientapi/example_usage.cpp	Thu Apr 15 15:35:36 2010 +0530
@@ -57,6 +57,7 @@
 
 private:
 	MyAppView* m_view;
+	SmfClient client;
 	SmfGallery* m_smfgl;
 	SmfContactFetcher* m_smfcf;
 	SmfMusicService* m_smfms;
@@ -67,7 +68,7 @@
 void MyApplication::displayGallery()
 	{
 	// Some common interface for finding implementations.
-	QList<SmfProvider>* galleries = SmfClient::GetServices("org.symbian.smf.gallery\0.2");
+	QList<SmfProvider>* galleries = client.GetServices("org.symbian.smf.gallery\0.2");
 
 	// We will use the first one now
 	SmfProvider smfp = galleries->value(0);
@@ -138,7 +139,7 @@
 void MyApplication::displayFriends()
 	{
 	// Some common interface for finding implementations.
-	QList<SmfProvider>* contactFetcherList = SmfClient::GetServices("org.symbian.smf.contact.fetcher\0.2");
+	QList<SmfProvider>* contactFetcherList = client.GetServices("org.symbian.smf.contact.fetcher\0.2");
 	SmfProvider smfp = contactFetcherList->value(0);
 	SmfContactFetcher* smfcf = new SmfContactFetcher(&smfp);
 	
@@ -175,7 +176,7 @@
 void MyApplication::postUpdate()
 	{
 	// Some common interface for finding implementations.
-	QList<SmfProvider>* postServices = SmfClient::GetServices("org.symbian.smf.contact.posts\0.2");
+	QList<SmfProvider>* postServices = client.GetServices("org.symbian.smf.contact.posts\0.2");
 
 	//let us use the first one
 	QString servName = postServices->value(0).serviceName();
@@ -215,7 +216,7 @@
 void MyApplication::getMusic(SmfTrackInfo currTrack)
 	{
 	// Some common interface for finding implementations.
-	QList<SmfProvider>* smfProList = SmfClient::GetServices("org.symbian.smf.music\0.2");
+	QList<SmfProvider>* smfProList = client.GetServices("org.symbian.smf.music\0.2");
 	SmfProvider smfp = smfProList->value(0);
 	SmfMusicSearch* mServer = new SmfMusicSearch(&smfp);
 
@@ -237,7 +238,7 @@
 	foreach(SmfTrackInfo track, *songs){
 		m_view->add(track);
 	}
-	QList<SmfProvider>* smfProList = SmfClient::GetServices("org.symbian.smf.client.music.search\0.2");
+	QList<SmfProvider>* smfProList = client.GetServices("org.symbian.smf.client.music.search\0.2");
 	SmfProvider smfp = smfProList->value(0);
 	SmfMusicSearch* mServer = new SmfMusicSearch(&smfp);
 	//allow user to select a track and get purchase links
@@ -263,7 +264,7 @@
 	{
 
 	// Some common interface for finding implementations.
-	QList<SmfProvider>* smfProList = SmfClient::GetServices("org.symbian.smf.music.lyrics\0.2","lyricsfly.com");
+	QList<SmfProvider>* smfProList = client.GetServices("org.symbian.smf.music.lyrics\0.2","lyricsfly.com");
 	SmfProvider smfp = smfProList->value(0);
 	SmfLyricsService* lyricsService = new SmfLyricsService(&smfp);
 	QObject::connect(lyricsService,SIGNAL(lyricsAvailable(SmfLyricsList*, QString, SmfResultPage )),this,SLOT(showLyrics(SmfLyricsList*)));
--- a/example/clientapi/smf/inc/common/SmfClientGlobal.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/**
-* Copyright (c) 2010 Sasken Communication Technologies Ltd.
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the "{License}"
-* which accompanies  this distribution, and is available
-* at the URL "{LicenseUrl}".
-*
-* Initial Contributors:
-* Mansij Roy, Sasken Communication Technologies Ltd - Initial contribution
-*
-* Contributors:
-*
-* Description:
-* Interface spefication for sfm service provider
-*
-*/
-
-#ifndef SMFCLIENTGLOBAL_H_
-#define SMFCLIENTGLOBAL_H_
-
-#include <QtCore/QtGlobal>
-
-
-#ifdef SMFCLIENT_LIBRARY
-#  define SMFCLIENT_EXPORT Q_DECL_EXPORT
-#else
-#  define SMFCLIENT_EXPORT Q_DECL_IMPORT
-#endif
-
-/**
-* To be designed later
-*/
-#define SMF_GETSERVICES(INTERFACE,INTERFACESTRING) ;
-
-#endif /* SMFCLIENTGLOBAL_H_ */
--- a/example/clientapi/smf/inc/common/smfcomment/smfcomment.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The comment class represents a comment (on a picture or a music track etc)
- *
- */
-
-#ifndef SMFCOMMENT_H_
-#define SMFCOMMENT_H_
-
-#include <QDateTime>
-#include <qdatastream.h>
-#include <QSharedData>
-#include <smfclientglobal.h>
-
-class SmfCommentPrivate;
-
-/**
- * @ingroup smf_common_group
- * The comment class represents a comment (on a picture or a music track etc)
- */
-class SMFCLIENT_EXPORT SmfComment : public QObject
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object 
-	 */
-	SmfComment( QObject *aParent = 0 );
-	
-	/**
-	 * Copy Constructor
-	 * @param aOther The reference object
-	 */
-	SmfComment( const SmfComment &aOther );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfComment( );
-	
-	/**
-	 * Method to get the comment text
-	 * @return The comment text
-	 */
-	QString text( ) const;
-	
-	/**
-	 * Method to get the comment time stamp
-	 * @return The comment time stamp value
-	 */
-	QDateTime timeStamp( ) const;
-	
-	/**
-	 * Method to get the id of the comment
-	 * @return The ID value 
-	 */
-	QString id( ) const;
-	
-	/**
-	 * Method to set the comment text
-	 * @param aText The comment text to be set
-	 */
-	void setText( const QString &aText );
-	
-private:
-	QSharedDataPointer<SmfCommentPrivate> d;
-	
-	friend QDataStream &operator<<( QDataStream &aDataStream, 
-			const SmfComment &aComment );
-
-	friend QDataStream &operator>>( QDataStream &aDataStream, 
-			SmfComment &aComment );
-	
-	};
-
-
-/**
- * Method for Externalization. Writes the SmfComment object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aComment The SmfComment object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfComment &aComment );
-
-/**
- * Method for Internalization. Reads a SmfComment object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aComment The SmfComment object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfComment &aComment);
-
-#endif /* SMFCOMMENT_H_ */
--- a/example/clientapi/smf/inc/common/smfcomment/smfcomment_p.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Private class implemented for implicit sharing of SmfComment class
- *
- */
-
-#ifndef SMFCOMMENT_P_H_
-#define SMFCOMMENT_P_H_
-
-#include <QDateTime>
-#include <QSharedData>
-
-class SmfCommentPrivate : public QSharedData
-{
-public:
-	/**
-	 * Constructor
-	 */
-	SmfCommentPrivate( ) { m_text.clear(); m_commentId.clear(); }
-	
-	/**
-	 * Copy Consturctor
-	 * @param aOther The reference object to be copy constructed
-	 */
-	SmfCommentPrivate( const SmfCommentPrivate &aOther ) : 
-		QSharedData ( aOther ), 
-		m_text ( aOther.m_text ), 
-		m_timeStamp ( aOther.m_timeStamp ),
-		m_commentId ( aOther.m_commentId ) 	{ }
-	
-	/**
-	 * Destructor
-	 */
-	~SmfCommentPrivate( );
-  
-	QString m_text;			// comment text
-	QDateTime m_timeStamp;	// comment time stamp
-	QString m_commentId;
-	
-};
-
-#endif /* SMFCOMMENT_P_H_ */
--- a/example/clientapi/smf/inc/common/smfcontacts/smfcontact.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The contact class represents a social contact
- * Note: This class has dependencies on QtMobility project
- *
- */
-
-#ifndef SMFCONTACT_H_
-#define SMFCONTACT_H_
-
-#include "qtcontacts.h"
-#include <qdatastream.h>
-#include <QSharedData>
-#include <smfclientglobal.h>
-
-using namespace QtMobility;
-
-class SmfContactPrivate;
-
-/**
- * @ingroup smf_common_group
- * The contact class represents a social contact
- * 
- * Note: This class has dependencies on QtMobility project
- */
-class SMFCLIENT_EXPORT SmfContact : public QObject
-	{
-	Q_OBJECT
-
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfContact( QObject *aParent = 0 );
-	
-	/**
-	 * Copy Constructor
-	 * @param aOther The reference object
-	 */
-	SmfContact( const SmfContact &aOther );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfContact( );
-	
-public slots:
-	/**
-	 * Method to get the available sub fields for contacts.
-	 * The following are the available sub types of a contact
-	 *   QtMobility::QContactAddress		Address;
-	 *   QtMobility::QContactAnniversary	Anniversary;
-	 *   QtMobility::QContactAvatar			Avatar;
-	 *   QtMobility::QContactBirthday		Birthday;
-	 *   QtMobility::QContactId				ContactId;
-	 *   QtMobility::QContactEmailAddress	EmailAddress;
-	 *   QtMobility::QContactGender			Gender;
-	 *   QtMobility::QContactGeolocation	Geolocation;
-	 *   QtMobility::QContactGuid			Guid;
-	 *   QtMobility::QContactName			Name;
-	 *   QtMobility::QContactNickname		Nickname;
-	 *   QtMobility::QContactNote			Note;
-	 *   QtMobility::QContactOnlineAccount	OnlineAccount;
-	 *   QtMobility::QContactOrganization	Organization;
-	 *   QtMobility::QContactPhoneNumber	PhoneNumber;
-	 *   QtMobility::QContactTimestamp		Timestamp;
-	 *   QtMobility::QContactType			Type;
-	 *   QtMobility::QContactUrl			Url;
-	 * @return The Available sub fields for this contact
-	 */
-	QStringList subTypes( ) const;
-	
-	/**
-	 * Method to convert an SmfContact to a QContact
-	 * Changes made to the returned QContact will not be reflected 
-	 * in its parent SmfContact object
-	 * @param aContact QContact corresponding to SmfContact 
-	 */
-	void convert( QContact &aContact ) const;
-	
-	/**
-	 * Method to get the value of a sub field for this contact
-	 * @param aSubType The sub field type 
-	 * @return The value of the sub field subType
-	 * @see subTypes()
-	 */
-	QVariant value( const QString& aSubType ) const;
-	
-private:
-	QSharedDataPointer<SmfContactPrivate> d;
-	
-	friend QDataStream &operator<<( QDataStream &aDataStream, 
-			const SmfContact &aContact );
-
-	friend QDataStream &operator>>( QDataStream &aDataStream, 
-			SmfContact &aContact );
-	
-	};
-
-
-/**
- * Method for Externalization. Writes the SmfContact object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aContact The SmfContact object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfContact &aContact );
-
-/**
- * Method for Internalization. Reads a SmfContact object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aContact The SmfContact object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfContact &aContact );
-
-#endif /* SMFCONTACT_H_ */
--- a/example/clientapi/smf/inc/common/smfcontacts/smfcontact_p.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Private class implemented for implicit sharing of SmfContact class
- *
- */
-
-#ifndef SMFCONTACT_P_H_
-#define SMFCONTACT_P_H_
-
-#include <QSharedData>
-
-using namespace QtMobility;
-
-class SmfContactPrivate : public QSharedData
-{
-public:
-	/**
-	 * Constructor
-	 */
-	SmfContactPrivate( ) { m_details.clear(); }
-	
-	/**
-	 * Copy Consturctor
-	 * @param aOther The reference object to be copy constructed
-	 */
-	SmfContactPrivate( const SmfContactPrivate &aOther ) : 
-		QSharedData ( aOther ), 
-		m_details ( aOther.m_details )	{ }
-	
-	/**
-	 * Destructor
-	 */
-	~SmfContactPrivate( );
-  
-	QVariantMap	m_details;// contact details
-	
-};
-
-#endif /* SMFCONTACT_P_H_ */
--- a/example/clientapi/smf/inc/common/smfcontacts/smfgroup.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The group class represents an instance of a group as per SN site terminolgy
- *
- */
-
-#ifndef SMFGROUP_H_
-#define SMFGROUP_H_
-
-#include <smfcontact.h>
-#include <qdatastream.h>
-#include <QSharedData>
-#include <smfclientglobal.h>
-
-class SmfGroupPrivate;
-
-
-/**
- * @ingroup smf_common_group
- * The group class represents an instance of a group as per SN site terminolgy
- */
-class SMFCLIENT_EXPORT SmfGroup : public QObject
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param list The list of members in the group
-	 */
-	SmfGroup( QList<SmfContact>* list = 0 );
-	
-	/**
-	 * Copy Constructor
-	 * @param aOther The reference object
-	 */
-	SmfGroup( const SmfGroup &aOther );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfGroup( );
-	
-public slots:
-	/**
-	 * Method to get the list of members in the group
-	 * @return The list of members in the group
-	 */
-	QList<SmfContact> members( ) const;
-	
-	/**
-	 * Method to get the name of the group
-	 * @return The name of the group
-	 */
-	QString name( ) const;
-	
-	/**
-	 * Method to get the id of the group
-	 * @return The ID value 
-	 */
-	QString id( ) const;
-	
-private:
-	QSharedDataPointer<SmfGroupPrivate> d;
-	
-	friend QDataStream &operator<<( QDataStream &aDataStream, 
-			const SmfGroup &aGroup );
-
-	friend QDataStream &operator>>( QDataStream &aDataStream, 
-			SmfGroup &aGroup );
-	
-	};
-
-
-/**
- * Method for Externalization. Writes the SmfGroup object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aGroup The SmfGroup object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfGroup &aGroup );
-
-/**
- * Method for Internalization. Reads a SmfGroup object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aGroup The SmfGroup object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfGroup &aGroup);
-
-#endif /* SMFGROUP_H_ */
--- a/example/clientapi/smf/inc/common/smfcontacts/smfgroup_p.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Private class implemented for implicit sharing of SmfGroup class
- *
- */
-
-#ifndef SMFGROUP_P_H_
-#define SMFGROUP_P_H_
-
-#include <smfcontact.h>
-#include <QSharedData>
-
-class SmfGroupPrivate : public QSharedData
-{
-public:
-	/**
-	 * Constructor
-	 */
-	SmfGroupPrivate( ) { m_members = NULL; m_groupName.clear(); m_groupId.clear(); }
-	
-	/**
-	 * Copy Consturctor
-	 * @param aOther The reference object to be copy constructed
-	 */
-	SmfGroupPrivate( const SmfGroupPrivate &aOther ) : 
-		QSharedData ( aOther ), 
-		m_members ( aOther.m_members ), 
-		m_groupName ( aOther.m_groupName ),
-		m_groupId ( aOther.m_groupId ) 	{ }
-	
-	/**
-	 * Destructor
-	 */
-	~SmfGroupPrivate( );
-  
-	QList<SmfContact> *m_members;	// members in the group
-	QString m_groupName;
-	QString m_groupId;
-	// Other details to be added
-};
-
-
-#endif /* SMFGROUP_P_H_ */
--- a/example/clientapi/smf/inc/common/smfcontacts/smfpost.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The post class represents an instance of a post to a SN site
- *
- */
-
-#ifndef SMFPOST_H_
-#define SMFPOST_H_
-
-#include <QImage>
-#include <QUrl>
-#include <qdatastream.h>
-#include <QSharedData>
-#include <QTextDocument>
-#include <smfclientglobal.h>
-
-class SmfPostPrivate;
-
-
-/**
- * @ingroup smf_common_group
- * The post class represents an instance of a post to a SN site
- */
-class SMFCLIENT_EXPORT SmfPost : public QTextDocument
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param text Text
-	 * @param aParent The parent object
-	 */
-	SmfPost( QString text,QObject *aParent = 0 );
-	
-	/**
-	 * Constructor
-	 * @param aText The post's text
-	 * @param aImage The post's image
-	 * @param aUrl The post's url
-	 */
-	SmfPost( QString aTitle, QString aDesc, QImage aImage, QUrl aUrl );
-
-	/**
-	 * Copy Constructor
-	 * @param aOther The reference object
-	 */
-	SmfPost( const SmfPost &aOther );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfPost( );
-	
-	/**
-	 * Method to get the title of the post
-	 * @return The post's title
-	 */
-	QString title( ) const;
-	
-	/**
-	 * Method to get the description of the post
-	 * @return The post's description
-	 */
-	QString description( ) const;
-	
-	/**
-	 * Method to get the image of the post
-	 * @return The post's image
-	 */
-	QImage image( ) const;
-	
-	/**
-	 * Method to get the url of the post
-	 * @return The post's url
-	 */
-	QUrl url( ) const;
-	
-	/**
-	 * Method to get the id of the post
-	 * @return The ID value 
-	 */
-	QString id( ) const;
-	
-	/**
-	 * Method to set the title of the post
-	 * @param aTitle The post's new title
-	 */
-	void setTitle( const QString &aTitle );
-	
-	/**
-	 * Method to set the description of the post
-	 * @param aDesc The post's new description
-	 */
-	void setDescription( const QString &aDesc );
-	
-	/**
-	 * Method to set the image of the post
-	 * @param aPic The post's image
-	 */
-	void setImage( const QImage& aPic );
-	
-	/**
-	 * Method to set the url of the post
-	 * @param aUrl The post's url
-	 */
-	void setUrl( QUrl& aUrl );
-	
-private:
-	QSharedDataPointer<SmfPostPrivate> d;
-
-	friend QDataStream &operator<<( QDataStream &aDataStream, 
-			const SmfPost &aPost );
-
-	friend QDataStream &operator>>( QDataStream &aDataStream, 
-			SmfPost &aPost );
-	
-	};
-
-
-/**
- * Method for Externalization. Writes the SmfPost object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aPost The SmfPost object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfPost &aPost );
-
-/**
- * Method for Internalization. Reads a SmfPost object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aPost The SmfPost object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfPost &aPost);
-
-#endif /* SMFPOST_H_ */
--- a/example/clientapi/smf/inc/common/smfcontacts/smfpost_p.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Private class implemented for implicit sharing of SmfPost class
- *
- */
-
-#ifndef SMFPOST_P_H_
-#define SMFPOST_P_H_
-
-#include <QSharedData>
-
-class SmfPostPrivate : public QSharedData
-{
-public:
-	/**
-	 * Constructor
-	 */
-	SmfPostPrivate( ) { m_title.clear(); m_desc.clear(); m_url.clear(); m_postId.clear(); }
-	
-	/**
-	 * Constructor
-	 */
-	SmfPostPrivate( QString aTitle, QString aDesc, QImage aImage, QUrl aUrl ) 
-		{
-		m_title = aTitle; 
-		m_desc = aDesc;
-		m_image = aImage;
-		m_url = aUrl;
-		m_postId.clear();
-		}
-	
-	/**
-	 * Copy Consturctor
-	 * @param aOther The reference object to be copy constructed
-	 */
-	SmfPostPrivate( const SmfPostPrivate &aOther ) : 
-		QSharedData ( aOther ), 
-		m_title ( aOther.m_title ), 
-		m_desc ( aOther.m_desc ),
-		m_image ( aOther.m_image ),
-		m_url ( aOther.m_url ),
-		m_postId ( aOther.m_postId )	{ }
-	
-	/**
-	 * Destructor
-	 */
-	~SmfPostPrivate( );
-  
-	QString m_title;	// title
-	QString m_desc;		// description
-	QImage m_image;		// image
-	QUrl m_url;			// url
-	QString m_postId;	// post's unique Id
-	
-};
-
-#endif /* SMFPOST_P_H_ */
--- a/example/clientapi/smf/inc/common/smfdes.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Intro Page
- *
- * @ref smf_high_level_design
- */
-
-/**
- * @mainpage SMF (Social Mobile Framework Interfaces)
- * @defgroup smf_high_level_design SMF high level design
- * 
- * Social Mobile Framework is a application level framework which allows Qt Applications
- * use the common web APIs to perform social web activities. 
- * 
- * Product name is "SMF"
- * 
- * For details please refer to http://developer.symbian.org/wiki/index.php/Social_Mobile_Framework
- * 
- * @section smf_interfaces SMF Interfaces
- * 
- * There are two sets of interfaces - 
- * 		@subsection smf_client_interfaces Client Interfaces
- * 				- Client Applications (e.g. Media Player, Contacts, Game) uses these APIs to access SMF. see @ref smf_client_group 
- * 
- * 		@subsection smf_plugin_interfaces Plugin Interfaces
- * 				- Service Providers (e.g. Facebook, Flickr, last.fm) implements these APIs to provide service to SMF - see @ref smf_plugin_group
- *  
- * Currently, @ref smf_client_interfaces and @ref smf_plugin_interfaces are defined for remote contacts, remote
- * image gallery and remote music services. There are common classes defined for holding data accross clients
- * and plugins, present in inc\common, see - @ref smf_common_group 
- *
- *	
- *		@section smf_client_usage Client Usage Example
- *		- This shows how to use the SMF client APIs in applications, e.g. Client can define suitable Models using lists returned by these APIs
- *				- how to fetch a list of contacts from a remote server e.g. Facebook, see @ref MyApplication::displayFriends() 	
- *				- how to get a @ref QContact from a SmfContacts see @ref MyApplication::showlist()
- *				- how to get a list of images from a remote gallery e.g. Flickr.com, see @ref MyApplication::displayGallery()
- *				- how to post privately to a contact see @ref MyApplication::postUpdate()
- *				- how to tell others about the music you are currently listen to, see @ref MyApplication::updateCurrentPlaying()    
- *		
- *		
- *		@section smf_dependency Dependency
- *		SMF uses QtMobility for mainly contacts information, see QtMobility project.    
-   */
-/**
- * @defgroup smf_common_group Common Data Classes 
- */
-/**
- * @defgroup smf_client_group Client Classes 
- */
-/**
- * @defgroup smf_plugin_group Plugin Classes 
- */
--- a/example/clientapi/smf/inc/common/smfevent/smfevent.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The SmfEvent class represents an event
- *
- */
-
-#ifndef SMFEVENT_H_
-#define SMFEVENT_H_
-
-#include <smfplace.h>
-#include <smfartists.h>
-#include <QStringList>
-#include <qdatastream.h>
-#include <QSharedData>
-#include <smfclientglobal.h>
-
-class SmfEventPrivate;
-
-/**
- * @ingroup smf_common_group
- * The event class represents an event
- */
-class SMFCLIENT_EXPORT SmfEvent : public QObject
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfEvent( QObject *aParent = 0 );
-	
-	/**
-	 * Copy Constructor
-	 * @param aOther The reference object
-	 */
-	SmfEvent( const SmfEvent &aOther );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfEvent( );
-	
-	/**
-	 * Method to get the event name
-	 * @return The event name
-	 */
-	QString title( ) const;
-	
-	/**
-	 * Method to get the event date and time
-	 * @return The date and time of the event
-	 */
-	QDateTime eventDateTime( ) const;
-	
-	/**
-	 * Method to get the event duration
-	 * @return The duration of the event
-	 */
-	QTime duration( ) const;
-	
-	/**
-	 * Method to get the artist names
-	 * @return The list of artists in the event
-	 */
-	SmfArtists artists( ) const;
-	
-	/**
-	 * Method to get the venue of the event
-	 * @return The venue of the event
-	 */
-	SmfPlace venue( ) const;
-	
-	/**
-	 * Method to get the URL for getting tickets for the event
-	 * @return The Url for getting ticket for the event
-	 */
-	QUrl ticketUrl( ) const;
-	
-	/**
-	 * Method to get the id of the event
-	 * @return The ID value 
-	 */
-	QString id( ) const;
-	
-	/**
-	 * Method to set the event name
-	 * @param aName The new event name
-	 */
-	void setTitle( const QString &aName );
-	
-	/**
-	 * Method to set the event date and time
-	 * @param aDateTime The new date and time of the event
-	 * 
-	 */
-	void setEventDateTime( const QDateTime &aDateTime );
-	
-	/**
-	 * Method to set the event duration
-	 * @param aDuration The new duration of the event
-	 * 
-	 */
-	void setDuration( const QTime &aDuration );
-	
-	/**
-	 * Method to set the artist
-	 * @param aArtists The new artists in the event
-	 */
-	void setArtists( const SmfArtists &aArtists );
-	
-	/**
-	 * Method to set the venue name
-	 * @param aVenue The new venue of the event
-	 */
-	void setVenue( const SmfPlace &aVenue );
-	
-	/**
-	 * Method to set the URL for getting tickets for the event
-	 * @param aUrl The new Url for getting ticket for the event
-	 */
-	void setTicketUrl( const QUrl &aUrl );
-	
-private:
-	QSharedDataPointer<SmfEventPrivate> d;
-	
-	friend QDataStream &operator<<( QDataStream &aDataStream, 
-			const SmfEvent &aEvent );
-
-	friend QDataStream &operator>>( QDataStream &aDataStream, 
-			SmfEvent &aEvent );
-	
-	};
-
-
-/**
- * Method for Externalization. Writes the SmfEvent object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aEvent The SmfEvent object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfEvent &aEvent );
-
-/**
- * Method for Internalization. Reads a SmfEvent object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aEvent The SmfEvent object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfEvent &aEvent);
-
-#endif /* SMFEVENT_H_ */
--- a/example/clientapi/smf/inc/common/smfevent/smfevent_p.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Private class implemented for implicit sharing of SmfEvent class
- *
- */
-
-#ifndef SMFEVENT_P_H_
-#define SMFEVENT_P_H_
-
-
-#include <smfplace.h>
-#include <smfartists.h>
-#include <QStringList>
-#include <QSharedData>
-
-class SmfEventPrivate : public QSharedData
-{
-public:
-	/**
-	 * Constructor
-	 */
-	SmfEventPrivate( ) { 
-		m_name.clear(); 
-		m_url.clear();
-		m_eventId.clear();
-		
-	}
-	
-	/**
-	 * Copy Consturctor
-	 * @param aOther The reference object to be copy constructed
-	 */
-	SmfEventPrivate( const SmfEventPrivate &aOther ) : 
-		QSharedData ( aOther ), 
-		m_name ( aOther.m_name ), 
-		m_dateTime ( aOther.m_dateTime ),
-		m_duration ( aOther.m_duration ),
-		m_artists ( aOther.m_artists ),
-		m_venue ( aOther.m_venue ),
-		m_url ( aOther.m_url ),
-		m_eventId ( aOther.m_eventId ) 	{ }
-	
-	/**
-	 * Destructor
-	 */
-	~SmfEventPrivate( );
-  
-	QString		m_name;			// event name
-	QDateTime 	m_dateTime;		// event date and time
-	QTime		m_duration;		// event duration
-	SmfArtists m_artists;		// event artist names
-	SmfPlace 	m_venue;		// venue of the event
-	QUrl 		m_url;			// ticket url
-	QString 	m_eventId;
-	
-};
-
-#endif /* SMFEVENT_P_H_ */
--- a/example/clientapi/smf/inc/common/smfglobal.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,275 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The smfglobal.h files contains all global data common to Smf framework
- *
- */
-
-#ifndef SMFGLOBAL_H_
-#define SMFGLOBAL_H_
-
-#include <QBuffer>
-#include <QNetworkRequest>
-#include <QNetworkAccessManager>
-
-/**
- * Exact definition to be decided later
- */
-#define SMF_SERVICE_NAME(INTERFACE,INTERFACENAME)
-
-/**
- * Indicates first page for a web query
- */
-const int SMF_FIRST_PAGE=0;
-
-/**
- * Default value for per page item for web queries
- */
-const int SMF_ITEMS_PER_PAGE=10;
-
-
-/**
- * Enum declaration for Network status information
- */
-enum SmfNetworkStatus
-	{
-	SmfNetworkConnectedHome = 0,
-	SmfNetworkConnectedRoaming,	// value = 1
-	SmfNetworkStateNotKnown,	// value = 2
-	SmfNetworkConnected,		// value = 3
-	SmfNetworkNotConnected		// value = 4
-	};
-
-/**
- * Enum declaration for result of transport initialize operation
- */
-enum SmfTransportInitializeResult
-	{
-	SmfTransportInitNetworkNotAvailable = 0,
-	SmfTransportInitRoamingNetworkUsageNotEnabled,	// value = 1
-	SmfTransportInitNoError							// value = 2
-	};
-
-/**
- * The enumeration used to indicate result of transport to the plugins
- */
-enum SmfTransportResult
-	{
-	SmfTransportOpNoError = 0,
-	SmfTransportOpConnectionRefusedError,
-	SmfTransportOpRemoteHostClosedError,
-	SmfTransportOpHostNotFoundError,
-	SmfTransportOpTimeoutError,
-	SmfTransportOpOperationCanceledError,
-	SmfTransportOpSslHandshakeFailedError,
-	SmfTransportOpProxyConnectionRefusedError,
-	SmfTransportOpProxyConnectionClosedError,
-	SmfTransportOpProxyNotFoundError,
-	SmfTransportOpProxyTimeoutError,
-	SmfTransportOpProxyAuthenticationRequiredError,
-	SmfTransportOpContentAccessDenied,
-	SmfTransportOpContentOperationNotPermittedError,
-	SmfTransportOpContentNotFoundError,
-	SmfTransportOpAuthenticationRequiredError,
-	SmfTransportOpContentReSendError,
-	SmfTransportOpProtocolUnknownError,
-	SmfTransportOpProtocolInvalidOperationError,
-	SmfTransportOpUnknownNetworkError,
-	SmfTransportOpUnknownProxyError,
-	SmfTransportOpUnknownContentError,
-	SmfTransportOpProtocolFailure,
-	SmfTransportOpUnknownError,
-	SmfTransportOpIAPChanged,
-	SmfTransportOpCancelled
-	};
-
-/**
- * The enumeration used to indicate result of plugin manager operations
- */
-enum SmfPluginManagerResult
-	{
-	SmfPluginNoError = 0,
-	SmfPluginNotFound,
-	SmfPluginNotLoaded,
-	SmfPluginLoaded,
-	SmfPluginLoadError,
-	SmfPluginAuthorised,
-	SmfPluginNotAuthorised,
-	SmfPluginUnknownService,
-	SmfPluginRequestSendingFailed,
-	SmfPluginSOPCheckFailed,
-	SmfPluginServiceError,
-	SmfPluginUnknownError
-	};
-
-
-/**
- * The enumeration used to denote errors reported by plugin
- * Smf can't continue without handling these errors
- */
-enum SmfPluginError
-	{
-	SmfPluginErrNone = 0, 
-	SmfPluginErrTooManyRequest,
-	SmfPluginErrRequestQuotaExceeded,
-	SmfPluginErrInvalidRequest,
-	SmfPluginErrUserNotLoggedIn,
-	SmfPluginErrAuthenticationExpired,
-	SmfPluginErrPermissionDenied,
-	SmfPluginErrInvalidApplication,
-	SmfPluginErrServiceUnavailable,
-	SmfPluginErrServiceTemporaryUnavailable,
-	SmfPluginErrFormatNotSupported, 
-	SmfPluginErrDataSizeExceeded  
-	};
-
-/**
- * The enumeration used to track the plugin methods return type
- */
-enum SmfPluginRetType
-	{
-	SmfSendRequestAgain = 0,
-	SmfRequestComplete,
-	SmfRequestError
-	};
-
-
-/**
- * The enumeration used to indicate the type of network operation done
- */
-enum SmfRequestOperation
-	{
-	SmfContactGetFriends = 0,
-	SmfContactGetFollowers,
-	SmfContactSearch,
-	SmfContactGerGroups,
-	SmfContactSearchInGroup,
-	SmfContactGetPosts,
-	SmfContactUpdatePost,
-	SmfContactUpdatePostDirected,
-	SmfContactPostAppearence,
-	SmfMusicGetLyrics,
-	SmfMusicGetSubtitle,
-	SmfMusicGetEventsOnLoc,
-	SmfMusicGetVenueOnLoc,
-	SmfMusicGetEventsOnVenue,
-	SmfMusicPostEvents,
-	SmfMusicGetRecommendations,
-	SmfMusicGetTracks,
-	SmfMusicGetTrackInfo,
-	SmfMusicGetStores,
-	SmfMusicPostCurrentPlaying,
-	SmfMusicGetUserInfo,
-	SmfMusicSearchUser,
-	SmfMusicGetPlaylists,
-	SmfMusicGetPlaylistsOfUser,
-	SmfMusicAddToPlaylist,
-	SmfMusicPostCurrentPlayingPlaylist,
-	SmfPictureGetPictures,
-	SmfPictureDescription,
-	SmfPictureUpload,
-	SmfPictureMultiUpload,
-	SmfPicturePostComment
-	
-	};
-
-
-/**
- * The structure used to hold the request created by the plugins
- */
-struct SmfPluginRequestData
-	{
-	/**
-	 * Indicates the type of operation performed, like getting Friends 
-	 * list, upload image etc
-	 */
-	SmfRequestOperation iRequestType;
-	
-	/**
-	 * The QNetworkRequest that has to be filled up by the plugins
-	 */
-	QNetworkRequest iNetworkRequest;
-	
-	/**
-	 * The data to be posted in case of HTTP POST operation
-	 */
-	QBuffer *iPostData;
-	
-	/**
-	 * The type of HTTP transaction, like GET, POST etc
-	 */
-	QNetworkAccessManager::Operation iHttpOperationType;
-	
-	};
-
-/**
- * The structure used to hold the request created by the plugins
- */
-struct SmfResultPage
-	{
-	/**
-	 * The total number of items
-	 */
-	uint iTotalItems;
-	
-	/**
-	 * The number of items per page
-	 */
-	uint iItemsPerPage;
-	
-	/**
-	 * The total number of pages
-	 */
-	uint iTotalPages;
-	
-	/**
-	 * The current fetched page number
-	 */
-	uint iPageNum;
-	};
-
-/**
- * The structure used to track the data usage of each plugins
- */
-struct SmfPluginDataUsage
-	{
-	/**
-	 * Application that called the plugin
-	 */
-	QString iAppName;
-	
-	/**
-	 * Interface implemented by the plugin
-	 */
-	QString iInterfaceName;
-	
-	/**
-	 * The service provider
-	 */
-	QString iServiceProviderName;
-	
-	/**
-	 * number of bytes sent for this plugin
-	 */
-	uint iBytesSent;
-	
-	/**
-	 * number of bytes received for this plugin
-	 */
-	uint iBytesReceived;
-	
-	};
-
-#endif /* SMFGLOBAL_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smfalbum.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The SmfAlbum class represents a music album
- *
- */
-#ifndef SMFALBUM_H_
-#define SMFALBUM_H_
-
-#include <QImage>
-#include <qdatastream.h>
-#include <QSharedData>
-#include <smfclientglobal.h>
-
-class SmfAlbumPrivate;
-class SmfArtists;
-
-/**
- * @ingroup smf_common_group
- * The SmfAlbum class represents a music album
- */
-class SMFCLIENT_EXPORT SmfAlbum : public QObject
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfAlbum( QObject *aParent = 0 );
-	
-	/**
-	 * Copy Constructor
-	 * @param aOther The reference object
-	 */
-	SmfAlbum( const SmfAlbum &aOther );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfAlbum( );
-	
-	/**
-	 * Method to get the album name
-	 * @return The album name
-	 */
-	QString name( ) const;
-	
-	/**
-	 * Method to get the album's image
-	 * @return The album's image
-	 */
-	QImage image( ) const;
-	
-	/**
-	 * Method to get the artist names
-	 * @return The list of artists in the album
-	 */
-	SmfArtists artists( ) const;
-	
-	/**
-	 * Method to get the id of the album
-	 * @return The ID value 
-	 */
-	QString id( ) const;
-	
-private:
-	QSharedDataPointer<SmfAlbumPrivate> d;
-	
-	friend QDataStream &operator<<( QDataStream &aDataStream, 
-			const SmfAlbum &aAlbum );
-
-	friend QDataStream &operator>>( QDataStream &aDataStream, 
-			SmfAlbum &aAlbum );
-	
-	};
-
-
-/**
- * Method for Externalization. Writes the SmfAlbum object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aAlbum The SmfAlbum object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfAlbum &aAlbum );
-
-/**
- * Method for Internalization. Reads a SmfAlbum object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aAlbum The SmfAlbum object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfAlbum &aAlbum);
-
-
-#endif /* SMFALBUM_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smfalbum_p.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Private class implemented for implicit sharing of SmfAlbum class
- *
- */
-
-#ifndef SMFALBUM_P_H_
-#define SMFALBUM_P_H_
-
-#include <smfartists.h>
-#include <QStringList>
-#include <QSharedData>
-
-class SmfAlbumPrivate : public QSharedData
-{
-public:
-	/**
-	 * Constructor
-	 */
-	SmfAlbumPrivate( ) { 
-		m_name.clear(); 
-		m_albumId.clear();
-		
-	}
-	
-	/**
-	 * Copy Consturctor
-	 * @param aOther The reference object to be copy constructed
-	 */
-	SmfAlbumPrivate( const SmfAlbumPrivate &aOther ) : 
-		QSharedData ( aOther ), 
-		m_name ( aOther.m_name ), 
-		m_image ( aOther.m_image ),
-		m_artists ( aOther.m_artists ),
-		m_albumId ( m_albumId.m_eventId ) 	{ }
-	
-	/**
-	 * Destructor
-	 */
-	~SmfAlbumPrivate( );
-  
-	QString		m_name;		// album name
-	QImage 		m_image;	// album image
-	SmfArtists m_artists;	// album's artists
-	QString 	m_albumId;
-	
-};
-
-#endif /* SMFALBUM_P_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smfartists.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The SmfArtists class represents the artists in a track or an album
- *
- */
-
-#ifndef SMFARTISTS_H_
-#define SMFARTISTS_H_
-
-#include <QImage>
-#include <QUrl>
-#include <qdatastream.h>
-#include <QSharedData>
-#include <smfclientglobal.h>
-
-class SmfArtistsPrivate;
-
-/**
- * @ingroup smf_common_group
- * The SmfArtists class represents the artists in a track or an album
- */
-class SMFCLIENT_EXPORT SmfArtists : public QObject
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfArtists( QObject *aParent = 0 );
-	
-	/**
-	 * Copy Constructor
-	 * @param aOther The reference object
-	 */
-	SmfArtists( const SmfArtists &aOther );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfArtists( );
-	
-	/**
-	 * Method to get the artists names
-	 * @return The list of artists
-	 */
-	QStringList names( ) const;
-	
-	/**
-	 * Method to get the image of the artists
-	 * @return The image of te artists
-	 */
-	QImage image( ) const;
-	
-	/**
-	 * Method to get the url of the artists
-	 * @return The url of the artists
-	 */
-	QUrl url( ) const;
-		
-private:
-	QSharedDataPointer<SmfArtistsPrivate> d;
-	
-	friend QDataStream &operator<<( QDataStream &aDataStream, 
-			const SmfArtists &aArtists );
-
-	friend QDataStream &operator>>( QDataStream &aDataStream, 
-			SmfArtists &aArtists );
-	
-	};
-
-
-/**
- * Method for Externalization. Writes the SmfArtists object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aArtists The SmfArtists object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfArtists &aArtists );
-
-/**
- * Method for Internalization. Reads a SmfArtists object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aArtists The SmfArtists object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfArtists &aArtists);
-
-
-#endif /* SMFARTISTS_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smfartists_p.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Private class implemented for implicit sharing of SmfArtists class
- *
- */
-
-#ifndef SMFARTISTS_P_H_
-#define SMFARTISTS_P_H_
-
-#include <QImage>
-#include <QUrl>
-#include <QSharedData>
-
-class SmfArtistsPrivate : public QSharedData
-{
-public:
-	/**
-	 * Constructor
-	 */
-	SmfArtistsPrivate( ) { 
-		m_names.clear(); 
-		m_url.clear();
-	}
-	
-	/**
-	 * Copy Consturctor
-	 * @param aOther The reference object to be copy constructed
-	 */
-	SmfArtistsPrivate( const SmfArtistsPrivate &aOther ) : 
-		QSharedData ( aOther ), 
-		m_names ( aOther.m_names ), 
-		m_image ( aOther.m_image ),
-		m_url ( aOther.m_url ) 	{ }
-	
-	/**
-	 * Destructor
-	 */
-	~SmfArtistsPrivate( );
-  
-	QStringList	m_names;	// artist names
-	QImage 		m_image;	// image
-	QUrl 		m_url;		// url
-};
-
-
-#endif /* SMFARTISTS_P_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smflyrics.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The SmfLyrics class represents an instance of a music track's lyrics
- *
- */
-
-#ifndef SMFLYRICS_H_
-#define SMFLYRICS_H_
-
-#include <qdatastream.h>
-#include <QDateTime>
-#include <QSharedData>
-#include <smfclientglobal.h>
-
-class SmfLyricsPrivate;
-
-/**
- * @ingroup smf_common_group
- * The lyrics class represents an instance of a music track's lyrics
- */
-class SMFCLIENT_EXPORT SmfLyrics : public QObject
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfLyrics( QObject *aParent = 0 );
-	
-	/**
-	 * Copy Constructor
-	 * @param aOther The reference object
-	 */
-	SmfLyrics( const SmfLyrics &aOther );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfLyrics( );
-	
-	/**
-	 * Method to get the lyrics
-	 * @return The lyrics data
-	 */
-	QByteArray lyrics( ) const;
-	
-	/**
-	 * Method to get the language
-	 * @return The language
-	 */
-	QString language( ) const;
-	
-	/**
-	 * Method to get the release year
-	 * @return The release year
-	 */
-	QDateTime releaseYear( ) const;
-	
-	/**
-	 * Method to get the id of the lyrics
-	 * @return The ID value 
-	 */
-	QString id( ) const;
-	
-private:
-	QSharedDataPointer<SmfLyricsPrivate> d;
-	
-	friend QDataStream &operator<<( QDataStream &aDataStream, 
-			const SmfLyrics &aLyrics );
-
-	friend QDataStream &operator>>( QDataStream &aDataStream, 
-			SmfLyrics &aLyrics );
-	
-	};
-
-
-/**
- * Method for Externalization. Writes the SmfLyrics object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aLyrics The SmfLyrics object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfLyrics &aLyrics );
-
-/**
- * Method for Internalization. Reads a SmfLyrics object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aLyrics The SmfLyrics object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfLyrics &aLyrics);
-
-#endif /* SMFLYRICS_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smflyrics_p.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Private class implemented for implicit sharing of SmfLyrics class
- *
- */
-
-#ifndef SMFLYRICS_P_H_
-#define SMFLYRICS_P_H_
-
-#include <QDateTime>
-#include <QSharedData>
-
-class SmfLyricsPrivate : public QSharedData
-{
-public:
-	/**
-	 * Constructor
-	 */
-	SmfLyricsPrivate( ) { 
-		m_lyrics.clear();
-		m_language.clear();
-		m_lyricsId.clear(); 
-	}
-	
-	/**
-	 * Copy Consturctor
-	 * @param aOther The reference object to be copy constructed
-	 */
-	SmfLyricsPrivate( const SmfLyricsPrivate &aOther ) : 
-		QSharedData ( aOther ), 
-		m_lyrics ( aOther.m_lyrics ),
-		m_language ( aOther.m_language ),
-		m_releaseYr ( aOther.m_releaseYr ),
-		m_lyricsId ( aOther.m_lyricsId ) 	{ }
-	
-	/**
-	 * Destructor
-	 */
-	~SmfLyricsPrivate( );
-  
-	QByteArray m_lyrics;	// lyrics data
-	QString m_language;		// language
-	QDateTime m_releaseYr;	// release year
-	QString m_lyricsId;		// lyrics id
-	
-};
-
-#endif /* SMFLYRICS_P_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smfmusicfingerprint.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The SmfMusicFingerPrint class represents a music finger print used in searches
- *
- */
-
-#ifndef SMFMUSICFINGERPRINT_H_
-#define SMFMUSICFINGERPRINT_H_
-
-#include <qdatastream.h>
-#include <QSharedData>
-#include <smfclientglobal.h>
-
-class SmfMusicFingerPrintPrivate;
-
-/**
- * @ingroup smf_common_group
- * The musicfingerprint class represents a music finger print used in searches
- */
-class SMFCLIENT_EXPORT SmfMusicFingerPrint : public QObject
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfMusicFingerPrint( QObject *aParent = 0 );
-	/**
-	 * Destructor
-	 */
-	~SmfMusicFingerPrint( );
-	
-	/**
-	 * GEt the music finger print data
-	 * @return The music finger print data
-	 */
-	QByteArray musicFingerPrint ( ) const;
-	
-private:
-	QSharedDataPointer<SmfMusicFingerPrintPrivate> d;
-	
-	friend QDataStream &operator<<( QDataStream &aDataStream, 
-			const SmfMusicFingerPrint &aMFP );
-
-	friend QDataStream &operator>>( QDataStream &aDataStream, 
-			SmfMusicFingerPrint &aMFP );
-	
-	};
-
-
-/**
- * Method for Externalization. Writes the SmfMusicFingerPrint object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aMFP The SmfMusicFingerPrint object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfMusicFingerPrint &aMFP );
-
-/**
- * Method for Internalization. Reads a SmfMusicFingerPrint object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aMFP The SmfMusicFingerPrint object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfMusicFingerPrint &aMFP);
-
-#endif /* SMFMUSICFINGERPRINT_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smfmusicfingerprint_p.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Private class implemented for implicit sharing of SmfMusicFingerPrint class
- *
- */
-
-#ifndef SMFMUSICFINGERPRINT_P_H_
-#define SMFMUSICFINGERPRINT_P_H_
-
-#include <QSharedData>
-
-class SmfMusicFingerPrintPrivate : public QSharedData
-{
-public:
-	/**
-	 * Constructor
-	 */
-	SmfMusicFingerPrintPrivate( );
-	
-	/**
-	 * Copy Consturctor
-	 * @param aOther The reference object to be copy constructed
-	 */
-	SmfMusicFingerPrintPrivate( const SmfMusicFingerPrintPrivate &aOther ) : 
-		QSharedData ( aOther ), 
-		m_fingerPrintData ( aOther.m_fingerPrintData )	{ }
-	
-	/**
-	 * Destructor
-	 */
-	~SmfMusicFingerPrintPrivate( );
-  
-	QByteArray m_fingerPrintData;
-	
-};
-
-
-#endif /* SMFMUSICFINGERPRINT_P_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smfmusicprofile.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The music profile class represents a user's profile in music site
- *
- */
-
-#ifndef SMFMUSICPROFILE_H_
-#define SMFMUSICPROFILE_H_
-
-#include <smftrackinfo.h>
-#include <smfevent.h>
-#include <qdatastream.h>
-#include <QSharedData>
-#include <smfclientglobal.h>
-
-class SmfMusicProfilePrivate;
-
-/**
- * @ingroup smf_common_group
- * The music profile class represents a user's profile in music site
- */
-class SMFCLIENT_EXPORT SmfMusicProfile : public QObject
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfMusicProfile( QObject *aParent = 0 );
-	
-	/**
-	 * Copy Constructor
-	 * @param aOther The reference object
-	 */
-	SmfMusicProfile( const SmfMusicProfile &aOther );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfMusicProfile( );
-	
-	/**
-	 * Method to get the user's used tracks
-	 * @return The users track list
-	 */
-	QList<SmfTrackInfo> musicUsageInfo( ) const;
-	
-	/**
-	 * Method to get the user's interested tracks
-	 * @return The users interested track list
-	 */
-	QList<SmfTrackInfo> interestInfo( ) const;
-	
-	/**
-	 * Method to get the user events as list of SmfEvents
-	 * @return The list of events
-	 */
-	QList<SmfEvent> userEvents( ) const;
-	
-	/**
-	 * Method to get the id of the music profile
-	 * @return The ID value 
-	 */
-	QString id( ) const;
-	
-	/**
-	 * Method to set the user's used tracks
-	 * @param aUsage The users new track list
-	 */
-	void setMusicUsageInfo( const QList<SmfTrackInfo>& aUsage );
-	
-	/**
-	 * Method to set the user's interested tracks
-	 * @param aInterest The users new interested track list
-	 */
-	void setInterestInfo( const QList<SmfTrackInfo>& aInterest );
-
-private:
-	QSharedDataPointer<SmfMusicProfilePrivate> d;
-
-	friend QDataStream &operator<<( QDataStream &aDataStream, 
-			const SmfMusicProfile &aProfile );
-
-	friend QDataStream &operator>>( QDataStream &aDataStream, 
-			SmfMusicProfile &aProfile );
-	
-	};
-
-
-/**
- * Method for Externalization. Writes the SmfMusicProfile object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aProfile The SmfMusicProfile object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfMusicProfile &aProfile );
-
-/**
- * Method for Internalization. Reads a SmfMusicProfile object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aProfile The SmfMusicProfile object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfMusicProfile &aProfile);
-
-#endif /* SMFMUSICPROFILE_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smfmusicprofile_p.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Private class implemented for implicit sharing of SmfMusicProfile class
- *
- */
-
-#ifndef SMFMUSICPROFILE_P_H_
-#define SMFMUSICPROFILE_P_H_
-
-
-#include <smftrackinfo.h>
-#include <smfevent.h>
-#include <QSharedData>
-
-class SmfMusicProfilePrivate : public QSharedData
-{
-public:
-	/**
-	 * Constructor
-	 */
-	SmfMusicProfilePrivate( ) { 
-		m_usage.clear(); 
-		m_interest.clear();
-		m_events.clear();
-		m_profileId.clear();
-	}
-	
-	/**
-	 * Copy Consturctor
-	 * @param aOther The reference object to be copy constructed
-	 */
-	SmfMusicProfilePrivate( const SmfMusicProfilePrivate &aOther ) : 
-		QSharedData ( aOther ), 
-		m_usage ( aOther.m_usage ), 
-		m_interest ( aOther.m_interest ),
-		m_events ( aOther.m_events ),
-		m_profileId ( aOther.m_profileId ) 	{ }
-	
-	/**
-	 * Destructor
-	 */
-	~SmfMusicProfilePrivate( );
-  
-	QList<SmfTrackInfo> m_usage;	// usage tracks
-	QList<SmfTrackInfo> m_interest;// interested tracks
-	QList<SmfEvent> m_events;		// events list
-	QString m_profileId;
-	
-};
-
-#endif /* SMFMUSICPROFILE_P_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smfmusicrating.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The music rating class represents an instance of rating 
- * about a music track
- *
- */
-
-#ifndef SMFMUSICRATING_H_
-#define SMFMUSICRATING_H_
-
-#include <QObject>
-#include <QSharedData>
-#include <smfclientglobal.h>
-
-class SmfTrackInfo;
-class SmfMusicRatingPrivate;
-
-/**
- * Indicates range of values to represent ratings,
- * SP should normalize their rating value to this scale
- */
-const int SMF_MAX_RATING = 10;
-const int SMF_MIN_RATING = 0;
-
-/**
- * @ingroup smf_common_group
- * The music rating class represents an instance of rating 
- * about a music track 
- */
-class SMFCLIENT_EXPORT SmfMusicRating : public QObject
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 * (parent should be of type SmfTrackInfo)
-	 */
-	SmfMusicRating(SmfTrackInfo *aParent = 0);
-	
-	/**
-	 * Copy Constructor
-	 * @param aOther The reference object
-	 */
-	SmfMusicRating( const SmfMusicRating &aOther );
-	
-	/**
-	 * Overloaded = operator 
-	 * @param aOther The reference object
-	 */
-	SmfMusicRating operator=( const SmfMusicRating &aOther );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfMusicRating( );
-	
-	/**
-	 * Method to get the rating
-	 * @return The rating value
-	 */
-	int rating( ) const;
-
-	/**
-	 * Method to get the max rating
-	 * @return The max rating value
-	 */
-	int maxRating( ) const;
-	
-	/**
-	 * Method to get the min rating
-	 * @return The min rating value
-	 */
-	int minRating( ) const;
-	
-private:
-	QSharedDataPointer<SmfMusicRatingPrivate> d;
-	
-	friend QDataStream &operator<<( QDataStream &aDataStream, 
-			const SmfMusicRating &aMusicRating );
-
-	friend QDataStream &operator>>( QDataStream &aDataStream, 
-			SmfMusicRating &aMusicRating );
-	
-	};
-
-
-/**
- * Method for Externalization. Writes the SmfMusicRating object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aMusicRating The SmfMusicRating object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfMusicRating &aMusicRating );
-
-/**
- * Method for Internalization. Reads a SmfMusicRating object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aMusicRating The SmfMusicRating object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfMusicRating &aMusicRating);
-
-#endif /* SMFMUSICRATING_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smfmusicrating_p.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Private class implemented for implicit sharing of SmfMusicRating class
- *
- */
-
-#ifndef SMFMUSICRATING_P_H_
-#define SMFMUSICRATING_P_H_
-
-#include <QSharedData>
-
-class SmfMusicRatingPrivate : public QSharedData
-{
-public:
-	/**
-	 * Constructor
-	 */
-	SmfMusicRatingPrivate( int aMax, int aMin ) { 
-		m_rating = 0;
-		m_max = aMax;
-		m_min = aMin;
-	}
-	
-	/**
-	 * Copy Consturctor
-	 * @param aOther The reference object to be copy constructed
-	 */
-	SmfMusicRatingPrivate( const SmfMusicRatingPrivate &aOther ) : 
-		QSharedData ( aOther ), 
-		m_rating ( aOther.m_rating ),
-		m_max ( aOther.m_max ),
-		m_min ( aOther.m_min )  { }
-	
-	/**
-	 * Destructor
-	 */
-	~SmfMusicRatingPrivate( );
-  
-	int m_rating;	// rating
-	int m_max;		// max rating
-	int m_min;		// min rating
-	
-};
-
-#endif /* SMFMUSICRATING_P_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smfplaylist.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The playlist class represents an instance of a playlist
- *
- */
-
-#ifndef SMFPLAYLIST_H_
-#define SMFPLAYLIST_H_
-
-#include <smftrackinfo.h>
-#include <qdatastream.h>
-#include <QSharedData>
-#include <smfclientglobal.h>
-
-class SmfPlaylistPrivate;
-
-/**
- * @ingroup smf_common_group
- * The playlist class represents an instance of a playlist
- */
-class SMFCLIENT_EXPORT SmfPlaylist : public QObject
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfPlaylist( QObject *aParent = 0 );
-	
-	/**
-	 * Copy Constructor
-	 * @param aOther The reference object
-	 */
-	SmfPlaylist( const SmfPlaylist &aOther );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfPlaylist( );
-	
-	/**
-	 * Method to get the list of tracks in the playlist
-	 * @return The list of tracks in the playlist
-	 */
-	QList<SmfTrackInfo> trackList( ) const;
-	
-	/**
-	 * Method to get the playlist title
-	 * @return The title of the playlist
-	 */
-	QString playListTitle( ) const;
-	
-	/**
-	 * Method to get the creation date of the playlist
-	 * @return The date and time of creation of the playlist
-	 */
-	QDateTime creationDate( ) const;
-	
-	/**
-	 * Method to get the id of the playlist
-	 * @return The ID value 
-	 */
-	QString id( ) const;
-	
-	/**
-	 * Method to set the list of tracks in the playlist
-	 * @param aList The new list of tracks in the playlist
-	 */
-	void setTrackList( const QList<SmfTrackInfo> &aList );
-	
-	/**
-	 * Method to set the playlist title
-	 * @param aTitle The new title of the playlist
-	 */
-	void setPlayListTitle( const QString &aTitle );
-	
-	/**
-	 * Method to set the creation date of the playlist
-	 * @param aDate The new date and time of creation of the playlist
-	 */
-	void setCreationDate( const QDateTime &aDate );
-	
-private:
-	QSharedDataPointer<SmfPlaylistPrivate> d;
-	
-	friend QDataStream &operator<<( QDataStream &aDataStream, 
-			const SmfPlaylist &aPlaylist );
-
-	friend QDataStream &operator>>( QDataStream &aDataStream, 
-			SmfPlaylist &aPlaylist );
-	
-	};
-
-
-/**
- * Method for Externalization. Writes the SmfPlaylist object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aPlaylist The SmfPlaylist object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfPlaylist &aPlaylist );
-
-/**
- * Method for Internalization. Reads a SmfPlaylist object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aPlaylist The SmfPlaylist object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfPlaylist &aPlaylist);
-
-#endif /* SMFPLAYLIST_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smfplaylist_p.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Private class implemented for implicit sharing of SmfPlaylist class
- *
- */
-
-#ifndef SMFPLAYLIST_P_H_
-#define SMFPLAYLIST_P_H_
-
-#include <smftrackinfo.h>
-#include <QSharedData>
-
-class SmfPlaylistPrivate : public QSharedData
-{
-public:
-	/**
-	 * Constructor
-	 */
-	SmfPlaylistPrivate( ) { 
-		m_trackList.clear(); 
-		m_title.clear();
-		m_playlistId.clear();
-	}
-	
-	/**
-	 * Copy Consturctor
-	 * @param aOther The reference object to be copy constructed
-	 */
-	SmfPlaylistPrivate( const SmfPlaylistPrivate &aOther ) : 
-		QSharedData ( aOther ), 
-		m_trackList ( aOther.m_trackList ), 
-		m_title ( aOther.m_title ),
-		m_creationDate ( aOther.m_creationDate ),
-		m_playlistId ( aOther.m_playlistId ) 	{ }
-	
-	/**
-	 * Destructor
-	 */
-	~SmfPlaylistPrivate( );
-  
-	QList<SmfTrackInfo> m_trackList;// list of tracks
-	QString m_title;				// playlist name
-	QDateTime m_creationDate;		// creation date
-	QString m_playlistId;
-	
-};
-
-#endif /* SMFPLAYLIST_P_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smfsubtitle.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The subtitle class represents information about a track's subtitle
- *
- */
-
-#ifndef SMFSUBTITLE_H_
-#define SMFSUBTITLE_H_
-
-#include <QObject>
-#include <qdatastream.h>
-#include <QDateTime>
-#include <QSharedData>
-#include <smfclientglobal.h>
-
-enum SmfSubtitleSearchFilterFields
-	{
-	SubtitleLanguage = 0,
-	SubtitleFrameRate,		// value = 1
-	SubtitleDuration,		// value = 2
-	SubtitleReleaseYear,	// value = 3
-	SubtitleAll = SubtitleLanguage | SubtitleFrameRate | 
-			SubtitleDuration | SubtitleReleaseYear
-	};
-typedef QMap<SmfSubtitleSearchFilterFields,QString> SmfSubtitleSearchFilter;
-
-class SmfSubtitlePrivate;
-
-/**
- * @ingroup smf_common_group
- * The subtitle class represents information about a track's subtitle
- */
-class SMFCLIENT_EXPORT SmfSubtitle : public QObject
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfSubtitle( QObject *aParent = 0 );
-	
-	/**
-	 * Copy Constructor
-	 * @param aOther The reference object
-	 */
-	SmfSubtitle( const SmfSubtitle &aOther );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfSubtitle( );
-	
-	/**
-	 * Method to get the subtitle as a bytearray
-	 * @return The subtitle content
-	 */
-	QByteArray subtitle( ) const;
-	
-	/**
-	 * Method to get the language
-	 * @return The language
-	 */
-	QString language( ) const;
-	
-	/**
-	 * Method to get the frame rate
-	 * @return the frame rate
-	 */
-	double frameRate( ) const;
-	
-	/**
-	 * Method to get the duration
-	 * @return the duration
-	 */
-	double duration( ) const;
-	
-	/**
-	 * Method to get the release year
-	 * @return The release year
-	 */
-	QDateTime releaseYear( ) const;
-	
-	/**
-	 * Method to get the id of the subtitle
-	 * @return The ID value 
-	 */
-	QString id( ) const;
-	
-private:
-	QSharedDataPointer<SmfSubtitlePrivate> d;
-	
-	friend QDataStream &operator<<( QDataStream &aDataStream, 
-			const SmfSubtitle &aSubtitle );
-
-	friend QDataStream &operator>>( QDataStream &aDataStream, 
-			SmfSubtitle &aSubtitle );
-	
-	};
-
-
-/**
- * Method for Externalization. Writes the SmfSubtitle object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aSubtitle The SmfSubtitle object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfSubtitle &aSubtitle );
-
-/**
- * Method for Internalization. Reads a SmfSubtitle object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aSubtitle The SmfSubtitle object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfSubtitle &aSubtitle);
-
-#endif /* SMFSUBTITLE_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smfsubtitle_p.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Private class implemented for implicit sharing of SmfSubtitle class
- *
- */
-
-#ifndef SMFSUBTITLE_P_H_
-#define SMFSUBTITLE_P_H_
-
-#include <QDateTime>
-#include <QSharedData>
-
-class SmfSubtitlePrivate : public QSharedData
-{
-public:
-	/**
-	 * Constructor
-	 */
-	SmfSubtitlePrivate( ) { 
-		m_language.clear();
-		m_frameRate = 0;
-		m_duration = 0;
-		m_subtitleId.clear();
-	}
-	
-	/**
-	 * Copy Consturctor
-	 * @param aOther The reference object to be copy constructed
-	 */
-	SmfSubtitlePrivate( const SmfSubtitlePrivate &aOther ) : 
-		QSharedData ( aOther ), 
-		m_subtitle ( aOther.m_subtitle ), 
-		m_language ( aOther.m_language ),
-		m_frameRate ( aOther.m_frameRate ),
-		m_duration ( aOther.m_duration ),
-		m_releaseYr ( aOther.m_releaseYr ),
-		m_subtitleId ( aOther.m_subtitleId ) 	{ }
-	
-	/**
-	 * Destructor
-	 */
-	~SmfSubtitlePrivate( );
-  
-	QByteArray m_subtitle;	// subtitle data
-	QString m_language;		// language
-	double m_frameRate;		// frame rate
-	double m_duration;		// duration
-	QDateTime m_releaseYr;	// release year
-	QString m_subtitleId;	// subtitle id
-	
-};
-
-#endif /* SMFSUBTITLE_P_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smftrackinfo.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,206 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The track info class represents information about a music track
- *
- */
-
-#ifndef SMFTRACKINFO_H_
-#define SMFTRACKINFO_H_
-
-#include <QTime>
-#include <qdatastream.h>
-#include <smfmusicrating.h>
-#include <smfartists.h>
-#include <smfalbum.h>
-#include <QStringList>
-#include <QSharedData>
-#include <smfclientglobal.h>
-
-class SmfTrackInfoPrivate;
-
-/**
- * @ingroup smf_common_group
- * The track info class represents information about a music track
- */
-class SMFCLIENT_EXPORT SmfTrackInfo : public QObject
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 * (parent should be of type SmfMusicServicePlugin)
-	 */
-	SmfTrackInfo(QObject *aParent = 0 );
-	
-	/**
-	 * Copy Constructor
-	 * @param aOther The reference object
-	 */
-	SmfTrackInfo( const SmfTrackInfo &aOther );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfTrackInfo( );
-	
-	/**
-	 * Method to get the id of the track
-	 * @return The ID value 
-	 */
-	QString id( ) const;
-	
-	/**
-	 * Method to get the track title
-	 * @return The title of the track
-	 */
-	QString title( ) const;
-	
-	/**
-	 * Method to get the track album
-	 * @return The album of the track
-	 */
-	SmfAlbum album( ) const;
-	
-	/**
-	 * Method to get the track's artists
-	 * @return The artists of the track
-	 */
-	SmfArtists artists( ) const;
-	
-	/**
-	 * Method to get the genre of the track
-	 * @return The genre of the track
-	 */
-	QString genre( ) const;
-	
-	/**
-	 * Method to get the track's tag
-	 * @return The tag of the track
-	 */
-	QStringList tags( ) const;
-	
-	/**
-	 * Method to get the release year of the track
-	 * @return The release year of the track
-	 */
-	QDateTime year( ) const;
-	
-	/**
-	 * Method to get the track's rating
-	 * @return The rating of the track
-	 */
-	SmfMusicRating rating( ) const;
-	
-	/**
-	 * Method to get the comments on the track
-	 * @return The comments on the track
-	 */
-	QStringList comments( ) const;
-	
-	/**
-	 * Method to get the track's duration
-	 * @return The duration of the track
-	 */
-	QTime duration( ) const;
-	
-	/**
-	 * Method to set the track title
-	 * @param aTitle The new title of the track
-	 */
-	void setTitle( const QString &aTitle );
-	
-	/**
-	 * Method to set the track album
-	 * @param aAlbum The new album of the track
-	 */
-	void setAlbum( const SmfAlbum &aAlbum );
-	
-	/**
-	 * Method to set the track's artists
-	 * @param aArtists The new artists of the track
-	 */
-	void setArtists( const SmfArtists &aArtists );
-	
-	/**
-	 * Method to set the genre of the track
-	 * @param aGenre The new genre of the track
-	 */
-	void setGenre( const QString &aGenre );
-	
-	/**
-	 * Method to set the track's tag
-	 * @param aTag The tag of the track
-	 */
-	void setTags( const QStringList &aTag );
-	
-	/**
-	 * Method to set the release year of the track
-	 * @param aYear The new release year of the track
-	 */
-	void setYear( const QDateTime &aYear );
-	
-	/**
-	 * Method to set the track's rating
-	 * @param aRating The new rating of the track
-	 */
-	void setRating( const SmfMusicRating &aRating );
-	
-	/**
-	 * Method to set the comments on the track
-	 * @param aComment The new comment of the track
-	 */
-	void setComment( const QString &aComment );
-	
-	/**
-	 * Method to set the duration of the track
-	 * @param aDuration The new duration of the track
-	 */
-	void setDuration( const QTime &aDuration );
-
-private:
-	QSharedDataPointer<SmfTrackInfoPrivate> d;
-	
-	friend QDataStream &operator<<( QDataStream &aDataStream, 
-			const SmfTrackInfo &aTrackInfo );
-
-	friend QDataStream &operator>>( QDataStream &aDataStream, 
-			SmfTrackInfo &aTrackInfo );
-	
-	};
-
-
-/**
- * Method for Externalization. Writes the SmfTrackInfo object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aTrackInfo The SmfTrackInfo object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfTrackInfo &aTrackInfo );
-
-/**
- * Method for Internalization. Reads a SmfTrackInfo object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aTrackInfo The SmfTrackInfo object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfTrackInfo &aTrackInfo);
-
-#endif /* SMFTRACKINFO_H_ */
--- a/example/clientapi/smf/inc/common/smfmusic/smftrackinfo_p.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Private class implemented for implicit sharing of SmfTrackInfo class
- *
- */
-
-#ifndef SMFTRACKINFO_P_H_
-#define SMFTRACKINFO_P_H_
-
-#include <QTime>
-#include <smfmusicrating.h>
-#include <QStringList>
-#include <QSharedData>
-
-class SmfTrackInfoPrivate : public QSharedData
-{
-public:
-	/**
-	 * Constructor
-	 */
-	SmfTrackInfoPrivate( int aMaxRating, int aMinRating ) : m_rating(aMaxRating, aMinRating) 
-		{ 
-		m_trackId.clear();
-		m_title.clear();
-		m_albumTitle.clear();
-		m_artistName.clear();
-		m_genre.clear();
-		m_tag.clear();
-		m_comment.clear();
-	}
-	
-	/**
-	 * Copy Consturctor
-	 * @param aOther The reference object to be copy constructed
-	 */
-	SmfTrackInfoPrivate( const SmfTrackInfoPrivate &aOther ) : 
-		QSharedData ( aOther ), 
-		m_trackId ( aOther.m_trackId ),
-		m_title ( aOther.m_title ),
-		m_albumTitle ( aOther.m_albumTitle ),
-		m_artistName ( aOther.m_artistName ),
-		m_genre ( aOther.m_genre ),
-		m_tag ( aOther.m_tag ),
-		m_year ( aOther.m_year ),
-		m_rating ( aOther.m_rating ),
-		m_comment ( aOther.m_comment ),
-		m_duration ( aOther.m_duration ) 	{ }
-	
-	/**
-	 * Destructor
-	 */
-	~SmfTrackInfoPrivate( );
-  
-	QString m_trackId;		// track id
-	QString m_title;		// title
-	QString m_albumTitle;	// album name
-	QString m_artistName;	// artist name
-	QString m_genre;		// genre information
-	QStringList m_tag;			// tag information
-	QDateTime m_year;			// release year
-	SmfMusicRating m_rating;// rating
-	QStringList m_comment;		// comments
-	QTime m_duration;		// duration
-	
-};
-
-#endif /* SMFTRACKINFO_P_H_ */
--- a/example/clientapi/smf/inc/common/smfpictures/smfpicture.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The picture class represents an instance of a picture
- *
- */
-
-#ifndef SMFPICTURE_H_
-#define SMFPICTURE_H_
-
-#include <QDateTime>
-#include <QStringList>
-#include <QUrl>
-#include <qdatastream.h>
-#include <QSharedData>
-#include <smfclientglobal.h>
-
-class SmfPicturePrivate;
-
-/**
- * SmfPictureVisibility enumeration
- */
-enum SmfPictureVisibility
-	{
-	SMFVisibilityFriend,
-	SMFVisibilityPersonal,
-	SMFVisibilityFamily,
-	SMFVisibilityGroup,
-	SMFVisibilityPublic
-	};
-
-/**
- * @ingroup smf_common_group
- * The picture class represents an instance of a picture
- */
-class SMFCLIENT_EXPORT SmfPicture : public QObject
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfPicture( QObject *aParent = 0 );
-	
-	/**
-	 * Copy Constructor
-	 * @param aOther The reference object
-	 */
-	SmfPicture( const SmfPicture &aOther );
-	
-	/**
-	 * CConstructs SmfPicture from QImage
-	 * @param aOther The QImage
-	 */
-	SmfPicture( const QImage &image );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfPicture( );
-	
-	/**
-	 * Method to get the id of the picture
-	 * @return The ID value 
-	 */
-	QString id( ) const;
-	
-	/**
-	 * Method to get a picture owner
-	 * @return The owner of the picture
-	 */
-	QString owner( ) const;
-	
-	/**
-	 * Method to get a picture title
-	 * @return The title of the picture
-	 */
-	QString title( ) const;
-	
-	/**
-	 * Method to get a picture description
-	 * @return The description of the picture
-	 */
-	QString description( ) const;
-	
-	/**
-	 * Method to get a visibility of a picture for public
-	 * @return The visibility mode of this picture for others
-	 */
-	SmfPictureVisibility visibility( ) const;
-	
-	/**
-	 * Method to get the date of posting the picture
-	 * @return The posted date of the picture
-	 */
-	QDateTime postedDate( ) const;
-	
-	/**
-	 * Method to get the comments for the picture
-	 * @return The comments for the picture
-	 */
-	QStringList comments( ) const;
-	
-	/**
-	 * Method to get the tags for the picture
-	 * @return The tags for the picture
-	 */
-	QStringList tags( ) const;
-	
-	/**
-	 * Method to get the url of the picture
-	 * @return The url of the picture
-	 */
-	QUrl url( ) const;
-	
-	/**
-	 * Method to get the picture data as QImage
-	 * @return The picture as QImage
-	 */
-	QImage picture( ) const;
-		
-	/**
-	 * Method to set a picture owner
-	 * @param aOwner The owner of the picture
-	 */
-	void setOwner( const QString &aOwner );
-	
-	/**
-	 * Method to set a picture title
-	 * @param aTitle The title of the picture
-	 */
-	void setTitle( const QString &aTitle );
-	
-	/**
-	 * Method to set a picture description
-	 * @param aDescription The description of the picture
-	 */
-	void setDescription( const QString &aDescription );
-	
-	/**
-	 * Method to set a visibility of a picture for public
-	 * @param aVisibility aVisibility The visibility mode of 
-	 * this picture for others
-	 */
-	void setVisibility( const SmfPictureVisibility &aVisibility );
-	
-	/**
-	 * Method to add comment on the picture
-	 * @param aComment The comment for the picture
-	 */
-	void addComment( const QString &aComment );
-	
-	/**
-	 * Method to add tags for the picture
-	 * @param aTag The tag for the picture
-	 */
-	void addTags( const QStringList &aTags );
-	
-	/**
-	 * Method to set the picture data as QImage
-	 * @param aData The picture as QImage
-	 */
-	void setPicture( const QImage &aData );
-	
-private:
-	QSharedDataPointer<SmfPicturePrivate> d;
-	
-	friend QDataStream &operator<<( QDataStream &aDataStream, 
-			const SmfPicture &aPic );
-
-	friend QDataStream &operator>>( QDataStream &aDataStream, 
-			SmfPicture &aPic );
-	
-	};
-
-
-/**
- * Method for Externalization. Writes the SmfPicture object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aPic The SmfPicture object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfPicture &aPic );
-
-/**
- * Method for Internalization. Reads a SmfPicture object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aPic The SmfPicture object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfPicture &aPic);
-
-#endif /* SMFPICTURE_H_ */
--- a/example/clientapi/smf/inc/common/smfpictures/smfpicture_p.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Private class implemented for implicit sharing of SmfPicture class
- *
- */
-
-#ifndef SMFPICTURE_P_H_
-#define SMFPICTURE_P_H_
-
-
-#include <QDateTime>
-#include <QStringList>
-#include <QUrl>
-#include <QSharedData>
-#include <smfclientglobal.h>
-
-class SmfPicturePrivate : public QSharedData
-{
-public:
-	/**
-	 * Constructor
-	 */
-	SmfPicturePrivate( ) { 
-		m_photoId.clear();
-		m_owner.clear();
-		m_title.clear();
-		m_description.clear();
-		m_comments.clear();
-		m_tags.clear();
-		m_url.clear();
-		m_caption.clear();
-	}
-	
-	/**
-	 * Copy Consturctor
-	 * @param aOther The reference object to be copy constructed
-	 */
-	SmfPicturePrivate( const SmfPicturePrivate &aOther ) : 
-		QSharedData ( aOther ), 
-		m_photoId ( aOther.m_photoId ),
-		m_owner ( aOther.m_owner ),
-		m_title ( aOther.m_title ),
-		m_description ( aOther.m_description ),
-		m_picVisibility ( aOther.m_picVisibility ),
-		m_postedOn ( aOther.m_postedOn ),
-		m_comments ( aOther.m_comments ),
-		m_tags ( aOther.m_tags ),
-		m_url ( aOther.m_url ),
-		m_picture ( aOther.m_picture ),
-		m_caption ( aOther.m_caption ) 	{ }
-	
-	/**
-	 * Destructor
-	 */
-	~SmfPicturePrivate( );
-  
-	QString m_photoId;		// unique ID of the picture, service provider specific
-	QString m_owner;	// owner of the picture
-	QString m_title;	// picture title
-	QString m_description;// description
-	SmfPictureVisibility m_picVisibility; // picture visibility
-	QDateTime m_postedOn;// date posted
-	QStringList m_comments;// comments
-	QStringList m_tags;	// tags
-	QUrl m_url;			// url
-	QImage m_picture;	// picture data as bytearray
-	QString m_caption;	// caption
-	
-};
-
-#endif /* SMFPICTURE_P_H_ */
--- a/example/clientapi/smf/inc/common/smfplace/smfplace.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,204 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The SmfPlace class represents a place and its related information
- * Note: This class has dependencies on QtMobility project
- *
- */
-
-#ifndef SMFPLACE_H_
-#define SMFPLACE_H_
-
-#include <QUrl>
-#include <qgeopositioninfo.h> // Qt mobility class
-#include <qdatastream.h>
-#include <QSharedData>
-#include <smfclientglobal.h>
-
-using namespace QtMobility; // Qt mobility - namespace
-
-typedef enum 
-{
-	SearchByStreet = 0x00,
-	SearchByLocality,
-	SearchByPostOffice,
-	SearchByTown,
-	SearchByRegion,
-	SearchByState,
-	SearchByCountry
-}SmfLocationSearchBoundary;
-
-class SmfPlacePrivate;
-
-/**
- * @ingroup smf_common_group
- * The SmfPlace class represents a place and its related information.
- * 
- * Note: This class has dependencies on QtMobility project
- */
-class SMFCLIENT_EXPORT SmfPlace : public QObject
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfPlace( QObject *aParent = 0 );
-	
-	/**
-	 * Copy Constructor
-	 * @param aOther The reference object
-	 */
-	SmfPlace( const SmfPlace &aOther );
-	
-	/**
-	 * Overloaded = operator 
-	 * @param aOther The reference object
-	 */
-	SmfPlace operator=( const SmfPlace &aOther );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfPlace( );
-	
-	/**
-	 * Method to get the place name
-	 * @return The place name
-	 */
-	QString name( ) const;
-	
-	/**
-	 * Method to get the city of place
-	 * @return The city of the place
-	 */
-	QString city( ) const;
-	
-	/**
-	 * Method to get the street information of place
-	 * @return The street information of the place
-	 */
-	QString street( ) const;
-	
-	/**
-	 * Method to get the zip code of place
-	 * @return The zip code of place
-	 */
-	QString zipCode( ) const;
-	
-	/**
-	 * Method to get the country of place
-	 * @return The country of place
-	 */
-	QString country( ) const;
-	
-	/**
-	 * Method to get the Geo Position information (like information gathered 
-	 * on a global position, direction and velocity at a particular point 
-	 * in time) of the place.
-	 * @return The Geo Position information of place
-	 */
-	QtMobility::QGeoPositionInfo geoPositionInfo( ) const;
-	
-	/**
-	 * Method to get the url indicating the place
-	 * @return The url indicating the place
-	 */
-	QUrl url( ) const;
-	
-	/**
-	 * Method to get the id of the place
-	 * @return The ID value 
-	 */
-	QString id( ) const;
-	
-	/**
-	 * Method to set the place name
-	 * @param aPlace The new place name
-	 */
-	void setName( const QString& aPlace );
-	
-	/**
-	 * Method to set the city of  place
-	 * @param aCity The new city of the place
-	 */
-	void setCity( const QString& aCity );
-	
-	/**
-	 * Method to set the street information of place
-	 * @param aStreet The new street information of the place
-	 */
-	void setStreet( const QString& aStreet );
-	
-	/**
-	 * Method to set the zip code of place
-	 * @param aZipCode The new zip code of place
-	 */
-	void setZipCode( const QString& aZipCode );
-	
-	/**
-	 * Method to set the country of place
-	 * @param aCountry The new country of place
-	 */
-	void setCountry( const QString& aCountry );
-	
-	/**
-	 * Method to set the Geo Postion information (like information gathered 
-	 * on a global position, direction and velocity at a particular point 
-	 * in time) of the place.
-	 * @param aGeoPosInfo The new Geo Position information of place
-	 */
-	void setGeoPositionInfo( const QtMobility::QGeoPositionInfo& aGeoPosInfo );
-	
-	/**
-	 * Method to set the url indicating the place
-	 * @param aUrl The new url indicating the place
-	 */
-	void setUrl( const QUrl& aUrl );
-	
-private:
-	QSharedDataPointer<SmfPlacePrivate> d;
-	
-	friend QDataStream &operator<<( QDataStream &aDataStream, 
-			const SmfPlace &aPlace );
-
-	friend QDataStream &operator>>( QDataStream &aDataStream, 
-			SmfPlace &aPlace );
-	
-	};
-
-
-/**
- * Method for Externalization. Writes the SmfPlace object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aPlace The SmfPlace object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfPlace &aPlace );
-
-/**
- * Method for Internalization. Reads a SmfPlace object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aPlace The SmfPlace object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfPlace &aPlace);
-
-#endif /* SMFPLACE_H_ */
--- a/example/clientapi/smf/inc/common/smfplace/smfplace_p.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Private class implemented for implicit sharing of SmfPlace class
- *
- */
-
-#ifndef SMFPLACE_P_H_
-#define SMFPLACE_P_H_
-
-#include <QUrl>
-#include <qgeopositioninfo.h> // Qt mobility class
-#include <QSharedData>
-
-using namespace QtMobility; // Qt mobility - namespace
-
-class SmfPlacePrivate : public QSharedData
-{
-public:
-	/**
-	 * Constructor
-	 */
-	SmfPlacePrivate( ) { 
-		m_name.clear();
-		m_city.clear();
-		m_street.clear();
-		m_zipcode.clear();
-		m_country.clear();
-		m_url.clear();
-		m_placeId.clear(); }
-	
-	/**
-	 * Copy Consturctor
-	 * @param aOther The reference object to be copy constructed
-	 */
-	SmfPlacePrivate( const SmfPlacePrivate &aOther ) : 
-		QSharedData ( aOther ), 
-		m_name ( aOther.m_name ),
-		m_city ( aOther.m_city ),
-		m_street ( aOther.m_street ),
-		m_zipcode ( aOther.m_zipcode ),
-		m_country ( aOther.m_country ),
-		m_geo ( aOther.m_geo ),
-		m_url ( aOther.m_url ),
-		m_placeId ( aOther.m_placeId ) 	{ }
-	
-	/**
-	 * Destructor
-	 */
-	~SmfPlacePrivate( );
-  
-	QString m_name;						// place name
-	QString m_city;						// city of place
-	QString m_street;					// street of place
-	QString m_zipcode;					// zip code of place
-	QString m_country;					// country of place
-	QtMobility::QGeoPositionInfo m_geo;	// place geo position information
-	QUrl m_url;							// url indicating the place
-	QString m_placeId;					// place id
-	
-};
-
-#endif /* SMFPLACE_P_H_ */
--- a/example/clientapi/smf/inc/smfclient/smfclient.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The SmfEvent class represents an event
- *
- */
-
-#ifndef SMFCLIENT_H
-#define SMFCLIENT_H
-
-#include <QObject>
-#include <QImage>
-#include <QUrl>
-
-#include "../common/SmfClientGlobal.h"
-
-class SmfProvider;
-
-/**
- * @ingroup smf_client_group 
- * Interface for a base service provider. Other service provider classes contains 
- * implementation of this base class so that each has access to service provider 
- * information.
- * All of the functionality described here should be implemented by a service
- * specific plug-in object.
- */
-class SMFCLIENT_EXPORT SmfClient
-{
-  /*Q_OBJECT*/
-
-public:
-
-  /**
-   * @param name of the service 
-   * @return service provider list
-   */
-  static QList<SmfProvider>* GetServices(const QString& serviceName); 
-  static QList<SmfProvider>* GetServices(const QString& serviceName, const QString& providerName);
-  static QList<SmfProvider>* GetServices(const QString& serviceName, const SmfProvider& provider);  
-};
-
-
-#endif // SMFCLIENT_H
--- a/example/clientapi/smf/inc/smfclient/smfcontactfetcher.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,212 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The SmfEvent class represents an event
- *
- */
-
-#ifndef SMFCONTACTHETCHER_H
-#define SMFCONTACTHETCHER_H
-
-#include <QObject>
-#include "smfglobal.h"
-#include "smfprovider.h"
-#include "smfcontact.h"
-#include "smfplace.h"
-class SmfProvider; //base-class for service provider
-class SmfContact; //class for Contact in a social network
-class SmfGroup; //class for a group in social network
-typedef QList<SmfContact>  SmfContactList;
-
-//List of SmfGroup
-typedef QList<SmfGroup> SmfGroupList;
-/**
- * @ingroup smf_client_group 
- * Interface to search for contacts/connections from a service provider. This class
- * provides basic functionality to allow applications to obtain list of
- * contacts or friends in a social networking service.
- * Note that to get the base provider info like service name, icon, description etc
- * use getProvider().
- * See also:
- * SmfProvider::serviceName(), SmfProvider::serviceIcon(), SmfProvider::description()
- *
- * All of the functionality described here should be implemented by a service
- * specific plug-in object.
- * Interface name:- org.symbian.smf.client.contact.fetcher
- */
-class SMFCLIENT_EXPORT SmfContactFetcher : public QObject
-{
-  Q_OBJECT
-
-public:
-
-  /**
-   * Constructs the SmfContactFetcher.
-   * @param parent base provider info
-   * @param contact Used for searching friends of the given contact
-   * Seeing as this is a plug-in implementation, these will realistically
-   * be generated by SMF factory of some kind
-   */
-  SmfContactFetcher(SmfProvider* baseProvider);
-  SmfContactFetcher(SmfProvider* baseProvider, SmfContact* contact);
-  ~SmfContactFetcher();
-
-public:
-  /**
-   * Get the friend listing asynchronously. The friendsListAvailable() signal
-   * is emitted with SmfContactList once data is arrived.
-   * When the list is big user can specify the page number and per page item data.
-   * If not supplied by the user default values are used.
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-  bool friends(int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE);
-
-  /**
-   * Get the list of followers asynchronously. The followersListAvailable() signal
-   * is emitted with SmfContactList once data is arrived. Please note that some
-   * service may not support followers/fans - FALSE is returned if not supported.
-   * When the list is big user can specify the page number and per page item data.
-   * If not supplied by the user default values are used.
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-  bool followers(int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE); // list of contact objects
-
-  /**
-   * Searches for a contact The searchContactFinished() signal
-   * is emitted with SmfContactList once data is arrived.
-   * When the list is big user can specify the page number and per page item data.
-   * If not supplied by the user default values are used.
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-  void search(SmfContact* contact,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE) ; // list of contact objects
-
-  /**
-   * Searches for a contacts (friends) who are near the user.
-   * Signal searchNearFinished() is emitted with SmfContactList once data is arrived.
-   * Proximity defines accuracy level
-   * When the list is big user can specify the page number and per page item data.
-   * If not supplied by the user default values are used.
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-   bool searchNear(SmfPlace* location,SmfLocationSearchBoundary proximity,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE) ;
-
-
-  /**
-   * Get the list of groups. The groupListAvailable() signal
-   * is emitted with SmfGroupList once data is arrived. False might be returned
-   * if this service doesn't support any mode of grouping (very rare).
-   * When the list is big user can specify the page number and per page item data.
-   * If not supplied by the user default values are used.
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-   bool groups(int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE) ; // list of group objects
-
-  /**
-   * Searches for Smf Contacts in an Smf group.
-   * When the list is big user can specify the page number and per page item data.
-   * If not supplied by the user default values are used.
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   * @param  group The group to be searcged in
-   */
-   bool searchInGroup(SmfGroup group,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE) ; // list of contact objects
-
-
-  //APIs to get/set base provider info (SmfProvider)
-
-  /**
-   * Gets the base provider info
-   */
-   SmfProvider* getProvider() ;
-
-public slots:
-
-signals:
-
-	/**
-	 * This signal is emitted when a request to get friends is completed.
-	 * Note if number of friends is large, then it can download the list page by page.
-	 * In that case this signal is emitted multiple times.
-	 *  @param list list of friends
-	 *  @param error error string
-	 *  @param resultPage Page number info
-	 *  @see friends()
-	 */
-	void friendsListAvailable(SmfContactList* list, QString error, SmfResultPage resultPage);
-
-	/**
-	 * This signal is emitted when a request to get followers is completed
-	 *  Note if number of followers is large, then it can download the list page by page
-	 *  In that case this signal is emitted multiple times.
-	 *  @param list list of followers
-	 *  @param error error string
-	 *  @param resultPage Page number info
-	 *  @see followers()
-	 */
-	void followersListAvailable(SmfContactList* list, QString error, SmfResultPage resultPage);
-
-	/**
-	 * This signal is emitted when a request to get groups is completed
-	 * Note if number of groups is large, then it can download the list page by page
-	 *  In that case this signal is emitted multiple times.
-	 *  @param list list of groups
-	 *  @param error error string
-	 *  @param resultPage Page number info
-	 *  @see groups()
-	 */
-	void groupListAvailable(SmfGroupList* list, QString error, SmfResultPage resultPage);
-
-	/**
-	 * Emitted when search for a contact is finished.
-	 * Note if number of contacts in the search is large, then it can download the list page by page
-	 * In that case this signal is emitted multiple times.
-	 * @param list List of filtered contacts
-	 * @param resultPage Page number info
-	 * @see search()
-	 */
-	void searchContactFinished(SmfContactList* list,QString error, SmfResultPage resultPage);
-
-
-	/**
-	 * Emitted when search for contacts who are near a geographic location, is finished.
-	 * Note if number of contacts in the search is large, then it can download the list page by page
-	 * In that case this signal is emitted multiple times.
-	 * @param list List of filtered contacts
-	 * @param resultPage Page number info
-	 * @see search()
-	 */
-	void searchNearFinished(SmfContactList* list,QString error, SmfResultPage resultPage);
-
-	/**
-	 * Emitted when search for a contact in a group is finished
-	 * Note if number of contacts in the search is large, then it can download the list page by page
-	 * In that case this signal is emitted multiple times.
-	 * @param list list of filtered contacts
-	 * @param resultPage Page number info
-	 * @see searchInGroup()
-	 */
-	void searchInGroupFinished(SmfContactList* list,QString error, SmfResultPage resultPage);
-
-private:
-  SmfProvider* m_baseProvider;
-};
-
-SMF_SERVICE_NAME(SmfContactFetcher, "org.symbian.smf.client.contact.fetcher\0.2")
-#endif // SMFCONTACTHETCHER_H
--- a/example/clientapi/smf/inc/smfclient/smfgallery.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/**
- * 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
- *
- * Description:
- * The SmfEvent class represents an event
- *
- */
-
-#ifndef SMFGALLERY_H
-#define SMFGALLERY_H
-
-#include "smfglobal.h"
-#include "smfprovider.h"
-#include "../common/SmfClientGlobal.h"
-class SmfProvider;
-class SmfComment; //user id, string, and url
-class SmfPicture;
-
-
-#include <QObject>
-#include <QDateTime>
-#include <QStringList>
-//List of SmfPicture
-typedef QList<SmfPicture> SmfPictureList;
-/**
- * @ingroup smf_client_group 
- * Interface to a remote gallery service. This class
- * provides some basic gallery functionality to allow applications
- * to interact with a picture gallery in a social network.
- *
- * Note that branding information for the particular service implementation
- * is available from getProvider() API. See also:
- * SmfProvider::serviceName(), SmfProvider::serviceIcon()
- *
- * All of the functionality described here should be implemented by a service
- * specific plug-in object.
- * Interface name for SmfGallery org.symbian.smf.client.gallery
- */
-class SMFCLIENT_EXPORT SmfGallery : public QObject
-{
-  Q_OBJECT
-
-public:
-  /**
-   * Constructs SmfGallery.
-   * @param baseProvider The base provider info
-   * Seeing as this is a plug-in implementation, these will realistically
-   be generated by SMF factory of some kind
-   */
-
-  SmfGallery(SmfProvider* baseprovider = 0);
-  ~SmfGallery();
-
-public:
-  /**
-   * Get the picture listing asynchronously.
-   * The picturesAvailable() signal is emitted with SmfPictureList once the pictures have arrived.
-   * When the list is big user can specify the page number and per page item data.
-   * If not supplied by the user default values are used.
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-  void pictures(int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE);
-
-  /**
-   * Returns a user title/caption for the picture
-   */
-  QString description(SmfPicture& picture); // A user title or caption, maybe?
-
-  //APIs to get/set base provider info (SmfProvider)
-
-  /**
-   * Gets the base provider info
-   */
-   SmfProvider* getProvider() ;
-
-public slots:
-	/**
-	 * Upload an image.Implemented as slot to connect to UI controls more easily
-	 * uploadFinished() signal is emitted with the success value of the upload
-	 * @param image the image to be uploaded
-	 */
-   void upload(SmfPicture* image) ;
-
-	/**
-	 * Upload an list image.Implemented as slot to connect to UI controls more easily
-	 * uploadFinished() signal is emitted with the success value of the upload
-	 * @param images the list image to be uploaded
-	 */
-   void upload(SmfPictureList* images) ;
-
-  /**
-   * Posts a comment for an image. uploadFinished() signal is emitted
-   * with success of the post once comment is posted.
-   * @param image Image to comment on
-   * @param comment Comment to post
-   */
-   void postComment(SmfPicture image, SmfComment comment) ;
-
-signals:
-	/*
-	 * Notification on arrival of list of SmfPicture as a result of request.
-	 * Note if number of friends is large, then it can download the list page by page.
-	 * In that case this signal is emitted multiple times.
-	 * through pictures().
-	 * @param pics Picture list
-	 * @param error Error string
-	 * @param resultPage Page number info
-	 */
-	void picturesAvailable(SmfPictureList* pics, QString error, SmfResultPage resultPage);
-
-  /**
-   * Notification of the success of the uploading of image/comment
-   * @param error The upload success result of each individual pictures
-   */
-  void uploadFinished(QList<bool> error);
-private:
-  SmfProvider* m_baseProvider;
-};
-
-SMF_SERVICE_NAME(SmfGallery, "org.symbian.smf.client.gallery\0.2")
-
-#endif // SMFGALLERY_H
-
--- a/example/clientapi/smf/inc/smfclient/smfmusic.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,526 +0,0 @@
-/**
- * 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
- *
- * Description:
- * The SmfEvent class represents an event
- *
- */
-
-#ifndef SMFMUSIC_H
-#define SMMUSIC_H
-
-#include <QObject>
-
-#include <qmobilityglobal.h>
-#include <qgeopositioninfo.h>
-
-#include "smfglobal.h"
-#include "smfprovider.h"
-#include "smfcontact.h"
-#include "smfevent.h"
-
-class SmfProvider; //basic Smf service Provider info
-class SmfContact; // Smf contact
-class SmfMusicRating;//rating value from 0..31 - services would map accordingly
-class SmfMusicProfile; //user profile containing music usage and interest info, extends SmfContact
-class SmfTrackInfo; //id, title, album, artist, genre, tag, director,release year, rating, comment info
-class SmfMusicFingerPrint; //generation is not in scope of smf
-class SmfVenue;
-class SmfEvent;
-class SmfPlaylist;
-class SmfLyricsService;
-class SmfLyrics;
-class SmfSubtitle;
-class SmfSubtitleSearchFilter;
-
-typedef QList<SmfMusicProfile> SmfMusicProfileList;
-typedef QList<SmfTrackInfo> SmfTrackInfoList;
-typedef QList<SmfEvent> SmfEventsList;
-typedef QList<SmfProvider> SmfProviderList;
-typedef QList<SmfPlaylist> SmfPlaylistList;
-typedef QList<SmfVenue> SmfVenueList;
-typedef QList<SmfLyrics> SmfLyricsList;
-typedef QList<SmfSubtitle> SmfSubtitleList;
-/**
- * @ingroup smf_client_group
-  * Basic music service ("org.symbian.smf.client.music.service")
-  */
-class SMFCLIENT_EXPORT SmfMusicService : public QObject
-{
-  Q_OBJECT
-
-public:
-  /**
-   * Constructs SmfMusicService.
-   * @param baseProvider The base provider info
-   * Seeing as this is a plug-in implementation, these will realistically
-   *  be generated by SMF factory of some kind
-   */
-   SmfMusicService(SmfProvider* baseProvider = 0);
-  ~SmfMusicService();
-
-public:
-
-  /**
-   * Gets self profile information asynchronously.
-   * userInfoAvailable() signal is emitted with SmfMusicProfile when the info is arrived
-   */
-  void userinfo() ;
-
-  /**
-   * Asynchronously searches information about other service users for a particular venue
-   * searchInfoAvailable() signal is emitted with SmfMusicProfileList when the info is arrived.
-   * When the list is big user can specify the page number and per page item data.
-   * If not supplied by the user default values are used.
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-  void searchUser(SmfVenue venue,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE) ;
-
-  /**
-   * Gets the base provider info
-   */
-  SmfProvider* getProvider() ;
-
-
-signals:
-	/**
-	 * Notification on arrival of the self profile as result of userinfo().
-	 * @param profile The self profile
-	 */
-	void userInfoAvailable(SmfMusicProfile* profile, QString error);
-
-	void searchInfoAvailable(SmfMusicProfileList& profileList, QString error,SmfResultPage resultPage);
-private:
-  SmfProvider* m_baseProvider;
-};
-SMF_SERVICE_NAME(SmfMusicService, "org.symbian.smf.client.music.service\0.2")
-
-
-/**
-* Provides service ("org.symbian.smf.client.music.search") for music search
-*/
-class SMFCLIENT_EXPORT SmfMusicSearch : public QObject
-{
-  Q_OBJECT
-
-public:
-  /**
-   * Constructs SmfMusicSearch with base provider as arguement.
-   * Seeing as this is a plug-in implementation, these will realistically
-   * be generated by SMF factory of some kind
-   */
-
-  SmfMusicSearch(SmfProvider* baseProvider = 0);
-  ~SmfMusicSearch();
-
-public:
-  // Get the track listing - might be made asynchrnous later
-
-  /**
-   * Searches for music recommendations similar to a particulartrack asynchronously.
-   * The signal trackSearchAvailable() is emitted with SmfTrackInfoList
-   * once its arrived.
-   * When the list is big user can specify the page number and per page item data.
-   * If not supplied by the user default values are used.
-   * @param track The track for which similar recommendations need to be fetched.
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-  void recommendations(SmfTrackInfo track,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ; // basic list of track objects
-
-  /**
-   * Searches for tracks similar to a given track asynchronously.
-   * The signal trackSearchAvailable() is emitted with SmfTrackInfoList
-   * once its arrived.
-   * When the list is big user can specify the page number and per page item data.
-   * If not supplied by the user default values are used.
-   * @param track The search criteria, similar tracks are searched
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-  void tracks(SmfTrackInfo track,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ; // basic list of track objects
-
-  /**
-   * Searches for a track having similar finger print asynchronously.
-   * The signal trackSearchAvailable() is emitted with SmfTrackInfoList
-   * once its arrived.
-   * @param signature The search criteria,signature to be searched for
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-  void trackInfo(SmfMusicFingerPrint signature,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ; // search by fingerprint object
-
-  /**
-   * Search information about where to buy this song from asynchronously.
-   * The signal storeSearchAvailable() is emitted with SmfProviderList once its arrived.
-   * @param track The search criteria for stores
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-  void stores(SmfTrackInfo track,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ;
-
-  //APIs to get/set base provider info (SmfProvider)
-
-  /**
-   * Gets the base provider info
-   */
-  SmfProvider* getProvider()  ;
-
-
-public slots:
-
-	/**
-	 * Posts currently playing track.
-	 * Success can be checked by checking the signal postFinished()
-	 * @param track Track to post
-	 */
-  void postCurrentPlaying(SmfTrackInfo track)  ;
-  //int postRating(SmfTrackInfo track, SmfMusicRating rate)  ;
-  //int postComments(SmfTrackInfo track, SmfComment comment)  ;
-
-signals:
-	/**
-	 * Emitted when the search result for a track is available.
-	 * Note if number of tacks in the search is large, then it can download the list page by page.
-	 * In that case this signal is emitted multiple times.
-	 * @param resultPage Page number info
-	 */
-	void trackSearchAvailable(SmfTrackInfoList* result, QString error,SmfResultPage resultPage);
-
-	/**
-	 *  Emitted when the search result for a store is available.
-	 *  Note if number of tacks in the search is large, then it can download the list page by page.
-	 *  In that case this signal is emitted multiple times.
-	 *  @param resultPage Page number info
-	 */
-	void storeSearchAvailable(SmfProviderList* result, QString error, SmfResultPage resultPage);
-private:
-  SmfProvider* m_baseProvider;
-};
-SMF_SERVICE_NAME(SmfMusicSearch, "org.symbian.smf.client.music.search\0.2")
-
-
-/**
- * Remote playlist
- */
-class SMFCLIENT_EXPORT SmfPlaylist : public QObject
-	{
-	Q_OBJECT
-
-public:
-	SmfPlaylist();
-	~SmfPlaylist();
-
-	/**
-	 * Gets tracks in the playlist
-	 */
-	SmfTrackInfoList* getTrackList();
-
-	/**
-	 * Gets playlist title
-	 */
-	QString getPlayListTitle();
-
-	/**
-	 * Gets the creation date
-	 */
-	QDateTime getCreationDate();
-
-	/**
-	 * Sets tracks in the playlist
-	 */
-	void setTrackList(SmfTrackInfoList* trackList);
-
-	/**
-	 * Sets playlist title
-	 */
-	void setPlayListTitle(QString title);
-
-	/**
-	 * Sets creation date
-	 */
-	void setCreationDate(QDateTime time);
-
-private:
-	SmfTrackInfoList* m_trackList;
-	QString m_title;
-	QDateTime m_creationDate;
-	};
-
-
-/**
- * provides service ("org.symbian.smf.client.music.playlist")
- *
- * Interface to a remote playlist service. This class
- * provides some basic functionality to allow applications
- * to interact with playlists in some music related service provider (e.g. last.fm).
- *
- * Note that branding information for the particular service implementation
- * is available from getProvider() API. See also:
- * SmfProvider::serviceName(), SmfProvider::serviceIcon()
- *
- * All of the functionality described here should be implemented by a service
- * specific plug-in object.
- *
- */
-class SMFCLIENT_EXPORT SmfPlaylistService : public QObject
-{
-  Q_OBJECT
-
-public:
-  /**
-   * Constructs SmfPlaylistService with base provider info
-   * Seeing as this is a plug-in implementation, these will realistically
-   * be generated by SMF factory of some kind
-   */
-  SmfPlaylistService(SmfProvider* baseProvider = 0);
-  ~SmfPlaylistService();
-
-public:
-
-  /**
-   * Gets the list playlists for the logged-in user asynchronously.
-   * The signal playlistsListAvailable() signal is emitted with
-   * SmfPlaylistList once its arrived .
-   * When the list is big user can specify the page number and per page item data.
-   * If not supplied by the user default values are used.
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-  void playlists(int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ; // basic list of playlist objects
-
-  /**
-   * Gets the list playlists for the given user asynchronously.
-   * The signal playlistsListAvailable() signal is emitted with
-   * SmfPlaylistList once its arrived.
-   * When the list is big user can specify the page number and per page item data.
-   * If not supplied by the user default values are used.
-   * @param user User for which to get the playlists
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-  void playlistsOf(SmfMusicProfile* user,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ;
-
-  //APIs to get/set base provider info (SmfProvider)
-
-  /**
-   * Gets the base provider info
-   */
-  SmfProvider* getProvider()  ;
-
-
-public slots:
-
-	/**
-	 * Upload currently playing track to a playlist. Signal
-	 * playlistUpdated() can be checked for success value
-	 * @param plst The playlist to be added in
-	 * @param tracks The list of tracks to uploaded
-	 */
-  int addToPlaylist(SmfPlaylist plst, SmfTrackInfoList* tracks)  ;
-
-	/**
-	 * Upload currently playing playlist . Signal
-	 * playlistUpdated() can be checked for success value
-	 * @param plst The playlist to be uploaded
-	 */
-  int postCurrentPlayingPlaylist(SmfPlaylist plst)  ;
-
-
-signals:
-	/**
-	 * Notification of availability of list of playlists requested.
-	 * Note if number of list is large, then it can download the list page by page.
-	 * In that case this signal is emitted multiple times.
-	 * @param resultPage Page number info
-	 */
-	void playlistsListAvailable(SmfPlaylistList*, QString error, SmfResultPage resultPage);
-	/**
-	 * Signals remote updation of playlist with success value
-	 */
-    int playlistUpdated(bool success) ;
-private:
-  SmfProvider* m_baseProvider;
-};
-SMF_SERVICE_NAME(SmfPlaylistService, "org.symbian.smf.client.music.playlist\0.2")
-
-
-/**
-* provides service ("org.symbian.smf.client.music.events")
-*/
-class SMFCLIENT_EXPORT SmfMusicEvents : public QObject
-{
-  Q_OBJECT
-
-public:
-  /**
-   * Constructs SmfMusicEvents with base provider info
-   * Seeing as this is a plug-in implementation, these will realistically
-   *  be generated by SMF factory of some kind
-   */
-  SmfMusicEvents(SmfProvider* baseProvider = 0);
-  ~SmfMusicEvents();
-
-public:
-
-  /**
-   * Gets list of events in a particular location asynchronously.
-   * eventsAvailable() signal is emitted with SmfEventsList once its arrived.
-   * When the list is big user can specify the page number and per page item data.
-   * If not supplied by the user default values are used.
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-  void events(QtMobility::QContactGeolocation location,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ;
-
-  /**
-   * Gets list of venues of a particular location asynchronously.
-   * venuesAvailable() signal is emitted with SmfVenueList once its arrived.
-   * When the list is big user can specify the page number and per page item data.
-   * If not supplied by the user default values are used.
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-  void venues(QtMobility::QContactGeolocation location,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ; // basic list of venue objects
-
-  /**
-   * Gets list of events in a particular venue asynchronously.
-   * eventsAvailable() signal is emitted with SmfEventsList once its arrived.
-   * When the list is big user can specify the page number and per page item data.
-   * If not supplied by the user default values are used.
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-  void events(SmfVenue venue,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ; // basic list of events objects
-
-
-  //APIs to get/set base provider info (SmfProvider)
-
-  /**
-   * Gets the base provider info
-   */
-  SmfProvider* getProvider()  ;
-
-
-public slots:
-
-	/**
-	 * Updates events. Might not be supported by all service provider.
-	 * eventsUpdated() signal can be checked for success value.
-	 * @param SmfEventsList List of events to be posted
-	 */
-	 void postEvents(SmfEventsList events);
-
-signals:
-
-	/**
-	 * Notification of the success of request to post an event
-	 */
-	void eventsUpdated(bool success);
-
-	/**
-	 * Notification on arrival of event lists
-	 * Note if number of list is large, then it can download the list page by page.
-	 * In that case this signal is emitted multiple times.
-	 * @param resultPage Page number info
-	 */
-	void eventsAvailable(SmfEventsList* list, QString error, SmfResultPage resultPage);
-
-	/**
-	 *  Notification on arrival of venues lists
-	 * Note if number of list is large, then it can download the list page by page.
-	 * In that case this signal is emitted multiple times.
-	 * @param resultPage Page number info
-	 */
-	void venuesAvailable(SmfVenueList* list, QString error, SmfResultPage resultPage);
-private:
-  SmfProvider* m_baseProvider;
-};
-SMF_SERVICE_NAME(SmfMusicEvents, "org.symbian.smf.client.music.events\0.2")
-
-
-/**
-* provides service ("org.symbian.smf.client.music.lyrics")
-*/
-class SMFCLIENT_EXPORT SmfLyricsService : public QObject
-{
-  Q_OBJECT
-
-public:
-  /**
-   * Constructs SmfLyricsService with base provider info.
-   * Seeing as this is a plug-in implementation, these will realistically
-   * be generated by SMF factory of some kind
-   */
-
-  SmfLyricsService(SmfProvider* baseProvider = 0);
-  ~SmfLyricsService();
-
-public:
-
-  /**
-   * Get the lyrics lists asynchrnously, it fetches texts without time info.
-   * lyricsAvailable() notification comes SmfLyricsList with when the data is available
-   * @param track Track for which lyrics needs to be fetched.
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-  void lyrics(SmfTrackInfo track,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ;
-
-  /**
-   * Get the lyrics lists asynchrnously, it fetches texts with time info.
-   * Subtitle search filter can be applied
-   * subtitleAvailable() notification comes SmfSubtitleList with when the data is available
-   * @param track Track for which subtitle needs to be fetched.
-   * @param filter Subtitle search filter
-   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
-   */
-  void subtitles(SmfTrackInfo track, SmfSubtitleSearchFilter filter,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ; // texts with time information
-  //APIs to get/set base provider info (SmfProvider)
-
-  /**
-   * Gets the base provider info
-   */
-  SmfProvider* getProvider()  ;
-
-
-public slots:
-
-
-signals:
-
-	/**
-	 * Notification on arrival of lyrics
-	 * Note if the list is large, then it can download the list page by page.
-	 * In that case this signal is emitted multiple times.
-	 * @param resultPage Page number info
-	 */
-	void lyricsAvailable(SmfLyricsList* list, QString error, SmfResultPage resultPage);
-
-	/**
-	 * Notification on arrival of subtitle based on filter.
-	 * Note if the list is large, then it can download the list page by page.
-	 * In that case this signal is emitted multiple times.
-	 * @param resultPage Page number info
-	 */
-	void subtitleAvailable(SmfSubtitleList* list, QString error, SmfResultPage resultPage);
-private:
-  SmfProvider* m_baseProvider;
-};
-SMF_SERVICE_NAME(SmfLyricsService, "org.symbian.smf.client.music.lyrics\0.2")
-
-#endif // SMFMUSIC_H
-
--- a/example/clientapi/smf/inc/smfclient/smfpostprovider.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,201 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The SmfEvent class represents an event
- *
- */
-#ifndef SMFPOSTPROVIDER_H
-#define SMFPOSTPROVIDER_H
-
-#include <QObject>
-#include <qmobilityglobal.h>
-#include <qgeopositioninfo.h>
-#include <QTextDocument>
-
-#include "smfglobal.h"
-#include "smfprovider.h"
-#include "smfcontact.h"
-#include "smfplace.h"
-
-class SmfProvider; //base-class for service provider
-class SmfContact; //class for Contact in a social network
-
-
-
-/**
- * class for information (text, image and url) contained in post in social network
- * This could be changed to contain html data
- * 
- * For those service provider which supports only string format, @see supportedFormats()
- */
-class  SmfPost : public QTextDocument
-	{
-	Q_OBJECT
-	
-public:
-	SmfPost ( QObject * parent = 0 );
-	SmfPost ( const QString & text, QObject * parent = 0 );
-	
-private:
-	QString*	id;
-	SmfProvider* provider;
-	};
-
-/**
- *  Presence info of the user
- */
-enum SmfAppearenceInfo
-	{
-	ENotSupported,
-	EOnline,
-	EOffline,
-	EBusy,
-	EDoNotDisturb,
-	EAppearOffline,
-	EOther
-	};
-
-//Post lists
-typedef QList<SmfPost> SmfPostList;
-
-/**
- * @ingroup smf_client_group 
- * Interface to post scrap/tweet like info.
- * Note that branding information for the particular service implementation
- * is available from getProvider() API. See also:
- * SmfProvider::serviceName(), SmfProvider::serviceIcon(), SmfProvider::description()
- *
- * Interface name for SmfPostProvider is org.symbian.smf.client.contact.posts
- */
-class SMFCLIENT_EXPORT SmfPostProvider : public QObject
-	{
-	Q_OBJECT
-
-public:
-	/**
-	 * Constructs SmfPostProvider.
-	 * @param baseProvider The base provider info
-	 * Seeing as this is a plug-in implementation, these will realistically
-	 * be generated by SMF factory of some kind
-	 */
-	SmfPostProvider(SmfProvider* baseProvider);
-	~SmfPostProvider();
-
-
-public:
-	/**
-	 * returns maximum no of chars (unicode) that service provider can post without truncation
-	 * negative value means no limit
-	 */
-	qint32 maxCharsInPost() const;
-	/**
-	 * returns maximum no of items that can be returned in a single query to getPosts
-	 * negative value means feature not supported.
-	 */
-	qint32 maxItems() const;
-
-	/**
-	 * returns all the formatting of posts that this service provider supports.
-	 * May return 0 items to mean only QString is supported.
-	 */
-	QVector<QTextFormat> supportedFormats () const;
-	
-	/**
-	 * returns whether this SP supports Appearence @see SmfAppearenceInfo
-	 */
-	bool supportsAppearence () const;
-
-public slots:
-	/**
-	 * Gets the posts asynchronously. The signal postsAvailable()with SmfPostList is emitted
-	 * once the post lists are available
-	 * @param user user's contact in this SP, omit for self contact
-	 * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
-     * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE 
-	 * @see postsAvailable()
-	 */
-	void posts(SmfContact* user = 0,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE);
-	
-	/**
-	 * Updates a post to own area, the success of the post can be checked with signal
-	 * updatePostFinished() signal
-	 * @param postData data to be posted
-	 * @param location location data
-	 */
-	void post(SmfPost& postData,SmfPlace& location) ; 
-	/**
-	 * Updates the last post to own area with new data, the success of the post can be checked with signal
-	 * updatePostFinished() signal
-	 * @param postData edited/new data to be posted
-	 * @param location location data
-	 */
-	void updatePost(SmfPost& postData); 
-	
-	/**
-	 * Updates a post to a particular Smf contact. the success of the post can be checked with signal
-	 * updatePostFinished() signal.
-	 * @param postData data to be posted
-	 * @param contact contact to which the post is to be directed
-	 * @param location location data
-	 */
-	void postDirected(SmfPost& postData,SmfContact& contact,SmfPlace* location=0);
-	
-	/**
-	 * Posts appearance info of the user.e.g. appear offline, busy, do-not-disturb
-	 * @param appearence user appearance
-	 * @see SmfPresenceInfo
-	 * @return False on Failure/Not supported 
-	 */
-	bool postAppearence(SmfAppearenceInfo appearence); 
-	/**
-	 * Share /a contact's post to user's friends and followers (e.g. retweet in twitter, share on facebook)
-	 * emits updatePostFinished() signal when done.
-	 * @param postData data to be posted
-	 * @param contact contact to which the post belonged
-	 * @param bool whether user changed items within the post
-	 */
-	void sharePost(SmfPost& postData,SmfContact& contact,bool edited);
-	
-	//APIs to get/set base provider info (SmfProvider)
-	
-	/**
-	 * Gets the base provider info
-	 */
-	SmfProvider* getProvider() const;
-	
-signals:
-	
-	/**
-	 * Emitted when a request to  getPosts() is finished
-	 * Note if number of posts is large, then it can download the list page by page
-	 * In that case this signal is emitted multiple times.
-	 * @param list list of posts
-	 * @param error error string
-	 * @param resultPage Page number info
-	 */
-	void postsAvailable(SmfPostList* list, QString error, SmfResultPage resultPage);
-	
-	/**
-	 * Emitted when update post is finished.
-	 * @param success the success of the update
-	 */
-	void postFinished(bool success);
-	
-	private:
-	SmfProvider* m_baseProvider;
-	};
-
-SMF_SERVICE_NAME(SmfPostProvider, "org.symbian.smf.client.contact.posts\0.2")
-#endif // SMFPOSTPROVIDER_H
--- a/example/clientapi/smf/inc/smfclient/smfprovider.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The SmfEvent class represents an event
- *
- */
-
-#ifndef SMFPROVIDER_H
-#define SMFPROVIDER_H
-
-#include <QObject>
-#include <QImage>
-#include <QUrl>
-
-#include "../common/SmfClientGlobal.h"
-/**
- * @ingroup smf_client_group 
- * Interface for a base service provider. Other service provider classes contains 
- * implementation of this base class so that each has access to service provider 
- * information.
- * All of the functionality described here should be implemented by a service
- * specific plug-in object.
- */
-class SMFCLIENT_EXPORT SmfProvider : public QObject
-{
-  Q_OBJECT
-
-public:
-  /**
-   *  Seeing as this is a plug-in implementation, these will realistically be generated by SMF factory of some kind
-   */
-   
-  SmfProvider(QObject* parent = 0);
-  ~SmfProvider();
-
-public:
-  /**
-   * Localizable name of the service 
-   * @return service name
-   */
-  QString& serviceName() const; 
-  
-  /**
-   * Logo of the service
-   * @return logo image of the service
-   */
-  QImage& serviceIcon() const; 
-  
-  /**
-   * Readable service description
-   * @return service description
-   */
-  QString description() const; 
-  
-  /*
-   * Website of the service
-   */
-  QUrl serviceUrl() const;
-  
-  /**
-   * URL of the application providing this service
-   */
-  QUrl applicationUrl() const; //
-  
-  /**
-   * service types - list of interfaces that this provider support
-   */
-  QList<QString> serviceTypes() const;
-};
-/**
-* Externalization
-*/
-QDataStream &operator<<(QDataStream &, const SmfProvider&);
-/**
- * Internalization
- */
-QDataStream &operator>>(QDataStream &, SmfProvider&);
-
-#endif // SMFPROVIDER_H
--- a/example/clientapi/smf/inc/smfplugins/base/smfpluginbase.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The SmfPluginBase class is the base class for all plugins.
- *
- */
-
-#ifndef SMFPLUGINBASE_H_
-#define SMFPLUGINBASE_H_
-
-#include <smfproviderbase.h>
-#include <QNetworkReply>
-#include <smfglobal.h>
-
-/**
- * @ingroup smf_plugin_group
- * The SmfPluginBase class is the base class for all plugins 
- */
-class SmfPluginBase : public QObject
-	{
-	Q_OBJECT
-
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfPluginBase( QObject* aParent = 0 );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfPluginBase( );
-
-	/**
-	 * Method to get the provider information
-	 * @return Instance of SmfProviderBase
-	 */
-	virtual SmfProviderBase* getProviderInfo( ) = 0;
-	
-	/**
-	 * Method to get the result for a network request.
-	 * @param aTransportResult The result of transport operation
-	 * @param aReply The QNetworkReply instance for the request
-	 * @param aResult [out] An output parameter to the plugin manager.If the 
-	 * return value is SmfSendRequestAgain, QVariant will be of type 
-	 * SmfPluginRequestData.
-	 * 
-	 * For SmfContactFetcherPlugin: If last operation was friends() or followers() 
-	 * or search() or searchInGroup() or searchNear(), aResult will be of type 
-	 * QList<SmfContact>. If last operation was groups(), aResult will be of 
-	 * type QList<SmfGroup>
-	 * For SmfPostProviderPlugin: If last operation was retrieve(), aResult will be 
-	 * of type QList<SmfPost>. If last operation was post() or updatePost() or 
-	 * postDirected() or commentOnAPost() or postAppearence(), aResult will be 
-	 * of type bool
-	 * For SmfLyricsServicePlugin: If last operation was lyrics(), aResult will 
-	 * be of type SmfLyrics. If last operation was subtitles(), aResult will 
-	 * be of type SmfSubtitle.
-	 * For SmfMusicEventsPlugin: If last operation was events(), aResult will 
-	 * be of type QList<SmfEvent>. If last operation was venues(), aResult 
-	 * will be of type QList<SmfPlace>. If last operation was postEvents(), 
-	 * aResult will be of type bool
-	 * For SmfMusicSearchPlugin: If last operation was recommendations() or 
-	 * tracks() or trackInfo(), aResult will be of type QList<SmfTrackInfo>. 
-	 * If last operation was stores(), aResult will be of type 
-	 * QList<SmfProvider>. If last operation was postCurrentPlaying(), 
-	 * aResult will be of type bool.
-	 * For SmfMusicServicePlugin: If last operation was userInfo(), aResult 
-	 * will be of type SmfMusicProfile. If last operation was searchUser(), 
-	 * aResult will be of type QList<SmfMusicProfile>.
-	 * For SmfPlaylistServicePlugin: If last operation was playlists() or 
-	 * playlistsOf(), aResult will be of type QList<SmfPlaylist>. If last 
-	 * operation was addToPlaylist() or postCurrentPlayingPlaylist(), 
-	 * aResult will be of type bool.
-	 * For SmfGalleryPlugin: If last operation was pictures(), aResult will 
-	 * be of type QList<SmfPicture>. If last operation was description(), 
-	 * aResult will be of type QString. If last operation was upload() or 
-	 * postComment(), aResult will be of type bool.
-	 * 
-	 * @param aRetType [out] SmfPluginRetType
-	 * @param aPageResult [out] The SmfResultPage structure variable
-	 */
-	virtual SmfPluginError responseAvailable( 
-			const SmfTransportResult aTransportResult, 
-			QNetworkReply *aReply, 
-			QVariant* aResult, 
-			SmfPluginRetType aRetType,
-			SmfResultPage &aPageResult ) = 0;
-	
-	};
-
-
-#endif /* SMFPLUGINBASE_H_ */
--- a/example/clientapi/smf/inc/smfplugins/base/smfproviderbase.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,170 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * The Provider Base class is the class that has to be contained as a member 
- * in all Plug-in Interfaces.
- *
- */
-
-#ifndef SMFPROVIDERBASE_H_
-#define SMFPROVIDERBASE_H_
-
-#include <QImage>
-#include <QUrl>
-#include <QBuffer>
-#include <smfglobal.h>
-#include <qdatastream.h>
-#include <QSharedData>
-
-class SmfProviderBasePrivate;
-
-/**
- * @ingroup smf_plugin_group
- * The Provider Base class is the class that has to be contained as a member 
- * in all Plug-in Interfaces.
- * 
- * All of plug-ins should contain this class as a member and should also 
- * contain a public method to get instance of this class. 
- */
-class SmfProviderBase : public QObject
-	{
-	Q_OBJECT
-
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfProviderBase( QObject* aParent = 0 );
-	
-	/**
-	 * Copy Constructor
-	 * @param aOther The reference object
-	 */
-	SmfProviderBase( const SmfProviderBase &aOther );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfProviderBase( );
-
-	/**
-	 * Method to get the Localisable name of the service.
-	 * @return The Localisable name of the service.
-	 */
-	QString serviceName( ) const;
-	
-	/**
-	 * Method to get the Logo of the service
-	 * @return The Logo of the service
-	 */
-	QImage serviceIcon( ) const;
-	
-	/**
-	 * Method to get the Readable service description
-	 * @return The Readable service description
-	 */
-	QString description( ) const;
-	
-	/**
-	 * Method to get the Website of the service
-	 * @return The Website of the service
-	 */
-	QUrl serviceUrl( ) const;
-	
-	/**
-	 * Method to get the URL of the Application providing this service
-	 * @return The URL of the Application providing this service
-	 */
-	QUrl applicationUrl( ) const;
-	
-	/**
-	 * Method to get the Icon of the application
-	 * @return The Icon of the application
-	 */
-	QImage applicationIcon( ) const;
-	
-	/**
-	 * Method to get the Plugin specific ID
-	 * @return The Plugin specific ID
-	 */
-	quint32 pluginId( ) const;
-	
-	/**
-	 * Method to get the ID of the authentication application 
-	 * for this service
-	 * @param aProgram The authentication application name
-	 * @param aArguments List of arguments required for authentication app
-	 * @param aMode Strting mode for authentication application
-	 * @return The ID of the authentication application 
-	 */
-	quint32 authenticationApp( QString &aProgram, QStringList & aArguments, 
-			QIODevice::OpenModeFlag aMode = QIODevice::ReadWrite ) const;
-	
-	/**
-	 * Method to get the unique registration ID provided by the 
-	 * Smf for authorised plugins
-	 * @return The unique registration ID/token provided by the Smf for 
-	 * authorised plugins
-	 */
-	QString smfRegistrationId( ) const;
-	
-	/**
-	 * Method to get the data usage of each plugin
-	 * @return The data usage structure
-	 */
-	SmfPluginDataUsage getDataUsage( ) const;
-	
-	/**
-	 * Method to get the reference count for loading.
-	 * The reference count increased with each load request and decreased 
-	 * with each unload request
-	 * @return The reference count value for loading of the plugins
-	 */
-	uint getLoadRefCount( ) const;
-	
-private:
-	QSharedDataPointer<SmfProviderBasePrivate> d;
-
-	friend QDataStream &operator<<( QDataStream &aDataStream, 
-			const SmfProviderBase &aProviderBase );
-
-	friend QDataStream &operator>>( QDataStream &aDataStream, 
-			SmfProviderBase &aProviderBase );
-	
-	};
-
-
-/**
- * Method for Externalization. Writes the SmfProviderBase object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aProviderBase The SmfProviderBase object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfProviderBase &aProviderBase );
-
-/**
- * Method for Internalization. Reads a SmfProviderBase object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aProviderBase The SmfProviderBase object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfProviderBase &aProviderBase);
-
-#endif /* SMFPROVIDERBASE_H_ */
--- a/example/clientapi/smf/inc/smfplugins/base/smfproviderbase_p.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/**
- * 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
- * 
- * Description:
- * Private class implemented for implicit sharing of SmfProviderBase class
- *
- */
-
-#ifndef SMFPROVIDERBASE_P_H_
-#define SMFPROVIDERBASE_P_H_
-
-#include <QImage>
-#include <QUrl>
-#include <QBuffer>
-#include <smfglobal.h>
-#include <QSharedData>
-
-
-class SmfProviderBasePrivate : public QSharedData
-{
-public:
-	/**
-	 * Constructor
-	 */
-	SmfProviderBasePrivate( ) { 
-		m_serviceName.clear(); 
-		m_description.clear();
-		m_serviceUrl.clear();
-		m_applicationUrl.clear();
-		m_pluginId = 0;
-		m_authenticationAppId = 0;
-		m_registrationId.clear();
-		m_loadRefCount = 0;
-	}
-	
-	/**
-	 * Copy Consturctor
-	 * @param aOther The reference object to be copy constructed
-	 */
-	SmfProviderBasePrivate( const SmfProviderBasePrivate &aOther ) : 
-		QSharedData ( aOther ), 
-		m_serviceName ( aOther.m_serviceName ),
-		m_serviceIcon ( aOther.m_serviceIcon ),
-		m_description ( aOther.m_description ),
-		m_serviceUrl ( aOther.m_serviceUrl ),
-		m_applicationUrl ( aOther.m_applicationUrl ),
-		m_applicationIcon ( aOther.m_applicationIcon ),
-		m_pluginId ( aOther.m_pluginId ),
-		m_authenticationAppId ( aOther.m_authenticationAppId ),
-		m_registrationId ( aOther.m_registrationId ), 
-		m_usage ( aOther.m_usage ),
-		m_loadRefCount ( aOther.m_loadRefCount )	{ }
-	
-	/**
-	 * Destructor
-	 */
-	~SmfProviderBasePrivate( );
-  
-	QString m_serviceName;	// the Localisable name of the service
-	QImage m_serviceIcon;	// the Logo of the service
-	QString m_description;	// the Readable service description
-	QUrl m_serviceUrl;		// the Website of the service
-	QUrl m_applicationUrl; 	// URL of the Application providing this service
-	QImage m_applicationIcon;	//Icon of the application
-	quint32 m_pluginId;		// The Plugin specific ID
-	quint32 m_authenticationAppId; // ID of the authentication application for this service
-	QString m_registrationId; 	// unique registration ID provided by the 
-							// Smf for authorised plugins
-	SmfPluginDataUsage m_usage;	//data usage of each plugin
-	uint m_loadRefCount;	// reference count increased with each load request 
-							// and decreased with each unload request
-	
-};
-
-#endif /* SMFPROVIDERBASE_P_H_ */
--- a/example/clientapi/smf/inc/smfplugins/smfcontacts/smfcontactfetcherplugin.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-/**
- * @file	smfcontactfetcherplugin.h
- * @author  Nalina Hariharan, Sasken Communication Technologies Ltd - Initial contribution
- * @version 1.0
- *
- * @section LICENSE
- *
- * 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"
- * 
- * @section DESCRIPTION
- *
- * Interface specification for fetching contacts
- */
-
-#ifndef SMFCONTACTFETCHERPLUGIN_H_
-#define SMFCONTACTFETCHERPLUGIN_H_
-
-#include <smfpluginbase.h>
-#include <smfcontact.h>
-#include <smfgroup.h>
-#include <smfplace.h>
-
-/**
- * @ingroup smf_plugin_group
- * Interface specification for fetching contacts. This class provides 
- * basic functionality to allow applications to obtain list of
- * friends, followers, groups of a user in a social networking service.
- *
- * All of the functionality described here should be implemented by a service
- * specific plug-in.
- */
-class SmfContactFetcherPlugin : public SmfPluginBase
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfContactFetcherPlugin( QObject* aParent = 0 );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfContactFetcherPlugin( );
-	
-	/**
-	 * Method to get the list of friends
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aPageNum The page to be extracted
-	 * @param aItemsPerPage Number of items per page
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError friends( SmfPluginRequestData *aRequest,
-			const int aPageNum = SMF_FIRST_PAGE, 
-			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
-	
-	/**
-	 * Method to get the list of followers
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aPageNum The page to be extracted
-	 * @param aItemsPerPage Number of items per page
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError followers( SmfPluginRequestData *aRequest,
-			const int aPageNum = SMF_FIRST_PAGE, 
-			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
-	
-	/**
-	 * Method to search for a contact
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aContact contact to be searched
-	 * @param aPageNum The page to be extracted
-	 * @param aItemsPerPage Number of items per page
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError search( SmfPluginRequestData *aRequest,
-			const SmfContact *aContact,
-			const int aPageNum = SMF_FIRST_PAGE, 
-			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
-	
-	/**
-	 * Method to search for contacts (friends) who are near the user.
-	 * Proximity defines accuracy level
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aLocation The location search criteria
-	 * @param aProximity location search boundary
-	 * @param aPageNum The page to be extracted
-	 * @param aItemsPerPage Number of items per page
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError searchNear( SmfPluginRequestData *aRequest,
-			const SmfPlace* aLocation,
-			const SmfLocationSearchBoundary aProximity,
-			const int aPageNum = SMF_FIRST_PAGE, 
-			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
-	
-	/**
-	 * Method to get the list of groups
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aPageNum The page to be extracted
-	 * @param aItemsPerPage Number of items per page
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError groups( SmfPluginRequestData *aRequest,
-			const int aPageNum = SMF_FIRST_PAGE, 
-			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
-	
-	/**
-	 * Method to search for a contact in a group
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aGroup the group in which to search
-	 * @param aPageNum The page to be extracted
-	 * @param aItemsPerPage Number of items per page
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError searchInGroup( SmfPluginRequestData *aRequest,
-			const SmfGroup &aGroup,
-			const int aPageNum = SMF_FIRST_PAGE, 
-			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
-	
-	};
-
-Q_DECLARE_INTERFACE( SmfContactFetcherPlugin, "org.symbian.smf.plugin.contact.fetcher/v1.0" );
-
-#endif /* SMFCONTACTFETCHERPLUGIN_H_ */
--- a/example/clientapi/smf/inc/smfplugins/smfcontacts/smfpostproviderplugin.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,189 +0,0 @@
-/**
- * @file	smfpostproviderplugin.h
- * @author  Nalina Hariharan, Sasken Communication Technologies Ltd - Initial contribution
- * @version 1.0
- *
- * @section LICENSE
- *
- * 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"
- * 
- * @section DESCRIPTION
- *
- * Interface specification for getting/posting updates to a social site
- */
-
-#ifndef SMFPOSTPROVIDERPLUGIN_H_
-#define SMFPOSTPROVIDERPLUGIN_H_
-
-#include <smfpluginbase.h>
-#include <smfcontact.h>
-#include <smfpost.h>
-#include <smfplace.h>
-
-/**
- * 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 aParent The parent object
-	 */
-	SmfPostProviderPlugin( QObject* aParent = 0 );
-	
-	/**
-	 * 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;
-
-	/**
-	 * <Method that returns all the formatting of posts that this 
-	 * service provider supports. May return 0 items to mean 
-	 * only QString is supported.
-	 * @return Supported formats of posts
-	 */
-	virtual QVector<QTextFormat> 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_ */
--- a/example/clientapi/smf/inc/smfplugins/smfmusic/smflyricsserviceplugin.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/**
- * @file	smflyricsserviceplugin.h
- * @author  Nalina Hariharan, Sasken Communication Technologies Ltd - Initial contribution
- * @version 1.0
- *
- * @section LICENSE
- *
- * 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"
- * 
- * @section DESCRIPTION
- *
- * Interface specification for music track lyrics
- */
-
-#ifndef SMFLYRICSSERVICEPLUGIN_H_
-#define SMFLYRICSSERVICEPLUGIN_H_
-
-#include <smfpluginbase.h>
-#include <smftrackinfo.h>
-#include <QString>
-#include <smfsubtitle.h>
-#include <smflyrics.h>
-
-/**
- * @ingroup smf_plugin_group
- * Interface specification for music track lyrics
- *
- * All of the functionality described here should be implemented by a service
- * specific plug-in.
- */
-class SmfLyricsServicePlugin : public SmfPluginBase
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfLyricsServicePlugin( QObject* aParent = 0 );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfLyricsServicePlugin( );
-	
-	/**
-	 * Method to get the lyrics
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aTrack The track whose lyrics need to be fetched
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError lyrics( SmfPluginRequestData *aRequest, 
-			const SmfTrackInfo aTrack ) = 0;
-	
-	/**
-	 * Method to get the subtitle
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aTrack The track whose subtitle need to be fetched
-	 * @param aFilter The subtitle search filter if any
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError subtitles( SmfPluginRequestData *aRequest, 
-			const SmfTrackInfo aTrack,
-			const SmfSubtitleSearchFilter aFilter = SubtitleAll ) = 0;
-	
-	};
-
-Q_DECLARE_INTERFACE( SmfLyricsServicePlugin, "org.symbian.smf.plugin.music.lyrics/v1.0" );
-
-#endif /* SMFLYRICSSERVICEPLUGIN_H_ */
--- a/example/clientapi/smf/inc/smfplugins/smfmusic/smfmusiceventsplugin.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/**
- * @file	smfmusiceventsplugin.h
- * @author  Nalina Hariharan, Sasken Communication Technologies Ltd - Initial contribution
- * @version 1.0
- *
- * @section LICENSE
- *
- * 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"
- * 
- * @section DESCRIPTION
- *
- * Interface specification for music events
- * 
- * Note: This class has dependencies on QtMobility project
- */
-
-#ifndef SMFMUSICEVENTSPLUGIN_H_
-#define SMFMUSICEVENTSPLUGIN_H_
-
-#include <smfpluginbase.h>
-#include <qtcontacts.h>
-#include <smfevent.h>
-#include <smfplace.h>
-
-using namespace QtMobility;
-
-/**
- * @ingroup smf_plugin_group
- * Interface specification for music events
- *
- * All of the functionality described here should be implemented by a service
- * specific plug-in.
- * 
- * Note: This class has dependencies on QtMobility project
- */
-class SmfMusicEventsPlugin : public SmfPluginBase
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfMusicEventsPlugin( QObject* aParent = 0 );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfMusicEventsPlugin( );
-	
-	/**
-	 * Method to get the events based on location
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aLocation Location of the event
-	 * @param aPageNum The page to be extracted
-	 * @param aItemsPerPage Number of items per page
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError events( SmfPluginRequestData *aRequest,
-			const QtMobility::QContactGeolocation aLocation,
-			const int aPageNum = SMF_FIRST_PAGE, 
-			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
-	
-	/**
-	 * Method to get the venues based on location
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aLocation Location of the venue
-	 * @param aPageNum The page to be extracted
-	 * @param aItemsPerPage Number of items per page
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError venues( SmfPluginRequestData *aRequest,
-			const QtMobility::QContactGeolocation aLocation,
-			const int aPageNum = SMF_FIRST_PAGE, 
-			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
-	
-	/**
-	 * Method to get the events based on venues
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aVenue Venue of the event
-	 * @param aPageNum The page to be extracted
-	 * @param aItemsPerPage Number of items per page
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError events( SmfPluginRequestData *aRequest,
-			const SmfPlace aVenue,
-			const int aPageNum = SMF_FIRST_PAGE, 
-			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
-	
-	/**
-	 * Method to post events
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aEventList The list of events to be posted
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError postEvents( SmfPluginRequestData *aRequest,
-			const QList<SmfEvent> aEventList ) = 0;
-	
-	};
-
-Q_DECLARE_INTERFACE( SmfMusicEventsPlugin, "org.symbian.smf.plugin.music.events/v1.0" );
-
-#endif /* SMFMUSICEVENTSPLUGIN_H_ */
--- a/example/clientapi/smf/inc/smfplugins/smfmusic/smfmusicsearchplugin.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/**
- * @file	smfmusicsearchplugin.h
- * @author  Nalina Hariharan, Sasken Communication Technologies Ltd - Initial contribution
- * @version 1.0
- *
- * @section LICENSE
- *
- * 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"
- * 
- * @section DESCRIPTION
- *
- * Interface specification for music search services
- */
-
-#ifndef SMFMUSICSEARCHPLUGIN_H_
-#define SMFMUSICSEARCHPLUGIN_H_
-
-#include <smfpluginbase.h>
-#include <QList>
-#include <smfmusicfingerprint.h>
-#include <smftrackinfo.h>
-
-/**
- * @ingroup smf_plugin_group
- * Interface specification for music search services. This class
- * provides basic functionality to allow applications to search for 
- * tracks, get recommented tracks etc
- *
- * All of the functionality described here should be implemented by a service
- * specific plug-in.
- */
-class SmfMusicSearchPlugin : public SmfPluginBase
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfMusicSearchPlugin( QObject *aParent = 0 );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfMusicSearchPlugin( );
-	
-	/**
-	 * Method to get recommended tracks
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aTrack The track for which similar recommendations 
-	 * need to be fetched.
-	 * @param aPageNum The page to be extracted
-	 * @param aItemsPerPage Number of items per page
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError recommendations( SmfPluginRequestData *aRequest,
-			const SmfTrackInfo aTrack,
-			const int aPageNum = SMF_FIRST_PAGE, 
-			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
-	
-	/**
-	 * Method to get similar tracks
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aTrack The track for which similar tracks 
-	 * need to be fetched.
-	 * @param aPageNum The page to be extracted
-	 * @param aItemsPerPage Number of items per page
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError tracks( SmfPluginRequestData *aRequest,
-			const SmfTrackInfo aTrack,
-			const int aPageNum = SMF_FIRST_PAGE, 
-			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
-	
-	/**
-	 * Method to get tracks having a similar finger print
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aSignature The finger print to be searched for need to be 
-	 * fetched.
-	 * @param aPageNum The page to be extracted
-	 * @param aItemsPerPage Number of items per page
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError trackInfo( SmfPluginRequestData *aRequest,
-			const SmfMusicFingerPrint aSignature,
-			const int aPageNum = SMF_FIRST_PAGE, 
-			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
-	
-	/**
-	 * Method to search information about where to buy this song from
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aTrack The track for which stores need to be searched
-	 * @param aPageNum The page to be extracted
-	 * @param aItemsPerPage Number of items per page
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError stores( SmfPluginRequestData *aRequest,
-			const SmfTrackInfo aTrack,
-			const int aPageNum = SMF_FIRST_PAGE, 
-			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
-	
-	/**
-	 * Method to post the currently playing track
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aTrack The current playing track, that should be posted
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError postCurrentPlaying( 
-			SmfPluginRequestData *aRequest,
-			const SmfTrackInfo aTrack ) = 0;
-	
-	};
-
-Q_DECLARE_INTERFACE( SmfMusicSearchPlugin, "org.symbian.smf.plugin.music.search/v1.0" );
-
-#endif /* SMFMUSICSEARCHPLUGIN_H_ */
--- a/example/clientapi/smf/inc/smfplugins/smfmusic/smfmusicserviceplugin.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/**
- * @file	smfmusicserviceplugin.h
- * @author  Nalina Hariharan, Sasken Communication Technologies Ltd - Initial contribution
- * @version 1.0
- *
- * @section LICENSE
- *
- * 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"
- * 
- * @section DESCRIPTION
- *
- * Interface specification for music services
- */
-
-#ifndef SMFMUSICSERVICEPLUGIN_H_
-#define SMFMUSICSERVICEPLUGIN_H_
-
-#include <smfpluginbase.h>
-#include <smfmusicprofile.h>
-#include <smfplace.h>
-
-/**
- * @ingroup smf_plugin_group
- * Interface specification for music services. This class provides basic 
- * functionality to allow application to search for a user or check for
- * user information etc.
- *
- * All of the functionality described here should be implemented by a service
- * specific plug-in.
- */
-class SmfMusicServicePlugin : public SmfPluginBase
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfMusicServicePlugin( QObject *aParent = 0 );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfMusicServicePlugin( );
-	
-	/**
-	 * Method to get self profile information
-	 * @param aRequest [out] The request data to be sent to network
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError userInfo( SmfPluginRequestData *aRequest ) = 0;
-	
-	/**
-	 * Method to search information about other service users for a 
-	 * particular place
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aPlace The place which is the search criteria
-	 * @param aPageNum The page to be extracted
-	 * @param aItemsPerPage Number of items per page
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError searchUser( SmfPluginRequestData *aRequest,
-			const SmfPlace aPlace,
-			const int aPageNum = SMF_FIRST_PAGE, 
-			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
-	
-	};
-
-Q_DECLARE_INTERFACE( SmfMusicServicePlugin, "org.symbian.smf.plugin.music.service/v1.0" );
-
-#endif /* SMFMUSICSERVICEPLUGIN_H_ */
--- a/example/clientapi/smf/inc/smfplugins/smfmusic/smfplaylistserviceplugin.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-/**
- * @file	smfplaylistserviceplugin.h
- * @author  Nalina Hariharan, Sasken Communication Technologies Ltd - Initial contribution
- * @version 1.0
- *
- * @section LICENSE
- *
- * 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"
- * 
- * @section DESCRIPTION
- *
- * Interface specification for playlists service
- */
-
-#ifndef SMFPLAYLISTSERVICEPLUGIN_H_
-#define SMFPLAYLISTSERVICEPLUGIN_H_
-
-#include <smfpluginbase.h>
-#include <smfplaylist.h>
-#include <smfmusicprofile.h>
-#include <smftrackinfo.h>
-
-/**
- * @ingroup smf_plugin_group
- * Interface specification for playlists service. This class provides 
- * basic functionality to allow applications to get playlists of a user, 
- * add some track to an existing playlist, post the current playing 
- * playlists etc.
- *
- * All of the functionality described here should be implemented by a service
- * specific plug-in.
- */
-class SmfPlaylistServicePlugin : public SmfPluginBase
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfPlaylistServicePlugin( QObject *aParent = 0 );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfPlaylistServicePlugin( );
-	
-	/**
-	 * Method to get the playlist
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aPageNum The page to be extracted
-	 * @param aItemsPerPage Number of items per page
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError playlists( SmfPluginRequestData *aRequest,
-			const int aPageNum = SMF_FIRST_PAGE, 
-			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
-	
-	/**
-	 * Method to get the playlist of a particular user
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aUser The user whose playlists need to be fetched
-	 * @param aPageNum The page to be extracted
-	 * @param aItemsPerPage Number of items per page
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError playlistsOf( SmfPluginRequestData *aRequest,
-			const SmfMusicProfile aUser,
-			const int aPageNum = SMF_FIRST_PAGE, 
-			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
-	
-	/**
-	 * Method to add tracks to a playlist
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aPlaylist The playlist where tracks should be added
-	 * @param aTracks The tracks to be added to the playlist
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError addToPlaylist( SmfPluginRequestData *aRequest,
-			const SmfPlaylist aPlaylist, 
-			const QList<SmfTrackInfo> aTracks ) = 0;
-	
-	/**
-	 * Method to post the current playing playlist
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aPlaylist The current playing playlist which should be posted
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError postCurrentPlayingPlaylist(
-			SmfPluginRequestData *aRequest, 
-			const SmfPlaylist aPlaylist ) = 0;
-	
-	};
-
-Q_DECLARE_INTERFACE( SmfPlaylistServicePlugin, "org.symbian.smf.plugin.music.playlist/v1.0" );
-
-#endif /* SMFPLAYLISTSERVICEPLUGIN_H_ */
--- a/example/clientapi/smf/inc/smfplugins/smfpictures/smfgalleryplugin.h	Tue Apr 06 16:35:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-/**
- * @file	smfgalleryplugin.h
- * @author  Nalina Hariharan, Sasken Communication Technologies Ltd - Initial contribution
- * @version 1.0
- *
- * @section LICENSE
- *
- * 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"
- * 
- * @section DESCRIPTION
- *
- * Interface specification for plugins that implement gallery related services
- */
-
-#ifndef SMFGALLERYPLUGIN_H_
-#define SMFGALLERYPLUGIN_H_
-
-#include <smfpluginbase.h>
-#include <smfpicture.h>
-#include <smfcomment.h>
-
-/**
- * @ingroup smf_plugin_group
- * Interface specification for plugins that implement gallery related services
- * like getting pictures, their description, uploading, posting comments 
- * on pictures etc
- *
- * All of the functionality described here should be implemented by a service
- * specific plug-in.
- *
- * A sample call flow between SmfPluginMgr and  SmfGalleryPlugin is shown here
- * 
- * @msc
-   hscale = "2";  
-  SmfServer,SmfTransportMgr,SmfPluginMgr,SmfGalleryPlugin;
-  ...;
-  SmfPluginMgr=>SmfTransportMgr [ label = "connect(SIGNAL(finished()), SLOT(replyFinished()))" ] ;
-  ...;
-  SmfServer=> SmfPluginMgr[ label = "loadAndCheckPlugin()" ] ;
-  SmfPluginMgr=>SmfPluginMgr [ label = "SmfGalleryPlugin smfglpl= load()" ] ;
-  SmfPluginMgr=>SmfGalleryPlugin [ label = "QNetworkRequest  req = smfglpl.pictures()" ] ;
-  SmfPluginMgr=>SmfTransportMgr [ label = "nwmgr.get( req )" ] ;
-  ...;
-  SmfTransportMgr=>SmfPluginMgr [ label = "replyFinished( reply )" ] ;
-  SmfPluginMgr=>SmfGalleryPlugin [ label = "status = responseAvailable( reply, &data )" ] ;
-  SmfPluginMgr=>SmfServer [ label = "if(status ==complete) dataStream <<  data;" ] ;
-  @endmsc
- * 
- */
-class SmfGalleryPlugin : public SmfPluginBase
-	{
-	Q_OBJECT
-public:
-	/**
-	 * Constructor with default argument
-	 * @param aParent The parent object
-	 */
-	SmfGalleryPlugin( QObject* aParent = 0 );
-	
-	/**
-	 * Destructor
-	 */
-	~SmfGalleryPlugin( );
-	
-	/**
-	 * Method to get a list of pictures
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aPageNum The page to be extracted
-	 * @param aItemsPerPage Number of items per page
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError pictures( SmfPluginRequestData *aRequest, 
-			const int aPageNum = SMF_FIRST_PAGE, 
-			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
-	
-	/**
-	 * Method to get a description
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aImage The image abot which the description is required
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError description( SmfPluginRequestData *aRequest,
-			const SmfPicture &aImage ) = 0;
-	
-	/**
-	 * Method to upload a picture
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aImage The image to be uploaded
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError upload( SmfPluginRequestData *aRequest,
-			const SmfPicture &aImage ) = 0;
-	
-	/**
-	 * Method to upload a list of pictures
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aImages The list of images to be uploaded
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError upload( SmfPluginRequestData *aRequest,
-			const QList<SmfPicture> &aImages ) = 0;
-	
-	/**
-	 * Method to post comment on a picture is available
-	 * @param aRequest [out] The request data to be sent to network
-	 * @param aImage The image on which comment is to be posted
-	 * @param aComment The comment to be posted
-	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
-	 */
-	virtual SmfPluginError postComment( SmfPluginRequestData *aRequest,
-			const SmfPicture &aImage, 
-			const SmfComment &aComment ) = 0;
-		
-	};
-
-Q_DECLARE_INTERFACE( SmfGalleryPlugin, "org.symbian.smf.plugin.gallery/v1.0" );
-
-#endif /* SMFGALLERYPLUGIN_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/example/sampleplugin/sampleplugin.cpp	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,486 @@
+
+// Include files
+#include "sampleplugin.h"
+#include <QNetworkRequest>
+#include <QNetworkAccessManager>
+
+/**
+ * Constructor with default argument
+ * @param aUtil The SmfPluginUtil 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
+ */
+SamplePlugin::SamplePlugin( SmfPluginUtil *aUtil )
+	{
+	m_provider = new SampleProviderBase();
+	m_util = aUtil;
+	}
+
+/**
+ * Destructor
+ */
+SamplePlugin::~SamplePlugin( )
+	{
+	if(m_provider)
+		delete m_provider;
+	}
+
+/**
+ * Method to get a list of pictures
+ * @param aRequest [out] The request data to be sent to network
+ * @param aPageNum The page to be extracted
+ * @param aItemsPerPage Number of items per page
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+SmfPluginError SamplePlugin::pictures( SmfPluginRequestData &aRequest,
+		const int aPageNum,
+		const int aItemsPerPage )
+	{
+	SmfPluginError error = SmfPluginErrInvalidRequest;
+
+	// invalid arguments
+	if( aPageNum < 0 || aItemsPerPage < 0 )
+		return error;
+	else
+		{
+		// Create a map of the arguments keys and their repective values
+		QMultiMap<QByteArray, QByteArray> params;
+		QString pageNum, itemPerPage;
+		pageNum.number(aPageNum);
+		itemPerPage.number(aItemsPerPage);
+		params.insert("method", "getpictures");
+		params.insert("pagenumber", pageNum.toAscii());
+		params.insert("itemsperpage", itemPerPage.toAscii());
+
+		QNetworkAccessManager::Operation type = QNetworkAccessManager::GetOperation;
+		SmfSignatureMethod signMethod = HMAC_SHA1;
+		SmfParsingMode mode = ParseForInlineQuery;
+
+		error = createRequest(aRequest, type, signMethod, params, mode, NULL);
+		}
+	return error;
+	}
+
+
+/**
+ * Method called by plugins to generate a request data
+ * @param aRequest [out] The request data to be sent to network
+ * @param aOperation The type of http operation
+ * @param aSignatureMethod The signature method to be used
+ * @param aParams A map of parameters to its values
+ * @param aMode The mode of creation of the request
+ * @param aPostData The data to be posted (for HTTP POST
+ * only, else it will be NULL)
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+SmfPluginError SamplePlugin::createRequest( SmfPluginRequestData &aRequest,
+		const QNetworkAccessManager::Operation aOperation,
+		const SmfSignatureMethod aSignatureMethod,
+		QMultiMap<QByteArray, QByteArray> &aParams,
+		const SmfParsingMode aMode,
+		QBuffer *aPostData )
+	{
+	SmfPluginError error;
+	QString url = m_provider->serviceUrl().toString();
+
+	// Get the oAuth keys from The Smf Server
+	QMap<QString, QString> keys;
+	m_util->getAuthKeys(keys, m_provider->pluginId());
+
+	// Unable to get the tokens
+	if(keys.isEmpty())
+		error = SmfPluginErrInvalidApplication;
+	else
+		{
+
+		// Get the token and token secret from keys
+		QByteArray token;
+		QByteArray tokenSecret;
+		token.append(keys.value("oauth_token"));
+		tokenSecret.append(keys.value("oauth_token_secret"));
+
+		// convert the parameters to string and sign it
+		QByteArray content = m_util->createParameterString(url, aOperation, token, tokenSecret,
+				aSignatureMethod, aParams, aMode );
+
+		// Unable to create the signed string
+		if(content.isEmpty())
+			error = SmfPluginErrInvalidRequest;
+		else
+			{
+			// add the parameter string to the URL
+			url.append(content);
+
+			// set the url of the request
+			aRequest.iNetworkRequest.setUrl(QUrl(url));
+
+			// set the type of http operation to be performed
+			aRequest.iHttpOperationType = aOperation;
+
+			// As it is a GET operation, set iPostData to NULL
+			aRequest.iPostData = aPostData;
+
+			// For successful creation of request
+			error = SmfPluginErrNone;
+			}
+		}
+	return error;
+	}
+
+
+/**
+ * Method to get a description
+ * @param aRequest [out] The request data to be sent to network
+ * @param aImage The image abot which the description is required
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+SmfPluginError SamplePlugin::description( SmfPluginRequestData &aRequest,
+		const SmfPicture &aImage )
+	{
+	SmfPluginError error;
+
+	// Create a map of the arguments keys and their repective values
+	QMultiMap<QByteArray, QByteArray> params;
+	params.insert("method", "getpictureDescription");
+	params.insert("photoId", aImage.id().toAscii());
+
+	QNetworkAccessManager::Operation type = QNetworkAccessManager::GetOperation;
+	SmfSignatureMethod signMethod = HMAC_SHA1;
+	SmfParsingMode mode = ParseForInlineQuery;
+
+	error = createRequest(aRequest, type, signMethod, params, mode, NULL);
+
+	return error;
+	}
+
+/**
+ * Method to upload a picture
+ * @param aRequest [out] The request data to be sent to network
+ * @param aImage The image to be uploaded
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+SmfPluginError SamplePlugin::upload( SmfPluginRequestData &aRequest,
+		const SmfPicture &aImage )
+	{
+	SmfPluginError error = SmfPluginErrInvalidRequest;
+
+	// Create a map of the arguments keys and their repective values
+	QMultiMap<QByteArray, QByteArray> params;
+	params.insert("method", "upload");
+	params.insert("title", aImage.title().toAscii());
+	params.insert("owner", aImage.owner().toAscii());
+	params.insert("description", aImage.description().toAscii());
+	params.insert("tags", aImage.tags().join(" ").toAscii());
+	switch(aImage.visibility())
+		{
+		case SMFVisibilityFriend:
+			params.insert("isFriend", "true");
+			break;
+		case SMFVisibilityPublic:
+			params.insert("isPublic", "true");
+			break;
+		case SMFVisibilityFamily:
+			params.insert("isFamily", "true");
+			break;
+		case SMFVisibilityGroup:
+			params.insert("isGroup", "true");
+			break;
+		default:// SMFVisibilityPersonal
+			params.insert("isPrivate", "true");
+		}
+
+	QNetworkAccessManager::Operation type = QNetworkAccessManager::PostOperation;
+	SmfSignatureMethod signMethod = HMAC_SHA1;
+	SmfParsingMode mode = ParseForRequestContent;
+
+	// Write the image as png format to the buffer
+	QByteArray ba;
+	QBuffer buffer(&ba);
+	buffer.open(QIODevice::WriteOnly);
+	aImage.picture().save(&buffer, "PNG");
+
+	error = createRequest(aRequest, type, signMethod, params, mode, &buffer);
+
+	return error;
+	}
+
+/**
+ * Method to upload a list of pictures
+ * @param aRequest [out] The request data to be sent to network
+ * @param aImages The list of images to be uploaded
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+SmfPluginError SamplePlugin::upload( SmfPluginRequestData &aRequest,
+		const QList<SmfPicture> &aImages )
+	{
+	SmfPluginError error;
+
+	for(int index = 0; index < aImages.count(); index++)
+		{
+		error = upload(aRequest, aImages.value(index));
+		if(SmfPluginErrNone != error)
+			break;
+		}
+	return error;
+	}
+
+/**
+ * Method to post comment on a picture is available
+ * @param aRequest [out] The request data to be sent to network
+ * @param aImage The image on which comment is to be posted
+ * @param aComment The comment to be posted
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+SmfPluginError SamplePlugin::postComment( SmfPluginRequestData &aRequest,
+		const SmfPicture &aImage,
+		const SmfComment &aComment )
+	{
+	SmfPluginError error = SmfPluginErrInvalidRequest;
+
+	// Create a map of the arguments keys and their repective values
+	QMultiMap<QByteArray, QByteArray> params;
+	params.insert("method", "postComment");
+	params.insert("photoId", aImage.id().toAscii());
+	params.insert("comment", aImage.comments().join(" ").toAscii());
+
+	QNetworkAccessManager::Operation type = QNetworkAccessManager::GetOperation;
+	SmfSignatureMethod signMethod = HMAC_SHA1;
+	SmfParsingMode mode = ParseForInlineQuery;
+
+	error = createRequest(aRequest, type, signMethod, params, mode, NULL);
+	return error;
+	}
+
+/**
+ * Method to get the provider information
+ * @return Instance of SmfProviderBase
+ */
+SmfProviderBase* SamplePlugin::getProviderInfo( )
+	{
+	return m_provider;
+	}
+
+/**
+ * Method to get the result for a network request.
+ * @param aTransportResult The result of transport operation
+ * @param aReply The QNetworkReply instance for the request
+ * @param aResult [out] An output parameter to the plugin manager.If the
+ * return value is SmfSendRequestAgain, QVariant will be of type
+ * SmfPluginRequestData.
+ * For SmfGalleryPlugin: If last operation was pictures(), aResult will
+ * be of type QList<SmfPicture>. If last operation was description(),
+ * aResult will be of type QString. If last operation was upload() or
+ * postComment(), aResult will be of type bool.
+ * @param aRetType [out] SmfPluginRetType
+ * @param aPageResult [out] The SmfResultPage structure variable
+ */
+SmfPluginError SamplePlugin::responseAvailable(
+		const SmfTransportResult &aTransportResult,
+		QNetworkReply *aReply,
+		QVariant* aResult,
+		SmfPluginRetType &aRetType,
+		SmfResultPage &aPageResult )
+	{
+	SmfPluginError error;
+	if(SmfTransportOpNoError == aTransportResult)
+		{
+		// Assuming a JSON response, parse the response
+		QByteArray response = aReply->readAll();
+		m_provider->updateDataUsage(0, aReply->readBufferSize());
+		bool parseResult = false;
+		QVariant *result = new QVariant();
+		/** see http://qjson.sourceforge.net/usage.html for more details */
+		parseResult = m_util->getJsonHandle()->parse(response, &parseResult);
+
+		// For parsing error
+		if(!parseResult)
+			{
+			aRetType = SmfRequestError;
+			error = SmfPluginErrInvalidRequest;
+			}
+
+		else
+			{
+			// The plugins should convert the result to suitable format,
+			// like if last operation was pictures(), result should be converted to the
+			// type QList<SmfPicture>. If last operation was description(), result should
+			// be converted to the type QString. If last operation was upload() or
+			// postComment(), result should be converted to the type bool.
+
+			// After conversion, assign the value os result to aResult
+			aResult = result;
+
+			// if the request is complete
+			aRetType = SmfRequestComplete;
+
+			// if request need to be sent again
+			aRetType = SmfSendRequestAgain;
+
+			error = SmfPluginErrNone;
+			}
+		}
+	else
+		{
+		error = SmfPluginErrInvalidRequest;
+		aRetType = SmfRequestError;
+		}
+
+	return error;
+	}
+
+
+/**
+ * Constructor with default argument
+ * @param aParent The parent object
+ */
+SampleProviderBase::SampleProviderBase( QObject* aParent )
+	: SmfProviderBase(aParent)
+	{
+	}
+
+/**
+ * Copy Constructor
+ * @param aOther The reference object
+ */
+SampleProviderBase::SampleProviderBase( const SampleProviderBase &aOther )
+	{
+	}
+
+/**
+ * Destructor
+ */
+SampleProviderBase::~SampleProviderBase( )
+	{
+	}
+
+/**
+ * Method to get the Localisable name of the service.
+ * @return The Localisable name of the service.
+ */
+QString SampleProviderBase::serviceName( ) const
+	{
+	return m_serviceName;
+	}
+
+/**
+ * Method to get the Logo of the service
+ * @return The Logo of the service
+ */
+QImage SampleProviderBase::serviceIcon( ) const
+	{
+	return m_serviceIcon;
+	}
+
+/**
+ * Method to get the Readable service description
+ * @return The Readable service description
+ */
+QString SampleProviderBase::description( ) const
+	{
+	return m_description;
+	}
+
+/**
+ * Method to get the Website of the service
+ * @return The Website of the service
+ */
+QUrl SampleProviderBase::serviceUrl( ) const
+	{
+	return m_serviceUrl;
+	}
+
+/**
+ * Method to get the URL of the Application providing this service
+ * @return The URL of the Application providing this service
+ */
+QUrl SampleProviderBase::applicationUrl( ) const
+	{
+	return m_applicationUrl;
+	}
+
+/**
+ * Method to get the Icon of the application
+ * @return The Icon of the application
+ */
+QImage SampleProviderBase::applicationIcon( ) const
+	{
+	return m_applicationIcon;
+	}
+
+/**
+ * Method to get the Plugin specific ID
+ * @return The Plugin specific ID
+ */
+QString SampleProviderBase::pluginId( ) const
+	{
+	return m_pluginId;
+	}
+
+/**
+ * Method to get the ID of the authentication application
+ * for this service
+ * @param aProgram The authentication application name
+ * @param aArguments List of arguments required for authentication app
+ * @param aMode Strting mode for authentication application
+ * @return The ID of the authentication application
+ */
+QString SampleProviderBase::authenticationApp( QString &aProgram,
+		QStringList & aArguments,
+		QIODevice::OpenModeFlag aMode ) const
+	{
+	return m_authAppId;
+	}
+
+/**
+ * Method to get the unique registration ID provided by the
+ * Smf for authorised plugins
+ * @return The unique registration ID/token provided by the Smf for
+ * authorised plugins
+ */
+QString SampleProviderBase::smfRegistrationId( ) const
+	{
+	return m_smfRegToken;
+	}
+
+/**
+ * Method to get the data usage of each plugin
+ * @return The data usage structure
+ */
+SmfPluginDataUsage SampleProviderBase::getDataUsage( ) const
+	{
+	return m_dataUsage;
+	}
+
+/**
+ * Method to update the data usage of this plugin. This method is called
+ * after the plugin sends request to Plugin manager and after it receives
+ * data from plugin manager.
+ * @param aBytesSent The number of bytes sent, when this argument has
+ * some value other than 1, aBytesReceived should be zero.
+ * @param aBytesReceived The number of bytes received, when this argument
+ * has some value other than 1, aBytesSent  should be zero.
+ * @return Returns true if success else returns false
+ */
+bool SampleProviderBase::updateDataUsage( const uint &aBytesSent,
+		const uint &aBytesReceived )
+	{
+	bool ret = true;
+	if( aBytesSent && !aBytesReceived )
+		m_dataUsage.iBytesSent += aBytesSent;
+	else if( !aBytesSent && aBytesReceived )
+		m_dataUsage.iBytesReceived += aBytesReceived;
+	else
+		// don't update m_dataUsage, error in arguments
+		ret = false;
+
+	return ret;
+	}
+
+
+/*
+ * Export Macro
+ * plugin name : sampleplugin
+ * plugin class : SamplePlugin
+ */
+//Q_EXPORT_PLUGIN2( sampleplugin, SamplePlugin )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/example/sampleplugin/sampleplugin.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,264 @@
+#ifndef _SAMPLEPLUGIN_H
+#define _SAMPLEPLUGIN_H
+
+// Include files
+#include <QVariant>
+#include <qplugin.h>
+
+#include "smfglobal.h"
+#include "smfpicture.h"
+#include "smfcomment.h"
+#include "smfpluginbase.h"
+#include "smfproviderbase.h"
+#include "smfgalleryplugin.h"
+#include "smfpluginutil.h"
+
+
+// Forward declarations
+class SampleProviderBase;
+
+
+// Class declaration
+class SamplePlugin : public SmfGalleryPlugin
+{
+	Q_OBJECT
+	Q_INTERFACES( SmfGalleryPlugin )
+
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aUtil The SmfPluginUtil 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
+	 */
+	SamplePlugin( SmfPluginUtil *aUtil );
+	
+	/**
+	 * Destructor
+	 */
+	~SamplePlugin( );
+	
+public: // From SmfGalleryPlugin
+	
+	/**
+	 * Method to get a list of pictures
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	SmfPluginError pictures( SmfPluginRequestData &aRequest, 
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE );
+	
+	/**
+	 * Method to get a description
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aImage The image abot which the description is required
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	SmfPluginError description( SmfPluginRequestData &aRequest,
+			const SmfPicture &aImage );
+	
+	/**
+	 * Method to upload a picture
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aImage The image to be uploaded
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	SmfPluginError upload( SmfPluginRequestData &aRequest,
+			const SmfPicture &aImage );
+	
+	/**
+	 * Method to upload a list of pictures
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aImages The list of images to be uploaded
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	SmfPluginError upload( SmfPluginRequestData &aRequest,
+			const QList<SmfPicture> &aImages );
+	
+	/**
+	 * Method to post comment on a picture is available
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aImage The image on which comment is to be posted
+	 * @param aComment The comment to be posted
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	SmfPluginError postComment( SmfPluginRequestData &aRequest,
+			const SmfPicture &aImage, 
+			const SmfComment &aComment );
+	
+public: // From SmfPluginBase
+	/**
+	 * Method to get the provider information
+	 * @return Instance of SmfProviderBase
+	 */
+	SmfProviderBase* getProviderInfo( );
+	
+	/**
+	 * Method to get the result for a network request.
+	 * @param aTransportResult The result of transport operation
+	 * @param aReply The QNetworkReply instance for the request
+	 * @param aResult [out] An output parameter to the plugin manager.If the 
+	 * return value is SmfSendRequestAgain, QVariant will be of type 
+	 * SmfPluginRequestData.
+	 * For SmfGalleryPlugin: If last operation was pictures(), aResult will 
+	 * be of type QList<SmfPicture>. If last operation was description(), 
+	 * aResult will be of type QString. If last operation was upload() or 
+	 * postComment(), aResult will be of type bool.
+	 * @param aRetType [out] SmfPluginRetType
+	 * @param aPageResult [out] The SmfResultPage structure variable
+	 */
+	SmfPluginError responseAvailable( 
+			const SmfTransportResult &aTransportResult, 
+			QNetworkReply *aReply, 
+			QVariant* aResult, 
+			SmfPluginRetType &aRetType,
+			SmfResultPage &aPageResult );
+	
+private:
+	/**
+	 * Method called by plugins to generate a request data
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aOperation The type of http operation
+	 * @param aSignatureMethod The signature method to be used
+	 * @param aParams A map of parameters to its values
+	 * @param aMode The mode of creation of the request
+	 * @param aPostData The data to be posted (for HTTP POST 
+	 * only, else it will be NULL)
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	SmfPluginError createRequest( SmfPluginRequestData &aRequest,
+			const QNetworkAccessManager::Operation aOperation, 
+			const SmfSignatureMethod aSignatureMethod, 
+			QMultiMap<QByteArray, QByteArray> &aParams, 
+			const SmfParsingMode aMode,
+			QBuffer *aPostData );
+	
+private:
+	SampleProviderBase *m_provider;
+	SmfPluginUtil *m_util;
+};
+
+
+// Class declaration
+class SampleProviderBase : public SmfProviderBase
+	{
+	Q_OBJECT
+
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 */
+	SampleProviderBase( QObject* aParent = 0 );
+	
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object
+	 */
+	SampleProviderBase( const SampleProviderBase &aOther );
+	
+	/**
+	 * Destructor
+	 */
+	~SampleProviderBase( );
+
+	/**
+	 * Method to get the Localisable name of the service.
+	 * @return The Localisable name of the service.
+	 */
+	QString serviceName( ) const;
+	
+	/**
+	 * Method to get the Logo of the service
+	 * @return The Logo of the service
+	 */
+	QImage serviceIcon( ) const;
+	
+	/**
+	 * Method to get the Readable service description
+	 * @return The Readable service description
+	 */
+	QString description( ) const;
+	
+	/**
+	 * Method to get the Website of the service
+	 * @return The Website of the service
+	 */
+	QUrl serviceUrl( ) const;
+	
+	/**
+	 * Method to get the URL of the Application providing this service
+	 * @return The URL of the Application providing this service
+	 */
+	QUrl applicationUrl( ) const;
+	
+	/**
+	 * Method to get the Icon of the application
+	 * @return The Icon of the application
+	 */
+	QImage applicationIcon( ) const;
+	
+	/**
+	 * Method to get the Plugin specific ID
+	 * @return The Plugin specific ID
+	 */
+	QString pluginId( ) const;
+	
+	/**
+	 * Method to get the ID of the authentication application 
+	 * for this service
+	 * @param aProgram The authentication application name
+	 * @param aArguments List of arguments required for authentication app
+	 * @param aMode Strting mode for authentication application
+	 * @return The ID of the authentication application 
+	 */
+	QString authenticationApp( QString &aProgram, QStringList & aArguments, 
+			QIODevice::OpenModeFlag aMode = QIODevice::ReadWrite ) const;
+	
+	/**
+	 * Method to get the unique registration ID provided by the 
+	 * Smf for authorised plugins
+	 * @return The unique registration ID/token provided by the Smf for 
+	 * authorised plugins
+	 */
+	QString smfRegistrationId( ) const;
+	
+	/**
+	 * Method to get the data usage of each plugin
+	 * @return The data usage structure
+	 */
+	SmfPluginDataUsage getDataUsage( ) const;
+	
+private:
+	/**
+	 * Method to update the data usage of this plugin. This method is called 
+	 * after the plugin sends request to Plugin manager and after it receives 
+	 * data from plugin manager.
+	 * @param aBytesSent The number of bytes sent, when this argument has 
+	 * some value other than 1, aBytesReceived should be zero.
+	 * @param aBytesReceived The number of bytes received, when this argument 
+	 * has some value other than 1, aBytesSent  should be zero.
+	 * @return Returns true if success else returns false
+	 */
+	bool updateDataUsage( const uint &aBytesSent, const uint &aBytesReceived );
+
+	friend class SamplePlugin;
+	
+private:
+	QString m_serviceName;
+	QImage m_serviceIcon;
+	QString m_description;
+	QUrl m_serviceUrl;
+	QUrl m_applicationUrl;
+	QImage m_applicationIcon;
+	QString m_pluginId;
+	QString m_authAppId;
+	QString m_smfRegToken;
+	SmfPluginDataUsage m_dataUsage;
+	};
+
+#endif /*_SAMPLEPLUGIN_H*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfclientglobal.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,36 @@
+/**
+* Copyright (c) 2010 Sasken Communication Technologies Ltd.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "{License}"
+* which accompanies  this distribution, and is available
+* at the URL "{LicenseUrl}".
+*
+* Initial Contributors:
+* Mansij Roy, Sasken Communication Technologies Ltd - Initial contribution
+*
+* Contributors:
+*
+* Description:
+* Interface spefication for sfm service provider
+*
+*/
+
+#ifndef SMFCLIENTGLOBAL_H_
+#define SMFCLIENTGLOBAL_H_
+
+#include <QtCore/QtGlobal>
+#include <QMetaType>
+
+#ifdef SMFCLIENT_LIBRARY
+#  define SMFCLIENT_EXPORT  //Q_DECL_EXPORT
+#else
+#  define SMFCLIENT_EXPORT Q_DECL_IMPORT
+#endif
+
+/**
+* To be designed later
+*/
+#define SMF_GETSERVICES(INTERFACE,INTERFACESTRING) ;
+
+#endif /* SMFCLIENTGLOBAL_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfcomment/smfcomment.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,114 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The comment class represents a comment (on a picture or a music track etc)
+ *
+ */
+
+#ifndef SMFCOMMENT_H_
+#define SMFCOMMENT_H_
+
+#include <QDateTime>
+#include <qdatastream.h>
+#include <QSharedData>
+#include <smfclientglobal.h>
+
+class SmfCommentPrivate;
+
+/**
+ * @ingroup smf_common_group
+ * The comment class represents a comment (on a picture or a music track etc)
+ */
+class SMFCLIENT_EXPORT SmfComment : public QObject
+	{
+	Q_OBJECT
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object 
+	 */
+	SmfComment( QObject *aParent = 0 );
+	
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object
+	 */
+	SmfComment( const SmfComment &aOther );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfComment( );
+	
+	/**
+	 * Method to get the comment text
+	 * @return The comment text
+	 */
+	QString text( ) const;
+	
+	/**
+	 * Method to get the comment time stamp
+	 * @return The comment time stamp value
+	 */
+	QDateTime timeStamp( ) const;
+	
+	/**
+	 * Method to get the id of the comment
+	 * @return The ID value 
+	 */
+	QString id( ) const;
+	
+	/**
+	 * Method to set the comment text
+	 * @param aText The comment text to be set
+	 */
+	void setText( const QString &aText );
+	
+private:
+	QSharedDataPointer<SmfCommentPrivate> d;
+	
+	friend QDataStream &operator<<( QDataStream &aDataStream, 
+			const SmfComment &aComment );
+
+	friend QDataStream &operator>>( QDataStream &aDataStream, 
+			SmfComment &aComment );
+	
+	};
+
+
+/**
+ * Method for Externalization. Writes the SmfComment object to 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be written
+ * @param aComment The SmfComment object to be externalized
+ * @return reference to the written stream
+ */
+QDataStream &operator<<( QDataStream &aDataStream, 
+		const SmfComment &aComment );
+
+/**
+ * Method for Internalization. Reads a SmfComment object from 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be read
+ * @param aComment The SmfComment object to be internalized
+ * @return reference to the stream
+ */
+QDataStream &operator>>( QDataStream &aDataStream, 
+		SmfComment &aComment);
+
+// Make the class SmfComment known to QMetaType, so that as to register it.
+Q_DECLARE_METATYPE(SmfComment)
+
+#endif /* SMFCOMMENT_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfcomment/smfcomment_p.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,55 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Private class implemented for implicit sharing of SmfComment class
+ *
+ */
+
+#ifndef SMFCOMMENT_P_H_
+#define SMFCOMMENT_P_H_
+
+#include <QDateTime>
+#include <QSharedData>
+
+class SmfCommentPrivate : public QSharedData
+{
+public:
+	/**
+	 * Constructor
+	 */
+	SmfCommentPrivate( ) { m_text.clear(); m_commentId.clear(); }
+	
+	/**
+	 * Copy Consturctor
+	 * @param aOther The reference object to be copy constructed
+	 */
+	SmfCommentPrivate( const SmfCommentPrivate &aOther ) : 
+		QSharedData ( aOther ), 
+		m_text ( aOther.m_text ), 
+		m_timeStamp ( aOther.m_timeStamp ),
+		m_commentId ( aOther.m_commentId ) 	{ }
+	
+	/**
+	 * Destructor
+	 */
+	~SmfCommentPrivate( );
+  
+	QString m_text;			// comment text
+	QDateTime m_timeStamp;	// comment time stamp
+	QString m_commentId;
+	
+};
+
+#endif /* SMFCOMMENT_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfcontacts/smfcontact.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,138 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The contact class represents a social contact
+ * Note: This class has dependencies on QtMobility project
+ *
+ */
+
+#ifndef SMFCONTACT_H_
+#define SMFCONTACT_H_
+
+#include "qtcontacts.h"
+#include <qdatastream.h>
+#include <QSharedData>
+#include <smfclientglobal.h>
+
+using namespace QtMobility;
+
+class SmfContactPrivate;
+
+/**
+ * @ingroup smf_common_group
+ * The contact class represents a social contact
+ * 
+ * Note: This class has dependencies on QtMobility project
+ */
+class SMFCLIENT_EXPORT SmfContact : public QObject
+	{
+	Q_OBJECT
+
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 */
+	SmfContact( QObject *aParent = 0 );
+	
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object
+	 */
+	SmfContact( const SmfContact &aOther );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfContact( );
+	
+public slots:
+	/**
+	 * Method to get the available sub fields for contacts.
+	 * The following are the available sub types of a contact
+	 *   QtMobility::QContactAddress		Address;
+	 *   QtMobility::QContactAnniversary	Anniversary;
+	 *   QtMobility::QContactAvatar			Avatar;
+	 *   QtMobility::QContactBirthday		Birthday;
+	 *   QtMobility::QContactId				ContactId;
+	 *   QtMobility::QContactEmailAddress	EmailAddress;
+	 *   QtMobility::QContactGender			Gender;
+	 *   QtMobility::QContactGeolocation	Geolocation;
+	 *   QtMobility::QContactGuid			Guid;
+	 *   QtMobility::QContactName			Name;
+	 *   QtMobility::QContactNickname		Nickname;
+	 *   QtMobility::QContactNote			Note;
+	 *   QtMobility::QContactOnlineAccount	OnlineAccount;
+	 *   QtMobility::QContactOrganization	Organization;
+	 *   QtMobility::QContactPhoneNumber	PhoneNumber;
+	 *   QtMobility::QContactTimestamp		Timestamp;
+	 *   QtMobility::QContactType			Type;
+	 *   QtMobility::QContactUrl			Url;
+	 * @return The Available sub fields for this contact
+	 */
+	QStringList subTypes( ) const;
+	
+	/**
+	 * Method to convert an SmfContact to a QContact
+	 * Changes made to the returned QContact will not be reflected 
+	 * in its parent SmfContact object
+	 * @param aContact QContact corresponding to SmfContact 
+	 */
+	void convert( QContact &aContact ) const;
+	
+	/**
+	 * Method to get the value of a sub field for this contact
+	 * @param aSubType The sub field type 
+	 * @return The value of the sub field subType
+	 * @see subTypes()
+	 */
+	QVariant value( const QString& aSubType ) const;
+	
+private:
+	QSharedDataPointer<SmfContactPrivate> d;
+	
+	friend QDataStream &operator<<( QDataStream &aDataStream, 
+			const SmfContact &aContact );
+
+	friend QDataStream &operator>>( QDataStream &aDataStream, 
+			SmfContact &aContact );
+	
+	};
+
+
+/**
+ * Method for Externalization. Writes the SmfContact object to 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be written
+ * @param aContact The SmfContact object to be externalized
+ * @return reference to the written stream
+ */
+QDataStream &operator<<( QDataStream &aDataStream, 
+		const SmfContact &aContact );
+
+/**
+ * Method for Internalization. Reads a SmfContact object from 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be read
+ * @param aContact The SmfContact object to be internalized
+ * @return reference to the stream
+ */
+QDataStream &operator>>( QDataStream &aDataStream, 
+		SmfContact &aContact );
+
+// Make the class SmfContact known to QMetaType, so that as to register it.
+Q_DECLARE_METATYPE(SmfContact)
+
+#endif /* SMFCONTACT_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfcontacts/smfcontact_p.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,52 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Private class implemented for implicit sharing of SmfContact class
+ *
+ */
+
+#ifndef SMFCONTACT_P_H_
+#define SMFCONTACT_P_H_
+
+#include <QSharedData>
+
+using namespace QtMobility;
+
+class SmfContactPrivate : public QSharedData
+{
+public:
+	/**
+	 * Constructor
+	 */
+	SmfContactPrivate( ) { m_details.clear(); }
+	
+	/**
+	 * Copy Consturctor
+	 * @param aOther The reference object to be copy constructed
+	 */
+	SmfContactPrivate( const SmfContactPrivate &aOther ) : 
+		QSharedData ( aOther ), 
+		m_details ( aOther.m_details )	{ }
+	
+	/**
+	 * Destructor
+	 */
+	~SmfContactPrivate( );
+  
+	QVariantMap	m_details;// contact details
+	
+};
+
+#endif /* SMFCONTACT_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfcontacts/smfgroup.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,110 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The group class represents an instance of a group as per SN site terminolgy
+ *
+ */
+
+#ifndef SMFGROUP_H_
+#define SMFGROUP_H_
+
+#include <smfcontact.h>
+#include <qdatastream.h>
+#include <QSharedData>
+#include <smfclientglobal.h>
+
+class SmfGroupPrivate;
+
+
+/**
+ * @ingroup smf_common_group
+ * The group class represents an instance of a group as per SN site terminolgy
+ */
+class SMFCLIENT_EXPORT SmfGroup : public QObject
+	{
+	Q_OBJECT
+public:
+	/**
+	 * Constructor with default argument
+	 * @param list The list of members in the group
+	 */
+	SmfGroup( QList<SmfContact>* list = 0 );
+	
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object
+	 */
+	SmfGroup( const SmfGroup &aOther );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfGroup( );
+	
+public slots:
+	/**
+	 * Method to get the list of members in the group
+	 * @return The list of members in the group
+	 */
+	QList<SmfContact> members( ) const;
+	
+	/**
+	 * Method to get the name of the group
+	 * @return The name of the group
+	 */
+	QString name( ) const;
+	
+	/**
+	 * Method to get the id of the group
+	 * @return The ID value 
+	 */
+	QString id( ) const;
+	
+private:
+	QSharedDataPointer<SmfGroupPrivate> d;
+	
+	friend QDataStream &operator<<( QDataStream &aDataStream, 
+			const SmfGroup &aGroup );
+
+	friend QDataStream &operator>>( QDataStream &aDataStream, 
+			SmfGroup &aGroup );
+	
+	};
+
+
+/**
+ * Method for Externalization. Writes the SmfGroup object to 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be written
+ * @param aGroup The SmfGroup object to be externalized
+ * @return reference to the written stream
+ */
+QDataStream &operator<<( QDataStream &aDataStream, 
+		const SmfGroup &aGroup );
+
+/**
+ * Method for Internalization. Reads a SmfGroup object from 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be read
+ * @param aGroup The SmfGroup object to be internalized
+ * @return reference to the stream
+ */
+QDataStream &operator>>( QDataStream &aDataStream, 
+		SmfGroup &aGroup);
+
+// Make the class SmfGroup known to QMetaType, so that as to register it.
+Q_DECLARE_METATYPE(SmfGroup)
+
+#endif /* SMFGROUP_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfcontacts/smfgroup_p.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,56 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Private class implemented for implicit sharing of SmfGroup class
+ *
+ */
+
+#ifndef SMFGROUP_P_H_
+#define SMFGROUP_P_H_
+
+#include <smfcontact.h>
+#include <QSharedData>
+
+class SmfGroupPrivate : public QSharedData
+{
+public:
+	/**
+	 * Constructor
+	 */
+	SmfGroupPrivate( ) { m_members = NULL; m_groupName.clear(); m_groupId.clear(); }
+	
+	/**
+	 * Copy Consturctor
+	 * @param aOther The reference object to be copy constructed
+	 */
+	SmfGroupPrivate( const SmfGroupPrivate &aOther ) : 
+		QSharedData ( aOther ), 
+		m_members ( aOther.m_members ), 
+		m_groupName ( aOther.m_groupName ),
+		m_groupId ( aOther.m_groupId ) 	{ }
+	
+	/**
+	 * Destructor
+	 */
+	~SmfGroupPrivate( );
+  
+	QList<SmfContact> *m_members;	// members in the group
+	QString m_groupName;
+	QString m_groupId;
+	// Other details to be added
+};
+
+
+#endif /* SMFGROUP_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfcontacts/smfpost.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,156 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The post class represents an instance of a post to a SN site
+ *
+ */
+
+#ifndef SMFPOST_H_
+#define SMFPOST_H_
+
+#include <QImage>
+#include <QUrl>
+#include <qdatastream.h>
+#include <QSharedData>
+#include <QTextDocument>
+#include <smfclientglobal.h>
+
+class SmfPostPrivate;
+
+
+/**
+ * @ingroup smf_common_group
+ * The post class represents an instance of a post to a SN site
+ */
+class SMFCLIENT_EXPORT SmfPost : public QTextDocument
+	{
+	Q_OBJECT
+public:
+	/**
+	 * Constructor with default argument
+	 * @param text Text
+	 * @param aParent The parent object
+	 */
+	SmfPost( QString text,QObject *aParent = 0 );
+	
+	/**
+	 * Constructor
+	 * @param aText The post's text
+	 * @param aImage The post's image
+	 * @param aUrl The post's url
+	 */
+	SmfPost( QString aTitle, QString aDesc, QImage aImage, QUrl aUrl );
+
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object
+	 */
+	SmfPost( const SmfPost &aOther );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfPost( );
+	
+	/**
+	 * Method to get the title of the post
+	 * @return The post's title
+	 */
+	QString title( ) const;
+	
+	/**
+	 * Method to get the description of the post
+	 * @return The post's description
+	 */
+	QString description( ) const;
+	
+	/**
+	 * Method to get the image of the post
+	 * @return The post's image
+	 */
+	QImage image( ) const;
+	
+	/**
+	 * Method to get the url of the post
+	 * @return The post's url
+	 */
+	QUrl url( ) const;
+	
+	/**
+	 * Method to get the id of the post
+	 * @return The ID value 
+	 */
+	QString id( ) const;
+	
+	/**
+	 * Method to set the title of the post
+	 * @param aTitle The post's new title
+	 */
+	void setTitle( const QString &aTitle );
+	
+	/**
+	 * Method to set the description of the post
+	 * @param aDesc The post's new description
+	 */
+	void setDescription( const QString &aDesc );
+	
+	/**
+	 * Method to set the image of the post
+	 * @param aPic The post's image
+	 */
+	void setImage( const QImage& aPic );
+	
+	/**
+	 * Method to set the url of the post
+	 * @param aUrl The post's url
+	 */
+	void setUrl( QUrl& aUrl );
+	
+private:
+	QSharedDataPointer<SmfPostPrivate> d;
+
+	friend QDataStream &operator<<( QDataStream &aDataStream, 
+			const SmfPost &aPost );
+
+	friend QDataStream &operator>>( QDataStream &aDataStream, 
+			SmfPost &aPost );
+	
+	};
+
+
+/**
+ * Method for Externalization. Writes the SmfPost object to 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be written
+ * @param aPost The SmfPost object to be externalized
+ * @return reference to the written stream
+ */
+QDataStream &operator<<( QDataStream &aDataStream, 
+		const SmfPost &aPost );
+
+/**
+ * Method for Internalization. Reads a SmfPost object from 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be read
+ * @param aPost The SmfPost object to be internalized
+ * @return reference to the stream
+ */
+QDataStream &operator>>( QDataStream &aDataStream, 
+		SmfPost &aPost);
+
+// Make the class SmfPost known to QMetaType, so that as to register it.
+Q_DECLARE_METATYPE(SmfPost)
+
+#endif /* SMFPOST_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfcontacts/smfpost_p.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,70 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Private class implemented for implicit sharing of SmfPost class
+ *
+ */
+
+#ifndef SMFPOST_P_H_
+#define SMFPOST_P_H_
+
+#include <QSharedData>
+
+class SmfPostPrivate : public QSharedData
+{
+public:
+	/**
+	 * Constructor
+	 */
+	SmfPostPrivate( ) { m_title.clear(); m_desc.clear(); m_url.clear(); m_postId.clear(); }
+	
+	/**
+	 * Constructor
+	 */
+	SmfPostPrivate( QString aTitle, QString aDesc, QImage aImage, QUrl aUrl ) 
+		{
+		m_title = aTitle; 
+		m_desc = aDesc;
+		m_image = aImage;
+		m_url = aUrl;
+		m_postId.clear();
+		}
+	
+	/**
+	 * Copy Consturctor
+	 * @param aOther The reference object to be copy constructed
+	 */
+	SmfPostPrivate( const SmfPostPrivate &aOther ) : 
+		QSharedData ( aOther ), 
+		m_title ( aOther.m_title ), 
+		m_desc ( aOther.m_desc ),
+		m_image ( aOther.m_image ),
+		m_url ( aOther.m_url ),
+		m_postId ( aOther.m_postId )	{ }
+	
+	/**
+	 * Destructor
+	 */
+	~SmfPostPrivate( );
+  
+	QString m_title;	// title
+	QString m_desc;		// description
+	QImage m_image;		// image
+	QUrl m_url;			// url
+	QString m_postId;	// post's unique Id
+	
+};
+
+#endif /* SMFPOST_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfdes.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,72 @@
+/**
+ * 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
+ *
+ * Description:
+ * Intro Page
+ *
+ * @ref smf_high_level_design
+ */
+
+/**
+ * @mainpage SMF (Social Mobile Framework Interfaces)
+ * @defgroup smf_high_level_design SMF high level design
+ *
+ * Social Mobile Framework is a application level framework which allows Qt Applications
+ * use the common web APIs to perform social web activities.
+ *
+ * Product name is "SMF"
+ *
+ * For details please refer to http://developer.symbian.org/wiki/index.php/Social_Mobile_Framework
+ *
+ * @section smf_interfaces SMF Interfaces
+ *
+ * There are two sets of interfaces -
+ * 		@subsection smf_client_interfaces Client Interfaces
+ * 				- Client Applications (e.g. Media Player, Contacts, Game) uses these APIs to access SMF. see @ref smf_client_group
+ *
+ * 		@subsection smf_plugin_interfaces Plugin Interfaces
+ * 				- Service Providers (e.g. Facebook, Flickr, last.fm) implements these APIs to provide service to SMF - see @ref smf_plugin_group
+ *
+ * Currently, @ref smf_client_interfaces and @ref smf_plugin_interfaces are defined for remote contacts, remote
+ * image gallery and remote music services. There are common classes defined for holding data accross clients
+ * and plugins, present in inc\common, see - @ref smf_common_group
+ *
+ *
+ *		@section smf_client_usage Client Usage Example
+ *		- This shows how to use the SMF client APIs in applications, e.g. Client can define suitable Models using lists returned by these APIs
+ *				- how to fetch a list of contacts from a remote server e.g. Facebook, see @ref MyApplication::displayFriends()
+ *				- how to get a @ref QContact from a SmfContacts see @ref MyApplication::showlist()
+ *				- how to get a list of images from a remote gallery e.g. Flickr.com, see @ref MyApplication::displayGallery()
+ *				- how to post privately to a contact see @ref MyApplication::postUpdate()
+ *				- how to tell others about the music you are currently listen to, see @ref MyApplication::updateCurrentPlaying()
+ *
+ *		@section smf_sample_plugin Sample Plugin From Service provider
+ *		- This shows how to write a plugin for extending SMF service. Authentication Application also needs to be provided for these plugins.
+ *				- how to create request to be sent to a remote server e.g. Flickr.com, see @ref SamplePlugin::pictures()
+ *				- how to implement posting of comment on a picture to Flickr.com,  @ref SamplePlugin::postComment()
+ *				- how to parse the response that arrived from Flickr.com, see @ref SamplePlugin::responseAvailable()
+ *				- how to use JSON parsing from SmfPluginUtil, see @ref SamplePlugin::responseAvailable()
+ *
+ *		@section smf_dependency Dependency
+ *		SMF uses QtMobility for mainly contacts information, see QtMobility project.
+   */
+/**
+ * @defgroup smf_common_group Common Data Classes
+ */
+/**
+ * @defgroup smf_client_group Client Classes
+ */
+/**
+ * @defgroup smf_plugin_group Plugin Classes
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfevent/smfevent.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,169 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The SmfEvent class represents an event
+ *
+ */
+
+#ifndef SMFEVENT_H_
+#define SMFEVENT_H_
+
+#include <smfplace.h>
+#include <smfartists.h>
+#include <QStringList>
+#include <qdatastream.h>
+#include <QSharedData>
+#include <smfclientglobal.h>
+
+class SmfEventPrivate;
+
+/**
+ * @ingroup smf_common_group
+ * The event class represents an event
+ */
+class SMFCLIENT_EXPORT SmfEvent : public QObject
+	{
+	Q_OBJECT
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 */
+	SmfEvent( QObject *aParent = 0 );
+	
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object
+	 */
+	SmfEvent( const SmfEvent &aOther );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfEvent( );
+	
+	/**
+	 * Method to get the event name
+	 * @return The event name
+	 */
+	QString title( ) const;
+	
+	/**
+	 * Method to get the event date and time
+	 * @return The date and time of the event
+	 */
+	QDateTime eventDateTime( ) const;
+	
+	/**
+	 * Method to get the event duration
+	 * @return The duration of the event
+	 */
+	QTime duration( ) const;
+	
+	/**
+	 * Method to get the artist names
+	 * @return The list of artists in the event
+	 */
+	SmfArtists artists( ) const;
+	
+	/**
+	 * Method to get the venue of the event
+	 * @return The venue of the event
+	 */
+	SmfPlace venue( ) const;
+	
+	/**
+	 * Method to get the URL for getting tickets for the event
+	 * @return The Url for getting ticket for the event
+	 */
+	QUrl ticketUrl( ) const;
+	
+	/**
+	 * Method to get the id of the event
+	 * @return The ID value 
+	 */
+	QString id( ) const;
+	
+	/**
+	 * Method to set the event name
+	 * @param aName The new event name
+	 */
+	void setTitle( const QString &aName );
+	
+	/**
+	 * Method to set the event date and time
+	 * @param aDateTime The new date and time of the event
+	 * 
+	 */
+	void setEventDateTime( const QDateTime &aDateTime );
+	
+	/**
+	 * Method to set the event duration
+	 * @param aDuration The new duration of the event
+	 * 
+	 */
+	void setDuration( const QTime &aDuration );
+	
+	/**
+	 * Method to set the artist
+	 * @param aArtists The new artists in the event
+	 */
+	void setArtists( const SmfArtists &aArtists );
+	
+	/**
+	 * Method to set the venue name
+	 * @param aVenue The new venue of the event
+	 */
+	void setVenue( const SmfPlace &aVenue );
+	
+	/**
+	 * Method to set the URL for getting tickets for the event
+	 * @param aUrl The new Url for getting ticket for the event
+	 */
+	void setTicketUrl( const QUrl &aUrl );
+	
+private:
+	QSharedDataPointer<SmfEventPrivate> d;
+	
+	friend QDataStream &operator<<( QDataStream &aDataStream, 
+			const SmfEvent &aEvent );
+
+	friend QDataStream &operator>>( QDataStream &aDataStream, 
+			SmfEvent &aEvent );
+	
+	};
+
+
+/**
+ * Method for Externalization. Writes the SmfEvent object to 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be written
+ * @param aEvent The SmfEvent object to be externalized
+ * @return reference to the written stream
+ */
+QDataStream &operator<<( QDataStream &aDataStream, 
+		const SmfEvent &aEvent );
+
+/**
+ * Method for Internalization. Reads a SmfEvent object from 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be read
+ * @param aEvent The SmfEvent object to be internalized
+ * @return reference to the stream
+ */
+QDataStream &operator>>( QDataStream &aDataStream, 
+		SmfEvent &aEvent);
+
+#endif /* SMFEVENT_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfevent/smfevent_p.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,71 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Private class implemented for implicit sharing of SmfEvent class
+ *
+ */
+
+#ifndef SMFEVENT_P_H_
+#define SMFEVENT_P_H_
+
+
+#include <smfplace.h>
+#include <smfartists.h>
+#include <QStringList>
+#include <QSharedData>
+
+class SmfEventPrivate : public QSharedData
+{
+public:
+	/**
+	 * Constructor
+	 */
+	SmfEventPrivate( ) { 
+		m_name.clear(); 
+		m_url.clear();
+		m_eventId.clear();
+		
+	}
+	
+	/**
+	 * Copy Consturctor
+	 * @param aOther The reference object to be copy constructed
+	 */
+	SmfEventPrivate( const SmfEventPrivate &aOther ) : 
+		QSharedData ( aOther ), 
+		m_name ( aOther.m_name ), 
+		m_dateTime ( aOther.m_dateTime ),
+		m_duration ( aOther.m_duration ),
+		m_artists ( aOther.m_artists ),
+		m_venue ( aOther.m_venue ),
+		m_url ( aOther.m_url ),
+		m_eventId ( aOther.m_eventId ) 	{ }
+	
+	/**
+	 * Destructor
+	 */
+	~SmfEventPrivate( );
+  
+	QString		m_name;			// event name
+	QDateTime 	m_dateTime;		// event date and time
+	QTime		m_duration;		// event duration
+	SmfArtists m_artists;		// event artist names
+	SmfPlace 	m_venue;		// venue of the event
+	QUrl 		m_url;			// ticket url
+	QString 	m_eventId;
+	
+};
+
+#endif /* SMFEVENT_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfglobal.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,284 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The smfglobal.h files contains all global data common to Smf framework
+ *
+ */
+
+#ifndef SMFGLOBAL_H_
+#define SMFGLOBAL_H_
+
+#include <QBuffer>
+#include <QNetworkRequest>
+#include <QNetworkAccessManager>
+
+/**
+ * Exact definition to be decided later
+ */
+#define SMF_SERVICE_NAME(INTERFACE,INTERFACENAME)
+
+/**
+ * Indicates first page for a web query
+ */
+const int SMF_FIRST_PAGE=0;
+
+/**
+ * Default value for per page item for web queries
+ */
+const int SMF_ITEMS_PER_PAGE=10;
+
+
+/**
+ * Enum declaration for Network status information
+ */
+enum SmfNetworkStatus
+	{
+	SmfNetworkConnectedHome = 0,
+	SmfNetworkConnectedRoaming,	// value = 1
+	SmfNetworkStateNotKnown,	// value = 2
+	SmfNetworkConnected,		// value = 3
+	SmfNetworkNotConnected		// value = 4
+	};
+
+/**
+ * Enum declaration for result of transport initialize operation
+ */
+enum SmfTransportInitializeResult
+	{
+	SmfTransportInitNetworkNotAvailable = 0,
+	SmfTransportInitRoamingNetworkUsageNotEnabled,	// value = 1
+	SmfTransportInitNoError							// value = 2
+	};
+
+/**
+ * The enumeration used to indicate result of transport to the plugins
+ */
+enum SmfTransportResult
+	{
+	SmfTransportOpNoError = 0,
+	SmfTransportOpConnectionRefusedError,
+	SmfTransportOpRemoteHostClosedError,
+	SmfTransportOpHostNotFoundError,
+	SmfTransportOpTimeoutError,
+	SmfTransportOpOperationCanceledError,
+	SmfTransportOpSslHandshakeFailedError,
+	SmfTransportOpProxyConnectionRefusedError,
+	SmfTransportOpProxyConnectionClosedError,
+	SmfTransportOpProxyNotFoundError,
+	SmfTransportOpProxyTimeoutError,
+	SmfTransportOpProxyAuthenticationRequiredError,
+	SmfTransportOpContentAccessDenied,
+	SmfTransportOpContentOperationNotPermittedError,
+	SmfTransportOpContentNotFoundError,
+	SmfTransportOpAuthenticationRequiredError,
+	SmfTransportOpContentReSendError,
+	SmfTransportOpProtocolUnknownError,
+	SmfTransportOpProtocolInvalidOperationError,
+	SmfTransportOpUnknownNetworkError,
+	SmfTransportOpUnknownProxyError,
+	SmfTransportOpUnknownContentError,
+	SmfTransportOpProtocolFailure,
+	SmfTransportOpUnknownError,
+	SmfTransportOpIAPChanged,
+	SmfTransportOpCancelled
+	};
+
+/**
+ * The enumeration used to indicate result of plugin manager operations
+ */
+enum SmfPluginManagerResult
+	{
+	SmfPluginNoError = 0,
+	SmfPluginNotFound,
+	SmfPluginNotLoaded,
+	SmfPluginLoaded,
+	SmfPluginLoadError,
+	SmfPluginAuthorised,
+	SmfPluginNotAuthorised,
+	SmfPluginRequestCreated,
+	SmfPluginRequestCreationFailed,
+	SmfPluginUnknownService,
+	SmfPluginRequestSendingFailed,
+	SmfPluginSOPCheckFailed,
+	SmfPluginServiceError,
+	SmfPluginResponseParsed,
+	SmfPluginResponseParseFailure,
+	SmfPluginSendRequestAgain,
+	SmfPluginUnknownError
+	};
+
+
+/**
+ * The enumeration used to denote errors reported by plugin
+ * Smf can't continue without handling these errors
+ */
+enum SmfPluginError
+	{
+	SmfPluginErrNone = 0, 
+	SmfPluginErrTooManyRequest,
+	SmfPluginErrRequestQuotaExceeded,
+	SmfPluginErrInvalidRequest,
+	SmfPluginErrUserNotLoggedIn,
+	SmfPluginErrAuthenticationExpired,
+	SmfPluginErrPermissionDenied,
+	SmfPluginErrInvalidApplication,
+	SmfPluginErrServiceUnavailable,
+	SmfPluginErrServiceTemporaryUnavailable,
+	SmfPluginErrFormatNotSupported, 
+	SmfPluginErrDataSizeExceeded  
+	};
+
+/**
+ * The enumeration used to track the plugin methods return type
+ */
+enum SmfPluginRetType
+	{
+	SmfSendRequestAgain = 0,
+	SmfRequestComplete,
+	SmfRequestError
+	};
+
+
+/**
+ * The enumeration used to indicate the type of network operation done
+ */
+enum SmfRequestOperation
+	{
+	SmfContactGetFriends = 0,
+	SmfContactGetFollowers,
+	SmfContactSearch,
+	SmfContactSearchNear,
+	SmfContactGetGroups,
+	SmfContactSearchInGroup,
+	SmfContactRetrievePosts,
+	SmfContactPost,
+	SmfContactUpdatePost,
+	SmfContactPostDirected,
+	SmfContactCommentOnAPost,
+	SmfContactPostAppearence,
+	SmfContactSharePost,
+	SmfMusicGetLyrics,
+	SmfMusicGetSubtitle,
+	SmfMusicGetEventsOnLoc,
+	SmfMusicGetVenueOnLoc,
+	SmfMusicGetEventsOnVenue,
+	SmfMusicPostEvents,
+	SmfMusicGetRecommendations,
+	SmfMusicGetTracks,
+	SmfMusicGetTrackInfo,
+	SmfMusicGetStores,
+	SmfMusicPostCurrentPlaying,
+	SmfMusicGetUserInfo,
+	SmfMusicSearchUser,
+	SmfMusicGetPlaylists,
+	SmfMusicGetPlaylistsOfUser,
+	SmfMusicAddToPlaylist,
+	SmfMusicPostCurrentPlayingPlaylist,
+	SmfPictureGetPictures,
+	SmfPictureDescription,
+	SmfPictureUpload,
+	SmfPictureMultiUpload,
+	SmfPicturePostComment
+	
+	};
+
+
+/**
+ * The structure used to hold the request created by the plugins
+ */
+struct SmfPluginRequestData
+	{
+	/**
+	 * Indicates the type of operation performed, like getting Friends 
+	 * list, upload image etc
+	 */
+	SmfRequestOperation iRequestType;
+	
+	/**
+	 * The QNetworkRequest that has to be filled up by the plugins
+	 */
+	QNetworkRequest iNetworkRequest;
+	
+	/**
+	 * The data to be posted in case of HTTP POST operation
+	 */
+	QBuffer *iPostData;
+	
+	/**
+	 * The type of HTTP transaction, like GET, POST etc
+	 */
+	QNetworkAccessManager::Operation iHttpOperationType;
+	
+	};
+
+/**
+ * The structure used to hold the request created by the plugins
+ */
+struct SmfResultPage
+	{
+	/**
+	 * The total number of items
+	 */
+	uint iTotalItems;
+	
+	/**
+	 * The number of items per page
+	 */
+	uint iItemsPerPage;
+	
+	/**
+	 * The total number of pages
+	 */
+	uint iTotalPages;
+	
+	/**
+	 * The current fetched page number
+	 */
+	uint iPageNum;
+	};
+
+/**
+ * The structure used to track the data usage of each plugins
+ */
+struct SmfPluginDataUsage
+	{
+	/**
+	 * Application that called the plugin
+	 */
+	QString iAppName;
+	
+	/**
+	 * Interface implemented by the plugin
+	 */
+	QString iInterfaceName;
+	
+	/**
+	 * The service provider
+	 */
+	QString iServiceProviderName;
+	
+	/**
+	 * number of bytes sent for this plugin
+	 */
+	uint iBytesSent;
+	
+	/**
+	 * number of bytes received for this plugin
+	 */
+	uint iBytesReceived;
+	
+	};
+
+#endif /* SMFGLOBAL_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smfalbum.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,119 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The SmfAlbum class represents a music album
+ *
+ */
+#ifndef SMFALBUM_H_
+#define SMFALBUM_H_
+
+#include <QImage>
+#include <qdatastream.h>
+#include <QSharedData>
+#include <smfclientglobal.h>
+
+class SmfAlbumPrivate;
+class SmfArtists;
+
+/**
+ * @ingroup smf_common_group
+ * The SmfAlbum class represents a music album
+ */
+class SMFCLIENT_EXPORT SmfAlbum : public QObject
+	{
+	Q_OBJECT
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 */
+	SmfAlbum( QObject *aParent = 0 );
+	
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object
+	 */
+	SmfAlbum( const SmfAlbum &aOther );
+	
+	/**
+	 * Overloaded = operator
+	 * @param aOther The reference object
+	 * @return The target reference value
+	 */
+	SmfAlbum& operator=( const SmfAlbum &aOther );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfAlbum( );
+	
+	/**
+	 * Method to get the album name
+	 * @return The album name
+	 */
+	QString name( ) const;
+	
+	/**
+	 * Method to get the album's image
+	 * @return The album's image
+	 */
+	QImage image( ) const;
+	
+	/**
+	 * Method to get the artist names
+	 * @return The list of artists in the album
+	 */
+	SmfArtists artists( ) const;
+	
+	/**
+	 * Method to get the id of the album
+	 * @return The ID value 
+	 */
+	QString id( ) const;
+	
+private:
+	QSharedDataPointer<SmfAlbumPrivate> d;
+	
+	friend QDataStream &operator<<( QDataStream &aDataStream, 
+			const SmfAlbum &aAlbum );
+
+	friend QDataStream &operator>>( QDataStream &aDataStream, 
+			SmfAlbum &aAlbum );
+	
+	};
+
+
+/**
+ * Method for Externalization. Writes the SmfAlbum object to 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be written
+ * @param aAlbum The SmfAlbum object to be externalized
+ * @return reference to the written stream
+ */
+QDataStream &operator<<( QDataStream &aDataStream, 
+		const SmfAlbum &aAlbum );
+
+/**
+ * Method for Internalization. Reads a SmfAlbum object from 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be read
+ * @param aAlbum The SmfAlbum object to be internalized
+ * @return reference to the stream
+ */
+QDataStream &operator>>( QDataStream &aDataStream, 
+		SmfAlbum &aAlbum);
+
+
+#endif /* SMFALBUM_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smfalbum_p.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,62 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Private class implemented for implicit sharing of SmfAlbum class
+ *
+ */
+
+#ifndef SMFALBUM_P_H_
+#define SMFALBUM_P_H_
+
+#include <smfartists.h>
+#include <QStringList>
+#include <QSharedData>
+
+class SmfAlbumPrivate : public QSharedData
+{
+public:
+	/**
+	 * Constructor
+	 */
+	SmfAlbumPrivate( ) { 
+		m_name.clear(); 
+		m_albumId.clear();
+		
+	}
+	
+	/**
+	 * Copy Consturctor
+	 * @param aOther The reference object to be copy constructed
+	 */
+	SmfAlbumPrivate( const SmfAlbumPrivate &aOther ) : 
+		QSharedData ( aOther ), 
+		m_name ( aOther.m_name ), 
+		m_image ( aOther.m_image ),
+		m_artists ( aOther.m_artists ),
+		m_albumId ( aOther.m_albumId ) 	{ }
+	
+	/**
+	 * Destructor
+	 */
+	~SmfAlbumPrivate( );
+  
+	QString		m_name;		// album name
+	QImage 		m_image;	// album image
+	SmfArtists m_artists;	// album's artists
+	QString 	m_albumId;
+	
+};
+
+#endif /* SMFALBUM_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smfartists.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,113 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The SmfArtists class represents the artists in a track or an album
+ *
+ */
+
+#ifndef SMFARTISTS_H_
+#define SMFARTISTS_H_
+
+#include <QImage>
+#include <QUrl>
+#include <qdatastream.h>
+#include <QSharedData>
+#include <smfclientglobal.h>
+
+class SmfArtistsPrivate;
+
+/**
+ * @ingroup smf_common_group
+ * The SmfArtists class represents the artists in a track or an album
+ */
+class SMFCLIENT_EXPORT SmfArtists : public QObject
+	{
+	Q_OBJECT
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 */
+	SmfArtists( QObject *aParent = 0 );
+	
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object
+	 */
+	SmfArtists( const SmfArtists &aOther );
+	
+	/**
+	 * Overloaded = operator
+	 * @param aOther The reference object
+	 */
+	SmfArtists& operator=( const SmfArtists &aOther );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfArtists( );
+	
+	/**
+	 * Method to get the artists names
+	 * @return The list of artists
+	 */
+	QStringList names( ) const;
+	
+	/**
+	 * Method to get the image of the artists
+	 * @return The image of te artists
+	 */
+	QImage image( ) const;
+	
+	/**
+	 * Method to get the url of the artists
+	 * @return The url of the artists
+	 */
+	QUrl url( ) const;
+		
+private:
+	QSharedDataPointer<SmfArtistsPrivate> d;
+	
+	friend QDataStream &operator<<( QDataStream &aDataStream, 
+			const SmfArtists &aArtists );
+
+	friend QDataStream &operator>>( QDataStream &aDataStream, 
+			SmfArtists &aArtists );
+	
+	};
+
+
+/**
+ * Method for Externalization. Writes the SmfArtists object to 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be written
+ * @param aArtists The SmfArtists object to be externalized
+ * @return reference to the written stream
+ */
+QDataStream &operator<<( QDataStream &aDataStream, 
+		const SmfArtists &aArtists );
+
+/**
+ * Method for Internalization. Reads a SmfArtists object from 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be read
+ * @param aArtists The SmfArtists object to be internalized
+ * @return reference to the stream
+ */
+QDataStream &operator>>( QDataStream &aDataStream, 
+		SmfArtists &aArtists);
+
+
+#endif /* SMFARTISTS_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smfartists_p.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,60 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Private class implemented for implicit sharing of SmfArtists class
+ *
+ */
+
+#ifndef SMFARTISTS_P_H_
+#define SMFARTISTS_P_H_
+
+#include <QImage>
+#include <QUrl>
+#include <QStringList>
+#include <QSharedData>
+
+class SmfArtistsPrivate : public QSharedData
+{
+public:
+	/**
+	 * Constructor
+	 */
+	SmfArtistsPrivate( ) { 
+		m_names.clear(); 
+		m_url.clear();
+	}
+	
+	/**
+	 * Copy Consturctor
+	 * @param aOther The reference object to be copy constructed
+	 */
+	SmfArtistsPrivate( const SmfArtistsPrivate &aOther ) : 
+		QSharedData ( aOther ), 
+		m_names ( aOther.m_names ), 
+		m_image ( aOther.m_image ),
+		m_url ( aOther.m_url ) 	{ }
+	
+	/**
+	 * Destructor
+	 */
+	~SmfArtistsPrivate( );
+  
+	QStringList	m_names;	// artist names
+	QImage 		m_image;	// image
+	QUrl 		m_url;		// url
+};
+
+
+#endif /* SMFARTISTS_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smflyrics.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,114 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The SmfLyrics class represents an instance of a music track's lyrics
+ *
+ */
+
+#ifndef SMFLYRICS_H_
+#define SMFLYRICS_H_
+
+#include <qdatastream.h>
+#include <QDateTime>
+#include <QSharedData>
+#include <smfclientglobal.h>
+
+class SmfLyricsPrivate;
+
+/**
+ * @ingroup smf_common_group
+ * The lyrics class represents an instance of a music track's lyrics
+ */
+class SMFCLIENT_EXPORT SmfLyrics : public QObject
+	{
+	Q_OBJECT
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 */
+	SmfLyrics( QObject *aParent = 0 );
+	
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object
+	 */
+	SmfLyrics( const SmfLyrics &aOther );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfLyrics( );
+	
+	/**
+	 * Method to get the lyrics
+	 * @return The lyrics data
+	 */
+	QByteArray lyrics( ) const;
+	
+	/**
+	 * Method to get the language
+	 * @return The language
+	 */
+	QString language( ) const;
+	
+	/**
+	 * Method to get the release year
+	 * @return The release year
+	 */
+	QDateTime releaseYear( ) const;
+	
+	/**
+	 * Method to get the id of the lyrics
+	 * @return The ID value 
+	 */
+	QString id( ) const;
+	
+private:
+	QSharedDataPointer<SmfLyricsPrivate> d;
+	
+	friend QDataStream &operator<<( QDataStream &aDataStream, 
+			const SmfLyrics &aLyrics );
+
+	friend QDataStream &operator>>( QDataStream &aDataStream, 
+			SmfLyrics &aLyrics );
+	
+	};
+
+
+/**
+ * Method for Externalization. Writes the SmfLyrics object to 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be written
+ * @param aLyrics The SmfLyrics object to be externalized
+ * @return reference to the written stream
+ */
+QDataStream &operator<<( QDataStream &aDataStream, 
+		const SmfLyrics &aLyrics );
+
+/**
+ * Method for Internalization. Reads a SmfLyrics object from 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be read
+ * @param aLyrics The SmfLyrics object to be internalized
+ * @return reference to the stream
+ */
+QDataStream &operator>>( QDataStream &aDataStream, 
+		SmfLyrics &aLyrics);
+
+// Make the class SmfLyrics known to QMetaType, so that as to register it.
+Q_DECLARE_METATYPE(SmfLyrics)
+
+#endif /* SMFLYRICS_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smflyrics_p.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,61 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Private class implemented for implicit sharing of SmfLyrics class
+ *
+ */
+
+#ifndef SMFLYRICS_P_H_
+#define SMFLYRICS_P_H_
+
+#include <QDateTime>
+#include <QSharedData>
+
+class SmfLyricsPrivate : public QSharedData
+{
+public:
+	/**
+	 * Constructor
+	 */
+	SmfLyricsPrivate( ) { 
+		m_lyrics.clear();
+		m_language.clear();
+		m_lyricsId.clear(); 
+	}
+	
+	/**
+	 * Copy Consturctor
+	 * @param aOther The reference object to be copy constructed
+	 */
+	SmfLyricsPrivate( const SmfLyricsPrivate &aOther ) : 
+		QSharedData ( aOther ), 
+		m_lyrics ( aOther.m_lyrics ),
+		m_language ( aOther.m_language ),
+		m_releaseYr ( aOther.m_releaseYr ),
+		m_lyricsId ( aOther.m_lyricsId ) 	{ }
+	
+	/**
+	 * Destructor
+	 */
+	~SmfLyricsPrivate( );
+  
+	QByteArray m_lyrics;	// lyrics data
+	QString m_language;		// language
+	QDateTime m_releaseYr;	// release year
+	QString m_lyricsId;		// lyrics id
+	
+};
+
+#endif /* SMFLYRICS_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smfmusicfingerprint.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,92 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The SmfMusicFingerPrint class represents a music finger print used in searches
+ *
+ */
+
+#ifndef SMFMUSICFINGERPRINT_H_
+#define SMFMUSICFINGERPRINT_H_
+
+#include <qdatastream.h>
+#include <QSharedData>
+#include <smfclientglobal.h>
+
+class SmfMusicFingerPrintPrivate;
+
+/**
+ * @ingroup smf_common_group
+ * The musicfingerprint class represents a music finger print used in searches
+ */
+class SMFCLIENT_EXPORT SmfMusicFingerPrint : public QObject
+	{
+	Q_OBJECT
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 */
+	SmfMusicFingerPrint( QObject *aParent = 0 );
+	
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 */
+	SmfMusicFingerPrint( const SmfMusicFingerPrint &aOther );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfMusicFingerPrint( );
+	
+	/**
+	 * GEt the music finger print data
+	 * @return The music finger print data
+	 */
+	QByteArray musicFingerPrint ( ) const;
+	
+private:
+	QSharedDataPointer<SmfMusicFingerPrintPrivate> d;
+	
+	friend QDataStream &operator<<( QDataStream &aDataStream, 
+			const SmfMusicFingerPrint &aMFP );
+
+	friend QDataStream &operator>>( QDataStream &aDataStream, 
+			SmfMusicFingerPrint &aMFP );
+	
+	};
+
+
+/**
+ * Method for Externalization. Writes the SmfMusicFingerPrint object to 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be written
+ * @param aMFP The SmfMusicFingerPrint object to be externalized
+ * @return reference to the written stream
+ */
+QDataStream &operator<<( QDataStream &aDataStream, 
+		const SmfMusicFingerPrint &aMFP );
+
+/**
+ * Method for Internalization. Reads a SmfMusicFingerPrint object from 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be read
+ * @param aMFP The SmfMusicFingerPrint object to be internalized
+ * @return reference to the stream
+ */
+QDataStream &operator>>( QDataStream &aDataStream, 
+		SmfMusicFingerPrint &aMFP);
+
+#endif /* SMFMUSICFINGERPRINT_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smfmusicfingerprint_p.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,51 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Private class implemented for implicit sharing of SmfMusicFingerPrint class
+ *
+ */
+
+#ifndef SMFMUSICFINGERPRINT_P_H_
+#define SMFMUSICFINGERPRINT_P_H_
+
+#include <QSharedData>
+
+class SmfMusicFingerPrintPrivate : public QSharedData
+{
+public:
+	/**
+	 * Constructor
+	 */
+	SmfMusicFingerPrintPrivate( );
+	
+	/**
+	 * Copy Consturctor
+	 * @param aOther The reference object to be copy constructed
+	 */
+	SmfMusicFingerPrintPrivate( const SmfMusicFingerPrintPrivate &aOther ) : 
+		QSharedData ( aOther ), 
+		m_fingerPrintData ( aOther.m_fingerPrintData )	{ }
+	
+	/**
+	 * Destructor
+	 */
+	~SmfMusicFingerPrintPrivate( );
+  
+	QByteArray m_fingerPrintData;
+	
+};
+
+
+#endif /* SMFMUSICFINGERPRINT_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smfmusicprofile.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,127 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The music profile class represents a user's profile in music site
+ *
+ */
+
+#ifndef SMFMUSICPROFILE_H_
+#define SMFMUSICPROFILE_H_
+
+#include <smftrackinfo.h>
+#include <smfevent.h>
+#include <qdatastream.h>
+#include <QSharedData>
+#include <smfclientglobal.h>
+
+class SmfMusicProfilePrivate;
+
+/**
+ * @ingroup smf_common_group
+ * The music profile class represents a user's profile in music site
+ */
+class SMFCLIENT_EXPORT SmfMusicProfile : public QObject
+	{
+	Q_OBJECT
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 */
+	SmfMusicProfile( QObject *aParent = 0 );
+	
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object
+	 */
+	SmfMusicProfile( const SmfMusicProfile &aOther );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfMusicProfile( );
+	
+	/**
+	 * Method to get the user's used tracks
+	 * @return The users track list
+	 */
+	QList<SmfTrackInfo> musicUsageInfo( ) const;
+	
+	/**
+	 * Method to get the user's interested tracks
+	 * @return The users interested track list
+	 */
+	QList<SmfTrackInfo> interestInfo( ) const;
+	
+	/**
+	 * Method to get the user events as list of SmfEvents
+	 * @return The list of events
+	 */
+	QList<SmfEvent> userEvents( ) const;
+	
+	/**
+	 * Method to get the id of the music profile
+	 * @return The ID value 
+	 */
+	QString id( ) const;
+	
+	/**
+	 * Method to set the user's used tracks
+	 * @param aUsage The users new track list
+	 */
+	void setMusicUsageInfo( const QList<SmfTrackInfo>& aUsage );
+	
+	/**
+	 * Method to set the user's interested tracks
+	 * @param aInterest The users new interested track list
+	 */
+	void setInterestInfo( const QList<SmfTrackInfo>& aInterest );
+
+private:
+	QSharedDataPointer<SmfMusicProfilePrivate> d;
+
+	friend QDataStream &operator<<( QDataStream &aDataStream, 
+			const SmfMusicProfile &aProfile );
+
+	friend QDataStream &operator>>( QDataStream &aDataStream, 
+			SmfMusicProfile &aProfile );
+	
+	};
+
+
+/**
+ * Method for Externalization. Writes the SmfMusicProfile object to 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be written
+ * @param aProfile The SmfMusicProfile object to be externalized
+ * @return reference to the written stream
+ */
+QDataStream &operator<<( QDataStream &aDataStream, 
+		const SmfMusicProfile &aProfile );
+
+/**
+ * Method for Internalization. Reads a SmfMusicProfile object from 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be read
+ * @param aProfile The SmfMusicProfile object to be internalized
+ * @return reference to the stream
+ */
+QDataStream &operator>>( QDataStream &aDataStream, 
+		SmfMusicProfile &aProfile);
+
+// Make the class SmfMusicProfile known to QMetaType, so that as to register it.
+Q_DECLARE_METATYPE(SmfMusicProfile)
+
+#endif /* SMFMUSICPROFILE_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smfmusicprofile_p.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,64 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Private class implemented for implicit sharing of SmfMusicProfile class
+ *
+ */
+
+#ifndef SMFMUSICPROFILE_P_H_
+#define SMFMUSICPROFILE_P_H_
+
+
+#include <smftrackinfo.h>
+#include <smfevent.h>
+#include <QSharedData>
+
+class SmfMusicProfilePrivate : public QSharedData
+{
+public:
+	/**
+	 * Constructor
+	 */
+	SmfMusicProfilePrivate( ) { 
+		m_usage.clear(); 
+		m_interest.clear();
+		m_events.clear();
+		m_profileId.clear();
+	}
+	
+	/**
+	 * Copy Consturctor
+	 * @param aOther The reference object to be copy constructed
+	 */
+	SmfMusicProfilePrivate( const SmfMusicProfilePrivate &aOther ) : 
+		QSharedData ( aOther ), 
+		m_usage ( aOther.m_usage ), 
+		m_interest ( aOther.m_interest ),
+		m_events ( aOther.m_events ),
+		m_profileId ( aOther.m_profileId ) 	{ }
+	
+	/**
+	 * Destructor
+	 */
+	~SmfMusicProfilePrivate( );
+  
+	QList<SmfTrackInfo> m_usage;	// usage tracks
+	QList<SmfTrackInfo> m_interest;// interested tracks
+	QList<SmfEvent> m_events;		// events list
+	QString m_profileId;
+	
+};
+
+#endif /* SMFMUSICPROFILE_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smfmusicrating.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,124 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The music rating class represents an instance of rating 
+ * about a music track
+ *
+ */
+
+#ifndef SMFMUSICRATING_H_
+#define SMFMUSICRATING_H_
+
+#include <QObject>
+#include <QSharedData>
+#include <smfclientglobal.h>
+
+class SmfTrackInfo;
+class SmfMusicRatingPrivate;
+
+/**
+ * Indicates range of values to represent ratings,
+ * SP should normalize their rating value to this scale
+ */
+const int SMF_MAX_RATING = 10;
+const int SMF_MIN_RATING = 0;
+
+/**
+ * @ingroup smf_common_group
+ * The music rating class represents an instance of rating 
+ * about a music track 
+ */
+class SMFCLIENT_EXPORT SmfMusicRating : public QObject
+	{
+	Q_OBJECT
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 * (parent should be of type SmfTrackInfo)
+	 */
+	SmfMusicRating(SmfTrackInfo *aParent = 0);
+	
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object
+	 */
+	SmfMusicRating( const SmfMusicRating &aOther );
+	
+	/**
+	 * Overloaded = operator 
+	 * @param aOther The reference object
+	 */
+	SmfMusicRating& operator=( const SmfMusicRating &aOther );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfMusicRating( );
+	
+	/**
+	 * Method to get the rating
+	 * @return The rating value
+	 */
+	int rating( ) const;
+
+	/**
+	 * Method to get the max rating
+	 * @return The max rating value
+	 */
+	int maxRating( ) const;
+	
+	/**
+	 * Method to get the min rating
+	 * @return The min rating value
+	 */
+	int minRating( ) const;
+	
+private:
+	QSharedDataPointer<SmfMusicRatingPrivate> d;
+	
+	friend QDataStream &operator<<( QDataStream &aDataStream, 
+			const SmfMusicRating &aMusicRating );
+
+	friend QDataStream &operator>>( QDataStream &aDataStream, 
+			SmfMusicRating &aMusicRating );
+	
+	};
+
+
+/**
+ * Method for Externalization. Writes the SmfMusicRating object to 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be written
+ * @param aMusicRating The SmfMusicRating object to be externalized
+ * @return reference to the written stream
+ */
+QDataStream &operator<<( QDataStream &aDataStream, 
+		const SmfMusicRating &aMusicRating );
+
+/**
+ * Method for Internalization. Reads a SmfMusicRating object from 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be read
+ * @param aMusicRating The SmfMusicRating object to be internalized
+ * @return reference to the stream
+ */
+QDataStream &operator>>( QDataStream &aDataStream, 
+		SmfMusicRating &aMusicRating);
+
+// Make the class SmfMusicRating known to QMetaType, so that as to register it.
+Q_DECLARE_METATYPE(SmfMusicRating)
+
+#endif /* SMFMUSICRATING_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smfmusicrating_p.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,56 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Private class implemented for implicit sharing of SmfMusicRating class
+ *
+ */
+
+#ifndef SMFMUSICRATING_P_H_
+#define SMFMUSICRATING_P_H_
+
+#include <QSharedData>
+
+class SmfMusicRatingPrivate : public QSharedData
+{
+public:
+	/**
+	 * Constructor
+	 */
+	SmfMusicRatingPrivate( ) { 
+		m_rating = 0;
+	}
+	
+	/**
+	 * Copy Consturctor
+	 * @param aOther The reference object to be copy constructed
+	 */
+	SmfMusicRatingPrivate( const SmfMusicRatingPrivate &aOther ) : 
+		QSharedData ( aOther ), 
+		m_rating ( aOther.m_rating ),
+		m_max ( aOther.m_max ),
+		m_min ( aOther.m_min )  { }
+	
+	/**
+	 * Destructor
+	 */
+	~SmfMusicRatingPrivate( );
+  
+	int m_rating;	// rating
+	int m_max;		// max rating
+	int m_min;		// min rating
+	
+};
+
+#endif /* SMFMUSICRATING_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smfplaylist.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,132 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The playlist class represents an instance of a playlist
+ *
+ */
+
+#ifndef SMFPLAYLIST_H_
+#define SMFPLAYLIST_H_
+
+#include <smftrackinfo.h>
+#include <qdatastream.h>
+#include <QSharedData>
+#include <smfclientglobal.h>
+
+class SmfPlaylistPrivate;
+
+/**
+ * @ingroup smf_common_group
+ * The playlist class represents an instance of a playlist
+ */
+class SMFCLIENT_EXPORT SmfPlaylist : public QObject
+	{
+	Q_OBJECT
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 */
+	SmfPlaylist( QObject *aParent = 0 );
+	
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object
+	 */
+	SmfPlaylist( const SmfPlaylist &aOther );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfPlaylist( );
+	
+	/**
+	 * Method to get the list of tracks in the playlist
+	 * @return The list of tracks in the playlist
+	 */
+	QList<SmfTrackInfo> trackList( ) const;
+	
+	/**
+	 * Method to get the playlist title
+	 * @return The title of the playlist
+	 */
+	QString playListTitle( ) const;
+	
+	/**
+	 * Method to get the creation date of the playlist
+	 * @return The date and time of creation of the playlist
+	 */
+	QDateTime creationDate( ) const;
+	
+	/**
+	 * Method to get the id of the playlist
+	 * @return The ID value 
+	 */
+	QString id( ) const;
+	
+	/**
+	 * Method to set the list of tracks in the playlist
+	 * @param aList The new list of tracks in the playlist
+	 */
+	void setTrackList( const QList<SmfTrackInfo> &aList );
+	
+	/**
+	 * Method to set the playlist title
+	 * @param aTitle The new title of the playlist
+	 */
+	void setPlayListTitle( const QString &aTitle );
+	
+	/**
+	 * Method to set the creation date of the playlist
+	 * @param aDate The new date and time of creation of the playlist
+	 */
+	void setCreationDate( const QDateTime &aDate );
+	
+private:
+	QSharedDataPointer<SmfPlaylistPrivate> d;
+	
+	friend QDataStream &operator<<( QDataStream &aDataStream, 
+			const SmfPlaylist &aPlaylist );
+
+	friend QDataStream &operator>>( QDataStream &aDataStream, 
+			SmfPlaylist &aPlaylist );
+	
+	};
+
+
+/**
+ * Method for Externalization. Writes the SmfPlaylist object to 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be written
+ * @param aPlaylist The SmfPlaylist object to be externalized
+ * @return reference to the written stream
+ */
+QDataStream &operator<<( QDataStream &aDataStream, 
+		const SmfPlaylist &aPlaylist );
+
+/**
+ * Method for Internalization. Reads a SmfPlaylist object from 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be read
+ * @param aPlaylist The SmfPlaylist object to be internalized
+ * @return reference to the stream
+ */
+QDataStream &operator>>( QDataStream &aDataStream, 
+		SmfPlaylist &aPlaylist);
+
+// Make the class SmfPlaylist known to QMetaType, so that as to register it.
+Q_DECLARE_METATYPE(SmfPlaylist)
+
+#endif /* SMFPLAYLIST_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smfplaylist_p.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,61 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Private class implemented for implicit sharing of SmfPlaylist class
+ *
+ */
+
+#ifndef SMFPLAYLIST_P_H_
+#define SMFPLAYLIST_P_H_
+
+#include <smftrackinfo.h>
+#include <QSharedData>
+
+class SmfPlaylistPrivate : public QSharedData
+{
+public:
+	/**
+	 * Constructor
+	 */
+	SmfPlaylistPrivate( ) { 
+		m_trackList.clear(); 
+		m_title.clear();
+		m_playlistId.clear();
+	}
+	
+	/**
+	 * Copy Consturctor
+	 * @param aOther The reference object to be copy constructed
+	 */
+	SmfPlaylistPrivate( const SmfPlaylistPrivate &aOther ) : 
+		QSharedData ( aOther ), 
+		m_trackList ( aOther.m_trackList ), 
+		m_title ( aOther.m_title ),
+		m_creationDate ( aOther.m_creationDate ),
+		m_playlistId ( aOther.m_playlistId ) 	{ }
+	
+	/**
+	 * Destructor
+	 */
+	~SmfPlaylistPrivate( );
+  
+	QList<SmfTrackInfo> m_trackList;// list of tracks
+	QString m_title;				// playlist name
+	QDateTime m_creationDate;		// creation date
+	QString m_playlistId;
+	
+};
+
+#endif /* SMFPLAYLIST_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smfsubtitle.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,138 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The subtitle class represents information about a track's subtitle
+ *
+ */
+
+#ifndef SMFSUBTITLE_H_
+#define SMFSUBTITLE_H_
+
+#include <QObject>
+#include <qdatastream.h>
+#include <QDateTime>
+#include <QSharedData>
+#include <smfclientglobal.h>
+
+enum SmfSubtitleSearchFilterFields
+	{
+	SubtitleLanguage = 0,
+	SubtitleFrameRate,		// value = 1
+	SubtitleDuration,		// value = 2
+	SubtitleReleaseYear,	// value = 3
+	SubtitleAll = SubtitleLanguage | SubtitleFrameRate | 
+			SubtitleDuration | SubtitleReleaseYear
+	};
+typedef QMap<SmfSubtitleSearchFilterFields,QString> SmfSubtitleSearchFilter;
+
+class SmfSubtitlePrivate;
+
+/**
+ * @ingroup smf_common_group
+ * The subtitle class represents information about a track's subtitle
+ */
+class SMFCLIENT_EXPORT SmfSubtitle : public QObject
+	{
+	Q_OBJECT
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 */
+	SmfSubtitle( QObject *aParent = 0 );
+	
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object
+	 */
+	SmfSubtitle( const SmfSubtitle &aOther );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfSubtitle( );
+	
+	/**
+	 * Method to get the subtitle as a bytearray
+	 * @return The subtitle content
+	 */
+	QByteArray subtitle( ) const;
+	
+	/**
+	 * Method to get the language
+	 * @return The language
+	 */
+	QString language( ) const;
+	
+	/**
+	 * Method to get the frame rate
+	 * @return the frame rate
+	 */
+	double frameRate( ) const;
+	
+	/**
+	 * Method to get the duration
+	 * @return the duration
+	 */
+	double duration( ) const;
+	
+	/**
+	 * Method to get the release year
+	 * @return The release year
+	 */
+	QDateTime releaseYear( ) const;
+	
+	/**
+	 * Method to get the id of the subtitle
+	 * @return The ID value 
+	 */
+	QString id( ) const;
+	
+private:
+	QSharedDataPointer<SmfSubtitlePrivate> d;
+	
+	friend QDataStream &operator<<( QDataStream &aDataStream, 
+			const SmfSubtitle &aSubtitle );
+
+	friend QDataStream &operator>>( QDataStream &aDataStream, 
+			SmfSubtitle &aSubtitle );
+	
+	};
+
+
+/**
+ * Method for Externalization. Writes the SmfSubtitle object to 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be written
+ * @param aSubtitle The SmfSubtitle object to be externalized
+ * @return reference to the written stream
+ */
+QDataStream &operator<<( QDataStream &aDataStream, 
+		const SmfSubtitle &aSubtitle );
+
+/**
+ * Method for Internalization. Reads a SmfSubtitle object from 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be read
+ * @param aSubtitle The SmfSubtitle object to be internalized
+ * @return reference to the stream
+ */
+QDataStream &operator>>( QDataStream &aDataStream, 
+		SmfSubtitle &aSubtitle);
+
+// Make the class SmfSubtitle known to QMetaType, so that as to register it.
+Q_DECLARE_METATYPE(SmfSubtitle)
+
+#endif /* SMFSUBTITLE_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smfsubtitle_p.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,66 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Private class implemented for implicit sharing of SmfSubtitle class
+ *
+ */
+
+#ifndef SMFSUBTITLE_P_H_
+#define SMFSUBTITLE_P_H_
+
+#include <QDateTime>
+#include <QSharedData>
+
+class SmfSubtitlePrivate : public QSharedData
+{
+public:
+	/**
+	 * Constructor
+	 */
+	SmfSubtitlePrivate( ) { 
+		m_language.clear();
+		m_frameRate = 0;
+		m_duration = 0;
+		m_subtitleId.clear();
+	}
+	
+	/**
+	 * Copy Consturctor
+	 * @param aOther The reference object to be copy constructed
+	 */
+	SmfSubtitlePrivate( const SmfSubtitlePrivate &aOther ) : 
+		QSharedData ( aOther ), 
+		m_subtitle ( aOther.m_subtitle ), 
+		m_language ( aOther.m_language ),
+		m_frameRate ( aOther.m_frameRate ),
+		m_duration ( aOther.m_duration ),
+		m_releaseYr ( aOther.m_releaseYr ),
+		m_subtitleId ( aOther.m_subtitleId ) 	{ }
+	
+	/**
+	 * Destructor
+	 */
+	~SmfSubtitlePrivate( );
+  
+	QByteArray m_subtitle;	// subtitle data
+	QString m_language;		// language
+	double m_frameRate;		// frame rate
+	double m_duration;		// duration
+	QDateTime m_releaseYr;	// release year
+	QString m_subtitleId;	// subtitle id
+	
+};
+
+#endif /* SMFSUBTITLE_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smftrackinfo.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,209 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The track info class represents information about a music track
+ *
+ */
+
+#ifndef SMFTRACKINFO_H_
+#define SMFTRACKINFO_H_
+
+#include <QTime>
+#include <qdatastream.h>
+#include <smfmusicrating.h>
+#include <smfartists.h>
+#include <smfalbum.h>
+#include <QStringList>
+#include <QSharedData>
+#include <smfclientglobal.h>
+
+class SmfTrackInfoPrivate;
+
+/**
+ * @ingroup smf_common_group
+ * The track info class represents information about a music track
+ */
+class SMFCLIENT_EXPORT SmfTrackInfo : public QObject
+	{
+	Q_OBJECT
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 * (parent should be of type SmfMusicServicePlugin)
+	 */
+	SmfTrackInfo(QObject *aParent = 0 );
+	
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object
+	 */
+	SmfTrackInfo( const SmfTrackInfo &aOther );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfTrackInfo( );
+	
+	/**
+	 * Method to get the id of the track
+	 * @return The ID value 
+	 */
+	QString id( ) const;
+	
+	/**
+	 * Method to get the track title
+	 * @return The title of the track
+	 */
+	QString title( ) const;
+	
+	/**
+	 * Method to get the track album
+	 * @return The album of the track
+	 */
+	SmfAlbum album( ) const;
+	
+	/**
+	 * Method to get the track's artists
+	 * @return The artists of the track
+	 */
+	SmfArtists artists( ) const;
+	
+	/**
+	 * Method to get the genre of the track
+	 * @return The genre of the track
+	 */
+	QString genre( ) const;
+	
+	/**
+	 * Method to get the track's tag
+	 * @return The tag of the track
+	 */
+	QStringList tags( ) const;
+	
+	/**
+	 * Method to get the release year of the track
+	 * @return The release year of the track
+	 */
+	QDateTime year( ) const;
+	
+	/**
+	 * Method to get the track's rating
+	 * @return The rating of the track
+	 */
+	SmfMusicRating rating( ) const;
+	
+	/**
+	 * Method to get the comments on the track
+	 * @return The comments on the track
+	 */
+	QStringList comments( ) const;
+	
+	/**
+	 * Method to get the track's duration
+	 * @return The duration of the track
+	 */
+	QTime duration( ) const;
+	
+	/**
+	 * Method to set the track title
+	 * @param aTitle The new title of the track
+	 */
+	void setTitle( const QString &aTitle );
+	
+	/**
+	 * Method to set the track album
+	 * @param aAlbum The new album of the track
+	 */
+	void setAlbum( const SmfAlbum &aAlbum );
+	
+	/**
+	 * Method to set the track's artists
+	 * @param aArtists The new artists of the track
+	 */
+	void setArtists( const SmfArtists &aArtists );
+	
+	/**
+	 * Method to set the genre of the track
+	 * @param aGenre The new genre of the track
+	 */
+	void setGenre( const QString &aGenre );
+	
+	/**
+	 * Method to set the track's tag
+	 * @param aTag The tag of the track
+	 */
+	void setTags( const QStringList &aTags );
+	
+	/**
+	 * Method to set the release year of the track
+	 * @param aYear The new release year of the track
+	 */
+	void setYear( const QDateTime &aYear );
+	
+	/**
+	 * Method to set the track's rating
+	 * @param aRating The new rating of the track
+	 */
+	void setRating( const SmfMusicRating &aRating );
+	
+	/**
+	 * Method to set the comments on the track
+	 * @param aComment The new comment of the track
+	 */
+	void setComment( const QStringList &aComments );
+	
+	/**
+	 * Method to set the duration of the track
+	 * @param aDuration The new duration of the track
+	 */
+	void setDuration( const QTime &aDuration );
+
+private:
+	QSharedDataPointer<SmfTrackInfoPrivate> d;
+	
+	friend QDataStream &operator<<( QDataStream &aDataStream, 
+			const SmfTrackInfo &aTrackInfo );
+
+	friend QDataStream &operator>>( QDataStream &aDataStream, 
+			SmfTrackInfo &aTrackInfo );
+	
+	};
+
+
+/**
+ * Method for Externalization. Writes the SmfTrackInfo object to 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be written
+ * @param aTrackInfo The SmfTrackInfo object to be externalized
+ * @return reference to the written stream
+ */
+QDataStream &operator<<( QDataStream &aDataStream, 
+		const SmfTrackInfo &aTrackInfo );
+
+/**
+ * Method for Internalization. Reads a SmfTrackInfo object from 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be read
+ * @param aTrackInfo The SmfTrackInfo object to be internalized
+ * @return reference to the stream
+ */
+QDataStream &operator>>( QDataStream &aDataStream, 
+		SmfTrackInfo &aTrackInfo);
+
+// Make the class SmfTrackInfo known to QMetaType, so that as to register it.
+Q_DECLARE_METATYPE(SmfTrackInfo)
+
+#endif /* SMFTRACKINFO_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfmusic/smftrackinfo_p.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,80 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Private class implemented for implicit sharing of SmfTrackInfo class
+ *
+ */
+
+#ifndef SMFTRACKINFO_P_H_
+#define SMFTRACKINFO_P_H_
+
+#include <QTime>
+#include <smfmusicrating.h>
+#include <QStringList>
+#include <QSharedData>
+
+class SmfTrackInfoPrivate : public QSharedData
+{
+public:
+	/**
+	 * Constructor
+	 */
+	SmfTrackInfoPrivate( int aMaxRating = 0, int aMinRating = 0 ) : m_rating(/*aMaxRating, aMinRating*/) 
+		{ 
+		m_trackId.clear();
+		m_title.clear();
+		m_album.clear();
+		m_artist.clear();
+		m_genre.clear();
+		m_tags.clear();
+		m_comments.clear();
+	}
+	
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object to be copy constructed
+	 */
+	SmfTrackInfoPrivate( const SmfTrackInfoPrivate &aOther ) : 
+		QSharedData ( aOther ), 
+		m_trackId ( aOther.m_trackId ),
+		m_title ( aOther.m_title ),
+		m_album ( aOther.m_album ),
+		m_artists ( aOther.m_artists ),
+		m_genre ( aOther.m_genre ),
+		m_tags ( aOther.m_tags ),
+		m_year ( aOther.m_year ),
+		m_rating ( aOther.m_rating ),
+		m_comments ( aOther.m_comments ),
+		m_duration ( aOther.m_duration ) 	{ }
+	
+	/**
+	 * Destructor
+	 */
+	~SmfTrackInfoPrivate( );
+  
+	QString m_trackId;		// track id
+	QString m_title;		// title
+	SmfAlbum m_album;		// album 
+	SmfArtists m_artists;	// artist name
+	QString m_genre;		// genre information
+	QStringList m_tags;		// tag information
+	QDateTime m_year;			// release year
+	SmfMusicRating m_rating;// rating
+	QStringList m_comments;	// comments
+	QTime m_duration;		// duration
+	
+};
+
+#endif /* SMFTRACKINFO_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfpictures/smfpicture.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,215 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The picture class represents an instance of a picture
+ *
+ */
+
+#ifndef SMFPICTURE_H_
+#define SMFPICTURE_H_
+
+#include <QImage>
+#include <QDateTime>
+#include <QStringList>
+#include <QUrl>
+#include <qdatastream.h>
+#include <QSharedData>
+#include <smfclientglobal.h>
+#include <QMetaType>
+
+class SmfPicturePrivate;
+
+/**
+ * SmfPictureVisibility enumeration
+ */
+enum SmfPictureVisibility
+	{
+	SMFVisibilityFriend,
+	SMFVisibilityPersonal,
+	SMFVisibilityFamily,
+	SMFVisibilityGroup,
+	SMFVisibilityPublic
+	};
+
+/**
+ * @ingroup smf_common_group
+ * The picture class represents an instance of a picture
+ */
+class SMFCLIENT_EXPORT SmfPicture : public QObject
+	{
+	Q_OBJECT
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 */
+	SmfPicture( QObject *aParent = 0 );
+	
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object
+	 */
+	SmfPicture( const SmfPicture &aOther );
+	
+	/**
+	 * CConstructs SmfPicture from QImage
+	 * @param aOther The QImage
+	 */
+	SmfPicture( const QImage &image );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfPicture( );
+	
+	/**
+	 * Method to get the id of the picture
+	 * @return The ID value 
+	 */
+	QString id( ) const;
+	
+	/**
+	 * Method to get a picture owner
+	 * @return The owner of the picture
+	 */
+	QString owner( ) const;
+	
+	/**
+	 * Method to get a picture title
+	 * @return The title of the picture
+	 */
+	QString title( ) const;
+	
+	/**
+	 * Method to get a picture description
+	 * @return The description of the picture
+	 */
+	QString description( ) const;
+	
+	/**
+	 * Method to get a visibility of a picture for public
+	 * @return The visibility mode of this picture for others
+	 */
+	SmfPictureVisibility visibility( ) const;
+	
+	/**
+	 * Method to get the date of posting the picture
+	 * @return The posted date of the picture
+	 */
+	QDateTime postedDate( ) const;
+	
+	/**
+	 * Method to get the comments for the picture
+	 * @return The comments for the picture
+	 */
+	QStringList comments( ) const;
+	
+	/**
+	 * Method to get the tags for the picture
+	 * @return The tags for the picture
+	 */
+	QStringList tags( ) const;
+	
+	/**
+	 * Method to get the url of the picture
+	 * @return The url of the picture
+	 */
+	QUrl url( ) const;
+	
+	/**
+	 * Method to get the picture data as QImage
+	 * @return The picture as QImage
+	 */
+	QImage picture( ) const;
+		
+	/**
+	 * Method to set a picture owner
+	 * @param aOwner The owner of the picture
+	 */
+	void setOwner( const QString &aOwner );
+	
+	/**
+	 * Method to set a picture title
+	 * @param aTitle The title of the picture
+	 */
+	void setTitle( const QString &aTitle );
+	
+	/**
+	 * Method to set a picture description
+	 * @param aDescription The description of the picture
+	 */
+	void setDescription( const QString &aDescription );
+	
+	/**
+	 * Method to set a visibility of a picture for public
+	 * @param aVisibility aVisibility The visibility mode of 
+	 * this picture for others
+	 */
+	void setVisibility( const SmfPictureVisibility &aVisibility );
+	
+	/**
+	 * Method to add comment on the picture
+	 * @param aComment The comment for the picture
+	 */
+	void addComment( const QString &aComment );
+	
+	/**
+	 * Method to add tags for the picture
+	 * @param aTag The tag for the picture
+	 */
+	void addTags( const QStringList &aTags );
+	
+	/**
+	 * Method to set the picture data as QImage
+	 * @param aData The picture as QImage
+	 */
+	void setPicture( const QImage &aData );
+	
+private:
+	QSharedDataPointer<SmfPicturePrivate> d;
+	
+	friend QDataStream &operator<<( QDataStream &aDataStream, 
+			const SmfPicture &aPic );
+
+	friend QDataStream &operator>>( QDataStream &aDataStream, 
+			SmfPicture &aPic );
+	
+	};
+
+
+/**
+ * Method for Externalization. Writes the SmfPicture object to 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be written
+ * @param aPic The SmfPicture object to be externalized
+ * @return reference to the written stream
+ */
+QDataStream &operator<<( QDataStream &aDataStream, 
+		const SmfPicture &aPic );
+
+/**
+ * Method for Internalization. Reads a SmfPicture object from 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be read
+ * @param aPic The SmfPicture object to be internalized
+ * @return reference to the stream
+ */
+QDataStream &operator>>( QDataStream &aDataStream, 
+		SmfPicture &aPic);
+
+// Make the class SmfPicture known to QMetaType, so that as to register it.
+Q_DECLARE_METATYPE(SmfPicture)
+
+#endif /* SMFPICTURE_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfpictures/smfpicture_p.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,99 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Private class implemented for implicit sharing of SmfPicture class
+ *
+ */
+
+#ifndef SMFPICTURE_P_H_
+#define SMFPICTURE_P_H_
+
+
+#include <QDateTime>
+#include <QStringList>
+#include <QUrl>
+#include <QSharedData>
+#include <smfclientglobal.h>
+#include <smfpicture.h>
+
+class SmfPicturePrivate : public QSharedData
+{
+public:
+	/**
+	 * Constructor
+	 */
+	SmfPicturePrivate( ) { 
+		m_photoId.clear();
+		m_owner.clear();
+		m_title.clear();
+		m_description.clear();
+		m_comments.clear();
+		m_tags.clear();
+		m_url.clear();
+		m_caption.clear();
+	}
+	/**
+	 * Constructor
+	 */
+	SmfPicturePrivate( const QImage &aImage ) { 
+		m_photoId.clear();
+		m_owner.clear();
+		m_title.clear();
+		m_description.clear();
+		m_comments.clear();
+		m_tags.clear();
+		m_url.clear();
+		m_picture = aImage;
+		m_caption.clear();
+	}
+	
+	/**
+	 * Copy Consturctor
+	 * @param aOther The reference object to be copy constructed
+	 */
+	SmfPicturePrivate( const SmfPicturePrivate &aOther ) : 
+		QSharedData ( aOther ), 
+		m_photoId ( aOther.m_photoId ),
+		m_owner ( aOther.m_owner ),
+		m_title ( aOther.m_title ),
+		m_description ( aOther.m_description ),
+		m_picVisibility ( aOther.m_picVisibility ),
+		m_postedOn ( aOther.m_postedOn ),
+		m_comments ( aOther.m_comments ),
+		m_tags ( aOther.m_tags ),
+		m_url ( aOther.m_url ),
+		m_picture ( aOther.m_picture ),
+		m_caption ( aOther.m_caption ) 	{ }
+	
+	/**
+	 * Destructor
+	 */
+	~SmfPicturePrivate( );
+  
+	QString m_photoId;		// unique ID of the picture, service provider specific
+	QString m_owner;	// owner of the picture
+	QString m_title;	// picture title
+	QString m_description;// description
+	SmfPictureVisibility m_picVisibility; // picture visibility
+	QDateTime m_postedOn;// date posted
+	QStringList m_comments;// comments
+	QStringList m_tags;	// tags
+	QUrl m_url;			// url
+	QImage m_picture;	// picture data as bytearray
+	QString m_caption;	// caption
+	
+};
+
+#endif /* SMFPICTURE_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfplace/smfplace.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,204 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The SmfPlace class represents a place and its related information
+ * Note: This class has dependencies on QtMobility project
+ *
+ */
+
+#ifndef SMFPLACE_H_
+#define SMFPLACE_H_
+
+#include <QUrl>
+#include <qgeopositioninfo.h> // Qt mobility class
+#include <qdatastream.h>
+#include <QSharedData>
+#include <smfclientglobal.h>
+
+using namespace QtMobility; // Qt mobility - namespace
+
+typedef enum 
+{
+	SearchByStreet = 0x00,
+	SearchByLocality,
+	SearchByPostOffice,
+	SearchByTown,
+	SearchByRegion,
+	SearchByState,
+	SearchByCountry
+}SmfLocationSearchBoundary;
+
+class SmfPlacePrivate;
+
+/**
+ * @ingroup smf_common_group
+ * The SmfPlace class represents a place and its related information.
+ * 
+ * Note: This class has dependencies on QtMobility project
+ */
+class SMFCLIENT_EXPORT SmfPlace : public QObject
+	{
+	Q_OBJECT
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 */
+	SmfPlace( QObject *aParent = 0 );
+	
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object
+	 */
+	SmfPlace( const SmfPlace &aOther );
+	
+	/**
+	 * Overloaded = operator 
+	 * @param aOther The reference object
+	 */
+	SmfPlace operator=( const SmfPlace &aOther );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfPlace( );
+	
+	/**
+	 * Method to get the place name
+	 * @return The place name
+	 */
+	QString name( ) const;
+	
+	/**
+	 * Method to get the city of place
+	 * @return The city of the place
+	 */
+	QString city( ) const;
+	
+	/**
+	 * Method to get the street information of place
+	 * @return The street information of the place
+	 */
+	QString street( ) const;
+	
+	/**
+	 * Method to get the zip code of place
+	 * @return The zip code of place
+	 */
+	QString zipCode( ) const;
+	
+	/**
+	 * Method to get the country of place
+	 * @return The country of place
+	 */
+	QString country( ) const;
+	
+	/**
+	 * Method to get the Geo Position information (like information gathered 
+	 * on a global position, direction and velocity at a particular point 
+	 * in time) of the place.
+	 * @return The Geo Position information of place
+	 */
+	QtMobility::QGeoPositionInfo geoPositionInfo( ) const;
+	
+	/**
+	 * Method to get the url indicating the place
+	 * @return The url indicating the place
+	 */
+	QUrl url( ) const;
+	
+	/**
+	 * Method to get the id of the place
+	 * @return The ID value 
+	 */
+	QString id( ) const;
+	
+	/**
+	 * Method to set the place name
+	 * @param aPlace The new place name
+	 */
+	void setName( const QString& aPlace );
+	
+	/**
+	 * Method to set the city of  place
+	 * @param aCity The new city of the place
+	 */
+	void setCity( const QString& aCity );
+	
+	/**
+	 * Method to set the street information of place
+	 * @param aStreet The new street information of the place
+	 */
+	void setStreet( const QString& aStreet );
+	
+	/**
+	 * Method to set the zip code of place
+	 * @param aZipCode The new zip code of place
+	 */
+	void setZipCode( const QString& aZipCode );
+	
+	/**
+	 * Method to set the country of place
+	 * @param aCountry The new country of place
+	 */
+	void setCountry( const QString& aCountry );
+	
+	/**
+	 * Method to set the Geo Postion information (like information gathered 
+	 * on a global position, direction and velocity at a particular point 
+	 * in time) of the place.
+	 * @param aGeoPosInfo The new Geo Position information of place
+	 */
+	void setGeoPositionInfo( const QtMobility::QGeoPositionInfo& aGeoPosInfo );
+	
+	/**
+	 * Method to set the url indicating the place
+	 * @param aUrl The new url indicating the place
+	 */
+	void setUrl( const QUrl& aUrl );
+	
+private:
+	QSharedDataPointer<SmfPlacePrivate> d;
+	
+	friend QDataStream &operator<<( QDataStream &aDataStream, 
+			const SmfPlace &aPlace );
+
+	friend QDataStream &operator>>( QDataStream &aDataStream, 
+			SmfPlace &aPlace );
+	
+	};
+
+
+/**
+ * Method for Externalization. Writes the SmfPlace object to 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be written
+ * @param aPlace The SmfPlace object to be externalized
+ * @return reference to the written stream
+ */
+QDataStream &operator<<( QDataStream &aDataStream, 
+		const SmfPlace &aPlace );
+
+/**
+ * Method for Internalization. Reads a SmfPlace object from 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be read
+ * @param aPlace The SmfPlace object to be internalized
+ * @return reference to the stream
+ */
+QDataStream &operator>>( QDataStream &aDataStream, 
+		SmfPlace &aPlace);
+
+#endif /* SMFPLACE_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/common/smfplace/smfplace_p.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,75 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Private class implemented for implicit sharing of SmfPlace class
+ *
+ */
+
+#ifndef SMFPLACE_P_H_
+#define SMFPLACE_P_H_
+
+#include <QUrl>
+#include <qgeopositioninfo.h> // Qt mobility class
+#include <QSharedData>
+
+using namespace QtMobility; // Qt mobility - namespace
+
+class SmfPlacePrivate : public QSharedData
+{
+public:
+	/**
+	 * Constructor
+	 */
+	SmfPlacePrivate( ) { 
+		m_name.clear();
+		m_city.clear();
+		m_street.clear();
+		m_zipcode.clear();
+		m_country.clear();
+		m_url.clear();
+		m_placeId.clear(); }
+	
+	/**
+	 * Copy Consturctor
+	 * @param aOther The reference object to be copy constructed
+	 */
+	SmfPlacePrivate( const SmfPlacePrivate &aOther ) : 
+		QSharedData ( aOther ), 
+		m_name ( aOther.m_name ),
+		m_city ( aOther.m_city ),
+		m_street ( aOther.m_street ),
+		m_zipcode ( aOther.m_zipcode ),
+		m_country ( aOther.m_country ),
+		m_geo ( aOther.m_geo ),
+		m_url ( aOther.m_url ),
+		m_placeId ( aOther.m_placeId ) 	{ }
+	
+	/**
+	 * Destructor
+	 */
+	~SmfPlacePrivate( );
+  
+	QString m_name;						// place name
+	QString m_city;						// city of place
+	QString m_street;					// street of place
+	QString m_zipcode;					// zip code of place
+	QString m_country;					// country of place
+	QtMobility::QGeoPositionInfo m_geo;	// place geo position information
+	QUrl m_url;							// url indicating the place
+	QString m_placeId;					// place id
+	
+};
+
+#endif /* SMFPLACE_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/smfclient/smfclient.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,55 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The SmfEvent class represents an event
+ *
+ */
+
+#ifndef SMFCLIENT_H
+#define SMFCLIENT_H
+
+#include <QObject>
+#include <QImage>
+#include <QUrl>
+
+#include "../common/SmfClientGlobal.h"
+
+class SmfProvider;
+
+/**
+ * @ingroup smf_client_group 
+ * Interface for a base service provider. Other service provider classes contains 
+ * implementation of this base class so that each has access to service provider 
+ * information.
+ * All of the functionality described here should be implemented by a service
+ * specific plug-in object.
+ */
+class SMFCLIENT_EXPORT SmfClient
+{
+  /*Q_OBJECT*/
+
+public:
+
+  /**
+   * @param name of the service 
+   * @return service provider list
+   */
+  QList<SmfProvider>* GetServices(const QString& serviceName); 
+  QList<SmfProvider>* GetServices(const QString& serviceName, const QString& providerName);
+  QList<SmfProvider>* GetServices(const QString& serviceName, const SmfProvider& provider);  
+};
+
+
+#endif // SMFCLIENT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/smfclient/smfcontactfetcher.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,212 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The SmfEvent class represents an event
+ *
+ */
+
+#ifndef SMFCONTACTHETCHER_H
+#define SMFCONTACTHETCHER_H
+
+#include <QObject>
+#include "smfglobal.h"
+#include "smfprovider.h"
+#include "smfcontact.h"
+#include "smfplace.h"
+class SmfProvider; //base-class for service provider
+class SmfContact; //class for Contact in a social network
+class SmfGroup; //class for a group in social network
+typedef QList<SmfContact>  SmfContactList;
+
+//List of SmfGroup
+typedef QList<SmfGroup> SmfGroupList;
+/**
+ * @ingroup smf_client_group 
+ * Interface to search for contacts/connections from a service provider. This class
+ * provides basic functionality to allow applications to obtain list of
+ * contacts or friends in a social networking service.
+ * Note that to get the base provider info like service name, icon, description etc
+ * use getProvider().
+ * See also:
+ * SmfProvider::serviceName(), SmfProvider::serviceIcon(), SmfProvider::description()
+ *
+ * All of the functionality described here should be implemented by a service
+ * specific plug-in object.
+ * Interface name:- org.symbian.smf.client.contact.fetcher
+ */
+class SMFCLIENT_EXPORT SmfContactFetcher : public QObject
+{
+  Q_OBJECT
+
+public:
+
+  /**
+   * Constructs the SmfContactFetcher.
+   * @param parent base provider info
+   * @param contact Used for searching friends of the given contact
+   * Seeing as this is a plug-in implementation, these will realistically
+   * be generated by SMF factory of some kind
+   */
+  SmfContactFetcher(SmfProvider* baseProvider);
+  SmfContactFetcher(SmfProvider* baseProvider, SmfContact* contact);
+  ~SmfContactFetcher();
+
+public:
+  /**
+   * Get the friend listing asynchronously. The friendsListAvailable() signal
+   * is emitted with SmfContactList once data is arrived.
+   * When the list is big user can specify the page number and per page item data.
+   * If not supplied by the user default values are used.
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+  bool friends(int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE);
+
+  /**
+   * Get the list of followers asynchronously. The followersListAvailable() signal
+   * is emitted with SmfContactList once data is arrived. Please note that some
+   * service may not support followers/fans - FALSE is returned if not supported.
+   * When the list is big user can specify the page number and per page item data.
+   * If not supplied by the user default values are used.
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+  bool followers(int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE); // list of contact objects
+
+  /**
+   * Searches for a contact The searchContactFinished() signal
+   * is emitted with SmfContactList once data is arrived.
+   * When the list is big user can specify the page number and per page item data.
+   * If not supplied by the user default values are used.
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+  void search(SmfContact* contact,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE) ; // list of contact objects
+
+  /**
+   * Searches for a contacts (friends) who are near the user.
+   * Signal searchNearFinished() is emitted with SmfContactList once data is arrived.
+   * Proximity defines accuracy level
+   * When the list is big user can specify the page number and per page item data.
+   * If not supplied by the user default values are used.
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+   bool searchNear(SmfPlace* location,SmfLocationSearchBoundary proximity,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE) ;
+
+
+  /**
+   * Get the list of groups. The groupListAvailable() signal
+   * is emitted with SmfGroupList once data is arrived. False might be returned
+   * if this service doesn't support any mode of grouping (very rare).
+   * When the list is big user can specify the page number and per page item data.
+   * If not supplied by the user default values are used.
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+   bool groups(int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE) ; // list of group objects
+
+  /**
+   * Searches for Smf Contacts in an Smf group.
+   * When the list is big user can specify the page number and per page item data.
+   * If not supplied by the user default values are used.
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   * @param  group The group to be searcged in
+   */
+   bool searchInGroup(SmfGroup group,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE) ; // list of contact objects
+
+
+  //APIs to get/set base provider info (SmfProvider)
+
+  /**
+   * Gets the base provider info
+   */
+   SmfProvider* getProvider() ;
+
+public slots:
+
+signals:
+
+	/**
+	 * This signal is emitted when a request to get friends is completed.
+	 * Note if number of friends is large, then it can download the list page by page.
+	 * In that case this signal is emitted multiple times.
+	 *  @param list list of friends
+	 *  @param error error string
+	 *  @param resultPage Page number info
+	 *  @see friends()
+	 */
+	void friendsListAvailable(SmfContactList* list, QString error, SmfResultPage resultPage);
+
+	/**
+	 * This signal is emitted when a request to get followers is completed
+	 *  Note if number of followers is large, then it can download the list page by page
+	 *  In that case this signal is emitted multiple times.
+	 *  @param list list of followers
+	 *  @param error error string
+	 *  @param resultPage Page number info
+	 *  @see followers()
+	 */
+	void followersListAvailable(SmfContactList* list, QString error, SmfResultPage resultPage);
+
+	/**
+	 * This signal is emitted when a request to get groups is completed
+	 * Note if number of groups is large, then it can download the list page by page
+	 *  In that case this signal is emitted multiple times.
+	 *  @param list list of groups
+	 *  @param error error string
+	 *  @param resultPage Page number info
+	 *  @see groups()
+	 */
+	void groupListAvailable(SmfGroupList* list, QString error, SmfResultPage resultPage);
+
+	/**
+	 * Emitted when search for a contact is finished.
+	 * Note if number of contacts in the search is large, then it can download the list page by page
+	 * In that case this signal is emitted multiple times.
+	 * @param list List of filtered contacts
+	 * @param resultPage Page number info
+	 * @see search()
+	 */
+	void searchContactFinished(SmfContactList* list,QString error, SmfResultPage resultPage);
+
+
+	/**
+	 * Emitted when search for contacts who are near a geographic location, is finished.
+	 * Note if number of contacts in the search is large, then it can download the list page by page
+	 * In that case this signal is emitted multiple times.
+	 * @param list List of filtered contacts
+	 * @param resultPage Page number info
+	 * @see search()
+	 */
+	void searchNearFinished(SmfContactList* list,QString error, SmfResultPage resultPage);
+
+	/**
+	 * Emitted when search for a contact in a group is finished
+	 * Note if number of contacts in the search is large, then it can download the list page by page
+	 * In that case this signal is emitted multiple times.
+	 * @param list list of filtered contacts
+	 * @param resultPage Page number info
+	 * @see searchInGroup()
+	 */
+	void searchInGroupFinished(SmfContactList* list,QString error, SmfResultPage resultPage);
+
+private:
+  SmfProvider* m_baseProvider;
+};
+
+SMF_SERVICE_NAME(SmfContactFetcher, "org.symbian.smf.client.contact.fetcher\0.2")
+#endif // SMFCONTACTHETCHER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/smfclient/smfgallery.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,135 @@
+/**
+ * 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
+ *
+ * Description:
+ * The SmfEvent class represents an event
+ *
+ */
+
+#ifndef SMFGALLERY_H
+#define SMFGALLERY_H
+
+#include "smfglobal.h"
+#include "smfprovider.h"
+#include "../common/SmfClientGlobal.h"
+class SmfProvider;
+class SmfComment; //user id, string, and url
+class SmfPicture;
+
+
+#include <QObject>
+#include <QDateTime>
+#include <QStringList>
+//List of SmfPicture
+typedef QList<SmfPicture> SmfPictureList;
+/**
+ * @ingroup smf_client_group 
+ * Interface to a remote gallery service. This class
+ * provides some basic gallery functionality to allow applications
+ * to interact with a picture gallery in a social network.
+ *
+ * Note that branding information for the particular service implementation
+ * is available from getProvider() API. See also:
+ * SmfProvider::serviceName(), SmfProvider::serviceIcon()
+ *
+ * All of the functionality described here should be implemented by a service
+ * specific plug-in object.
+ * Interface name for SmfGallery org.symbian.smf.client.gallery
+ */
+class SMFCLIENT_EXPORT SmfGallery : public QObject
+{
+  Q_OBJECT
+
+public:
+  /**
+   * Constructs SmfGallery.
+   * @param baseProvider The base provider info
+   * Seeing as this is a plug-in implementation, these will realistically
+   be generated by SMF factory of some kind
+   */
+
+  SmfGallery(SmfProvider* baseprovider = 0);
+  ~SmfGallery();
+
+public:
+  /**
+   * Get the picture listing asynchronously.
+   * The picturesAvailable() signal is emitted with SmfPictureList once the pictures have arrived.
+   * When the list is big user can specify the page number and per page item data.
+   * If not supplied by the user default values are used.
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+  void pictures(int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE);
+
+  /**
+   * Returns a user title/caption for the picture
+   */
+  QString description(SmfPicture& picture); // A user title or caption, maybe?
+
+  //APIs to get/set base provider info (SmfProvider)
+
+  /**
+   * Gets the base provider info
+   */
+   SmfProvider* getProvider() ;
+
+public slots:
+	/**
+	 * Upload an image.Implemented as slot to connect to UI controls more easily
+	 * uploadFinished() signal is emitted with the success value of the upload
+	 * @param image the image to be uploaded
+	 */
+   void upload(SmfPicture* image) ;
+
+	/**
+	 * Upload an list image.Implemented as slot to connect to UI controls more easily
+	 * uploadFinished() signal is emitted with the success value of the upload
+	 * @param images the list image to be uploaded
+	 */
+   void upload(SmfPictureList* images) ;
+
+  /**
+   * Posts a comment for an image. uploadFinished() signal is emitted
+   * with success of the post once comment is posted.
+   * @param image Image to comment on
+   * @param comment Comment to post
+   */
+   void postComment(SmfPicture image, SmfComment comment) ;
+
+signals:
+	/*
+	 * Notification on arrival of list of SmfPicture as a result of request.
+	 * Note if number of friends is large, then it can download the list page by page.
+	 * In that case this signal is emitted multiple times.
+	 * through pictures().
+	 * @param pics Picture list
+	 * @param error Error string
+	 * @param resultPage Page number info
+	 */
+	void picturesAvailable(SmfPictureList* pics, QString error, SmfResultPage resultPage);
+
+  /**
+   * Notification of the success of the uploading of image/comment
+   * @param error The upload success result of each individual pictures
+   */
+  void uploadFinished(QList<bool> error);
+private:
+  SmfProvider* m_baseProvider;
+};
+
+SMF_SERVICE_NAME(SmfGallery, "org.symbian.smf.client.gallery\0.2")
+
+#endif // SMFGALLERY_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/smfclient/smfmusic.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,526 @@
+/**
+ * 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
+ *
+ * Description:
+ * The SmfEvent class represents an event
+ *
+ */
+
+#ifndef SMFMUSIC_H
+#define SMMUSIC_H
+
+#include <QObject>
+
+#include <qmobilityglobal.h>
+#include <qgeopositioninfo.h>
+
+#include "smfglobal.h"
+#include "smfprovider.h"
+#include "smfcontact.h"
+#include "smfevent.h"
+
+class SmfProvider; //basic Smf service Provider info
+class SmfContact; // Smf contact
+class SmfMusicRating;//rating value from 0..31 - services would map accordingly
+class SmfMusicProfile; //user profile containing music usage and interest info, extends SmfContact
+class SmfTrackInfo; //id, title, album, artist, genre, tag, director,release year, rating, comment info
+class SmfMusicFingerPrint; //generation is not in scope of smf
+class SmfVenue;
+class SmfEvent;
+class SmfPlaylist;
+class SmfLyricsService;
+class SmfLyrics;
+class SmfSubtitle;
+class SmfSubtitleSearchFilter;
+
+typedef QList<SmfMusicProfile> SmfMusicProfileList;
+typedef QList<SmfTrackInfo> SmfTrackInfoList;
+typedef QList<SmfEvent> SmfEventsList;
+typedef QList<SmfProvider> SmfProviderList;
+typedef QList<SmfPlaylist> SmfPlaylistList;
+typedef QList<SmfVenue> SmfVenueList;
+typedef QList<SmfLyrics> SmfLyricsList;
+typedef QList<SmfSubtitle> SmfSubtitleList;
+/**
+ * @ingroup smf_client_group
+  * Basic music service ("org.symbian.smf.client.music.service")
+  */
+class SMFCLIENT_EXPORT SmfMusicService : public QObject
+{
+  Q_OBJECT
+
+public:
+  /**
+   * Constructs SmfMusicService.
+   * @param baseProvider The base provider info
+   * Seeing as this is a plug-in implementation, these will realistically
+   *  be generated by SMF factory of some kind
+   */
+   SmfMusicService(SmfProvider* baseProvider = 0);
+  ~SmfMusicService();
+
+public:
+
+  /**
+   * Gets self profile information asynchronously.
+   * userInfoAvailable() signal is emitted with SmfMusicProfile when the info is arrived
+   */
+  void userinfo() ;
+
+  /**
+   * Asynchronously searches information about other service users for a particular venue
+   * searchInfoAvailable() signal is emitted with SmfMusicProfileList when the info is arrived.
+   * When the list is big user can specify the page number and per page item data.
+   * If not supplied by the user default values are used.
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+  void searchUser(SmfVenue venue,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE) ;
+
+  /**
+   * Gets the base provider info
+   */
+  SmfProvider* getProvider() ;
+
+
+signals:
+	/**
+	 * Notification on arrival of the self profile as result of userinfo().
+	 * @param profile The self profile
+	 */
+	void userInfoAvailable(SmfMusicProfile* profile, QString error);
+
+	void searchInfoAvailable(SmfMusicProfileList& profileList, QString error,SmfResultPage resultPage);
+private:
+  SmfProvider* m_baseProvider;
+};
+SMF_SERVICE_NAME(SmfMusicService, "org.symbian.smf.client.music.service\0.2")
+
+
+/**
+* Provides service ("org.symbian.smf.client.music.search") for music search
+*/
+class SMFCLIENT_EXPORT SmfMusicSearch : public QObject
+{
+  Q_OBJECT
+
+public:
+  /**
+   * Constructs SmfMusicSearch with base provider as arguement.
+   * Seeing as this is a plug-in implementation, these will realistically
+   * be generated by SMF factory of some kind
+   */
+
+  SmfMusicSearch(SmfProvider* baseProvider = 0);
+  ~SmfMusicSearch();
+
+public:
+  // Get the track listing - might be made asynchrnous later
+
+  /**
+   * Searches for music recommendations similar to a particulartrack asynchronously.
+   * The signal trackSearchAvailable() is emitted with SmfTrackInfoList
+   * once its arrived.
+   * When the list is big user can specify the page number and per page item data.
+   * If not supplied by the user default values are used.
+   * @param track The track for which similar recommendations need to be fetched.
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+  void recommendations(SmfTrackInfo track,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ; // basic list of track objects
+
+  /**
+   * Searches for tracks similar to a given track asynchronously.
+   * The signal trackSearchAvailable() is emitted with SmfTrackInfoList
+   * once its arrived.
+   * When the list is big user can specify the page number and per page item data.
+   * If not supplied by the user default values are used.
+   * @param track The search criteria, similar tracks are searched
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+  void tracks(SmfTrackInfo track,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ; // basic list of track objects
+
+  /**
+   * Searches for a track having similar finger print asynchronously.
+   * The signal trackSearchAvailable() is emitted with SmfTrackInfoList
+   * once its arrived.
+   * @param signature The search criteria,signature to be searched for
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+  void trackInfo(SmfMusicFingerPrint signature,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ; // search by fingerprint object
+
+  /**
+   * Search information about where to buy this song from asynchronously.
+   * The signal storeSearchAvailable() is emitted with SmfProviderList once its arrived.
+   * @param track The search criteria for stores
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+  void stores(SmfTrackInfo track,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ;
+
+  //APIs to get/set base provider info (SmfProvider)
+
+  /**
+   * Gets the base provider info
+   */
+  SmfProvider* getProvider()  ;
+
+
+public slots:
+
+	/**
+	 * Posts currently playing track.
+	 * Success can be checked by checking the signal postFinished()
+	 * @param track Track to post
+	 */
+  void postCurrentPlaying(SmfTrackInfo track)  ;
+  //int postRating(SmfTrackInfo track, SmfMusicRating rate)  ;
+  //int postComments(SmfTrackInfo track, SmfComment comment)  ;
+
+signals:
+	/**
+	 * Emitted when the search result for a track is available.
+	 * Note if number of tacks in the search is large, then it can download the list page by page.
+	 * In that case this signal is emitted multiple times.
+	 * @param resultPage Page number info
+	 */
+	void trackSearchAvailable(SmfTrackInfoList* result, QString error,SmfResultPage resultPage);
+
+	/**
+	 *  Emitted when the search result for a store is available.
+	 *  Note if number of tacks in the search is large, then it can download the list page by page.
+	 *  In that case this signal is emitted multiple times.
+	 *  @param resultPage Page number info
+	 */
+	void storeSearchAvailable(SmfProviderList* result, QString error, SmfResultPage resultPage);
+private:
+  SmfProvider* m_baseProvider;
+};
+SMF_SERVICE_NAME(SmfMusicSearch, "org.symbian.smf.client.music.search\0.2")
+
+
+/**
+ * Remote playlist
+ */
+class SMFCLIENT_EXPORT SmfPlaylist : public QObject
+	{
+	Q_OBJECT
+
+public:
+	SmfPlaylist();
+	~SmfPlaylist();
+
+	/**
+	 * Gets tracks in the playlist
+	 */
+	SmfTrackInfoList* getTrackList();
+
+	/**
+	 * Gets playlist title
+	 */
+	QString getPlayListTitle();
+
+	/**
+	 * Gets the creation date
+	 */
+	QDateTime getCreationDate();
+
+	/**
+	 * Sets tracks in the playlist
+	 */
+	void setTrackList(SmfTrackInfoList* trackList);
+
+	/**
+	 * Sets playlist title
+	 */
+	void setPlayListTitle(QString title);
+
+	/**
+	 * Sets creation date
+	 */
+	void setCreationDate(QDateTime time);
+
+private:
+	SmfTrackInfoList* m_trackList;
+	QString m_title;
+	QDateTime m_creationDate;
+	};
+
+
+/**
+ * provides service ("org.symbian.smf.client.music.playlist")
+ *
+ * Interface to a remote playlist service. This class
+ * provides some basic functionality to allow applications
+ * to interact with playlists in some music related service provider (e.g. last.fm).
+ *
+ * Note that branding information for the particular service implementation
+ * is available from getProvider() API. See also:
+ * SmfProvider::serviceName(), SmfProvider::serviceIcon()
+ *
+ * All of the functionality described here should be implemented by a service
+ * specific plug-in object.
+ *
+ */
+class SMFCLIENT_EXPORT SmfPlaylistService : public QObject
+{
+  Q_OBJECT
+
+public:
+  /**
+   * Constructs SmfPlaylistService with base provider info
+   * Seeing as this is a plug-in implementation, these will realistically
+   * be generated by SMF factory of some kind
+   */
+  SmfPlaylistService(SmfProvider* baseProvider = 0);
+  ~SmfPlaylistService();
+
+public:
+
+  /**
+   * Gets the list playlists for the logged-in user asynchronously.
+   * The signal playlistsListAvailable() signal is emitted with
+   * SmfPlaylistList once its arrived .
+   * When the list is big user can specify the page number and per page item data.
+   * If not supplied by the user default values are used.
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+  void playlists(int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ; // basic list of playlist objects
+
+  /**
+   * Gets the list playlists for the given user asynchronously.
+   * The signal playlistsListAvailable() signal is emitted with
+   * SmfPlaylistList once its arrived.
+   * When the list is big user can specify the page number and per page item data.
+   * If not supplied by the user default values are used.
+   * @param user User for which to get the playlists
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+  void playlistsOf(SmfMusicProfile* user,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ;
+
+  //APIs to get/set base provider info (SmfProvider)
+
+  /**
+   * Gets the base provider info
+   */
+  SmfProvider* getProvider()  ;
+
+
+public slots:
+
+	/**
+	 * Upload currently playing track to a playlist. Signal
+	 * playlistUpdated() can be checked for success value
+	 * @param plst The playlist to be added in
+	 * @param tracks The list of tracks to uploaded
+	 */
+  int addToPlaylist(SmfPlaylist plst, SmfTrackInfoList* tracks)  ;
+
+	/**
+	 * Upload currently playing playlist . Signal
+	 * playlistUpdated() can be checked for success value
+	 * @param plst The playlist to be uploaded
+	 */
+  int postCurrentPlayingPlaylist(SmfPlaylist plst)  ;
+
+
+signals:
+	/**
+	 * Notification of availability of list of playlists requested.
+	 * Note if number of list is large, then it can download the list page by page.
+	 * In that case this signal is emitted multiple times.
+	 * @param resultPage Page number info
+	 */
+	void playlistsListAvailable(SmfPlaylistList*, QString error, SmfResultPage resultPage);
+	/**
+	 * Signals remote updation of playlist with success value
+	 */
+    int playlistUpdated(bool success) ;
+private:
+  SmfProvider* m_baseProvider;
+};
+SMF_SERVICE_NAME(SmfPlaylistService, "org.symbian.smf.client.music.playlist\0.2")
+
+
+/**
+* provides service ("org.symbian.smf.client.music.events")
+*/
+class SMFCLIENT_EXPORT SmfMusicEvents : public QObject
+{
+  Q_OBJECT
+
+public:
+  /**
+   * Constructs SmfMusicEvents with base provider info
+   * Seeing as this is a plug-in implementation, these will realistically
+   *  be generated by SMF factory of some kind
+   */
+  SmfMusicEvents(SmfProvider* baseProvider = 0);
+  ~SmfMusicEvents();
+
+public:
+
+  /**
+   * Gets list of events in a particular location asynchronously.
+   * eventsAvailable() signal is emitted with SmfEventsList once its arrived.
+   * When the list is big user can specify the page number and per page item data.
+   * If not supplied by the user default values are used.
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+  void events(QtMobility::QContactGeolocation location,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ;
+
+  /**
+   * Gets list of venues of a particular location asynchronously.
+   * venuesAvailable() signal is emitted with SmfVenueList once its arrived.
+   * When the list is big user can specify the page number and per page item data.
+   * If not supplied by the user default values are used.
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+  void venues(QtMobility::QContactGeolocation location,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ; // basic list of venue objects
+
+  /**
+   * Gets list of events in a particular venue asynchronously.
+   * eventsAvailable() signal is emitted with SmfEventsList once its arrived.
+   * When the list is big user can specify the page number and per page item data.
+   * If not supplied by the user default values are used.
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+  void events(SmfVenue venue,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ; // basic list of events objects
+
+
+  //APIs to get/set base provider info (SmfProvider)
+
+  /**
+   * Gets the base provider info
+   */
+  SmfProvider* getProvider()  ;
+
+
+public slots:
+
+	/**
+	 * Updates events. Might not be supported by all service provider.
+	 * eventsUpdated() signal can be checked for success value.
+	 * @param SmfEventsList List of events to be posted
+	 */
+	 void postEvents(SmfEventsList events);
+
+signals:
+
+	/**
+	 * Notification of the success of request to post an event
+	 */
+	void eventsUpdated(bool success);
+
+	/**
+	 * Notification on arrival of event lists
+	 * Note if number of list is large, then it can download the list page by page.
+	 * In that case this signal is emitted multiple times.
+	 * @param resultPage Page number info
+	 */
+	void eventsAvailable(SmfEventsList* list, QString error, SmfResultPage resultPage);
+
+	/**
+	 *  Notification on arrival of venues lists
+	 * Note if number of list is large, then it can download the list page by page.
+	 * In that case this signal is emitted multiple times.
+	 * @param resultPage Page number info
+	 */
+	void venuesAvailable(SmfVenueList* list, QString error, SmfResultPage resultPage);
+private:
+  SmfProvider* m_baseProvider;
+};
+SMF_SERVICE_NAME(SmfMusicEvents, "org.symbian.smf.client.music.events\0.2")
+
+
+/**
+* provides service ("org.symbian.smf.client.music.lyrics")
+*/
+class SMFCLIENT_EXPORT SmfLyricsService : public QObject
+{
+  Q_OBJECT
+
+public:
+  /**
+   * Constructs SmfLyricsService with base provider info.
+   * Seeing as this is a plug-in implementation, these will realistically
+   * be generated by SMF factory of some kind
+   */
+
+  SmfLyricsService(SmfProvider* baseProvider = 0);
+  ~SmfLyricsService();
+
+public:
+
+  /**
+   * Get the lyrics lists asynchrnously, it fetches texts without time info.
+   * lyricsAvailable() notification comes SmfLyricsList with when the data is available
+   * @param track Track for which lyrics needs to be fetched.
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+  void lyrics(SmfTrackInfo track,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ;
+
+  /**
+   * Get the lyrics lists asynchrnously, it fetches texts with time info.
+   * Subtitle search filter can be applied
+   * subtitleAvailable() notification comes SmfSubtitleList with when the data is available
+   * @param track Track for which subtitle needs to be fetched.
+   * @param filter Subtitle search filter
+   * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+   * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE
+   */
+  void subtitles(SmfTrackInfo track, SmfSubtitleSearchFilter filter,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE)  ; // texts with time information
+  //APIs to get/set base provider info (SmfProvider)
+
+  /**
+   * Gets the base provider info
+   */
+  SmfProvider* getProvider()  ;
+
+
+public slots:
+
+
+signals:
+
+	/**
+	 * Notification on arrival of lyrics
+	 * Note if the list is large, then it can download the list page by page.
+	 * In that case this signal is emitted multiple times.
+	 * @param resultPage Page number info
+	 */
+	void lyricsAvailable(SmfLyricsList* list, QString error, SmfResultPage resultPage);
+
+	/**
+	 * Notification on arrival of subtitle based on filter.
+	 * Note if the list is large, then it can download the list page by page.
+	 * In that case this signal is emitted multiple times.
+	 * @param resultPage Page number info
+	 */
+	void subtitleAvailable(SmfSubtitleList* list, QString error, SmfResultPage resultPage);
+private:
+  SmfProvider* m_baseProvider;
+};
+SMF_SERVICE_NAME(SmfLyricsService, "org.symbian.smf.client.music.lyrics\0.2")
+
+#endif // SMFMUSIC_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/smfclient/smfpostprovider.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,201 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The SmfEvent class represents an event
+ *
+ */
+#ifndef SMFPOSTPROVIDER_H
+#define SMFPOSTPROVIDER_H
+
+#include <QObject>
+#include <qmobilityglobal.h>
+#include <qgeopositioninfo.h>
+#include <QTextDocument>
+
+#include "smfglobal.h"
+#include "smfprovider.h"
+#include "smfcontact.h"
+#include "smfplace.h"
+
+class SmfProvider; //base-class for service provider
+class SmfContact; //class for Contact in a social network
+
+
+
+/**
+ * class for information (text, image and url) contained in post in social network
+ * This could be changed to contain html data
+ * 
+ * For those service provider which supports only string format, @see supportedFormats()
+ */
+class  SmfPost : public QTextDocument
+	{
+	Q_OBJECT
+	
+public:
+	SmfPost ( QObject * parent = 0 );
+	SmfPost ( const QString & text, QObject * parent = 0 );
+	
+private:
+	QString*	id;
+	SmfProvider* provider;
+	};
+
+/**
+ *  Presence info of the user
+ */
+enum SmfAppearenceInfo
+	{
+	ENotSupported,
+	EOnline,
+	EOffline,
+	EBusy,
+	EDoNotDisturb,
+	EAppearOffline,
+	EOther
+	};
+
+//Post lists
+typedef QList<SmfPost> SmfPostList;
+
+/**
+ * @ingroup smf_client_group 
+ * Interface to post scrap/tweet like info.
+ * Note that branding information for the particular service implementation
+ * is available from getProvider() API. See also:
+ * SmfProvider::serviceName(), SmfProvider::serviceIcon(), SmfProvider::description()
+ *
+ * Interface name for SmfPostProvider is org.symbian.smf.client.contact.posts
+ */
+class SMFCLIENT_EXPORT SmfPostProvider : public QObject
+	{
+	Q_OBJECT
+
+public:
+	/**
+	 * Constructs SmfPostProvider.
+	 * @param baseProvider The base provider info
+	 * Seeing as this is a plug-in implementation, these will realistically
+	 * be generated by SMF factory of some kind
+	 */
+	SmfPostProvider(SmfProvider* baseProvider);
+	~SmfPostProvider();
+
+
+public:
+	/**
+	 * returns maximum no of chars (unicode) that service provider can post without truncation
+	 * negative value means no limit
+	 */
+	qint32 maxCharsInPost() const;
+	/**
+	 * returns maximum no of items that can be returned in a single query to getPosts
+	 * negative value means feature not supported.
+	 */
+	qint32 maxItems() const;
+
+	/**
+	 * returns all the formatting of posts that this service provider supports.
+	 * May return 0 items to mean only QString is supported.
+	 */
+	QVector<QTextFormat> supportedFormats () const;
+	
+	/**
+	 * returns whether this SP supports Appearence @see SmfAppearenceInfo
+	 */
+	bool supportsAppearence () const;
+
+public slots:
+	/**
+	 * Gets the posts asynchronously. The signal postsAvailable()with SmfPostList is emitted
+	 * once the post lists are available
+	 * @param user user's contact in this SP, omit for self contact
+	 * @param pageNum Page number to download, SMF_FIRST_PAGE denotes fresh query.
+     * @param perPage Item per page, default is SMF_ITEMS_PER_PAGE 
+	 * @see postsAvailable()
+	 */
+	void posts(SmfContact* user = 0,int pageNum=SMF_FIRST_PAGE,int perPage=SMF_ITEMS_PER_PAGE);
+	
+	/**
+	 * Updates a post to own area, the success of the post can be checked with signal
+	 * updatePostFinished() signal
+	 * @param postData data to be posted
+	 * @param location location data
+	 */
+	void post(SmfPost& postData,SmfPlace& location) ; 
+	/**
+	 * Updates the last post to own area with new data, the success of the post can be checked with signal
+	 * updatePostFinished() signal
+	 * @param postData edited/new data to be posted
+	 * @param location location data
+	 */
+	void updatePost(SmfPost& postData); 
+	
+	/**
+	 * Updates a post to a particular Smf contact. the success of the post can be checked with signal
+	 * updatePostFinished() signal.
+	 * @param postData data to be posted
+	 * @param contact contact to which the post is to be directed
+	 * @param location location data
+	 */
+	void postDirected(SmfPost& postData,SmfContact& contact,SmfPlace* location=0);
+	
+	/**
+	 * Posts appearance info of the user.e.g. appear offline, busy, do-not-disturb
+	 * @param appearence user appearance
+	 * @see SmfPresenceInfo
+	 * @return False on Failure/Not supported 
+	 */
+	bool postAppearence(SmfAppearenceInfo appearence); 
+	/**
+	 * Share /a contact's post to user's friends and followers (e.g. retweet in twitter, share on facebook)
+	 * emits updatePostFinished() signal when done.
+	 * @param postData data to be posted
+	 * @param contact contact to which the post belonged
+	 * @param bool whether user changed items within the post
+	 */
+	void sharePost(SmfPost& postData,SmfContact& contact,bool edited);
+	
+	//APIs to get/set base provider info (SmfProvider)
+	
+	/**
+	 * Gets the base provider info
+	 */
+	SmfProvider* getProvider() const;
+	
+signals:
+	
+	/**
+	 * Emitted when a request to  getPosts() is finished
+	 * Note if number of posts is large, then it can download the list page by page
+	 * In that case this signal is emitted multiple times.
+	 * @param list list of posts
+	 * @param error error string
+	 * @param resultPage Page number info
+	 */
+	void postsAvailable(SmfPostList* list, QString error, SmfResultPage resultPage);
+	
+	/**
+	 * Emitted when update post is finished.
+	 * @param success the success of the update
+	 */
+	void postFinished(bool success);
+	
+	private:
+	SmfProvider* m_baseProvider;
+	};
+
+SMF_SERVICE_NAME(SmfPostProvider, "org.symbian.smf.client.contact.posts\0.2")
+#endif // SMFPOSTPROVIDER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/smfclient/smfprovider.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,91 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The SmfEvent class represents an event
+ *
+ */
+
+#ifndef SMFPROVIDER_H
+#define SMFPROVIDER_H
+
+#include <QObject>
+#include <QImage>
+#include <QUrl>
+
+#include "../common/SmfClientGlobal.h"
+/**
+ * @ingroup smf_client_group 
+ * Interface for a base service provider. Other service provider classes contains 
+ * implementation of this base class so that each has access to service provider 
+ * information.
+ * All of the functionality described here should be implemented by a service
+ * specific plug-in object.
+ */
+class SMFCLIENT_EXPORT SmfProvider : public QObject
+{
+  Q_OBJECT
+
+public:
+  /**
+   *  Seeing as this is a plug-in implementation, these will realistically be generated by SMF factory of some kind
+   */
+   
+  SmfProvider(QObject* parent = 0);
+  ~SmfProvider();
+
+public:
+  /**
+   * Localizable name of the service 
+   * @return service name
+   */
+  QString& serviceName() const; 
+  
+  /**
+   * Logo of the service
+   * @return logo image of the service
+   */
+  QImage& serviceIcon() const; 
+  
+  /**
+   * Readable service description
+   * @return service description
+   */
+  QString description() const; 
+  
+  /*
+   * Website of the service
+   */
+  QUrl serviceUrl() const;
+  
+  /**
+   * URL of the application providing this service
+   */
+  QUrl applicationUrl() const; //
+  
+  /**
+   * service types - list of interfaces that this provider support
+   */
+  QList<QString> serviceTypes() const;
+};
+/**
+* Externalization
+*/
+QDataStream &operator<<(QDataStream &, const SmfProvider&);
+/**
+ * Internalization
+ */
+QDataStream &operator>>(QDataStream &, SmfProvider&);
+
+#endif // SMFPROVIDER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/smfplugins/base/smfpluginbase.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,106 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The SmfPluginBase class is the base class for all plugins.
+ *
+ */
+
+#ifndef SMFPLUGINBASE_H_
+#define SMFPLUGINBASE_H_
+
+#include <smfproviderbase.h>
+#include <QNetworkReply>
+#include <smfglobal.h>
+
+/**
+ * @ingroup smf_plugin_group
+ * The SmfPluginBase class is the base class for all plugins 
+ */
+class SmfPluginBase : public QObject
+	{
+	Q_OBJECT
+
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 */
+	SmfPluginBase( QObject* aParent = 0 );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfPluginBase( );
+
+	/**
+	 * Method to get the provider information
+	 * @return Instance of SmfProviderBase
+	 */
+	virtual SmfProviderBase* getProviderInfo( ) = 0;
+	
+	/**
+	 * Method to get the result for a network request.
+	 * @param aTransportResult The result of transport operation
+	 * @param aReply The QNetworkReply instance for the request
+	 * @param aResult [out] An output parameter to the plugin manager.If the 
+	 * return value is SmfSendRequestAgain, QVariant will be of type 
+	 * SmfPluginRequestData.
+	 * 
+	 * For SmfContactFetcherPlugin: If last operation was friends() or followers() 
+	 * or search() or searchInGroup() or searchNear(), aResult will be of type 
+	 * QList<SmfContact>. If last operation was groups(), aResult will be of 
+	 * type QList<SmfGroup>
+	 * For SmfPostProviderPlugin: If last operation was retrieve(), aResult will be 
+	 * of type QList<SmfPost>. If last operation was post() or updatePost() or 
+	 * postDirected() or commentOnAPost() or postAppearence() or sharePost(), 
+	 * aResult will be of type bool
+	 * For SmfLyricsServicePlugin: If last operation was lyrics(), aResult will 
+	 * be of type QList<SmfLyrics>. If last operation was subtitles(), aResult will 
+	 * be of type QList<SmfSubtitle>.
+	 * For SmfMusicEventsPlugin: If last operation was events(), aResult will 
+	 * be of type QList<SmfEvent>. If last operation was venues(), aResult 
+	 * will be of type QList<SmfPlace>. If last operation was postEvents(), 
+	 * aResult will be of type bool
+	 * For SmfMusicSearchPlugin: If last operation was recommendations() or 
+	 * tracks() or trackInfo(), aResult will be of type QList<SmfTrackInfo>. 
+	 * If last operation was stores(), aResult will be of type 
+	 * QList<SmfProvider>. If last operation was postCurrentPlaying(), 
+	 * aResult will be of type bool.
+	 * For SmfMusicServicePlugin: If last operation was userInfo(), aResult 
+	 * will be of type SmfMusicProfile. If last operation was searchUser(), 
+	 * aResult will be of type QList<SmfMusicProfile>.
+	 * For SmfPlaylistServicePlugin: If last operation was playlists() or 
+	 * playlistsOf(), aResult will be of type QList<SmfPlaylist>. If last 
+	 * operation was addToPlaylist() or postCurrentPlayingPlaylist(), 
+	 * aResult will be of type bool.
+	 * For SmfGalleryPlugin: If last operation was pictures(), aResult will 
+	 * be of type QList<SmfPicture>. If last operation was description(), 
+	 * aResult will be of type QString. If last operation was upload() or 
+	 * postComment(), aResult will be of type bool.
+	 * 
+	 * @param aRetType [out] SmfPluginRetType
+	 * @param aPageResult [out] The SmfResultPage structure variable
+	 */
+	virtual SmfPluginError responseAvailable( 
+			const SmfTransportResult &aTransportResult, 
+			QNetworkReply *aReply, 
+			QVariant* aResult, 
+			SmfPluginRetType &aRetType,
+			SmfResultPage &aPageResult ) = 0;
+	
+	};
+
+
+#endif /* SMFPLUGINBASE_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/smfplugins/base/smfpluginutil.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,128 @@
+/**
+ * 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
+ *
+ * Description:
+ * The Plugin util class provides the information required for the
+ * plugins from Smf framework
+ *
+ */
+
+#ifndef SMFPLUGINUTIL_H_
+#define SMFPLUGINUTIL_H_
+
+#include <QObject.h>
+#include <QNetworkAccessManager>
+
+/**
+ * see http://qjson.sourceforge.net/usage.html for more details
+ */
+using namespace QJson;
+class Parser;
+
+enum SmfSignatureMethod
+	{
+	HMAC_SHA1,
+	RSA_SHA1,
+	PLAINTEXT
+	};
+
+enum SmfParsingMode
+	{
+	ParseForRequestContent, //Inline query format (foo=bar&bar=baz&baz=foo ...), suitable for POST requests.
+	ParseForInlineQuery, // Same as ParseForRequestContent, but prepends the string with a question mark -
+						// suitable for GET requests (appending parameters to the request URL)
+	ParseForHeaderArguments // HTTP request header format (parameters to be put inside a request header).
+	};
+
+/**
+ * The Plugin util class provides the information required for the
+ * plugins from Smf framework
+ */
+class SmfPluginUtil : public QObject
+	{
+	Q_OBJECT
+
+public:
+	/**
+	 * Method to get the instance of SmfPluginUtil class
+	 * @param aParser The JSON parser utility object instance
+	 * @return The instance of SmfPluginUtil class
+	 */
+	static SmfPluginUtil* getInstance ( Parser *aParser );
+
+	/**
+	 * Destructor
+	 */
+	~SmfPluginUtil ( );
+
+	/**
+	 * Method called by plugins to get the handle to QJson library
+	 * @param aHandle [out] The QJson handle
+	 */
+	Parser* getJsonHandle( void );
+
+	/**
+	 * Method called by plugins to get the OAuth Keys. The PM sends the
+	 * keys only if the pluginID is that of a currently loaded plugin
+	 * @param aKeys [out] The OAuth keys
+	 * @param aPluginID The ID of the plugin that requests for
+	 * the OAuth keys
+	 */
+	void getAuthKeys( QMap<QString, QString> &aKeys, QString aPluginID );
+
+	/**
+	 * Method called by plugins to get the Nonce value
+	 * @param aStr [out] The Nonce value
+	 */
+	void getNonce( QString &aStr );
+
+	/**
+	 * Method called by plugins to generate a parameters string required to
+	 * access Protected Resources using OAuth authorization.
+	 * @param aRequestUrl The request URL
+	 * @param aOperation The type of http operation
+	 * @param aToken The access token
+	 * @param aTokenSecret The token secret
+	 * @param aSignatureMethod The signature method to be used
+	 * @param aParams A map of parameters to its values
+	 * @param aMode The mode of creation of the request
+	 * @return The cretd parameter string
+	 */
+	QByteArray createParameterString( const QString &aRequestUrl,
+			QNetworkAccessManager::Operation aOperation,
+			const QByteArray &aToken,
+			const QByteArray &aTokenSecret,
+			const SmfSignatureMethod aSignatureMethod,
+			const QMultiMap<QByteArray, QByteArray> &aParams,
+			const SmfParsingMode aMode);
+
+private:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 */
+	SmfPluginUtil ( Parser *aParser );
+
+
+private:
+	/**
+	 * The single instance of SmfPluginUtil
+	 */
+	static SmfPluginUtil* m_myInstance;
+
+	Parser *m_jsonParser;
+
+	};
+
+#endif /* SMFPLUGINUTIL_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/smfplugins/base/smfproviderbase.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,162 @@
+/**
+ * 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
+ * 
+ * Description:
+ * The Provider Base class is the class that has to be contained as a member 
+ * in all Plug-in Interfaces.
+ *
+ */
+
+#ifndef SMFPROVIDERBASE_H_
+#define SMFPROVIDERBASE_H_
+
+#include <QImage>
+#include <QUrl>
+#include <QBuffer>
+#include <smfglobal.h>
+#include <qdatastream.h>
+#include <QSharedData>
+
+class SmfProviderBasePrivate;
+
+/**
+ * @ingroup smf_plugin_group
+ * The Provider Base class is the class that has to be contained as a member 
+ * in all Plug-in Interfaces.
+ * 
+ * All of plug-ins should contain this class as a member and should also 
+ * contain a public method to get instance of this class. 
+ */
+class SmfProviderBase : public QObject
+	{
+	Q_OBJECT
+
+public:
+	/**
+	 * Constructor with default argument
+	 * @param aParent The parent object
+	 */
+	SmfProviderBase( QObject* aParent = 0 );
+	
+	/**
+	 * Copy Constructor
+	 * @param aOther The reference object
+	 */
+	SmfProviderBase( const SmfProviderBase &aOther );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfProviderBase( );
+
+	/**
+	 * Method to get the Localisable name of the service.
+	 * @return The Localisable name of the service.
+	 */
+	QString serviceName( ) const;
+	
+	/**
+	 * Method to get the Logo of the service
+	 * @return The Logo of the service
+	 */
+	QImage serviceIcon( ) const;
+	
+	/**
+	 * Method to get the Readable service description
+	 * @return The Readable service description
+	 */
+	QString description( ) const;
+	
+	/**
+	 * Method to get the Website of the service
+	 * @return The Website of the service
+	 */
+	QUrl serviceUrl( ) const;
+	
+	/**
+	 * Method to get the URL of the Application providing this service
+	 * @return The URL of the Application providing this service
+	 */
+	QUrl applicationUrl( ) const;
+	
+	/**
+	 * Method to get the Icon of the application
+	 * @return The Icon of the application
+	 */
+	QImage applicationIcon( ) const;
+	
+	/**
+	 * Method to get the Plugin specific ID
+	 * @return The Plugin specific ID
+	 */
+	QString pluginId( ) const;
+	
+	/**
+	 * Method to get the ID of the authentication application 
+	 * for this service
+	 * @param aProgram The authentication application name
+	 * @param aArguments List of arguments required for authentication app
+	 * @param aMode Strting mode for authentication application
+	 * @return The ID of the authentication application 
+	 */
+	QString authenticationApp( QString &aProgram, QStringList & aArguments, 
+			QIODevice::OpenModeFlag aMode = QIODevice::ReadWrite ) const;
+	
+	/**
+	 * Method to get the unique registration ID provided by the 
+	 * Smf for authorised plugins
+	 * @return The unique registration ID/token provided by the Smf for 
+	 * authorised plugins
+	 */
+	QString smfRegistrationId( ) const;
+	
+	/**
+	 * Method to get the data usage of each plugin
+	 * @return The data usage structure
+	 */
+	SmfPluginDataUsage getDataUsage( ) const;
+	
+private:
+	QSharedDataPointer<SmfProviderBasePrivate> d;
+
+	friend QDataStream &operator<<( QDataStream &aDataStream, 
+			const SmfProviderBase &aProviderBase );
+
+	friend QDataStream &operator>>( QDataStream &aDataStream, 
+			SmfProviderBase &aProviderBase );
+	
+	};
+
+
+/**
+ * Method for Externalization. Writes the SmfProviderBase object to 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be written
+ * @param aProviderBase The SmfProviderBase object to be externalized
+ * @return reference to the written stream
+ */
+QDataStream &operator<<( QDataStream &aDataStream, 
+		const SmfProviderBase &aProviderBase );
+
+/**
+ * Method for Internalization. Reads a SmfProviderBase object from 
+ * the stream and returns a reference to the stream.
+ * @param aDataStream Stream to be read
+ * @param aProviderBase The SmfProviderBase object to be internalized
+ * @return reference to the stream
+ */
+QDataStream &operator>>( QDataStream &aDataStream, 
+		SmfProviderBase &aProviderBase);
+
+#endif /* SMFPROVIDERBASE_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/smfplugins/base/smfproviderbase_p.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,82 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Private class implemented for implicit sharing of SmfProviderBase class
+ *
+ */
+
+#ifndef SMFPROVIDERBASE_P_H_
+#define SMFPROVIDERBASE_P_H_
+
+#include <QImage>
+#include <QUrl>
+#include <QBuffer>
+#include <smfglobal.h>
+#include <QSharedData>
+
+
+class SmfProviderBasePrivate : public QSharedData
+{
+public:
+	/**
+	 * Constructor
+	 */
+	SmfProviderBasePrivate( ) { 
+		m_serviceName.clear(); 
+		m_description.clear();
+		m_serviceUrl.clear();
+		m_applicationUrl.clear();
+		m_pluginId.clear();
+		m_authenticationAppId = 0;
+		m_registrationId.clear();
+	}
+	
+	/**
+	 * Copy Consturctor
+	 * @param aOther The reference object to be copy constructed
+	 */
+	SmfProviderBasePrivate( const SmfProviderBasePrivate &aOther ) : 
+		QSharedData ( aOther ), 
+		m_serviceName ( aOther.m_serviceName ),
+		m_serviceIcon ( aOther.m_serviceIcon ),
+		m_description ( aOther.m_description ),
+		m_serviceUrl ( aOther.m_serviceUrl ),
+		m_applicationUrl ( aOther.m_applicationUrl ),
+		m_applicationIcon ( aOther.m_applicationIcon ),
+		m_pluginId ( aOther.m_pluginId ),
+		m_authenticationAppId ( aOther.m_authenticationAppId ),
+		m_registrationId ( aOther.m_registrationId ), 
+		m_usage ( aOther.m_usage )	{ }
+	
+	/**
+	 * Destructor
+	 */
+	~SmfProviderBasePrivate( );
+  
+	QString m_serviceName;	// the Localisable name of the service
+	QImage m_serviceIcon;	// the Logo of the service
+	QString m_description;	// the Readable service description
+	QUrl m_serviceUrl;		// the Website of the service
+	QUrl m_applicationUrl; 	// URL of the Application providing this service
+	QImage m_applicationIcon;	//Icon of the application
+	QString m_pluginId;		// The Plugin specific ID
+	QString m_authenticationAppId; // ID of the authentication application for this service
+	QString m_registrationId; 	// unique registration ID provided by the 
+							// Smf for authorised plugins
+	SmfPluginDataUsage m_usage;	//data usage of each plugin
+	
+};
+
+#endif /* SMFPROVIDERBASE_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/smfplugins/smfcontacts/smfcontactfetcherplugin.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,138 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Interface specification for fetching contacts
+ *
+ */
+
+
+#ifndef SMFCONTACTFETCHERPLUGIN_H_
+#define SMFCONTACTFETCHERPLUGIN_H_
+
+#include <smfpluginbase.h>
+#include <smfcontact.h>
+#include <smfgroup.h>
+#include <smfplace.h>
+
+// Forward declaration
+class SmfPluginManagerUtil;
+
+/**
+ * @ingroup smf_plugin_group
+ * Interface specification for fetching contacts. This class provides 
+ * basic functionality to allow applications to obtain list of
+ * friends, followers, groups of a user in a social networking service.
+ *
+ * All of the functionality described here should be implemented by a service
+ * specific plug-in.
+ */
+class SmfContactFetcherPlugin : 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
+	 */
+	SmfContactFetcherPlugin( SmfPluginManagerUtil* aUtil );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfContactFetcherPlugin( );
+	
+	/**
+	 * Method to get the list of friends
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError friends( SmfPluginRequestData &aRequest,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	/**
+	 * Method to get the list of followers
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError followers( SmfPluginRequestData &aRequest,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	/**
+	 * Method to search for a contact
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aContact contact to be searched
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError search( SmfPluginRequestData &aRequest,
+			const SmfContact &aContact,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	/**
+	 * Method to search for contacts (friends) who are near the user.
+	 * Proximity defines accuracy level
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aLocation The location search criteria
+	 * @param aProximity location search boundary
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError searchNear( SmfPluginRequestData &aRequest,
+			const SmfPlace &aLocation,
+			const SmfLocationSearchBoundary &aProximity,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	/**
+	 * Method to get the list of groups
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError groups( SmfPluginRequestData &aRequest,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	/**
+	 * Method to search for a contact in a group
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aGroup the group in which to search
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError searchInGroup( SmfPluginRequestData &aRequest,
+			const SmfGroup &aGroup,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	};
+
+Q_DECLARE_INTERFACE( SmfContactFetcherPlugin, "org.symbian.smf.plugin.contact.fetcher/v1.0" );
+
+#endif /* SMFCONTACTFETCHERPLUGIN_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 <smfpluginbase.h>
+#include <smfcontact.h>
+#include <smfpost.h>
+#include <smfplace.h>
+
+// 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;
+
+	/**
+	 * <Method that returns all the formatting of posts that this 
+	 * service provider supports. May return 0 items to mean 
+	 * only QString is supported.
+	 * @return Supported formats of posts
+	 */
+	virtual QVector<QTextFormat> 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_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/smfplugins/smfmusic/smflyricsserviceplugin.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,90 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Interface specification for music track lyrics
+ *
+ */
+
+
+#ifndef SMFLYRICSSERVICEPLUGIN_H_
+#define SMFLYRICSSERVICEPLUGIN_H_
+
+#include <smfpluginbase.h>
+#include <smftrackinfo.h>
+#include <QString>
+#include <smfsubtitle.h>
+#include <smflyrics.h>
+
+// Forward declaration
+class SmfPluginManagerUtil;
+
+/**
+ * @ingroup smf_plugin_group
+ * Interface specification for music track lyrics
+ *
+ * All of the functionality described here should be implemented by a service
+ * specific plug-in.
+ */
+class SmfLyricsServicePlugin : 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
+	 */
+	SmfLyricsServicePlugin( SmfPluginManagerUtil* aUtil );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfLyricsServicePlugin( );
+	
+	/**
+	 * Method to get the lyrics
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aTrack The track whose lyrics need to be fetched
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError lyrics( SmfPluginRequestData &aRequest, 
+			const SmfTrackInfo &aTrack,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	/**
+	 * Method to get the subtitle
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aTrack The track whose subtitle need to be fetched
+	 * @param aFilter The subtitle search filter if any
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError subtitles( SmfPluginRequestData &aRequest, 
+			const SmfTrackInfo &aTrack,
+			const SmfSubtitleSearchFilter &aFilter = SubtitleAll,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	};
+
+Q_DECLARE_INTERFACE( SmfLyricsServicePlugin, "org.symbian.smf.plugin.music.lyrics/v1.0" );
+
+#endif /* SMFLYRICSSERVICEPLUGIN_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/smfplugins/smfmusic/smfmusiceventsplugin.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,114 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Interface specification for music events
+ * Note: This class has dependencies on QtMobility project
+ *
+ */
+
+
+#ifndef SMFMUSICEVENTSPLUGIN_H_
+#define SMFMUSICEVENTSPLUGIN_H_
+
+#include <smfpluginbase.h>
+#include <qtcontacts.h>
+#include <smfevent.h>
+#include <smfplace.h>
+
+// Forward declaration
+class SmfPluginManagerUtil;
+
+using namespace QtMobility;
+
+/**
+ * @ingroup smf_plugin_group
+ * Interface specification for music events
+ *
+ * All of the functionality described here should be implemented by a service
+ * specific plug-in.
+ * 
+ * Note: This class has dependencies on QtMobility project
+ */
+class SmfMusicEventsPlugin : 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 framework
+	 */
+	SmfMusicEventsPlugin( SmfPluginManagerUtil* aUtil );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfMusicEventsPlugin( );
+	
+	/**
+	 * Method to get the events based on location
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aLocation Location of the event
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError events( SmfPluginRequestData &aRequest,
+			const QtMobility::QContactGeolocation &aLocation,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	/**
+	 * Method to get the venues based on location
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aLocation Location of the venue
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError venues( SmfPluginRequestData &aRequest,
+			const QtMobility::QContactGeolocation &aLocation,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	/**
+	 * Method to get the events based on venues
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aVenue Venue of the event
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError events( SmfPluginRequestData &aRequest,
+			const SmfPlace &aVenue,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	/**
+	 * Method to post events
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aEventList The list of events to be posted
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError postEvents( SmfPluginRequestData &aRequest,
+			const QList<SmfEvent> &aEventList ) = 0;
+	
+	};
+
+Q_DECLARE_INTERFACE( SmfMusicEventsPlugin, "org.symbian.smf.plugin.music.events/v1.0" );
+
+#endif /* SMFMUSICEVENTSPLUGIN_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/smfplugins/smfmusic/smfmusicsearchplugin.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,128 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Interface specification for music search services
+ *
+ */
+
+
+#ifndef SMFMUSICSEARCHPLUGIN_H_
+#define SMFMUSICSEARCHPLUGIN_H_
+
+#include <smfpluginbase.h>
+#include <QList>
+#include <smfmusicfingerprint.h>
+#include <smftrackinfo.h>
+
+// Forward declaration
+class SmfPluginManagerUtil;
+
+/**
+ * @ingroup smf_plugin_group
+ * Interface specification for music search services. This class
+ * provides basic functionality to allow applications to search for 
+ * tracks, get recommented tracks etc
+ *
+ * All of the functionality described here should be implemented by a service
+ * specific plug-in.
+ */
+class SmfMusicSearchPlugin : 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
+	 */
+	SmfMusicSearchPlugin( SmfPluginManagerUtil *aUtil );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfMusicSearchPlugin( );
+	
+	/**
+	 * Method to get recommended tracks
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aTrack The track for which similar recommendations 
+	 * need to be fetched.
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError recommendations( SmfPluginRequestData &aRequest,
+			const SmfTrackInfo &aTrack,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	/**
+	 * Method to get similar tracks
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aTrack The track for which similar tracks 
+	 * need to be fetched.
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError tracks( SmfPluginRequestData &aRequest,
+			const SmfTrackInfo &aTrack,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	/**
+	 * Method to get tracks having a similar finger print
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aSignature The finger print to be searched for need to be 
+	 * fetched.
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError trackInfo( SmfPluginRequestData &aRequest,
+			const SmfMusicFingerPrint &aSignature,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	/**
+	 * Method to search information about where to buy this song from
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aTrack The track for which stores need to be searched
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError stores( SmfPluginRequestData &aRequest,
+			const SmfTrackInfo &aTrack,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	/**
+	 * Method to post the currently playing track
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aTrack The current playing track, that should be posted
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError postCurrentPlaying( 
+			SmfPluginRequestData &aRequest,
+			const SmfTrackInfo &aTrack ) = 0;
+	
+	};
+
+Q_DECLARE_INTERFACE( SmfMusicSearchPlugin, "org.symbian.smf.plugin.music.search/v1.0" );
+
+#endif /* SMFMUSICSEARCHPLUGIN_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/smfplugins/smfmusic/smfmusicserviceplugin.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,83 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Interface specification for music services
+ *
+ */
+
+
+#ifndef SMFMUSICSERVICEPLUGIN_H_
+#define SMFMUSICSERVICEPLUGIN_H_
+
+#include <smfpluginbase.h>
+#include <smfmusicprofile.h>
+#include <smfplace.h>
+
+// Forward declaration
+class SmfPluginManagerUtil;
+
+/**
+ * @ingroup smf_plugin_group
+ * Interface specification for music services. This class provides basic 
+ * functionality to allow application to search for a user or check for
+ * user information etc.
+ *
+ * All of the functionality described here should be implemented by a service
+ * specific plug-in.
+ */
+class SmfMusicServicePlugin : 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
+	 */
+	SmfMusicServicePlugin( SmfPluginManagerUtil *aUtil );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfMusicServicePlugin( );
+	
+	/**
+	 * Method to get self profile information
+	 * @param aRequest [out] The request data to be sent to network
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError userInfo( SmfPluginRequestData &aRequest ) = 0;
+	
+	/**
+	 * Method to search information about other service users for a 
+	 * particular place
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aPlace The place which is the search criteria
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError searchUser( SmfPluginRequestData &aRequest,
+			const SmfPlace &aPlace,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	};
+
+Q_DECLARE_INTERFACE( SmfMusicServicePlugin, "org.symbian.smf.plugin.music.service/v1.0" );
+
+#endif /* SMFMUSICSERVICEPLUGIN_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/smfplugins/smfmusic/smfplaylistserviceplugin.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,109 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Interface specification for playlists service
+ *
+ */
+
+
+#ifndef SMFPLAYLISTSERVICEPLUGIN_H_
+#define SMFPLAYLISTSERVICEPLUGIN_H_
+
+#include <smfpluginbase.h>
+#include <smfplaylist.h>
+#include <smfmusicprofile.h>
+#include <smftrackinfo.h>
+
+// Forward declaration
+class SmfPluginManagerUtil;
+
+/**
+ * @ingroup smf_plugin_group
+ * Interface specification for playlists service. This class provides 
+ * basic functionality to allow applications to get playlists of a user, 
+ * add some track to an existing playlist, post the current playing 
+ * playlists etc.
+ *
+ * All of the functionality described here should be implemented by a service
+ * specific plug-in.
+ */
+class SmfPlaylistServicePlugin : 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
+	 */
+	SmfPlaylistServicePlugin( SmfPluginManagerUtil *aUtil );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfPlaylistServicePlugin( );
+	
+	/**
+	 * Method to get the playlist
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError playlists( SmfPluginRequestData &aRequest,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	/**
+	 * Method to get the playlist of a particular user
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aUser The user whose playlists need to be fetched
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError playlistsOf( SmfPluginRequestData &aRequest,
+			const SmfMusicProfile &aUser,
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	/**
+	 * Method to add tracks to a playlist
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aPlaylist The playlist where tracks should be added
+	 * @param aTracks The tracks to be added to the playlist
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError addToPlaylist( SmfPluginRequestData &aRequest,
+			const SmfPlaylist &aPlaylist, 
+			const QList<SmfTrackInfo> &aTracks ) = 0;
+	
+	/**
+	 * Method to post the current playing playlist
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aPlaylist The current playing playlist which should be posted
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError postCurrentPlayingPlaylist(
+			SmfPluginRequestData &aRequest, 
+			const SmfPlaylist &aPlaylist ) = 0;
+	
+	};
+
+Q_DECLARE_INTERFACE( SmfPlaylistServicePlugin, "org.symbian.smf.plugin.music.playlist/v1.0" );
+
+#endif /* SMFPLAYLISTSERVICEPLUGIN_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/inc/smfplugins/smfpictures/smfgalleryplugin.h	Thu Apr 15 15:35:36 2010 +0530
@@ -0,0 +1,129 @@
+/**
+ * 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
+ * 
+ * Description:
+ * Interface specification for plugins that implement gallery related services
+ *
+ */
+
+#ifndef SMFGALLERYPLUGIN_H_
+#define SMFGALLERYPLUGIN_H_
+
+#include <smfpluginbase.h>
+#include </inc/common/smfpictures/smfpicture.h>
+#include </inc/common/smfcomment/smfcomment.h>
+
+// Forward declaration
+class SmfPluginManagerUtil;
+
+/**
+ * @ingroup smf_plugin_group
+ * Interface specification for plugins that implement gallery related services
+ * like getting pictures, their description, uploading, posting comments 
+ * on pictures etc
+ *
+ * All of the functionality described here should be implemented by a service
+ * specific plug-in.
+ *
+ * A sample call flow between SmfPluginMgr and  SmfGalleryPlugin is shown here
+ * 
+ * @msc
+   hscale = "2";  
+  SmfServer,SmfTransportMgr,SmfPluginMgr,SmfGalleryPlugin;
+  ...;
+  SmfPluginMgr=>SmfTransportMgr [ label = "connect(SIGNAL(finished()), SLOT(replyFinished()))" ] ;
+  ...;
+  SmfServer=> SmfPluginMgr[ label = "loadAndCheckPlugin()" ] ;
+  SmfPluginMgr=>SmfPluginMgr [ label = "SmfGalleryPlugin smfglpl= load()" ] ;
+  SmfPluginMgr=>SmfGalleryPlugin [ label = "QNetworkRequest  req = smfglpl.pictures()" ] ;
+  SmfPluginMgr=>SmfTransportMgr [ label = "nwmgr.get( req )" ] ;
+  ...;
+  SmfTransportMgr=>SmfPluginMgr [ label = "replyFinished( reply )" ] ;
+  SmfPluginMgr=>SmfGalleryPlugin [ label = "status = responseAvailable( reply, &data )" ] ;
+  SmfPluginMgr=>SmfServer [ label = "if(status ==complete) dataStream <<  data;" ] ;
+  @endmsc
+ * 
+ */
+class SmfGalleryPlugin : 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
+	 */
+	SmfGalleryPlugin( SmfPluginManagerUtil *aUtil );
+	
+	/**
+	 * Destructor
+	 */
+	~SmfGalleryPlugin( );
+	
+	/**
+	 * Method to get a list of pictures
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aPageNum The page to be extracted
+	 * @param aItemsPerPage Number of items per page
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError pictures( SmfPluginRequestData &aRequest, 
+			const int aPageNum = SMF_FIRST_PAGE, 
+			const int aItemsPerPage = SMF_ITEMS_PER_PAGE ) = 0;
+	
+	/**
+	 * Method to get a description
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aImage The image abot which the description is required
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError description( SmfPluginRequestData &aRequest,
+			const SmfPicture &aImage ) = 0;
+	
+	/**
+	 * Method to upload a picture
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aImage The image to be uploaded
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError upload( SmfPluginRequestData &aRequest,
+			const SmfPicture &aImage ) = 0;
+	
+	/**
+	 * Method to upload a list of pictures
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aImages The list of images to be uploaded
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError upload( SmfPluginRequestData &aRequest,
+			const QList<SmfPicture> &aImages ) = 0;
+	
+	/**
+	 * Method to post comment on a picture is available
+	 * @param aRequest [out] The request data to be sent to network
+	 * @param aImage The image on which comment is to be posted
+	 * @param aComment The comment to be posted
+	 * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+	 */
+	virtual SmfPluginError postComment( SmfPluginRequestData &aRequest,
+			const SmfPicture &aImage, 
+			const SmfComment &aComment ) = 0;
+		
+	};
+
+Q_DECLARE_INTERFACE( SmfGalleryPlugin, "org.symbian.smf.plugin.gallery/v1.0" );
+
+#endif /* SMFGALLERYPLUGIN_H_ */