--- a/example/clientapi/example_usage.cpp Tue Mar 02 16:24:32 2010 +0530
+++ b/example/clientapi/example_usage.cpp Thu Mar 25 14:44:08 2010 +0530
@@ -8,168 +8,185 @@
/** 1. Display a gallery on the screen for some remote service.
* assume m_view is some gallery view object in the application.*/
void MyApplication::displayGallery()
-{
- // Some common interface for finding implementations.
- QList<SmfGallery> galleries = Smf::GetServices("org.symbian.smf.gallery");
+ {
+ // Some common interface for finding implementations.
+ QList<SmfGallery> galleries = Smf::GetServices("org.symbian.smf.gallery\0.2");
- // We will use the first one now
- SmfGallery myGallery = galleries[0];
+ // We will use the first one now
+ SmfGallery myGallery = galleries[0];
+
+ // Adjust our view to show where these pictures came from
+ m_view.setIcon(myGallery.serviceIcon());
+ m_view.setProvder(myGallery.serviceName());
+ m_view.setDescription(myGallery.description());
- // Adjust our view to show where these pictures came from
- m_view.setIcon(myGallery.serviceIcon());
- m_view.setProvder(myGallery.serviceName());
- m_view.setDescription(myGallery.description());
+ /**
+ * Asynchrnous request to fetch the pictures.
+ * The picturesAvailable() signal is emitted
+ * with SmfPictureList once the pictures have arrived.
+ */
+ myGallery.pictures();
+ QObject::connect(myGallery,SIGNAL(picturesAvailable(SmfPictureList*, QString, int)),this,SLOT(showPicsSlot(SmfPictureList*, QString)));
+ }
+}
+void MyApplication::showPicsSlot(SmfPictureList* pics, QString err)
+ {
+ //check err string if there is any error
- QList<SmfPicture> pics = myGallery.pictures();
- foreach(SmfPicture pic, pics) {
- m_view.add(pic); // do something with the picture in this gallery
- }
-}
+ //if no error
+ foreach(SmfPicture* pic, pics) {
+ m_view.add(pic); // do something with the picture in this gallery
+ }
+ }
/** 2. Upload a picture captured by the user to some selection of galeries.*/
void MyApplication::uploadPicture(QImage picture, QList<SmfGallery> galleries)
-{
- // The list could be from a selection of galleries chosen by the user,
- // think multiple TweetDeck accounts?
- foreach(SmfGallery gallery, galleries) {
- gallery.upload(picture);
- }
-}
-
-
-/**
- * 3. This is an example of displaying the friends profile image in a view from one or more
- * service provider. Note that this service can be provided by any kind of service provider,
- * e.g. last.fm music service where users maintain profiles and friends.
- */
-void MyApplication::displayFriends()
-{
- // Some common interface for finding implementations.
- QList<SmfContactFetcher> contactFetcherList = Smf::GetServices("org.symbian.smf.contact.fetcher");
-
- //let us show list of friends from first one
- showlist(contactFetcherList [ 0 ]);
-
- //now from the second provider
- showlist(contactFetcherList [ 1 ]);
-
- //user now matches one contact from list 1 to another contact in list 2 -
- SmfRelationMgr mgr = Smf::GetRelationMgr();
- SmfRelationId id = mgr.create(contactFetcherList [ 0 ], selectedContact1);
- mgr.associate(id,contactFetcherList [ 1 ], selectedContact2);
-
- //now show user all the relations he has made so far
- QList<SmfRelationId> relations = mgr.getAll();
- foreach(SmfRelationId id, relations) {
- QList<SmfRelationItem> items = mgr.get(id);
- foreach(SmfRelationItem item,items) {
- SmfProvider provider* = item.getProvider();
- m_view.setIcon(provider.serviceIcon());
- m_view.setTitle(item.value("Name"));
+ {
+ /**
+ * When uploading is finished we can check the success of the uploading
+ */
+ QObject::connect(myGallery,SIGNAL(uploadFinished(bool)),this,SLOT(uploaded(bool)));
+ // The list could be from a selection of galleries chosen by the user,
+ // think multiple TweetDeck accounts?
+ foreach(SmfGallery gallery, galleries) {
+ gallery.upload(picture);
+ }
+ }
+void MyApplication::uploaded(bool success)
+ {
+ if(!success)
+ {
+ //error occured while uploading
}
}
-}
-
-void MyApplication::showlist(SmfContactFetcher fetcher)
-{
- //get users friend list
- QList<SmfContact> friendsList = fetcher.friends();
-
- // Adjust our view to show where these pictures came from
- //display service name description and the logo
- m_view.setIcon( myFetcher.serviceIcon() );
- m_view.setProvider( myFetcher.serviceName() );
- m_view.setDescription( myFetcher.description() );
-
- //now display the images
- foreach(SmfContact contact, friendsList) {
- QImage pic = contact.value("Avatar");
- m_view.setPicture(pic);
- m_view.setTitle(contact.value("Name"));
- }
-}
-/**
- * 4. This is an example of posting and reading user updates to social netowrking sites
- */
-void MyApplication::postUpdate()
-{
- // Some common interface for finding implementations.
- QList<SmfPostProvider> postServices = Smf::GetServices("org.symbian.smf.contact.posts");
-
- //let us use the first one
- SmfPostProvider myPostServer = postServices[ 0 ];
-
- //Adjust our view to show where these posts came from (e.g. tweets from twitter)
- //display service name description and the logo
- m_view.setIcon( myPostServer.serviceIcon() );
- m_view.setProvider( myPostServer.serviceName() );
- m_view.setDescription( myPostServer.description() );
-
- SmfPost reply = new SmfPost(sampleString,samplmage, sampleUrl);
- //post my udpate to be visible to all
- myPostServer.updatePost(reply);
-
- //get all posts to me in my profle (e.g. twits from all friends)
- QList <SmfPost> posts = postServices.getPosts();
-
- //read the first post
- SmfPost firstPost = posts.at(0);
- SmfContact currentContact = firstPost.contact();
-
- //reply only to the sender - can check availability this service before sending
- myPostServer.postDirected(currentContact,reply);
- //presentation layout to be decided
-
- //now display the latest post
- qSort(posts.begin(),posts.end(),caseCompareTimeMoreThan);
- m_view.setPostData(posts.at(0));
-
-}
/**
- * 5. This is an example of getting song recommendations from a social netowrking sites
- */
-void MyApplication::getMusic()
-{
- // Some common interface for finding implementations.
- QList<SmfMusicSearch> musicServices = Smf::GetServices("org.symbian.smf.music");
+ * 3. This is an example of displaying the friends profile image in a view from one or more
+ * service provider. Note that this service can be provided by any kind of service provider,
+ * e.g. last.fm music service where users maintain profiles and friends.
+ */
+void MyApplication::displayFriends()
+ {
+ // Some common interface for finding implementations.
+ QList<SmfContactFetcher> contactFetcherList = Smf::GetServices("org.symbian.smf.contact.fetcher\0.2");
+ //Request friend list,
+ //The friendsListAvailable() signal
+ //is emitted with SmfContactList once data is arrived.
+ QObject::Connect(contactFetcherList[0],SIGNAL(friendsListAvailable(SmfContactList*, QString, int)),
+ this,SLOT(showlist(SmfContactList*));
+ fetcher.friends();
+ }
+
+void MyApplication::showlist(SmfContactList* friendsList)
+ {
+
+ // Adjust our view to show where these pictures came from
+ //display service name description and the logo
+ m_view.setIcon( myFetcher.serviceIcon() );
+ m_view.setProvider( myFetcher.serviceName() );
+ m_view.setDescription( myFetcher.description() );
- //let us use the first one
- SmfMusicSearch mServer = musicServices.at(0);
+ //now display the images
+ foreach(SmfContact* contact, friendsList) {
+ QImage pic = contact.value("Avatar");
+ m_view.setPicture(pic);
+ m_view.setTitle(contact.value("Name"));
+ }
+ }
+/**
+ * 4. This is an example of posting and reading user updates to social netowrking sites
+ */
+void MyApplication::postUpdate()
+ {
+ // Some common interface for finding implementations.
+ QList<SmfPostProvider> postServices = Smf::GetServices("org.symbian.smf.contact.posts\0.2");
- //search songs similar to currently playing
- QList<SmfTrackInfo> songs = mServer.recommendations(currTrack);
+ //let us use the first one
+ SmfPostProvider myPostServer = postServices[ 0 ];
+
+ //Adjust our view to show where these posts came from (e.g. tweets from twitter)
+ //display service name description and the logo
+ m_view.setIcon( myPostServer.serviceIcon() );
+ m_view.setProvider( myPostServer.serviceName() );
+ m_view.setDescription( myPostServer.description() );
+
+ SmfPost reply = new SmfPost(sampleString,samplmage, sampleUrl);
+ //post my udpate to be visible to all, connect to updatePostFinished()
+ // signal of SmfPostProvider to track the success
+ myPostServer.updatePost(reply);
- //display to the user
- m_view.setIcon( mServer.serviceIcon() );
- m_view.setProvider( mServer.serviceName() );
- m_view.setDescription( mServer.description() );
- foreach(SmfTrackInfo track, songs) {
- m_view.add(track);
- }
+ //Asynchronously get all posts to me in my profle (e.g. twits from all friends)
+ //connect to postsAvailable to show the post
+ postServices.getPosts();
+
+ QObject::Connect(myPostServer,SIGNAL(postsAvailable(SmfPostList*, QString, int)),this,SLOT(showPosts(SmfPostList*, QString)));
+ }
+void MyApplication::showPosts(SmfPostList* posts, QString err)
+ {
+ //Show the first post
+ m_view.setPostData(posts->at(0));
+ }
+/**
+ * 5. This is an example of getting song recommendations from a social netowrking sites
+ */
+void MyApplication::getMusic()
+ {
+ // Some common interface for finding implementations.
+ QList<SmfMusicSearch> musicServices = Smf::GetServices("org.symbian.smf.music\0.2");
- //allow user to select a track and get purchase links
- QList<SmfProvider> stores = mServer.stores(selectedTrack);
+ //let us use the first one
+ SmfMusicSearch mServer = musicServices.at(0);
+ QObject::Connect(mServer,SIGNAL(trackSearchAvailable(SmfTrackInfoList*, QString,int)),this,SLOT(showTrackSearch(SmfTrackInfoList*)));
+ QObject::Connect(mServer,SIGNAL(storeSearchAvailable(SmfProviderList*, QString,int)),this,SLOT(showStoreSearch(SmfProviderList*)));
+ //search songs similar to currently playing,
+ //connect to trackSearchAvailable signal to get the result
+ mServer.recommendations(currTrack);
+ //display to the user
+ m_view.setIcon( mServer.serviceIcon() );
+ m_view.setProvider( mServer.serviceName() );
+ m_view.setDescription( mServer.description() );
-}
+
+ }
+void MyApplication::showTrackSearch(SmfTrackInfoList* songs)
+ {
+ foreach(SmfTrackInfo* track, songs){
+ m_view.add(track);
+ }
+ //allow user to select a track and get purchase links
+ //connect to showStoreSearch signal to display the stores for that track
+ mServer.stores(selectedTrack);
+ }
+void MyApplication::showStoreSearch(SmfProviderList* stores)
+ {
+ //show stores
+ }
void MyApplication::updateCurrentPlaying(QList<SmfMusicSearch> musicServices, SmfTrackInfo currTrack)
-{
- //after purchasing and downloading is over, user plays the track
- //now post the current platying track to all service providers
- foreach(SmfMusicSearch provider, musicServices) {
+ {
+ //after purchasing and downloading is over, user plays the track
+ //now post the current platying track to all service providers
+ //postFinished() signal of SmfMusicSearch can be tracked to check the success of the posts
+ foreach(SmfMusicSearch provider, musicServices) {
provider.postCurrentPlaying(currTrack);
}
- //postCurrentPlaying is also a slot funtion, may be application can use connect
-}
+ //postCurrentPlaying is also a slot funtion, may be application can use connect
+ }
void MyApplication::displayLyrics(SmfTrackInfo currTrack)
-{
+ {
// Some common interface for finding implementations.
- SmfLyricsService lyricsService = Smf::GetServices("org.symbian.smf.music.lyrics","lyricsfly.com");
+ SmfLyricsService lyricsService = Smf::GetServices("org.symbian.smf.music.lyrics\0.2","lyricsfly.com");
+ QObject::connect(lyricsService,SIGNAL(lyricsAvailable(SmfLyricsList*, QString, int)),this,SLOT(showLyrics(SmfLyricsList*));
- QList<SmfLyrics> list = lyricsService.lyrics(currTrack);
- //now display the latest edited lyrics
- qSort(list.begin(),list.end(),caseCompareTimeMoreThan);
- m_view.setLyricsData(list.at(0));
-}
+ //Request to get the lyrics
+ //lyricsAvailable() signal of SmfLyricsService is emitted when lyrics is available
+ lyricsService.lyrics(currTrack);
+
+ }
+void MyApplication::showLyrics(SmfLyricsList* list)
+ {
+ //now display the latest edited lyrics
+ qSort(list->begin(),list->end(),caseCompareTimeMoreThan);
+ m_view.setLyricsData(list->at(0));
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/common/SmfClientGlobal.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,33 @@
+/**
+* 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 SMFCLIENTDEFS_H_
+#define SMFCLIENTDEFS_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 /* SMFCLIENTDEFS_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/common/smfcontacts/smfcontact.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,147 @@
+/**************************************************************************************************
+* 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:
+* Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
+*
+* Contributors:
+* Manasij Roy
+* Description:
+* Interface spefication for profile of a contact in a social networking site
+*
+/*************************************************************************************************/
+
+#ifndef SMFPROFILE_H
+#define SMFPROFILE_H
+
+#include <QObject>
+
+//From Qt mobility project
+#include "qtcontacts.h"
+#include "../common/SmfClientGlobal.h"
+#include "smfprovider.h"
+/**
+ * Interface for a contact from a service provider. This class
+ * provides basic functionality to allow applications to obtain details of a
+ * contact (self or friends) in a social networking service.
+ *
+ * All of the functionality described here should be implemented by a service
+ * specific plug-in object.
+ * Note this class has dependencies on QtMobility project
+ */
+class SMFCLIENT_EXPORT SmfContact : public QObject
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Constructs SmfContact with base provider info
+ * Seeing as this is a plug-in implementation, these will realistically
+ * be generated by SMF factory of some kind
+ */
+ SmfContact(SmfProvider* baseProvider = 0);
+ ~SmfContact();
+
+
+ /**
+ * Returns the available sub fields for contacts.
+ * The following subtypes are available,-
+ * QString userIdInProvider;
+ * QtMobility::QContactAddress Adress;
+ * QtMobility::QContactAnniversary Anniversary;
+ * QtMobility::QContactAvatar Avatar;
+ * QtMobility::QContactBirthday Birthday;
+ * 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;
+ */
+ virtual QStringList subTypes() const;
+
+ //APIs to get base provider info (SmfProvider)
+
+ /**
+ * Gets the base provider info, note setting the provider is not permitted here
+ */
+ virtual SmfProvider* getProvider() = 0;
+
+public slots:
+
+/**
+ * Gets value of the sub field for any contact.
+ * @param subType sub field type
+ * @param info value of the sub field subType
+ * @see subTypes()
+ * The following subtypes are available,-
+ * QString userIdInProvider;
+ * QtMobility::QContactAddress Adress;
+ * QtMobility::QContactAnniversary Anniversary;
+ * QtMobility::QContactAvatar Avatar;
+ * QtMobility::QContactBirthday Birthday;
+ * 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;
+ */
+ virtual void value(const QString& subType,const QVariant& info); //for any contact
+
+ /**
+ * Sets the value of the sub field for self contact
+ * @param key sub field type
+ * @param value value to be set for sub field key
+ * @return success of the set
+ * @see subTypes()
+ */
+ virtual bool setValue( const QString & key, const QVariant & value );//for self contact only
+
+
+signals:
+/**
+ * Emitted when value of self contact changes.
+ * @param key the key which is changed
+ */
+ void detailsUpdated(const QString& key); //for setvalue on self contact
+
+private:
+ /**
+ * Conatact details
+ */
+ QVariantMap m_details;
+ QString m_caption;
+ /**
+ * Externalization
+ */
+};
+ /**
+ * Externalization
+ */
+ QDataStream &operator<<(QDataStream &, const SmfContact&);
+ /**
+ * Internalization
+ */
+QDataStream &operator>>(QDataStream &, SmfContact&);
+SMF_GETSERVICES(SmfContact, "org.symbian.smf.client.contact")
+#endif // SMFPROFILE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/common/smfcontacts/smfgroup.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,63 @@
+/**
+* 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:
+* Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
+*
+* Contributors:
+* Manasij Roy
+* Description:
+* Interface spefication for smf service provider
+*
+*/
+
+#ifndef SMFGROUP_H_
+#define SMFGROUP_H_
+
+#include "SmfClientGlobal.h"
+class SmfContact;
+//List of SmfContacts
+typedef QList<SmfContact> SmfContactList;
+/**
+ * class for a group in social network
+ */
+class SMFCLIENT_EXPORT SmfGroup : public QObject
+ {
+ Q_OBJECT
+public:
+
+ /**
+ * Constructs a group with list of contacts
+ */
+ SmfGroup(SmfContactList* list=0);
+ /**
+ *Returns list of members in the group
+ *@return list of members
+ */
+ SmfContactList* members()
+ {
+ return m_members;
+ }
+
+ /**
+ * Sets the group members
+ * @param members list of members to be added to the group
+ */
+ void setMembers(SmfContactList& members);
+private:
+ SmfContactList* m_members;
+ };
+/**
+ * Externalization
+ */
+QDataStream &operator<<(QDataStream &, const SmfGroup &);
+/**
+ * Internalization
+ */
+QDataStream &operator>>(QDataStream &, SmfGroup &);
+#endif /* SMFGROUP_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/common/smfcontacts/smfpost.h Thu Mar 25 14:44:08 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 "{License}"
+* which accompanies this distribution, and is available
+* at the URL "{LicenseUrl}".
+*
+* Initial Contributors:
+* Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
+*
+* Contributors:
+* Manasij Roy
+* Description:
+* Interface spefication for sfm service provider
+*
+*/
+
+#ifndef SMFPOST_H_
+#define SMFPOST_H_
+#include "SmfClientGlobal.h"
+/**
+ * class for post, later may be we need to add media.
+ * Post consists of a title and description
+ */
+
+class SMFCLIENT_EXPORT SmfPost : public QObject
+ {
+ Q_OBJECT
+public:
+ /**
+ * Constructs a post
+ */
+ SmfPost(QObject* provider=0);
+
+ /**
+ * Constructs a post with text,image and url
+ */
+ SmfPost(QString text,QPixmap image, QString url);
+ ~SmfPost();
+
+ /**
+ * Gets post title
+ */
+ QString* getTitle();
+
+ /**
+ * Gets post text
+ */
+ QString* getDescription();
+
+ /**
+ * Sets post title
+ */
+ void setTitle(QString* title);
+
+ /**
+ * Sets post text
+ */
+ void setDescription(QString* desc);
+
+private:
+ QString m_text;
+ QPixmap m_image;
+ QString m_url;
+ };
+/**
+* Externalization
+*/
+QDataStream &operator<<(QDataStream &, const SmfPost&);
+/**
+ * Internalization
+ */
+QDataStream &operator>>(QDataStream &, SmfPost&);
+#endif /* SMFPOST_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/common/smfmusic/smfevent.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,129 @@
+/**
+ * @file smfevent.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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section DESCRIPTION
+ *
+ * The event class represents a music event
+ */
+
+#ifndef SMFEVENT_H_
+#define SMFEVENT_H_
+
+#include <smfvenue.h>
+#include <QStringList>
+#include <qdatastream.h>
+#include "SmfClientGlobal.h"
+/**
+ * The event class represents a music event
+ */
+class SMFCLIENT_EXPORT SmfEvent : public QObject
+ {
+ Q_OBJECT
+public:
+ /**
+ * Constructor with default argument
+ * @param aParent The parent object
+ */
+ SmfEvent( QObject *aParent = 0 );
+
+ /**
+ * Destructor
+ */
+ ~SmfEvent( );
+
+ /**
+ * Method to get the event name
+ * @param aName The event name
+ */
+ void getTitle( QString &aName );
+
+ /**
+ * Method to get the event date and time
+ */
+ void getEventDateTime( QDateTime &aDateTime );
+
+ /**
+ * Method to get the artist names
+ * @param aArtist The list of artists in the event
+ */
+ void getArtists( QStringList &aArtist );
+
+ /**
+ * Method to get the venue of the event
+ * @param aVenue The venue of the event
+ */
+ void getVenue( SmfVenue &aVenue );
+
+ /**
+ * Method to get the URL for getting tickets for the event
+ * @param aUrl The Url for getting ticket for the event
+ */
+ void getTicketUrl( QUrl &aUrl );
+
+ /**
+ * Method to get the id of the event
+ * @param aId The ID value
+ */
+ void getId( QString &aId );
+
+ /**
+ * 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 artist names
+ * @param aArtist The new list of artists in the event
+ */
+ void setArtists( const QStringList& aArtist );
+
+ /**
+ * Method to set the venue name
+ * @param aVenue The new venue of the event
+ */
+ void setVenue( const SmfVenue& 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:
+ QStringList m_name; // event name
+ QDateTime m_dateTime; // event date and time
+ QStringList m_artistName; // event artist names
+ SmfVenue m_venue; // venue of the event
+ QUrl m_url; // ticket url
+ QString m_eventId;
+
+ };
+/**
+* Externalization
+*/
+QDataStream &operator<<(QDataStream &, const SmfEvent&);
+/**
+ * Internalization
+ */
+QDataStream &operator>>(QDataStream &, SmfEvent&);
+
+#endif /* SMFEVENT_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/common/smfmusic/smflyrics.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,98 @@
+/**
+ * @file smflyrics.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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section DESCRIPTION
+ *
+ * The lyrics class represents an instance of a music track's lyrics
+ */
+
+#ifndef SMFLYRICS_H_
+#define SMFLYRICS_H_
+
+#include <QObject>
+#include <qdatastream.h>
+#include <QDateTime>
+#include "SmfClientGlobal.h"
+/**
+ * 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 );
+
+ /**
+ * Destructor
+ */
+ ~SmfLyrics( );
+
+ /**
+ * Method to get the lyrics
+ * @param aLyrics The lyrics content
+ */
+ void getLyrics( QByteArray &aLyrics );
+
+ /**
+ * Method to get the language
+ * @param aLanguage The language
+ */
+ void getLanguage( QString &aLanguage );
+
+ /**
+ * Method to get the frame rate
+ * @return the frame rate
+ */
+ double getFrameRate( );
+
+ /**
+ * Method to get the duration
+ * @return the duration
+ */
+ double getDuration( );
+
+ /**
+ * Method to get the release year
+ * @param aRelYear The release year
+ */
+ void getReleaseYear( QDateTime &aRelYear );
+
+ /**
+ * Method to get the id of the lyrics
+ * @param aId The ID value
+ */
+ void getId( QString &aId );
+
+private:
+ QByteArray m_lyrics; // lyrics data
+ QString m_language; // language
+ double m_frameRate; // frame rate
+ double m_duration; // duration
+ QDateTime m_releaseYr; // release year
+ QString m_lyricsId; // lyrics id
+
+ };
+/**
+* Externalization
+*/
+QDataStream &operator<<(QDataStream &, const SmfLyrics&);
+/**
+ * Internalization
+ */
+QDataStream &operator>>(QDataStream &, SmfLyrics&);
+#endif /* SMFLYRICS_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/common/smfmusic/smfmusicfingerprint.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,51 @@
+/**
+ * @file smfmusicfingerprint.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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section DESCRIPTION
+ *
+ * The musicfingerprint class represents a music finger print used in searches
+ */
+
+#ifndef SMFMUSICFINGERPRINT_H_
+#define SMFMUSICFINGERPRINT_H_
+
+#include <QObject>
+
+/**
+ * The musicfingerprint class represents a music finger print used in searches
+ */
+class SmfMusicFingerPrint : public QObject
+ {
+ Q_OBJECT
+public:
+ /**
+ * Constructor with default argument
+ * @param aParent The parent object
+ */
+ SmfMusicFingerPrint( QObject *aParent = 0 );
+ /**
+ * Destructor
+ */
+ ~SmfMusicFingerPrint( );
+
+ };
+/**
+* Externalization
+*/
+friend QDataStream &operator<<(QDataStream &, const SmfMusicFingerPrint&);
+/**
+ * Internalization
+ */
+friend QDataStream &operator>>(QDataStream &, SmfMusicFingerPrint&);
+#endif /* SMFMUSICFINGERPRINT_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/common/smfmusic/smfmusicprofile.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,86 @@
+/**
+ * @file smfmusicprofile.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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section DESCRIPTION
+ *
+ * The music profile class represents a user's profile in music site
+ */
+
+#ifndef SMFMUSICPROFILE_H_
+#define SMFMUSICPROFILE_H_
+
+#include <qdatastream.h>
+#include "SmfClientGlobal.h"
+
+#include "smfcontact.h"
+class SmfTrackInfo;
+class SmfEventsList;
+typedef QList<SmfTrackInfo> SmfTrackInfoList;
+/**
+ * User profile containing music usage and interest info, extends SmfContact.
+ * Consists of,-
+ * 1. Conatct info
+ * 2. Music usage info as SmfTrackInfoList
+ * 3. Interest info as SmfTrackInfoList
+ * 4. Events SmfEventsList
+ */
+class SMFCLIENT_EXPORT SmfMusicProfile : public SmfContact
+ {
+ Q_OBJECT
+
+ public:
+ // Seeing as this is a plug-in implementation, these will realistically
+ // be generated by SMF factory of some kind
+ SmfMusicProfile(QObject* parent = 0);
+ ~SmfMusicProfile();
+
+ /**
+ * Gets the music usage info of the user as list of SmfTrackInfo
+ */
+ SmfTrackInfoList* getMusicUsageInfo();
+
+ /**
+ * Gets the music interest info of the user as list of SmfTrackInfo
+ */
+ SmfTrackInfoList* getInterestInfo();
+
+ /**
+ * Gets the user events as list of SmfEvents
+ */
+ SmfEventsList* getUserEvents();
+
+ /**
+ * Sets the music usage info of the user as list of SmfTrackInfo
+ */
+ void setMusicUsageInfo(SmfTrackInfoList* usage);
+
+ /**
+ * Gets the music interest info of the user as list of SmfTrackInfo
+ */
+ void setInterestInfo(SmfTrackInfoList* interest);
+
+ private:
+ SmfTrackInfoList* usage;
+ SmfTrackInfoList* interest;
+
+ };
+/**
+* Externalization
+*/
+QDataStream &operator<<(QDataStream &, const SmfMusicProfile&);
+/**
+ * Internalization
+ */
+QDataStream &operator>>(QDataStream &, SmfMusicProfile&);
+#endif /* SMFMUSICPROFILE_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/common/smfmusic/smfmusicrating.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,82 @@
+/**
+ * @file smfmusicrating.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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section DESCRIPTION
+ *
+ * The music rating class represents an instance of rating
+ * about a music track
+ */
+
+#ifndef SMFMUSICRATING_H_
+#define SMFMUSICRATING_H_
+
+#include <QObject>
+#include "SmfClientGlobal.h"
+class SmfTrackInfo;
+/**
+ * Rating value, services should define their own scale
+ */
+class SMFCLIENT_EXPORT SmfMusicRating : QObject
+ {
+ Q_OBJECT
+
+public:
+ /**
+ * Constructs the rating for the given track
+ */
+ SmfMusicRating(SmfTrackInfo* track);
+ /**
+ * Gets the rating
+ */
+ int getRating();
+
+ /**
+ * Gets the max for the rating scale
+ */
+ int getMax();
+
+ /**
+ * Gets the min for the rating scale
+ */
+ int getMin();
+
+ /**
+ * Gets the rating
+ */
+ void setRating(int rating);
+
+ /**
+ * Sets the max for the rating scale
+ */
+ void setMax(int max);
+
+ /**
+ * Sets the min for the rating scale
+ */
+ void setMin(int min);
+
+private:
+ int m_rating;
+ int m_max;
+ int m_min;
+ };
+/**
+* Externalization
+*/
+QDataStream &operator<<(QDataStream &, const SmfMusicRating&);
+/**
+ * Internalization
+ */
+QDataStream &operator>>(QDataStream &, SmfMusicRating&);
+#endif /* SMFMUSICRATING_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/common/smfmusic/smfplaylist.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,102 @@
+/**
+ * @file smfplaylist.h
+ * @author Nalina Hariharan,Manasij Roy 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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section DESCRIPTION
+ *
+ * The playlist class represents an instance of a playlist
+ */
+
+#ifndef SMFPLAYLIST_H_
+#define SMFPLAYLIST_H_
+
+#include <smftrackinfo.h>
+#include <qdatastream.h>
+
+/**
+ * The playlist class represents an instance of a playlist
+ */
+class SmfPlaylist : public QObject
+ {
+ Q_OBJECT
+public:
+ /**
+ * Constructor with default argument
+ * @param aParent The parent object
+ */
+ SmfPlaylist( QObject *aParent = 0 );
+
+ /**
+ * Destructor
+ */
+ ~SmfPlaylist( );
+
+ /**
+ * Method to get the list of tracks in the playlist
+ * @param aList The list of tracks in the playlist
+ */
+ void getTrackList( QList<SmfTrackInfo>& aList );
+
+ /**
+ * Method to get the playlist title
+ * @param aTitle The title of the playlist
+ */
+ void getPlayListTitle( QString &aTitle );
+
+ /**
+ * Method to get the creation date of the playlist
+ * @param aDate The date and time of creation of the playlist
+ */
+ void getCreationDate( QDateTime &aDate );
+
+ /**
+ * Method to get the id of the playlist
+ * @param aId The ID value
+ */
+ void getId( QString &aId );
+
+ /**
+ * 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:
+ QList<SmfTrackInfo> m_trackList; // list of tracks
+ QString m_title; // playlist name
+ QDateTime m_creationDate; // creation date
+ QString m_playlistId;
+
+ };
+ /**
+ * Externalization
+ */
+ QDataStream &operator<<(QDataStream &, const SmfPlaylist &);
+ /**
+ * Internalization
+ */
+ QDataStream &operator>>(QDataStream &, SmfPlaylist &);
+
+#endif /* SMFPLAYLIST_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/common/smfmusic/smfsubtitle.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,98 @@
+/**
+ * @file smfsubtitle.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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section 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 "SmfClientGlobal.h"
+/**
+ * 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 );
+
+ /**
+ * Destructor
+ */
+ ~SmfSubtitle( );
+
+
+ /**
+ * Method to get the subtitle as a bytearray
+ * @param aSubTitle The subtitle content
+ */
+ void getSubtitle( QByteArray &aSubTitle );
+
+ /**
+ * Method to get the language
+ * @param aLanguage The language
+ */
+ void getLanguage( QString &aLanguage );
+
+ /**
+ * Method to get the frame rate
+ * @return the frame rate
+ */
+ double getFrameRate( );
+
+ /**
+ * Method to get the duration
+ * @return the duration
+ */
+ double getDuration( );
+
+ /**
+ * Method to get the release year
+ * @param aRelYear The release year
+ */
+ void getReleaseYear( QDateTime &aRelYear );
+
+ /**
+ * Method to get the id of the subtitle
+ * @param aId The ID value
+ */
+ void getId( QString &aId );
+
+private:
+ 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
+ };
+/**
+ * Externalization
+ */
+QDataStream &operator<<(QDataStream &, const SmfSubtitle&);
+ /**
+ * Internalization
+ */
+QDataStream &operator>>(QDataStream &, SmfSubtitle&);
+#endif /* SMFSUBTITLE_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/common/smfmusic/smfsubtitlesearchfilter.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,100 @@
+/**
+ * @file smfsubtitlesearchfilter.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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section DESCRIPTION
+ *
+ * The subtitle search filter class represents the filter options
+ * for searching tracks
+ */
+
+#ifndef SMFSUBTITLESEARCHFILTER_H_
+#define SMFSUBTITLESEARCHFILTER_H_
+
+#include <QDateTime>
+#include "SmfClientGlobal.h"
+/**
+ * The subtitle search filter class represents the filter options
+ * for searching tracks
+ */
+class SMFCLIENT_EXPORT SmfSubtitleSearchFilter : public QObject
+ {
+ Q_OBJECT
+public:
+ /**
+ * Constructor with default argument
+ * @param aParent The parent object
+ */
+ SmfSubtitleSearchFilter( QObject *aParent = 0 );
+
+ /**
+ * Destructor
+ */
+ ~SmfSubtitleSearchFilter( );
+
+ /**
+ * Method to get the language
+ * @param aLang The language
+ */
+ void getLanguage( QString &aLang );
+
+ /**
+ * Method to get the frame rate
+ * @return The frame rate
+ */
+ double getFrameRate( );
+
+ /**
+ * Method to get the duration
+ * @param aTime The duration
+ */
+ void getDuration( QTime &aTime );
+
+ /**
+ * Method to get the release year
+ * @param aDateTime The release year
+ */
+ void getReleaseYear( QDateTime &aDateTime );
+
+ /**
+ * Method to set the language
+ * @param aLang The new language
+ */
+ void setLanguage( const QString& aLang );
+
+ /**
+ * Method to set the frame rate
+ * @param aFr The new frame rate
+ */
+ void setFrameRate( const double aFr );
+
+ /**
+ * Method to set the duration
+ * @param aDuration The new duration
+ */
+ void setDuration( const QTime& aDuration );
+
+ /**
+ * Method to set the release year
+ * @param aDateTime The new release year
+ */
+ void setReleaseYear( const QDateTime &aDateTime );
+
+private:
+ QString m_language; // language
+ double m_frameRate; // frame rate
+ QTime m_duration; // duration
+ QDateTime m_releaseYr; // release year
+ };
+
+#endif /* SMFSUBTITLESEARCHFILTER_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/common/smfmusic/smftrackinfo.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,160 @@
+/**
+ * @file smftrackinfo.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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section 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 "SmfClientGlobal.h"
+/**
+ * Music track info as track id,title, album, artist, genre,
+ * tag, director,release year, rating, comment info
+ */
+class SMFCLIENT_EXPORT SmfTrackInfo : public QObject
+ {
+ Q_OBJECT
+public:
+ /**
+ * Constructs track info
+ */
+ SmfTrackInfo(QObject* parent=0);
+ /**
+ * Gets track id
+ */
+ void getId(QString& id);
+
+ /**
+ * Gets title of the track
+ */
+ void getTitle(QString& title);
+
+ /**
+ * Gets album name
+ */
+ void getAlbum(QString& album);
+
+ /**
+ * Gets track artist
+ */
+ void getArtist(QString& artist);
+
+ /**
+ * Gets track genre
+ */
+ void getGenre(QString& genre);
+
+ /**
+ * Gets track tag
+ */
+ void getTag(QString& tag);
+
+ /**
+ * Gets director name
+ */
+ void getDirector(QString& director);
+
+ /**
+ * Gets release year
+ */
+ void getYear(QString& year);
+
+ /**
+ * Gets track rating
+ */
+ void getRating(SmfMusicRating& rating);
+
+ /**
+ * Gets comments
+ */
+ void getComment(QStringList& comment);
+
+
+ /**
+ * Sets id
+ */
+ void setId(QString& id);
+
+ /**
+ * Sets title
+ */
+ void setTitle(QString& title);
+
+ /**
+ * Sets album name
+ */
+ void setAlbum(QString& album);
+
+ /**
+ * Sets artist name
+ */
+ void setArtist(QString& artist);
+
+ /**
+ * Sets genre
+ */
+ void setGenre(QString& genre);
+
+ /**
+ * Sets tag
+ */
+ void setTag(QString& tag);
+
+ /**
+ * Sets director name
+ */
+ void setDirector(QString& director);
+
+ /**
+ * Sets release year
+ */
+ void setYear(QString& year);
+
+ /**
+ * Sets rating
+ */
+ void setRating(SmfMusicRating& rating);
+
+ /**
+ * Sets comment
+ */
+ void setComment(QStringList& comment);
+
+private:
+ QString m_id;
+ QString m_title;
+ QString m_albumTitle;
+ QString m_artistName;
+ QString m_genre;
+ QString m_tag;
+ QString m_director;
+ QString m_year;
+ SmfMusicRating m_rating;
+ QString m_comment;
+ };
+/**
+* Externalization
+*/
+QDataStream &operator<<(QDataStream &, const SmfTrackInfo&);
+/**
+ * Internalization
+ */
+QDataStream &operator>>(QDataStream &, SmfTrackInfo&);
+#endif /* SMFTRACKINFO_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/common/smfmusic/smfvenue.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,129 @@
+/**
+ * @file smfvenue.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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section DESCRIPTION
+ *
+ * The venue class represents a venue and its related information
+ *
+ * Note: This class has dependencies on QtMobility project
+ */
+
+#ifndef SMFVENUE_H_
+#define SMFVENUE_H_
+
+#include <QUrl>
+#include <qgeopositioninfo.h> // Qt mobility class
+#include <qdatastream.h>
+#include "SmfClientGlobal.h"
+
+/**
+ * Popular venues.
+ * Consists of venue name, city, street, pin, country,url and geo info.
+ */
+class SMFCLIENT_EXPORT SmfVenue : QObject
+ {
+ Q_OBJECT
+
+public:
+
+ /**
+ * Gets the venue name
+ */
+ QString getName();
+
+ /**
+ * Sets the venue name
+ */
+ void setName(QString& name);
+
+ /**
+ * Gets the city name
+ */
+ QString getCity();
+
+ /**
+ * Sets the city name
+ */
+ void setCity(QString& name);
+
+ /**
+ * Gets the Street name
+ */
+ QString getStreet();
+
+ /**
+ * Sets the Street name
+ */
+ void setStreet(QString& name);
+
+ /**
+ * Gets the Pin
+ */
+ QString getPin();
+
+ /**
+ * Sets the Pin
+ */
+ void setPin(QString& name);
+
+ /**
+ * Gets the Country name
+ */
+ QString getCountry();
+
+ /**
+ * Sets the Country name
+ */
+ void setCountry(QString& name);
+
+ /**
+ * Gets the geo info
+ */
+ QtMobility::QGeoPositionInfo getGeo();
+
+ /**
+ * Sets the geo info
+ */
+ void setGeo(QtMobility::QGeoPositionInfo& geo);
+
+ /**
+ * Gets the url
+ */
+ QUrl getUrl();
+
+ /**
+ * Sets the url
+ */
+ void setUrl(QUrl& url);
+
+
+private:
+ QString m_name;
+ QString m_city;
+ QString m_street;
+ QString m_pin;
+ QString m_country;
+ QtMobility::QGeoPositionInfo m_geo;
+ QUrl m_url;
+ };
+
+/**
+* Externalization
+*/
+QDataStream &operator<<(QDataStream &, const SmfVenue&);
+/**
+ * Internalization
+ */
+QDataStream &operator>>(QDataStream &, SmfVenue&);
+#endif /* SMFVENUE_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/common/smfpictures/smfcomment.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,88 @@
+/**
+ * @file smfcomment.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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section DESCRIPTION
+ *
+ * The comment class represents a comment on a picture or a music track
+ */
+
+#ifndef SMFCOMMENT_H_
+#define SMFCOMMENT_H_
+
+#include <QDateTime>
+#include <qdatastream.h>
+#include "SmfClientGlobal.h"
+/**
+ * The comment class represents a comment on a picture or a music track
+ */
+class SMFCLIENT_EXPORT SmfComment : public QObject
+ {
+ Q_OBJECT
+public:
+ /**
+ * Constructor with default argument
+ * @param aParent The parent object
+ */
+ SmfComment( QObject *aParent = 0 );
+ /**
+ * Destructor
+ */
+ ~SmfComment( );
+
+
+ /**
+ * Method to get the comment text
+ * @param aText The comment text
+ */
+ void getText( QString &aText );
+
+ /**
+ * Method to get the comment time stamp
+ * @param aTimeStamp The comment time stamp value
+ */
+ void getTimeStamp( QDateTime &aTimeStamp );
+
+ /**
+ * Method to get the id of the comment
+ * @param aId The ID value
+ */
+ void getId( QString &aId );
+
+ /**
+ * Method to set the comment text
+ * @param aText The comment text to be set
+ */
+ void setText( const QString &aText );
+
+ /**
+ * Method to set the comment time stamp
+ * @param aTimeStamp The comment time stamp value to be set
+ */
+ void setTimeStamp( const QDateTime &aTimeStamp );
+
+private:
+ QString m_text; // comment text
+ QDateTime m_timeStamp; // comment time stamp
+ QString m_commetnId;
+
+ };
+/**
+ * Externalization
+ */
+QDataStream &operator<<(QDataStream &, const SmfComment &);
+/**
+ * Internalization
+ */
+QDataStream &operator>>(QDataStream &, SmfComment &);
+#endif /* SMFCOMMENT_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/common/smfpictures/smfpicture.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,192 @@
+/**
+ * @file smfpicture.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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section 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 "SmfClientGlobal.h"
+/**
+ * SmfPictureVisibility enumeration
+ */
+enum SmfPictureVisibility
+ {
+ SMFVisibilityFriend,
+ SMFVisibilityPersonal,
+ SMFVisibilityFamily,
+ SMFVisibilityGroup,
+ SMFVisibilityPublic
+ };
+/**
+ * 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 );
+
+ /**
+ * Destructor
+ */
+ ~SmfPicture( );
+
+
+ /**
+ * Method to get the id of the picture
+ * @param aId The ID value
+ */
+ void getId( QString &aId );
+
+ /**
+ * Method to get a picture owner
+ * @param aOwner The owner of the picture
+ */
+ void getOwner( QString &aOwner );
+
+ /**
+ * Method to get a picture title
+ * @param aTitle The title of the picture
+ */
+ void getTitle( QString &aTitle );
+
+ /**
+ * Method to get a picture description
+ * @param aDescription The description of the picture
+ */
+ void getDescription( QString &aDescription );
+
+ /**
+ * Method to get a visibility of a picture for public
+ * @param aVisibility The visibility mode of
+ * this picture for others
+ */
+ void getVisibility( SmfPictureVisibility &aVisibility );
+
+ /**
+ * Method to get the date of posting the picture
+ * @param aPostedOn The posted date of the picture
+ */
+ void getPostedDate( QDateTime &aPostedOn );
+
+ /**
+ * Method to get the comments for the picture
+ * @param aComments The comments for the picture
+ */
+ void getComments( QStringList &aComments );
+
+ /**
+ * Method to get the tags for the picture
+ * @param aTags The tags for the picture
+ */
+ void getTags( QStringList &aTags );
+
+ /**
+ * Method to get the url of the picture
+ * @param aUrl The url of the picture
+ */
+ void getUrl( QUrl &aUrl );
+
+ /**
+ * Method to get the picture data as a byte array
+ * @param aData The picture as a byte array
+ */
+ void getPicture( QByteArray &aData );
+
+ /**
+ * 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 set the date of posting the picture
+ * @param aPostedOn The posted date of the picture
+ */
+ void setPostedDate( const QDateTime &aPostedOn );
+
+ /**
+ * Method to set the comments for the picture
+ * @param aComment The comment for the picture
+ */
+ void setComment( const QString &aComment );
+
+ /**
+ * Method to set the tags for the picture
+ * @param aTag The tag for the picture
+ */
+ void setTag( const QString &aTag );
+
+ /**
+ * Method to set the picture data as a byte array
+ * @param aData The picture as a byte array
+ */
+ void setPicture( const QByteArray &aData );
+
+private:
+ 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_descrition;// description
+ bool m_ispublic;// visibility for public, Set to 0 for no, 1 for yes.
+ bool m_isfriend;// visilibility for friends Set to 0 for no, 1 for yes.
+ bool m_isfamily;// visilibility for family Set to 0 for no, 1 for yes.
+ QDateTime m_postedon;// date posted
+ QStringList m_comments;// comments
+ QStringList m_tags; // tags
+ QUrl m_url; // url
+ QByteArray* m_picture; // picture data as bytearray
+ QString m_caption; // caption
+
+ };
+/**
+* Externalization
+*/
+QDataStream &operator<<(QDataStream &, const SmfPicture&);
+/**
+ * Internalization
+ */
+QDataStream &operator>>(QDataStream &, SmfPicture&);
+#endif /* SMFPICTURE_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/smfclient/smfcontactfetcher.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,171 @@
+/*
+* 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:
+* Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
+*
+* Contributors:
+*
+* Description:
+* Interface spefication for list of contacts from a site
+*
+*/
+
+#ifndef SMFCONTACTHETCHER_H
+#define SMFCONTACTHETCHER_H
+
+#include <QObject>
+#include "smfprovider.h"
+#include "smfcontact.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
+class SmfContactList;
+
+//List of SmfGroup
+typedef QList<SmfGroup> SmfGroupList;
+/**
+ * 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 = 0, SmfContact* contact = 0);
+ ~SmfContactFetcher();
+
+public:
+ /**
+ * Get the friend listing asynchronously. The friendsListAvailable() signal
+ * is emitted with SmfContactList once data is arrived.
+ */
+ virtual void friends() = 0; // list of contact objects
+
+ /**
+ * Get the list of followers asynchronously. The followersListAvailable() signal
+ * is emitted with SmfContactList once data is arrived.
+ */
+ virtual void followers() = 0; // list of contact objects
+
+ /**
+ * Searches for a contact The searchContactFinished() signal
+ * is emitted with SmfContactList once data is arrived.
+ */
+ virtual void search(SmfContact* contact) = 0; // list of contact objects
+
+ /**
+ * Get the list of groups. The groupListAvailable() signal
+ * is emitted with SmfGroupList once data is arrived.
+ */
+ virtual void groups() = 0; // list of group objects
+
+ /**
+ * Searches for Smf Contacts in an Smf group
+ * @param group The group to be searcged in
+ * The nextDataPageAvailable() signal
+ * of SmfProvider is emitted with SmfContactList once data is arrived.
+ */
+ virtual void searchInGroup(SmfGroup group) = 0; // list of contact objects
+
+
+ //APIs to get/set base provider info (SmfProvider)
+
+ /**
+ * Gets the base provider info
+ */
+ virtual SmfProvider* getProvider() = 0;
+
+ /**
+ * Sets the base provider info
+ */
+ virtual void setProvider(SmfProvider* provider) = 0;
+
+
+public slots:
+
+Q_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 pageNumber Page number
+ * @see friends()
+ */
+ void friendsListAvailable(SmfContactList* list, QString error, int pageNumber=0);
+
+ /**
+ * 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 pageNumber Page number
+ * @see followers()
+ */
+ void followersListAvailable(SmfContactList* list, QString error, int pageNumber=0);
+
+ /**
+ * 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 pageNumber Page number
+ * @see groups()
+ */
+ void groupListAvailable(SmfGroupList* list, QString error, int pageNumber=0);
+
+ /**
+ * 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 pageNumber Page number
+ * @see search()
+ */
+ void searchContactFinished(SmfContactList* list,QString error, int pageNumber=0);
+
+ /**
+ * 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 pageNumber Page number
+ * @see searchInGroup()
+ */
+ void searchInGroupFinished(SmfContactList* list,QString error, int pageNumber=0);
+
+private:
+ SmfProvider* m_baseProvider;
+};
+
+SMF_GETSERVICES(SmfContactFetcher, "org.symbian.smf.client.contact.fetcher\0.2")
+#endif // SMFCONTACTHETCHER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/smfclient/smfgallery.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,140 @@
+/*
+* 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:
+* Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
+*
+* Contributors:
+*
+* Description:
+* Interface spefication for a remote picture gallery
+*
+*/
+
+#ifndef SMFGALLERY_H
+#define SMFGALLERY_H
+
+
+#include "smfprovider.h"
+#include "../common/SmfClientGlobal.h"
+class SmfProvider;
+class SmfPicture;
+class SmfGalleryModel;
+class SmfComment; //user id, string, and url
+
+
+#include <QObject>
+#include <QDateTime>
+#include <QStringList>
+//List of SmfPicture
+typedef QList<SmfPicture> SmfPictureList;
+/**
+ * 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.
+ */
+ virtual void pictures() = 0;
+
+ /**
+ * Returns model
+ */
+ virtual SmfGalleryModel model() = 0; // maybe we can make a QItemModel-derived model?
+
+ /**
+ * Returns a user title/caption for the picture
+ */
+ virtual QString description() = 0; // A user title or caption, maybe?
+
+ //APIs to get/set base provider info (SmfProvider)
+
+ /**
+ * Gets the base provider info
+ */
+ virtual SmfProvider* getProvider() = 0;
+
+ /**
+ * Sets the base provider info
+ */
+ virtual void setProvider(SmfProvider* provider) = 0;
+
+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
+ */
+ virtual void upload(SmfPicture* image) = 0;
+
+ /**
+ * 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
+ */
+ virtual void upload(SmfPictureList* images) = 0;
+
+ /**
+ * 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
+ */
+ virtual void postComment(SmfPicture image, SmfComment comment) = 0;
+
+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 pageNumber Page number
+ */
+ void picturesAvailable(SmfPictureList* pics, QString error, int pageNumber=0);
+
+ /**
+ * Notification of the success of the uploading of image/comment
+ * @param success The success of the post
+ */
+ void uploadFinished(bool success);
+private:
+ SmfProvider* m_baseProvider;
+};
+
+SMF_GETSERVICES(SmfGallery, "org.symbian.smf.client.gallery\0.2")
+
+#endif // SMFGALLERY_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/smfclient/smfmusic.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,504 @@
+/*
+* 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:
+* Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
+*
+* Contributors:
+*
+* Description:
+* Interface spefication for music related services
+*
+*/
+
+#ifndef SMFMUSIC_H
+#define SMMUSIC_H
+
+#include <QObject>
+
+#include <qmobilityglobal.h>
+#include <qgeopositioninfo.h>
+
+#include "smfprovider.h"
+#include "smfcontact.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 SmfMusicModel;
+class SmfEvents;
+class SmfPlaylist;
+class SmfLyricsService;
+class SmfLyrics;
+class SmfSubtitle;
+class SmfSubtitleSearchFilter;
+
+typedef QList<SmfMusicProfile> SmfMusicProfileList;
+typedef QList<SmfTrackInfo> SmfTrackInfoList;
+typedef QList<SmfEvents> SmfEventsList;
+typedef QList<SmfProvider> SmfProviderList;
+typedef QList<SmfPlaylist> SmfPlaylistList;
+typedef QList<SmfVenue> SmfVenueList;
+typedef QList<SmfLyrics> SmfLyricsList;
+typedef QList<SmfSubtitle> SmfSubtitleList;
+/**
+ * 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
+ */
+ virtual void userinfo() = 0;
+
+ /**
+ * Asynchronously searches information about other service users for a particular venue
+ * serachInfoAvailable() signal is emitted with SmfMusicProfileList when the info is arrived
+ */
+ virtual void searchUser(SmfVenue venue) = 0;
+
+ /**
+ * Returns the model
+ */
+ virtual SmfMusicModel model() = 0; // maybe we can make a QItemModel-derived model?
+
+ //APIs to get/set base provider info (SmfProvider)
+
+ /**
+ * Gets the base provider info
+ */
+ virtual SmfProvider* getProvider() = 0;
+
+ /**
+ * Sets the base provider info
+ */
+ virtual void setProvider(SmfProvider* provider) = 0;
+
+signals:
+ /**
+ * Notification on arrival of the self profile as result of userinfo().
+ * @param profile The self profile
+ */
+ void userInfoAvailable(SmfMusicProfile* profile, QString error);
+private:
+ SmfProvider* m_baseProvider;
+};
+SMF_GETSERVICES(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.
+ * @param track The track for which similar recommendations need to be fetched.
+ */
+ virtual void recommendations(SmfTrackInfo track) = 0; // basic list of track objects
+
+ /**
+ * Searches for tracks similar to a given track asynchronously.
+ * The signal trackSearchAvailable() is emitted with SmfTrackInfoList
+ * once its arrived.
+ * @param track The search criteria, similar tracks are searched
+ */
+ virtual void tracks(SmfTrackInfo track) = 0; // 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
+ */
+ virtual void trackInfo(SmfMusicFingerPrint signature) = 0; // 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
+ */
+ virtual void stores(SmfTrackInfo track) = 0;
+
+ //APIs to get/set base provider info (SmfProvider)
+
+ /**
+ * Gets the base provider info
+ */
+ virtual SmfProvider* getProvider() = 0;
+
+ /**
+ * Sets the base provider info
+ */
+ virtual void setProvider(SmfProvider* provider) = 0;
+
+public slots:
+
+ /**
+ * Posts currently playing track.
+ * Success can be checked by checking the signal postFinished()
+ * @param track Track to post
+ */
+ virtual void postCurrentPlaying(SmfTrackInfo track) = 0;
+ //virtual int postRating(SmfTrackInfo track, SmfMusicRating rate) = 0;
+ //virtual int postComments(SmfTrackInfo track, SmfComment comment) = 0;
+
+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 result The search result
+ */
+ void trackSearchAvailable(SmfTrackInfoList* result, QString error, int pageNumber=0);
+
+ /**
+ * 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 result The search result
+ */
+ void storeSearchAvailable(SmfProviderList* result, QString error, int pageNumber=0);
+private:
+ SmfProvider* m_baseProvider;
+};
+SMF_GETSERVICES(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
+ */
+ virtual void playlists() = 0; // 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.
+ * @param user User for which to get the playlists
+ */
+ virtual void playlistsOf(SmfMusicProfile* user) = 0;
+
+ //APIs to get/set base provider info (SmfProvider)
+
+ /**
+ * Gets the base provider info
+ */
+ virtual SmfProvider* getProvider() = 0;
+
+ /**
+ * Sets the base provider info
+ */
+ virtual void setProvider(SmfProvider* provider) = 0;
+
+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
+ */
+ virtual int addToPlaylist(SmfPlaylist plst, SmfTrackInfoList* tracks) = 0;
+
+ /**
+ * Upload currently playing playlist . Signal
+ * playlistUpdated() can be checked for success value
+ * @param plst The playlist to be uploaded
+ */
+ virtual int postCurrentPlayingPlaylist(SmfPlaylist plst) = 0;
+
+
+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.
+ */
+ void playlistsListAvailable(SmfPlaylistList*, QString error, int pageNumber=0);
+ /**
+ * Signals remote updation of playlist with success value
+ */
+ int playlistUpdated(bool success) ;
+private:
+ SmfProvider* m_baseProvider;
+};
+SMF_GETSERVICES(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
+ */
+ virtual void events(QtMobility::QContactGeolocation location) = 0;
+
+ /**
+ * Gets list of venues of a particular location asynchronously.
+ * venuesAvailable() signal is emitted with SmfVenueList once its arrived.
+ */
+ virtual void venues(QtMobility::QContactGeolocation location) = 0; // basic list of venue objects
+
+ /**
+ * Gets list of events in a particular venue asynchronously.
+ * eventsAvailable() signal is emitted with SmfEventsList once its arrived
+ */
+ virtual void events(SmfVenue venue) = 0; // basic list of events objects
+
+
+ //APIs to get/set base provider info (SmfProvider)
+
+ /**
+ * Gets the base provider info
+ */
+ virtual SmfProvider* getProvider() = 0;
+
+ /**
+ * Sets the base provider info
+ */
+ virtual void setProvider(SmfProvider* provider) = 0;
+
+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
+ */
+ virtual 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.
+ */
+ void eventsAvailable(SmfEventsList* list, QString error, int pageNumber=0);
+
+ /**
+ * 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.
+ */
+ void venuesAvailable(SmfVenueList* list, QString error, int pageNumber=0);
+private:
+ SmfProvider* m_baseProvider;
+};
+SMF_GETSERVICES(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.
+ */
+ virtual void lyrics(SmfTrackInfo track) = 0;
+
+ /**
+ * 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
+ */
+ virtual void subtitles(SmfTrackInfo track, SmfSubtitleSearchFilter filter) = 0; // texts with time information
+ //APIs to get/set base provider info (SmfProvider)
+
+ /**
+ * Gets the base provider info
+ */
+ virtual SmfProvider* getProvider() = 0;
+
+ /**
+ * Sets the base provider info
+ */
+ virtual void setProvider(SmfProvider* provider) = 0;
+
+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.
+ */
+ void lyricsAvailable(SmfLyricsList* list, QString error, int pageNumber=0);
+
+ /**
+ * 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.
+ */
+ void subtitleAvailable(SmfSubtitleList* list, QString error, int pageNumber=0);
+private:
+ SmfProvider* m_baseProvider;
+};
+SMF_GETSERVICES(SmfLyricsService, "org.symbian.smf.client.music.lyrics\0.2")
+
+#endif // SMFMUSIC_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/smfclient/smfpostprovider.h Thu Mar 25 14:44:08 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 "{License}"
+* which accompanies this distribution, and is available
+* at the URL "{LicenseUrl}".
+*
+* Initial Contributors:
+* Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
+*
+* Contributors:
+*
+* Description:
+* Interface spefication for posting updates to a social site
+*
+*/
+#ifndef SMFPOSTPROVIDER_H
+#define SMFPOSTPROVIDER_H
+
+#include <QObject>
+#include <qmobilityglobal.h>
+#include <qgeopositioninfo.h>
+
+#include "smfprovider.h"
+#include "smfcontact.h"
+
+class SmfProvider; //base-class for service provider
+class SmfContact; //class for Contact in a social network
+
+
+
+/**
+ * Location info
+ */
+typedef QtMobility::QGeoPositionInfo SmfLocationInfo ;
+class SmfPost; //class for information (text, image and url) contained in post in social network
+class SmfContactModel;
+class SmfStatusData;
+
+//Post lists
+typedef QList<SmfPost> SmfPostList;
+/**
+ * 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()
+ *
+ * All of the functionality described here should be implemented by a service
+ * specific plug-in object.
+ * 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 = 0);
+ ~SmfPostProvider();
+
+ /**
+ * Presence info of the user
+ */
+enum SmfPresenceInfo
+ {
+ ENotSupported,
+ EOnline,
+ EOffline,
+ EBusy,
+ EDoNotDisturb,
+ EAppearOffline,
+ EOther
+ };
+
+public:
+ /**
+ * Gets the posts asynchronously. The signal postsAvailable()with SmfPostList is emitted
+ * once the post lists are available
+ * @see postsAvailable()
+ */
+ virtual void getPosts(SmfStatusData statusData) = 0;
+
+ /**
+ * Gets the model
+ */
+ virtual SmfContactModel model() = 0;
+
+public slots:
+
+ /**
+ * Updates a post, the success of the post can be checked with signal
+ * updatePostFinished() signal
+ * @param postData data to be posted
+ * @param location location data
+ */
+ virtual void updatePost(SmfPost& postData,SmfLocationInfo& location) = 0; // list of contact objects
+ /**
+ * Updates a post, the success of the post can be checked with signal
+ * updatePostFinished() signal
+ * @param postData data to be posted
+ * @param location location data
+ */
+ virtual void updatePost(SmfPost& postData) = 0; // list of contact objects
+
+ /**
+ * 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
+ */
+ virtual void updatePostDirected(SmfPost& postData,SmfContact& contact,SmfLocationInfo location) = 0; // list of contact objects
+
+ /**
+ * Posts appearance info of the user.
+ * @param appearence user appearance
+ * @see SmfPresenceInfo
+ */
+ virtual QList<SmfContact> postAppearence(SmfPresenceInfo appearence) = 0; // appear offline, busy, do-not-disturb
+
+ //APIs to get/set base provider info (SmfProvider)
+
+ /**
+ * Gets the base provider info
+ */
+ virtual SmfProvider* getProvider() = 0;
+
+ /**
+ * Sets the base provider info
+ */
+ virtual void setProvider(SmfProvider* provider) = 0;
+
+ Q_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 pageNumber Page number
+ */
+ void postsAvailable(SmfPostList* list, QString error, int pageNumber=0);
+
+ /**
+ * Emitted when update post is finished.
+ * @param success the success of the update
+ */
+ void updatePostFinished(bool success);
+
+private:
+ SmfProvider* m_baseProvider;
+};
+
+SMF_GETSERVICES(SmfPostProvider, "org.symbian.smf.client.contact.posts\0.2")
+#endif // SMFPOSTPROVIDER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/smfclient/smfprovider.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,85 @@
+/**
+* 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:
+* Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
+*
+* Contributors:
+*
+* Description:
+* Interface spefication for sfm service provider
+*
+*/
+
+#ifndef SMFPROVIDER_H
+#define SMFPROVIDER_H
+
+#include <QObject>
+#include <QImage>
+#include <QUrl>
+
+#include "../common/SmfClientGlobal.h"
+/**
+ * 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
+ */
+ virtual QString serviceName() = 0;
+
+ /**
+ * Logo of the service
+ * @return logo image of the service
+ */
+ virtual QImage serviceIcon() = 0; //
+
+ /**
+ * Readable service description
+ * @return service description
+ */
+ virtual QString description() = 0; // readable service description
+
+ /*
+ * Website of the service
+ */
+ virtual QUrl serviceUrl() = 0; //
+
+ /**
+ * URL of the application providing this service
+ */
+ virtual QUrl applicationUrl() = 0; //
+
+};
+/**
+* Externalization
+*/
+QDataStream &operator<<(QDataStream &, const SmfProvider&);
+/**
+ * Internalization
+ */
+QDataStream &operator>>(QDataStream &, SmfProvider&);
+SMF_GETSERVICES(SmfProvider, "org.symbian.smf.client.provider\0.2")
+#endif // SMFPROVIDER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example/clientapi/smf/inc/smfplugins/smfcontacts/smfcontactfetcherplugin.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,150 @@
+/**
+ * @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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section DESCRIPTION
+ *
+ * Interface specification for fetching contacts
+ */
+
+#ifndef SMFCONTACTFETCHERPLUGIN_H_
+#define SMFCONTACTFETCHERPLUGIN_H_
+
+#include <smfproviderbase.h>
+#include <smfcontact.h>
+#include <smfgroup.h>
+
+/**
+ * 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 QObject
+ {
+ Q_OBJECT
+public:
+ /**
+ * Constructor with default argument
+ * @param aParent The parent object
+ */
+ SmfContactFetcherPlugin( QObject* aParent = 0 );
+
+ /**
+ * Destructor
+ */
+ ~SmfContactFetcherPlugin( );
+
+ /**
+ * Method to get the provider information
+ * @return Instance of SmfProviderBase
+ */
+ virtual SmfProviderBase* getProviderInfo( ) = 0;
+
+ /**
+ * Method to get the list of friends
+ * @param aRequest [out] The request data to be sent to network
+ * @param aContact to search for friend of a friend,
+ * for self friend this parameter need not be included
+ * @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 SmfContact aContact = 0,
+ const int aPageNum = 0,
+ const int aItemsPerPage = 10 ) = 0;
+
+ /**
+ * Method to get the list of followers
+ * @param aRequest [out] The request data to be sent to network
+ * @param aContact to search for follower of a friend, for self
+ * followers this parameter need not be included
+ * @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 SmfContact aContact = 0,
+ const int aPageNum = 0,
+ const int aItemsPerPage = 10 ) = 0;
+
+ /**
+ * Method to search for a contact
+ * @param aContact contact to be searched
+ * @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 search( const SmfContact &aContact,
+ SmfPluginRequestData *aRequest,
+ const int aPageNum = 0,
+ const int aItemsPerPage = 10) = 0;
+
+ /**
+ * Method to get the list of groups
+ * @param aRequest [out] The request data to be sent to network
+ * @param aContact to search for groups of a friend, for self
+ * group this parameter need not be included
+ * @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 SmfContact aContact = 0,
+ const int aPageNum = 0,
+ const int aItemsPerPage = 10 ) = 0;
+
+ /**
+ * Method to search for a contact in a group
+ * @param aGroup the group in which to search
+ * @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
+ * @param aRequest [out] The request data to be sent to network
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+ virtual SmfPluginError searchInGroup( const SmfGroup &aGroup,
+ SmfPluginRequestData *aRequest,
+ const int aPageNum = 0,
+ const int aItemsPerPage = 10 ) = 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.
+ * If last operation was friends() or followers() or search() or
+ * searchInGroup(), aResult will be of type QList<SmfContact>
+ * If last operation was groups(), aResult will be of type QList<SmfGroup>
+ * @param aRetType [out] SmfPluginRetType
+ * @param aIsLastPage [out] true if this the last page, else false
+ * @return SmfPluginError
+ */
+ virtual SmfPluginError responseAvailable(
+ const SmfTransportResult aTransportResult,
+ QNetworkReply *aReply,
+ QVariant* aResult,
+ SmfPluginRetType aRetType,
+ bool aIsLastPage) = 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/example/clientapi/smf/inc/smfplugins/smfcontacts/smfpostproviderplugin.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,145 @@
+/**
+ * @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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section DESCRIPTION
+ *
+ * Interface specification for getting/posting updates to a social site
+ */
+
+#ifndef SMFPOSTPROVIDERPLUGIN_H_
+#define SMFPOSTPROVIDERPLUGIN_H_
+
+#include <smfproviderbase.h>
+#include <smfcontact.h>
+#include <smfpost.h>
+#include <smfstatusdata.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
+ };
+
+/**
+ * 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 QObject
+ {
+ Q_OBJECT
+public:
+ /**
+ * Constructor with default argument
+ * @param aParent The parent object
+ */
+ SmfPostProviderPlugin( QObject* aParent = 0 );
+
+ /**
+ * Destructor
+ */
+ ~SmfPostProviderPlugin( );
+
+ /**
+ * Method to get the provider information
+ * @return Instance of SmfProviderBase
+ */
+ virtual SmfProviderBase* getProviderInfo( ) = 0;
+
+ /**
+ * Method to get the latest posts
+ * @param aStatusData
+ * @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 getPosts( const SmfStatusData aStatusData,
+ SmfPluginRequestData *aRequest,
+ const int aPageNum = 0,
+ const int aItemsPerPage = 10 ) = 0;
+
+ /**
+ * Method to update a post
+ * @param aPostData The post data to be posted
+ * @param aLocation The location
+ * @param aRequest [out] The request data to be sent to network
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+ virtual SmfPluginError updatePost( const SmfPost aPostData,
+ const QtMobility::QContactGeolocation aLocation,
+ SmfPluginRequestData *aRequest ) = 0;
+
+ /**
+ * Method to update a post to a particular contact
+ * @param aPostData The post data to be posted
+ * @param aContact The contact where the data has to be posted
+ * @param aLocation The location
+ * @param aRequest [out] The request data to be sent to network
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+ virtual SmfPluginError updatePostDirected( const SmfPost aPostData,
+ const SmfContact aContact,
+ const QtMobility::QContactGeolocation aLocation,
+ SmfPluginRequestData *aRequest ) = 0;
+ /**
+ * Method to update the presence information of the user
+ * @param aAppearence The appearence information
+ * @param aRequest [out] The request data to be sent to network
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+ virtual SmfPluginError postAppearence( const SmfPresenceInfo aAppearence,
+ SmfPluginRequestData *aRequest ) = 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.
+ * If last operation was getPosts(), aResult will be of type QList<SmfPost>
+ * If last operation was updatePost() or updatePostDirected() or
+ * postAppearence, aResult will be of type bool
+ * @param aRetType [out] SmfPluginRetType
+ * @param aIsLastPage [out] true if this the last page, else false
+ * @return SmfPluginError
+ */
+ virtual SmfPluginError responseAvailable(
+ const SmfTransportResult aTransportResult,
+ QNetworkReply *aReply,
+ QVariant* aResult,
+ SmfPluginRetType aRetType,
+ bool aIsLastPage) = 0;
+
+ };
+
+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/example/clientapi/smf/inc/smfplugins/smfmusic/smflyricsserviceplugin.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,101 @@
+/**
+ * @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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section DESCRIPTION
+ *
+ * Interface specification for music track lyrics
+ */
+
+#ifndef SMFLYRICSSERVICEPLUGIN_H_
+#define SMFLYRICSSERVICEPLUGIN_H_
+
+#include <smfproviderbase.h>
+#include <smftrackinfo.h>
+#include <QString>
+#include <smfsubtitle.h>
+#include <smflyrics.h>
+#include <smfsubtitlesearchfilter.h>
+
+/**
+ * Interface specification for music track lyrics
+ *
+ * All of the functionality described here should be implemented by a service
+ * specific plug-in.
+ */
+class SmfLyricsServicePlugin : public QObject
+ {
+ Q_OBJECT
+public:
+ /**
+ * Constructor with default argument
+ * @param aParent The parent object
+ */
+ SmfLyricsServicePlugin( QObject* aParent = 0 );
+
+ /**
+ * Destructor
+ */
+ ~SmfLyricsServicePlugin( );
+
+ /**
+ * Method to get the provider information
+ * @return Instance of SmfProviderBase
+ */
+ virtual SmfProviderBase* getProviderInfo( ) = 0;
+
+ /**
+ * Method to get the lyrics
+ * @param aTrack The track whose lyrics need to be fetched
+ * @param aRequest [out] The request data to be sent to network
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+ virtual SmfPluginError lyrics( const SmfTrackInfo aTrack,
+ SmfPluginRequestData *aRequest ) = 0;
+
+ /**
+ * Method to get the subtitle
+ * @param aTrack The track whose subtitle need to be fetched
+ * @param aRequest [out] The request data to be sent to network
+ * @param aFilter The subtitle search filter if any
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+ virtual SmfPluginError subtitles( const SmfTrackInfo aTrack,
+ SmfPluginRequestData *aRequest,
+ const SmfSubtitleSearchFilter aFilter = 0 ) = 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.
+ * If last operation was lyrics(), aResult will be of type SmfLyrics
+ * If last operation was subtitles(), aResult will be of type SmfSubtitle
+ * @param aRetType [out] SmfPluginRetType
+ * @param aIsLastPage [out] true if this the last page, else false
+ * @return SmfPluginError
+ */
+ virtual SmfPluginError responseAvailable(
+ const SmfTransportResult aTransportResult,
+ QNetworkReply *aReply,
+ QVariant* aResult,
+ SmfPluginRetType aRetType,
+ bool aIsLastPage) = 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/example/clientapi/smf/inc/smfplugins/smfmusic/smfmusiceventsplugin.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,136 @@
+/**
+ * @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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section DESCRIPTION
+ *
+ * Interface specification for music events
+ *
+ * Note: This class has dependencies on QtMobility project
+ */
+
+#ifndef SMFMUSICEVENTSPLUGIN_H_
+#define SMFMUSICEVENTSPLUGIN_H_
+
+#include <smfproviderbase.h>
+#include <qtcontacts.h>
+#include <smfevent.h>
+#include <smfvenue.h>
+
+using namespace QtMobility;
+
+/**
+ * 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 QObject
+ {
+ Q_OBJECT
+public:
+ /**
+ * Constructor with default argument
+ * @param aParent The parent object
+ */
+ SmfMusicEventsPlugin( QObject* aParent = 0 );
+
+ /**
+ * Destructor
+ */
+ ~SmfMusicEventsPlugin( );
+
+ /**
+ * Method to get the provider information
+ * @return Instance of SmfProviderBase
+ */
+ virtual SmfProviderBase* getProviderInfo( ) = 0;
+
+ /**
+ * Method to get the events based on location
+ * @param aLocation Location of the event
+ * @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 events( const QtMobility::QContactGeolocation aLocation,
+ SmfPluginRequestData *aRequest,
+ const int aPageNum = 0,
+ const int aItemsPerPage = 10 ) = 0;
+
+ /**
+ * Method to get the venues based on location
+ * @param aLocation Location of the venue
+ * @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 venues( const QtMobility::QContactGeolocation aLocation,
+ SmfPluginRequestData *aRequest,
+ const int aPageNum = 0,
+ const int aItemsPerPage = 10 ) = 0;
+
+ /**
+ * Method to get the events based on venues
+ * @param aVenue Venue of the event
+ * @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 events( const SmfVenue aVenue,
+ SmfPluginRequestData *aRequest,
+ const int aPageNum = 0,
+ const int aItemsPerPage = 10 ) = 0;
+
+ /**
+ * Method to post events
+ * of posting the events is available
+ * @param aEventList The list of events to be posted
+ * @param aRequest [out] The request data to be sent to network
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+ virtual SmfPluginError postEvents( const QList<SmfEvent> aEventList,
+ SmfPluginRequestData *aRequest ) = 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.
+ * If last operation was events(), aResult will be of type QList<SmfEvent>
+ * If last operation was venues(), aResult will be of type QList<SmfVenue>
+ * If last operation was postEvents(), aResult will be of type bool
+ * @param aRetType [out] SmfPluginRetType
+ * @param aIsLastPage [out] true if this the last page, else false
+ * @return SmfPluginError
+ */
+ virtual SmfPluginError responseAvailable(
+ const SmfTransportResult aTransportResult,
+ QNetworkReply *aReply,
+ QVariant* aResult,
+ SmfPluginRetType aRetType,
+ bool aIsLastPage) = 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/example/clientapi/smf/inc/smfplugins/smfmusic/smfmusicsearchplugin.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,147 @@
+/**
+ * @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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section DESCRIPTION
+ *
+ * Interface specification for music search services
+ */
+
+#ifndef SMFMUSICSEARCHPLUGIN_H_
+#define SMFMUSICSEARCHPLUGIN_H_
+
+#include <smfproviderbase.h>
+#include <QList>
+#include <smfmusicfingerprint.h>
+#include <smftrackinfo.h>
+
+/**
+ * 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 QObject
+ {
+ Q_OBJECT
+public:
+ /**
+ * Constructor with default argument
+ * @param aParent The parent object
+ */
+ SmfMusicSearchPlugin( QObject *aParent = 0 );
+
+ /**
+ * Destructor
+ */
+ ~SmfMusicSearchPlugin( );
+
+ /**
+ * Method to get the provider information
+ * @return Instance of SmfProviderBase
+ */
+ virtual SmfProviderBase* getProviderInfo( ) = 0;
+
+ /**
+ * Method to get recommended tracks
+ * @param aTrack The track for which similar recommendations
+ * need to be fetched.
+ * @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 recommendations( const SmfTrackInfo aTrack,
+ SmfPluginRequestData *aRequest,
+ const int aPageNum = 0,
+ const int aItemsPerPage = 10 ) = 0;
+
+ /**
+ * Method to get similar tracks
+ * @param aTrack The track for which similar tracks
+ * need to be fetched.
+ * @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 tracks( const SmfTrackInfo aTrack,
+ SmfPluginRequestData *aRequest,
+ const int aPageNum = 0,
+ const int aItemsPerPage = 10) = 0;
+
+ /**
+ * Method to get tracks having a similar finger print
+ * @param aSignature The finger print to be searched for need to be
+ * fetched.
+ * @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 trackInfo( const SmfMusicFingerPrint aSignature,
+ SmfPluginRequestData *aRequest,
+ const int aPageNum = 0,
+ const int aItemsPerPage = 10 ) = 0;
+
+ /**
+ * Method to search information about where to buy this song from
+ * @param aTrack The track for which stores need to be searched
+ * @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 stores( const SmfTrackInfo aTrack,
+ SmfPluginRequestData *aRequest,
+ const int aPageNum = 0,
+ const int aItemsPerPage = 10 ) = 0;
+
+ /**
+ * Method to post the currently playing track
+ * @param aTrack The current playing track, that should be posted
+ * @param aRequest [out] The request data to be sent to network
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+ virtual SmfPluginError postCurrentPlaying( const SmfTrackInfo aTrack,
+ SmfPluginRequestData *aRequest ) = 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.
+ * If last operation was recommendations()or tracks() or trackInfo(),
+ * aResult will be of type QList<SmfTrackInfo>
+ * If last operation was postCurrentPlaying(), aResult will be of type bool
+ * @param aRetType [out] SmfPluginRetType
+ * @param aIsLastPage [out] true if this the last page, else false
+ * @return SmfPluginError
+ */
+ virtual SmfPluginError responseAvailable(
+ const SmfTransportResult aTransportResult,
+ QNetworkReply *aReply,
+ QVariant* aResult,
+ SmfPluginRetType aRetType,
+ bool aIsLastPage) = 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/example/clientapi/smf/inc/smfplugins/smfmusic/smfmusicserviceplugin.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,103 @@
+/**
+ * @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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section DESCRIPTION
+ *
+ * Interface specification for music services
+ */
+
+#ifndef SMFMUSICSERVICEPLUGIN_H_
+#define SMFMUSICSERVICEPLUGIN_H_
+
+#include <smfproviderbase.h>
+#include <smfmusicprofile.h>
+#include <smfvenue.h>
+
+/**
+ * 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 QObject
+ {
+ Q_OBJECT
+public:
+ /**
+ * Constructor with default argument
+ * @param aParent The parent object
+ */
+ SmfMusicServicePlugin( QObject *aParent = 0 );
+
+ /**
+ * Destructor
+ */
+ ~SmfMusicServicePlugin( );
+
+ /**
+ * Method to get the provider information
+ * @return Instance of SmfProviderBase
+ */
+ virtual SmfProviderBase* getProviderInfo( ) = 0;
+
+ /**
+ * 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 venue
+ * @param aVenue The venue which is the search criteria
+ * @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 searchUser( const SmfVenue aVenue,
+ SmfPluginRequestData *aRequest,
+ const int aPageNum = 0,
+ const int aItemsPerPage = 10) = 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.
+ * If last operation was userInfo(), aResult will be of type SmfMusicProfile
+ * If last operation was searchUser(), aResult will be of type
+ * QList<SmfMusicProfile>
+ * @param aRetType [out] SmfPluginRetType
+ * @param aIsLastPage [out] true if this the last page, else false
+ * @return SmfPluginError
+ */
+ virtual SmfPluginError responseAvailable(
+ const SmfTransportResult aTransportResult,
+ QNetworkReply *aReply,
+ QVariant* aResult,
+ SmfPluginRetType aRetType,
+ bool aIsLastPage) = 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/example/clientapi/smf/inc/smfplugins/smfmusic/smfplaylistserviceplugin.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,144 @@
+/**
+ * @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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section DESCRIPTION
+ *
+ * Interface specification for playlists service
+ */
+
+#ifndef SMFPLAYLISTSERVICEPLUGIN_H_
+#define SMFPLAYLISTSERVICEPLUGIN_H_
+
+#include <smfproviderbase.h>
+#include <smfplaylist.h>
+#include <smfmusicprofile.h>
+#include <smftrackinfo.h>
+
+/**
+ * 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 QObject
+ {
+ Q_OBJECT
+public:
+ /**
+ * Constructor with default argument
+ * @param aParent The parent object
+ */
+ SmfPlaylistServicePlugin( QObject *aParent = 0 );
+
+ /**
+ * Destructor
+ */
+ ~SmfPlaylistServicePlugin( );
+
+ /**
+ * Method to get the provider information
+ * @return Instance of SmfProviderBase
+ */
+ virtual SmfProviderBase* getProviderInfo( ) = 0;
+
+ /**
+ * 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 = 0,
+ const int aItemsPerPage = 10) = 0;
+
+ /**
+ * Method to get the playlist of a particular user
+ * @param aUser The user whose playlists need to be fetched
+ * @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 playlistsOf( const SmfMusicProfile aUser,
+ SmfPluginRequestData *aRequest,
+ const int aPageNum = 0,
+ const int aItemsPerPage = 10) = 0;
+
+ /**
+ * Method to add tracks to a playlist
+ * @param aPlaylist The playlist where tracks should be added
+ * @param aTracks The tracks to be added to the playlist
+ * @param aRequest [out] The request data to be sent to network
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+ virtual SmfPluginError* addToPlaylist( const SmfPlaylist aPlaylist,
+ const QList<SmfTrackInfo> aTracks,
+ SmfPluginRequestData *aRequest ) = 0;
+
+ /**
+ * Method to post the current playing playlist
+ * @param aPlaylist The current playing playlist which should be posted
+ * @param aRequest [out] The request data to be sent to network
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+ virtual SmfPluginError* postCurrentPlayingPlaylist(
+ const SmfPlaylist aPlaylist,
+ SmfPluginRequestData *aRequest ) = 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 An output parameter to the plugin manager.If the
+ * return value is SmfSendRequestAgain, QVariant will be of type
+ * SmfPluginRequestData.
+ * 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
+ * @return SmfPluginRetType
+ */
+ /**
+ * 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.
+ * 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
+ * @param aRetType [out] SmfPluginRetType
+ * @param aIsLastPage [out] true if this the last page, else false
+ * @return SmfPluginError
+ */
+ virtual SmfPluginError responseAvailable(
+ const SmfTransportResult aTransportResult,
+ QNetworkReply *aReply,
+ QVariant* aResult,
+ SmfPluginRetType aRetType,
+ bool aIsLastPage) = 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/example/clientapi/smf/inc/smfplugins/smfpictures/smfgalleryplugin.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,151 @@
+/**
+ * @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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section DESCRIPTION
+ *
+ * Interface specification for plugins that implement gallery related services
+ */
+
+#ifndef SMFGALLERYPLUGIN_H_
+#define SMFGALLERYPLUGIN_H_
+
+#include <smfproviderbase.h>
+#include <smfpicture.h>
+#include <smfcomment.h>
+
+/**
+ * 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 QObject
+ {
+ Q_OBJECT
+public:
+ /**
+ * Constructor with default argument
+ * @param aParent The parent object
+ */
+ SmfGalleryPlugin( QObject* aParent = 0 );
+
+ /**
+ * Destructor
+ */
+ ~SmfGalleryPlugin( );
+
+ /**
+ * Method to get the provider information
+ * @return Instance of SmfProviderBase
+ */
+ virtual SmfProviderBase* getProviderInfo( ) = 0;
+
+ /**
+ * 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 = 0,
+ const int aItemsPerPage = 10) = 0;
+
+ /**
+ * Method to get a description
+ * @param aImage The image abot which the description is required
+ * @param aRequest [out] The request data to be sent to network
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+ virtual SmfPluginError description( const SmfPicture &aImage,
+ SmfPluginRequestData *aRequest ) = 0;
+
+ /**
+ * Method to upload a picture
+ * @param aImage The image to be uploaded
+ * @param aRequest [out] The request data to be sent to network
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+ virtual SmfPluginError upload( const SmfPicture &aImage,
+ SmfPluginRequestData *aRequest ) = 0;
+
+ /**
+ * Method to upload a list of pictures
+ * @param aImages The list of images to be uploaded
+ * @param aRequest [out] The request data to be sent to network
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+ virtual SmfPluginError upload( const QList<SmfPicture> &aImages,
+ SmfPluginRequestData *aRequest ) = 0;
+
+ /**
+ * Method to post comment on a picture
+ * is available
+ * @param aImage The image on which comment is to be posted
+ * @param aComment The comment to be posted
+ * @param aRequest [out] The request data to be sent to network
+ * @return SmfPluginError Plugin error if any, else SmfPluginErrNone
+ */
+ virtual SmfPluginError postComment( const SmfPicture &aImage,
+ const SmfComment &aComment,
+ SmfPluginRequestData *aRequest ) = 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.
+ * 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 aIsLastPage [out] true if this the last page, else false
+ * @return SmfPluginError
+ */
+ virtual SmfPluginError responseAvailable(
+ const SmfTransportResult aTransportResult,
+ QNetworkReply *aReply,
+ QVariant* aResult,
+ SmfPluginRetType aRetType,
+ bool aIsLastPage) = 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/clientapi/smf/inc/smfplugins/smfprovider/smfproviderbase.h Thu Mar 25 14:44:08 2010 +0530
@@ -0,0 +1,286 @@
+/**
+ * @file smfproviderbase.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 "{License}"
+ * which accompanies this distribution, and is available
+ * at the URL "{LicenseUrl}".
+ *
+ * @section 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 <QNetworkAccessManager>
+
+
+/**
+ * The enumeration used to track the plugin methods return type
+ */
+enum SmfPluginRetType
+ {
+ SmfSendRequestAgain = 0,
+ SmfRequestComplete
+ };
+
+/**
+ * The enumeration used to indicate result of transport to the plugins
+ */
+enum SmfTransportResult
+ {
+ SmfNoError = 0,
+ SmfNetworkTimeOut,
+ SmfIAPChanged,
+ SmfUnknownError
+ };
+
+/**
+ * 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 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 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;
+
+ };
+
+
+/**
+ * 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 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 );
+
+ /**
+ * Destructor
+ */
+ ~SmfProviderBase( );
+
+ /**
+ * Method to get the Localisable name of the service.
+ * @return The Localisable name of the service.
+ */
+ QString serviceName( );
+
+ /**
+ * Method to get the Logo of the service
+ * @return The Logo of the service
+ */
+ QImage serviceIcon( );
+
+ /**
+ * Method to get the Readable service description
+ * @return The Readable service description
+ */
+ QString description( );
+
+ /**
+ * Method to get the Website of the service
+ * @return The Website of the service
+ */
+ QUrl serviceUrl( );
+
+ /**
+ * Method to get the URL of the Application providing this service
+ * @return The URL of the Application providing this service
+ */
+ QUrl applicationUrl( );
+
+ /**
+ * Method to get the Icon of the application
+ * @return The Icon of the application
+ */
+ QImage applicationIcon( );
+
+ /**
+ * Method to get the Plugin specific ID
+ * @return The Plugin specific ID
+ */
+ uint 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
+ */
+ uint authenticationApp( QString &aProgram, QStringList & aArguments,
+ QIODevice::OpenModeFlag aMode = QIODevice::ReadWrite );
+
+ /**
+ * 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( );
+
+ /**
+ * Method to get the data usage of each plugin
+ * @param aUsage The data usage structure
+ */
+ void getDataUsage( SmfPluginDataUsage &aUsage );
+
+ /**
+ * 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( );
+
+private:
+ 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
+ uint m_pluginId; // The Plugin specific ID
+ uint 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_H_ */
--- a/example/clientapi/smf/smfcontact.h Tue Mar 02 16:24:32 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +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:
-* Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
-*
-* Contributors:
-*
-* Description:
-* Interface spefication for profile of a contact in a social networking site
-*
-/*************************************************************************************************/
-
-#ifndef SMFPROFILE_H
-#define SMFPROFILE_H
-
-#include <QContactDetail>
-
-class SmfProvider;
-
-/**
- * Interface for a contact from a service provider. This class
- * provides basic functionality to allow applications to obtain details of a
- * contact (self or friends) in a social networking service.
- *
- * All of the functionality described here should be implemented by a service
- * specific plug-in object.
- */
-class SmfContact : public QObject
-{
- Q_OBJECT;
-
-public:
- // Seeing as this is a plug-in implementation, these will realistically
- // be generated by SMF factory of some kind
- SmfContact(QObject* parent = 0);
- ~SmfContact();
-
-
-private:
- /*
- QContactAddress Address;
- QContactAnniversary Anniversary;
- QContactAvatar Avatar;
- QContactBirthday Birthday;
- QContactEmailAddress EmailAddress;
- QContactGender Gender;
- QContactGeolocation Geolocation;
- QContactGuid Guid;
- QContactName Name;
- QContactNickname Nickname;
- QContactNote Note;
- QContactOnlineAccount OnlineAccount;
- QContactOrganization Organization;
- QContactPhoneNumber PhoneNumber;
- QContactTimestamp Timestamp;
- QContactType Type;
- QContactUrl Url;
- */
- QVariantMap details;
-
-public:
- virtual QStringList subTypes() const;
-
-slots:
- virtual void value(const QString& subType,const QVariant& info); //for any contact
- virtual bool setValue( const QString & key, const QVariant & value );//for self contact only
-
-signals:
- virtual void detailsUpdated(const QString& key); //for setvalue on self contact
-};
-#endif // SMFPROFILE_H
--- a/example/clientapi/smf/smffcontactfetcher.h Tue Mar 02 16:24:32 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +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:
-* Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
-*
-* Contributors:
-*
-* Description:
-* Interface spefication for list of contacts from a site
-*
-*/
-
-#ifndef SMFCONTACTHETCHER_H
-#define SMFCONTACTHETCHER_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
-
-
-/**
- * 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 branding information for the particular service implementation
- * is available from base-class functions. See also:
- * SmfProvider::serviceName(), SmfProvider::serviceIcon(), SmfProvider::description()
- *
- * All of the functionality described here should be implemented by a service
- * specific plug-in object.
- */
-class SmfContactFetcher : public SmfProvider
-{
- Q_OBJECT;
-
-public:
- // Seeing as this is a plug-in implementation, these will realistically
- // be generated by SMF factory of some kind
- SmfContactFetcher(QObject* parent = 0);
- ~SmfContactFetcher();
-
-public:
- // Get the friend listing - might be made asynchrnous later
- virtual QList<SmfContact> friends() = 0; // list of contact objects
- virtual QList<SmfContact> followers() = 0; // list of contact objects
- virtual QList<SmfContact> search(SmfContact) = 0; // list of contact objects
- virtual QList<SmfGroup> groups() = 0; // list of group objects
- virtual QList<SmfContact> searchInGroup(SmfGroup) = 0; // list of contact objects
-
- virtual SmfContactModel model() = 0; // maybe we can make a QItemModel-derived model?
-
-
-slots:
-
-signals:
- // Notification of remote changes to the contactlist,
- // probably should be done through model
- virtual void friendsChanged() = 0;
- virtual void followersChanged() = 0;
- virtual void groupChanged() = 0;
-};
-
-
-
-#endif // SMFCONTACTHETCHER_H
--- a/example/clientapi/smf/smfgallery.h Tue Mar 02 16:24:32 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +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:
-* Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
-*
-* Contributors:
-*
-* Description:
-* Interface spefication for a remote picture gallery
-*
-*/
-
-#ifndef SMFGALLERY_H
-#define SMFGALLERY_H
-
-class SmfProvider;
-class SmfPicture;
-class SmfGalleryModel;
-class SmfComment; //user id, string, and url
-
-/**
- * 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 base-class functions. See also:
- * SmfProvider::serviceName(), SmfProvider::serviceIcon()
- *
- * All of the functionality described here should be implemented by a service
- * specific plug-in object.
- */
-class SmfGallery : public SmfProvider
-{
- Q_OBJECT;
-
-public:
- // Seeing as this is a plug-in implementation, these will realistically
- // be generated by SMF factory of some kind
- SmfGallery(QObject* parent = 0);
- ~SmfGallery();
-
-public:
- // Get the picture listing
- virtual QList<SmfPicture> pictures() = 0; // basic list of picture objects
- virtual SmfGalleryModel model() = 0; // maybe we can make a QItemModel-derived model?
- virtual QString description() = 0; // A user title or caption, maybe?
-
-slots:
- // Upload an image, note these can be slots to connect to UI controls more easily
- virtual int upload(SmfPicture image) = 0;
- virtual int upload(QList<SmfPicture> images) = 0;
- virtual int postComment(SmfPicture image, SmfComment comment) = 0;
-
-signals:
- // Notification of remote changes to the gallery,
- // probably should be done through model
- virtual void galleryUpdated() = 0;
-};
-
-#endif // SMFGALLERY_H
-
--- a/example/clientapi/smf/smfmusic.h Tue Mar 02 16:24:32 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,189 +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:
-* Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
-*
-* Contributors:
-*
-* Description:
-* Interface spefication for music related services
-*
-*/
-
-#ifndef SMFMUSIC_H
-#define SMFMUSIC_H
-
-class SmfProvider; //basic Smf service Provider info
-class SmfMusicRating;//rating value from 0..31 - services would map accordingly
-class SmfMusicProfile; //user profile containing music usage and interest info, extends SmfContact
-class SmfTracknfo; //id, title, album, artist, genre, tag, director,release year, rating, comment info
-class SmfMusicFingerPrint; //generation is not in scope of smf
-
-class SmfMusicModel;
-
-/**
- * basic music service ("org.symbian.smf.music.service")
- */
-class SmfMusicService : public SmfProvider
-{
- Q_OBJECT;
-
-public:
- // Seeing as this is a plug-in implementation, these will realistically
- // be generated by SMF factory of some kind
- SmfMusicService(QObject* parent = 0);
- ~SmfMusicService();
-
-public:
- virtual SmfMusicProfile userinfo() = 0; // get self profile information
- virtual QList<SmfMusicProfile> searchUser(SmfVenue venue) = 0; // search information about other service users
- virtual SmfMusicModel model() = 0; // maybe we can make a QItemModel-derived model?
-
-slots:
-
-
-signals:
-
-};
-
-/**
-* provides service ("org.symbian.smf.music.search")
-*/
-class SmfMusicSearch : public SmfProvider
-{
- Q_OBJECT;
-
-public:
- // Seeing as this is a plug-in implementation, these will realistically
- // be generated by SMF factory of some kind
- SmfMusicSearch(QObject* parent = 0);
- ~SmfMusicSearch();
-
-public:
- // Get the track listing - might be made asynchrnous later
- virtual QList<SmfTrackInfo> recommendations(SmfTrackInfo track) = 0; // basic list of track objects
- virtual QList<SmfTrackInfo> tracks(SmfTrackInfo track) = 0; // basic list of track objects
- virtual QList<SmfTrackInfo> trackInfo(SmfMusicFingerPrint signature) = 0; // search by fingerprint object
- virtual QList<SmfProvider> stores(SmfTrackInfo track) = 0; // search information about where to buy this song from
-
-slots:
- virtual int postCurrentPlaying(SmfTrackInfo track) = 0;
- //virtual int postRating(SmfTrackInfo track, SmfMusicRating rate) = 0;
- //virtual int postComments(SmfTrackInfo track, SmfComment comment) = 0;
-
-signal:
-
-}
-
-class SmfPlaylist;//remote playlist
-/**
- * provides service ("org.symbian.smf.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 base-class functions. See also:
- * SmfProvider::serviceName(), SmfProvider::serviceIcon()
- *
- * All of the functionality described here should be implemented by a service
- * specific plug-in object.
- *
- */
-class SmfPlaylistService : public SmfProvider
-{
- Q_OBJECT;
-
-public:
- // Seeing as this is a plug-in implementation, these will realistically
- // be generated by SMF factory of some kind
- SmfPlaylistService(QObject* parent = 0);
- ~SmfPlaylistService();
-
-public:
- // Get the playist listing - might be made asynchrnous later
- virtual QList<SmfPlaylist> playlists() = 0; // basic list of playlist objects for the logged-in user
- virtual QList<SmfPlaylist> playlistsOf(SmfMusicProfile user) = 0; // basic list of playlist objects for other user
-
-
-slots:
- // Upload currently playing song, etc - slots can connect to UI controls more easily
- virtual int addToPlaylist(SmfPlaylist plst, QList<SmfTrackInfo> tracks) = 0;
- virtual int postCurrentPlayingPlaylist(SmfPlaylist plst) = 0;
-
-
-signals:
- //signals remote updation of playlist
- virtual int playlistUpdated(void) = 0;
-};
-
-
-
-class SmfEvent;//musical events
-class SmfVenue;//popular venues
-/**
-* provides service ("org.symbian.smf.music.events")
-*/
-class SmfMusicEvents : public SmfProvider
-{
- Q_OBJECT;
-
-public:
- // Seeing as this is a plug-in implementation, these will realistically
- // be generated by SMF factory of some kind
- SmfMusicEvents(QObject* parent = 0);
- ~SmfMusicEvents();
-
-public:
- virtual QList<SmfEvents> events(QContactGeolocation location) = 0; // basic list of events objects
- virtual QList<SmfVenue> venues(QContactGeolocation location) = 0; // basic list of venue objects
- virtual QList<SmfEvents> events(SmfVenue venue) = 0; // basic list of events objects
-
-slot:
- //update your event
- virtual void postEvents(QList<SmfEvents> events); //might not be supported by all service provider
-
-signal:
- virtual void eventsupdated(void);
-};
-
-
-
-
-class SmfSubtitleSearchFilter;//language, frame rate, duration, release year
-/**
-* provides service ("org.symbian.smf.music.lyrics")
-*/
-class SmfLyricsService : public SmfProvider
-{
- Q_OBJECT;
-
-public:
- // Seeing as this is a plug-in implementation, these will realistically
- // be generated by SMF factory of some kind
- SmfLyricsService(QObject* parent = 0);
- ~SmfLyricsService();
-
-public:
- // Get the lyrics listing - might be made asynchrnous later
- virtual QList<SmfLyrics> lyrics(SmfTrackInfo track) = 0; //texts without time information
- virtual QList<SmfSubtitle> subtitles(SmfTrackInfo track, SmfSubtitleSearchFilter filter) = 0; // texts with time information
-
-
-slots:
-
-
-signals:
-
-};
-
-
-#endif // SMFMUSIC_H
-
--- a/example/clientapi/smf/smfpostprovider.h Tue Mar 02 16:24:32 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +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:
-* Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
-*
-* Contributors:
-*
-* Description:
-* Interface spefication for posting updates to a social site
-*
-*/
-#ifndef SMFPOSTPROVIDER_H
-#define SMFPOSTPROVIDER_H
-
-class SmfProvider; //base-class for service provider
-class SmfContact; //class for Contact in a social network
-class SmfLocationInfo; //class for geo location
-class SmfPost; //class for information (text, image and url) contained in post in social network
-
-/**
- * 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 branding information for the particular service implementation
- * is available from base-class functions. See also:
- * SmfProvider::serviceName(), SmfProvider::serviceIcon(), SmfProvider::description()
- *
- * All of the functionality described here should be implemented by a service
- * specific plug-in object.
- */
-class SmfPostProvider : public SmfProvider
-{
- Q_OBJECT;
-
-public:
- // Seeing as this is a plug-in implementation, these will realistically
- // be generated by SMF factory of some kind
- SmfPostProvider(QObject* parent = 0);
- ~SmfPostProvider();
-
-public:
- // Get the friend listing - might be made asynchrnous later
- virtual QList<SmfPost> getPosts(SmfStatusData statusData) = 0; // list of contact objects
- virtual SmfContactModel model() = 0; // maybe we can make a QItemModel-derived model?
-
-
-slots:
- virtual void updatePost(SmfPost postData,SmfLocationInfo location) = 0; // list of contact objects
- virtual void updatePostDirected(SmfPost postData,SmfContact contact,SmfLocationInfo location) = 0; // list of contact objects
- virtual QList<SmfContact> postAppearence(SmfPresenceInfo appearence) = 0; // appear offline, busy, do-not-disturb
-
-signals:
- // Notification of remote changes to the contactlist,
- // probably should be done through model
- virtual void friendsChanged() = 0;
- virtual void followersChanged() = 0;
- virtual void groupChanged() = 0;
-};
-
-#endif // SMFPOSTPROVIDER_H
--- a/example/clientapi/smf/smfprovider.h Tue Mar 02 16:24:32 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 "{License}"
-* which accompanies this distribution, and is available
-* at the URL "{LicenseUrl}".
-*
-* Initial Contributors:
-* Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
-*
-* Contributors:
-*
-* Description:
-* Interface spefication for sfm service provider
-*
-*/
-
-#ifndef SMFPROVIDER_H
-#define SMFPROVIDER_H
-
-class SmfContact;
-
-/**
- * Interface for a base service provider. Other service provider classes o derive from
- * 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 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:
- virtual QString serviceName() = 0; // licalizable name of the service
- virtual QImage serviceIcon() = 0; // Logo of the service
- virtual QString description() = 0; // readable service description
- virtual QUrl serviceUrl() = 0; // website of the service
- virtual QUrl applicationUrl() = 0; // application providing this service
- virtual SmfContact selfContact()=0;//provides profile of the accound holder
-
-slots:
- //None at the moment
-
-signals:
- //None at the moment
-};
-
-#endif // SMFPROVIDER_H
--- a/example/clientapi/smf/smfrelationmgr.h Tue Mar 02 16:24:32 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 "{License}"
-* which accompanies this distribution, and is available
-* at the URL "{LicenseUrl}".
-*
-* Initial Contributors:
-* Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
-*
-* Contributors:
-*
-* Description:
-* Interface spefication for managing associations between various social contacts
-*
-*/
-
-#ifndef SMFRELATIONMGR_H
-#define SMFRELATIONMGR_H
-
-class SmfProvider;
-class SmfContact;
-class SmfRelationId; //persistent Id of a relation
-
-class SmfRelationItem : public SmfContact
-{
- private:
- //SmfProvider* provider;
-
- public:
- virtual SmfProvider* provider getProvider()=0;
- virtual SmfProvider* provider setProvider(SmfProvider* provider)=0;
-};
-
-/**
- * Interface for a base service provider. Other service provider classes o derive from
- * 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 SmfRelationMgr : public QObject
-{
- Q_OBJECT;
-
-public:
- // Seeing as this is a plug-in implementation, these will realistically
- // be generated by SMF factory of some kind
- SmfRelationMgr(QObject* parent = 0);
- ~SmfRelationMgr();
-
-public:
- //create a relation with first contact (id optional)
- virtual SmfRelationId create(SmfProvider provider, SmfContact conact, uint id) = 0;
- // assign contact to a relation
- virtual bool associate(SmfRelationId relation, SmfProvider provider, SmfContact conact) = 0;
- //returns first contact in the relation when exists
- virtual SmfContact searchById(SmfRelationId relation)=0;
- //number of contacts in a relation
- virtual uint count(SmfRelationId relation) = 0;
-
-slots:
- virtual QList<SmfRelationItem> get(SmfRelationId relation)=0;//list of contacts and their provider
- virtual QList<SmfRelationId> getAll()=0;//list of all relations
-
-signals:
- //None at the moment
-};
-
-#endif // SMFRELATIONMGR_H