diff -r edb9dc8273d9 -r c39a6cfd1fb9 example/clientapi/example_usage.cpp --- a/example/clientapi/example_usage.cpp Thu Apr 22 15:18:37 2010 +0530 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,336 +0,0 @@ -#include "smfglobal.h" -#include "smfclient.h" -#include "smfprovider.h" -#include "smfgallery.h" -#include "smfcontact.h" -#include "smfpostprovider.h" -#include "smfcontactfetcher.h" -#include "smfmusic.h" -#include "smfpicture.h" -#include "smftrackinfo.h" -#include "smfmusicprofile.h" -#include "smflyrics.h" -#include "smfactions.h" -#include "smfactivityfetcher.h" -#include -#include "qtcontacts.h" -#include -#include -#include - -using namespace QtMobility; - -class MyAppView //: public QAbstractItemView - { -public: - void add(QImage pic); - void add(SmfTrackInfo trackInfo); - void add(QContact qc); - void setPicture(QImage image); - void setTitle(QString cap); - void setIcon(QImage image); - void setDescription(QString desc); - void setProvider(SmfProvider p); - void setLyricsData(SmfLyrics l); - }; - - -class MyApplication :public QObject - { - Q_OBJECT - -public slots: - void displayGallery(); - void showPicsSlot(SmfPictureList* pics, QString err); - void uploadPicture(QImage* picture, QList galleries); - void uploaded(bool success); - - void displayFriends(); - void showlist(SmfContactList* friendsList); - void postUpdate(); - void showPosts(SmfPostList* posts, QString err); - - void getMusic(SmfTrackInfo currTrack); - void showTrackSearch(SmfTrackInfoList* songs); - void showStore(SmfProviderList* stores); - void updateCurrentPlaying(QList musicServices, SmfTrackInfo currTrack); - void displayLyrics(SmfTrackInfo currTrack); - void showLyrics(SmfLyricsList* list); - - void getActivities(); - void showActivities(SmfActivityEntryList* entries); -private: - MyAppView* m_view; - SmfClient client; - SmfGallery* m_smfgl; - SmfContactFetcher* m_smfcf; - SmfMusicService* m_smfms; - QList m_myfrndz; - }; -/** 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 = client.GetServices("org.symbian.smf.client.gallery\0.2"); - - // We will use the first one now - SmfProvider smfp = galleries->value(0); - SmfGallery* myGallery = new SmfGallery(&smfp); - - // Adjust our view to show where these pictures came from - QImage imge = smfp.serviceIcon(); - QString desc = smfp.description(); - QString name = smfp.serviceName(); - m_view->setIcon(imge); - m_view->setProvider(smfp); - m_view->setDescription(desc); - - /** - * Asynchrnous request to fetch the pictures. - * The picturesAvailable() signal is emitted - * with SmfPictureList once the pictures have arrived. - */ - myGallery->pictures(); - connect(myGallery,SIGNAL(picturesAvailable(SmfPictureList*, QString, SmfResultPage )), - SLOT(showPicsSlot(SmfPictureList*, QString))); - - m_smfgl = myGallery; - } - -void MyApplication::showPicsSlot(SmfPictureList* pics, QString err) - { - //check err string if there is any error - if(err.compare("Err")) return; - //if no error - foreach(SmfPicture pic, *pics) { - m_view->add(pic.picture() ); // 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) - { - /** - * When uploading is finished we can check the success of the uploading - */ - QObject::connect(m_smfcf,SIGNAL(uploadFinished(bool)),SLOT(uploaded(bool))); - SmfPicture* smfPic = new SmfPicture(*picture); - // The list could be from a selection of galleries chosen by the user, - // think multiple TweetDeck accounts? - foreach(SmfGallery gallery, galleries) - { - gallery.upload(smfPic); - } - } - -/** - * Slot to catch the uploading finished event - */ -void MyApplication::uploaded(bool success) - { - if(!success) - { - //error occured while uploading - } - } - -/** - * 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 = client.GetServices("org.symbian.smf.cleint.contact.fetcher\0.2"); - SmfProvider smfp = contactFetcherList->value(0); - SmfContactFetcher* smfcf = new SmfContactFetcher(&smfp); - - //Request friend list, the friendsListAvailable() signal - //is emitted with SmfContactList once data is arrived. - QObject::connect(smfcf,SIGNAL(friendsListAvailable(SmfContactList*, QString, SmfResultPage )), - SLOT(showlist(SmfContactList*))); - smfcf->friends(); - - m_smfcf = smfcf; - } - -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( (m_smfcf->getProvider())->serviceIcon() ); - m_view->setDescription( (m_smfcf->getProvider())->description() ); - - //now display the images - foreach(SmfContact contact, *friendsList) { - QVariant data = contact.value("Avatar"); - QImage pic = data.value(); - QContact qc; - contact.convert(qc); - m_view->add(qc); - m_myfrndz.append(contact); - } - } -/** - * 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 = client.GetServices("org.symbian.smf.client.contact.posts\0.2"); - - //let us use the first one - QString servName = postServices->value(0).serviceName(); - if(!servName.compare("Facebook.com")) return; - SmfProvider smfp = postServices->value(0); - SmfPostProvider* myPostServer = new SmfPostProvider(&smfp); - - //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->getProvider())->serviceIcon() ); - m_view->setProvider(myPostServer->getProvider()); - m_view->setDescription((myPostServer->getProvider())->description() ); - - SmfPost reply("this is a text post", this); - //post my udpate to be visible to all, connect to updatePostFinished() - // signal of SmfPostProvider to track the success - SmfContact frnd(m_myfrndz.value(0)); - myPostServer->postDirected(reply,frnd); - - //Asynchronously get all posts to me in my profle (e.g. twits from all friends) - //connect to postsAvailable to show the post - myPostServer->posts(); - - QObject::connect(myPostServer, - SIGNAL(postsAvailable(SmfPostList*, QString, SmfResultPage )), - SLOT(showPosts(SmfPostList*, QString))); - } -void MyApplication::showPosts(SmfPostList* posts, QString /*err*/) - { - //Show the first post - SmfPost post = posts->at(0); - m_view->setDescription( post.toPlainText() ); - } -/** - * 5. This is an example of getting song recommendations from a social netowrking sites - */ -void MyApplication::getMusic(SmfTrackInfo currTrack) - { - // Some common interface for finding implementations. - QList* smfProList = client.GetServices("org.symbian.smf.client.music\0.2"); - SmfProvider smfp = smfProList->value(0); - SmfMusicSearch* mServer = new SmfMusicSearch(&smfp); - - QObject::connect(mServer,SIGNAL(trackSearchAvailable(SmfTrackInfoList*, QString,SmfResultPage )),this,SLOT(showTrackSearch(SmfTrackInfoList*))); - QObject::connect(mServer,SIGNAL(storeSearchAvailable(SmfProviderList*, QString,SmfResultPage )),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->getProvider()->serviceIcon() ); - m_view->setProvider( mServer->getProvider()); - m_view->setDescription( mServer->getProvider()->description() ); - - - - } -void MyApplication::showTrackSearch(SmfTrackInfoList* songs) - { - foreach(SmfTrackInfo track, *songs){ - m_view->add(track); - } - QList* smfProList = client.GetServices("org.symbian.smf.client.music.search\0.2"); - SmfProvider smfp = smfProList->value(0); - SmfMusicSearch* mServer = new SmfMusicSearch(&smfp); - //allow user to select a track and get purchase links - //connect to showStoreSearch signal to display the stores for that track - mServer->stores(songs->value(0)); - } -void MyApplication::showStore(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 - //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 - } - -void MyApplication::displayLyrics(SmfTrackInfo currTrack) - { - - // Some common interface for finding implementations. - QList* smfProList = client.GetServices("org.symbian.smf.client.music.lyrics\0.2","lyricsfly.com"); - SmfProvider smfp = smfProList->value(0); - SmfLyricsService* lyricsService = new SmfLyricsService(&smfp); - QObject::connect(lyricsService,SIGNAL(lyricsAvailable(SmfLyricsList*, QString, SmfResultPage )),this,SLOT(showLyrics(SmfLyricsList*))); - - //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(),caseInsensitiveLessThan); - m_view->setLyricsData(list->at(0)); - } - -void MyApplication::getActivities() - { - // Some common interface for finding implementations. - QList* activityServices = client.GetServices("org.symbian.smf.client.activity.fetcher\0.2"); - - //let us use the Facebook one - QString servName = activityServices->value(0).serviceName(); - if(!servName.compare("Facebook.com")) return; - SmfProvider smfp = activityServices->value(0); - SmfActivityFetcher* myActivityServer = new SmfActivityFetcher(&smfp); - - //Adjust our view to show where these posts came from (e.g. streams from Facebook) - //display service name description and the logo - m_view->setIcon((myActivityServer->getProvider())->serviceIcon() ); - m_view->setProvider(myActivityServer->getProvider()); - m_view->setDescription((myActivityServer->getProvider())->description() ); - - QObject::connect(myActivityServer, - SIGNAL(resultsAvailable(SmfActivityEntryList*,QString,SmfResultPage)), - this,SLOT(showActivities(SmfActivityEntryList*))); - - //get a list of updates to my wall - myActivityServer->selfActivities(); - } - -void MyApplication::showActivities(SmfActivityEntryList* entries) - { - foreach(SmfActivityEntry entry, *entries) { - SmfContact sc = entry.author(); - QString desc = (sc.value("Name")).toString(); - SmfPost details = entry.details(); - QList aol = entry.activities(); - SmfActivityObject sao = aol.value(0); - if(SmfActivityMarkAsFavorite == entry.actionName() ) - { - desc.append(" has marked "); - QVariant qv = sao.objData(); - SmfActivityObjectType otype = sao.type(); - if((SmfActivityObjTypePhoto == otype ) && (qv.canConvert())) - { - SmfPicture pic = qv.value(); - desc.append( pic.description() ); - } - desc.append(" as Favorite at"); - QDateTime qdt = sao.time(); - desc.append(qdt.toString("h:m:s ap")); - } - } - }