diff -r 2e1adbfc62af -r ee64f059b8e1 qtinternetradio/irqmusicshop/src/irqmusicshop.cpp --- a/qtinternetradio/irqmusicshop/src/irqmusicshop.cpp Mon May 03 12:25:23 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,443 +0,0 @@ -/* -* Copyright (c) 2009-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: class implementation for visiting nokia music shop -* -*/ - - -#include // TApaTask, TApaTaskList -#include // RApaLsSession -#include // TThreadId - -#include // RWsSession -#include -#include -#ifdef USER_DEFINED_MUSICSHOP -#include -#include -#include -#endif - -#ifdef MUSICSHOP_AVAILABLE -#include -#include -#include // P/S Keys, KSearchUrlMaxSize, KCategoryValueMaxSize -#include // KUidMusicStore -#include // CMPXFindInMShop -#include // Central Repository : KCRUidMusicShopSettings,KMusicShopURI -#ifdef USER_DEFINED_MUSICSHOP -const TInt KMaxUrlLenth = 512; -const char* const KNewMusicShopUrl = "http://music.nokia.co.uk"; -void getUrlFromConfiguration(QString & aUrl); -#endif //for USER_DEFINED_MUSICSHOP -#endif //for MUSICSHOP_AVAILABLE - -#include "irqmusicshop.h" - - -const TUid KUidShazam = { 0x200265B3 }; -bool launchAppByUid(const TUid aUid); - -#ifdef MUSICSHOP_AVAILABLE -// --------------------------------------------------------------------------- -// IRQMusicShop::openInstance() -// Static function to get a singleton instance of IRQMusicShop -// --------------------------------------------------------------------------- -// -EXPORT_C IRQMusicShop* IRQMusicShop::openInstance() -{ - // Get singleton instance - IRQMusicShop* musicShop = - reinterpret_cast(Dll::Tls()); - - if(NULL == musicShop) - { - TRAPD(error, musicShop = createInstanceL()); - if (KErrNone != error) - { - delete musicShop; - musicShop = NULL; - Dll::SetTls(NULL); - } - } - else - { - musicShop->iSingletonInstances++; - } - - return musicShop; -} - -// --------------------------------------------------------------------------- -// IRQMusicShop::closeInstance() -// Close a singleton instance of IRQMusicShop -// --------------------------------------------------------------------------- -// -EXPORT_C void IRQMusicShop::closeInstance() -{ - iSingletonInstances--; - - if (0 == iSingletonInstances) - { - Dll::SetTls(NULL); - delete this; - } -} - -// --------------------------------------------------------------------------- -// IRQMusicShop::createInstanceL() -// Creates IRQMusicShop instance -// --------------------------------------------------------------------------- -// -IRQMusicShop* IRQMusicShop::createInstanceL() -{ - IRQMusicShop* musicShop = new (ELeave) IRQMusicShop(); - musicShop->constructL(); - User::LeaveIfError(Dll::SetTls(musicShop)); - musicShop->iSingletonInstances = 1; - return musicShop; -} - -// --------------------------------------------------------------------------- -// IRQMusicShop::IRQMusicShop() -// Default Constructor. -// --------------------------------------------------------------------------- -// -IRQMusicShop::IRQMusicShop():iMPXFindInShop(NULL), - iSingletonInstances(0) - #ifdef USER_DEFINED_MUSICSHOP - ,iResetAlready(false) - #endif -{ - _LIT_SECURITY_POLICY_C1(KReadPolicy, ECapabilityReadUserData); - _LIT_SECURITY_POLICY_C1(KWritePolicy, ECapabilityWriteUserData); - - RProperty::Define(KUidMusicStore, KMShopCategoryId, RProperty::EInt, KReadPolicy, KWritePolicy); - RProperty::Define(KUidMusicStore, KMShopCategoryName, RProperty::ELargeText, KReadPolicy, KWritePolicy); -} - -// --------------------------------------------------------------------------- -// IRQMusicShop::constructL() -// Two-Phase Constructor. -// --------------------------------------------------------------------------- -// -void IRQMusicShop::constructL() -{ - iMPXFindInShop = CMPXFindInMShop::NewL(); -#ifdef USER_DEFINED_MUSICSHOP - resetMusicShopUrlL(); -#endif -} - -// --------------------------------------------------------------------------- -// IRQMusicShop::~IRQMusicShop() -// Destructor -// --------------------------------------------------------------------------- -// -IRQMusicShop::~IRQMusicShop() -{ - delete iMPXFindInShop; - iMPXFindInShop = NULL; -#ifdef USER_DEFINED_MUSICSHOP - TRAP_IGNORE(restoreMusicShopUrlL()); -#endif -} - -// --------------------------------------------------------------------------- -// IRQMusicShop::findInMusicShop() -// Find song in music shop app. -// --------------------------------------------------------------------------- -// -EXPORT_C bool IRQMusicShop::findInMusicShop(const QString& aSongName, - const QString& aArtistName, - const QString& aAlbumName) -{ - if(NULL == iMPXFindInShop) - { - return false; - } - - TPtrC songName(reinterpret_cast(aSongName.utf16())); - TPtrC artistName(reinterpret_cast(aArtistName.utf16())); - TPtrC albumName(reinterpret_cast(aAlbumName.utf16())); - - HBufC* url = NULL; - TRAPD(error, url = iMPXFindInShop->CreateSearchURLL(songName, - artistName, - albumName, - KNullDesC, // Composer - Not used - KNullDesC)); // Genre - Not used - - bool retVal = false; - if( (KErrNone == error) && - (KErrNone == RProperty::Set(KUidMusicStore, - KMShopCategoryId, - KFindInMShopKeyValid)) && - (KErrNone == RProperty::Set(KUidMusicStore, - KMShopCategoryName, - *url)) - ) - { - retVal = launchMusicShop(); - } - - delete url; - REComSession::FinalClose(); - return retVal; -} - -// --------------------------------------------------------------------------- -// IRQMusicShop::launchMusicShop() -// Launch music shop app. -// --------------------------------------------------------------------------- -// -EXPORT_C bool IRQMusicShop::launchMusicShop() -{ - return launchAppByUid(KUidMusicStore); -} - -// --------------------------------------------------------------------------- -// IRQMusicShop::launchShazam() -// Launch shazam app. -// --------------------------------------------------------------------------- -// -EXPORT_C bool IRQMusicShop::launchShazam() -{ - return launchAppByUid(KUidShazam); -} - - -#ifdef USER_DEFINED_MUSICSHOP -// --------------------------------------------------------------------------- -// resetMusicShopUrlL -// Reset Music Shop Url in the Central Repository -// --------------------------------------------------------------------------- -// -void IRQMusicShop::resetMusicShopUrlL() -{ - CRepository* pRepository = CRepository::NewL(KCRUidMusicShopSettings); - CleanupStack::PushL(pRepository); - - TInt urlLenth = KMaxUrlLenth; - HBufC* valueString = HBufC::NewLC(urlLenth); - - TInt error = KErrNone; - do - { - TPtr ptr = valueString->Des(); - error = pRepository->Get(KMusicShopURI,ptr); - if(error == KErrTooBig) - { - CleanupStack::PopAndDestroy(valueString); - urlLenth = 2 * urlLenth; - valueString = HBufC::NewLC(urlLenth); - } - } while(error == KErrTooBig); - - User::LeaveIfError(error); - - iMusicShopUrl = QString::fromUtf16(valueString->Ptr(),valueString->Length()); - - QString newMusicShopUrl(KNewMusicShopUrl); - getUrlFromConfiguration(newMusicShopUrl); - - - if(0 != iMusicShopUrl.compare(newMusicShopUrl,Qt::CaseInsensitive)) - { - TPtrC urlDesc(reinterpret_cast(newMusicShopUrl.utf16())); - User::LeaveIfError(pRepository->Set(KMusicShopURI,urlDesc)); - iResetAlready = true; - } - - CleanupStack::PopAndDestroy(valueString); - CleanupStack::PopAndDestroy(pRepository); -} - -void IRQMusicShop::restoreMusicShopUrlL() -{ - if(iResetAlready) - { - CRepository* pRepository = CRepository::NewL(KCRUidMusicShopSettings); - TPtrC16 oldMusicShopUrl(reinterpret_cast(iMusicShopUrl.utf16())); - pRepository->Set(KMusicShopURI,oldMusicShopUrl); - delete pRepository; - } -} - - -void getUrlFromConfiguration(QString & aUrl) -{ - QFile file("C:\\data\\QTIRConfigure.txt"); - if (file.open(QIODevice::ReadOnly)) - { - QTextStream stream( &file ); - QString line; - QStringList parameter; - while (!stream.atEnd()) - { - line = stream.readLine(); - parameter = line.split("="); - if (parameter.count() == 2) - { - if (parameter.first() == "userDefinedMusicStoreUrl") - { - aUrl = parameter.last(); - break; - } - } - } - file.close(); - } -} -#endif - -#else //for MUSICSHOP_AVAILABLE -// --------------------------------------------------------------------------- -// IRQMusicShop::openInstance() -// Static function to get a singleton instance of IRQMusicShop -// --------------------------------------------------------------------------- -// -EXPORT_C IRQMusicShop* IRQMusicShop::openInstance() -{ - // Get singleton instance - IRQMusicShop* musicShop = - reinterpret_cast(Dll::Tls()); - - if(NULL == musicShop) - { - musicShop = new IRQMusicShop(); - musicShop->iSingletonInstances = 1; - } - else - { - musicShop->iSingletonInstances++; - } - - return musicShop; -} - -// --------------------------------------------------------------------------- -// IRQMusicShop::closeInstance() -// Close a singleton instance of IRQMusicShop -// --------------------------------------------------------------------------- -// -EXPORT_C void IRQMusicShop::closeInstance() -{ - iSingletonInstances--; - - if (0 == iSingletonInstances) - { - Dll::SetTls(NULL); - delete this; - } -} - - -// --------------------------------------------------------------------------- -// IRQMusicShop::IRQMusicShop() -// Default Constructor. -// --------------------------------------------------------------------------- -// -IRQMusicShop::IRQMusicShop():iMPXFindInShop(NULL), - iSingletonInstances(0) - #ifdef USER_DEFINED_MUSICSHOP - ,iResetAlready(false) - #endif -{ - -} - -// --------------------------------------------------------------------------- -// IRQMusicShop::~IRQMusicShop() -// Destructor -// --------------------------------------------------------------------------- -// -IRQMusicShop::~IRQMusicShop() -{ - -} - -// --------------------------------------------------------------------------- -// IRQMusicShop::findInMusicShop() -// Find song in music shop app. -// --------------------------------------------------------------------------- -// -EXPORT_C bool IRQMusicShop::findInMusicShop(const QString& aSongName, - const QString& aArtistName, - const QString& aAlbumName) -{ - Q_UNUSED(aSongName) - Q_UNUSED(aArtistName) - Q_UNUSED(aAlbumName) - return false; -} - -// --------------------------------------------------------------------------- -// IRQMusicShop::launchMusicShop() -// Launch music shop app. -// --------------------------------------------------------------------------- -// -EXPORT_C bool IRQMusicShop::launchMusicShop() -{ - return false; -} - -// --------------------------------------------------------------------------- -// IRQMusicShop::launchShazam() -// Launch shazam app. -// --------------------------------------------------------------------------- -// -EXPORT_C bool IRQMusicShop::launchShazam() -{ - return launchAppByUid(KUidShazam); -} - -#endif //for MUSICSHOP_AVAILABLE - -bool launchAppByUid(const TUid aUid) -{ - RWsSession wsSession; - if(KErrNone != wsSession.Connect()) - { - return false; - } - - bool retVal = false; - TApaTaskList tasList(wsSession); - TApaTask task = tasList.FindApp(aUid); - - if(task.Exists()) - { - task.BringToForeground(); - retVal = true; - } - else - { - RApaLsSession session; - if(KErrNone == session.Connect()) - { - TThreadId threadId; - TInt err = session.CreateDocument(KNullDesC, aUid, threadId); - if(KErrNone == err) - { - retVal = true; - } - session.Close(); - } - } - - wsSession.Flush(); - wsSession.Close(); - return retVal; -}