# HG changeset patch # User cgandhi # Date 1269508448 -19800 # Node ID 4b1e636e8a710ded02cefc8e5a954e9020e88f34 # Parent 5d2360e70d9f405dcc1d1d1352f7464e3e87b574 Updating the interfaces for SMFClient and SMFPlugins diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/example_usage.cpp --- 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 galleries = Smf::GetServices("org.symbian.smf.gallery"); + { + // Some common interface for finding implementations. + QList 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 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 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 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 relations = mgr.getAll(); - foreach(SmfRelationId id, relations) { - QList 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 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 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 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 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 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 postServices = Smf::GetServices("org.symbian.smf.contact.posts\0.2"); - //search songs similar to currently playing - QList 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 musicServices = Smf::GetServices("org.symbian.smf.music\0.2"); - //allow user to select a track and get purchase links - QList 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 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 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)); + } diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/common/SmfClientGlobal.h --- /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 + + #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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/common/smfcontacts/smfcontact.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 + +//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 diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/common/smfcontacts/smfgroup.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 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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/common/smfcontacts/smfpost.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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/common/smfmusic/smfevent.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 +#include +#include +#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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/common/smfmusic/smflyrics.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 +#include +#include +#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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/common/smfmusic/smfmusicfingerprint.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 + +/** + * 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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/common/smfmusic/smfmusicprofile.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 +#include "SmfClientGlobal.h" + +#include "smfcontact.h" +class SmfTrackInfo; +class SmfEventsList; +typedef QList 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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/common/smfmusic/smfmusicrating.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 +#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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/common/smfmusic/smfplaylist.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 +#include + +/** + * 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& 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 &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 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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/common/smfmusic/smfsubtitle.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 +#include +#include +#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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/common/smfmusic/smfsubtitlesearchfilter.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 +#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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/common/smfmusic/smftrackinfo.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 +#include +#include +#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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/common/smfmusic/smfvenue.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 +#include // Qt mobility class +#include +#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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/common/smfpictures/smfcomment.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 +#include +#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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/common/smfpictures/smfpicture.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 +#include +#include +#include +#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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/smfclient/smfcontactfetcher.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 +#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 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 diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/smfclient/smfgallery.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 +#include +#include +//List of SmfPicture +typedef QList 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 + diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/smfclient/smfmusic.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 + +#include +#include + +#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 SmfMusicProfileList; +typedef QList SmfTrackInfoList; +typedef QList SmfEventsList; +typedef QList SmfProviderList; +typedef QList SmfPlaylistList; +typedef QList SmfVenueList; +typedef QList SmfLyricsList; +typedef QList 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 + diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/smfclient/smfpostprovider.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 +#include +#include + +#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 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 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 diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/smfclient/smfprovider.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 +#include +#include + +#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 diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/smfplugins/smfcontacts/smfcontactfetcherplugin.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 +#include +#include + +/** + * 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 + * If last operation was groups(), aResult will be of type QList + * @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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/smfplugins/smfcontacts/smfpostproviderplugin.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 +#include +#include +#include + + +/** + * 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 + * 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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/smfplugins/smfmusic/smflyricsserviceplugin.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 +#include +#include +#include +#include +#include + +/** + * 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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/smfplugins/smfmusic/smfmusiceventsplugin.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 +#include +#include +#include + +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 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 + * If last operation was venues(), aResult will be of type QList + * 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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/smfplugins/smfmusic/smfmusicsearchplugin.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 +#include +#include +#include + +/** + * 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 + * 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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/smfplugins/smfmusic/smfmusicserviceplugin.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 +#include +#include + +/** + * 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 + * @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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/smfplugins/smfmusic/smfplaylistserviceplugin.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 +#include +#include +#include + +/** + * 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 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 + * 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 + * 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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/smfplugins/smfpictures/smfgalleryplugin.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 +#include +#include + +/** + * 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 &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 + * 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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/inc/smfplugins/smfprovider/smfproviderbase.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 +#include +#include +#include + + +/** + * 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_ */ diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/smfcontact.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 - -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 diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/smffcontactfetcher.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 friends() = 0; // list of contact objects - virtual QList followers() = 0; // list of contact objects - virtual QList search(SmfContact) = 0; // list of contact objects - virtual QList groups() = 0; // list of group objects - virtual QList 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 diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/smfgallery.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 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 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 - diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/smfmusic.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 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 recommendations(SmfTrackInfo track) = 0; // basic list of track objects - virtual QList tracks(SmfTrackInfo track) = 0; // basic list of track objects - virtual QList trackInfo(SmfMusicFingerPrint signature) = 0; // search by fingerprint object - virtual QList 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 playlists() = 0; // basic list of playlist objects for the logged-in user - virtual QList 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 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 events(QContactGeolocation location) = 0; // basic list of events objects - virtual QList venues(QContactGeolocation location) = 0; // basic list of venue objects - virtual QList events(SmfVenue venue) = 0; // basic list of events objects - -slot: - //update your event - virtual void postEvents(QList 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 lyrics(SmfTrackInfo track) = 0; //texts without time information - virtual QList subtitles(SmfTrackInfo track, SmfSubtitleSearchFilter filter) = 0; // texts with time information - - -slots: - - -signals: - -}; - - -#endif // SMFMUSIC_H - diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/smfpostprovider.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 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 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 diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/smfprovider.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 diff -r 5d2360e70d9f -r 4b1e636e8a71 example/clientapi/smf/smfrelationmgr.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 get(SmfRelationId relation)=0;//list of contacts and their provider - virtual QList getAll()=0;//list of all relations - -signals: - //None at the moment -}; - -#endif // SMFRELATIONMGR_H