Revision: 201037 default PDK_4.0.a
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 04 Oct 2010 00:07:46 +0300
changeset 17 38bbf2dcd608
parent 16 5723da102db1
Revision: 201037 Kit: 201039
internetradio2.0/cenrep/2002ffac.txt
internetradio2.0/conf/internetradio.confml
internetradio2.0/inc/iruid3.hrh
internetradio2.0/install/internetradiostub.pkg
internetradio2.0/irsonghistory/inc/irsonghistorydb.h
internetradio2.0/irsonghistory/inc/irsonghistoryinfo.h
internetradio2.0/irsonghistory/src/irsonghistorydb.cpp
internetradio2.0/irsonghistory/src/irsonghistoryinfo.cpp
package_definition.xml
qtinternetradio/all.pro
qtinternetradio/bwins/irdbu.def
qtinternetradio/bwins/irqfavoritesu.def
qtinternetradio/bwins/irqsonghistoryu.def
qtinternetradio/common.pri
qtinternetradio/eabi/irdbu.def
qtinternetradio/eabi/irqfavoritesu.def
qtinternetradio/eabi/irqsonghistoryu.def
qtinternetradio/install/ir3_qtinternetradio_armv5_udeb.pkg
qtinternetradio/install/ir3_qtinternetradio_armv5_urel.pkg
qtinternetradio/install/rd-key.pem
qtinternetradio/install/rd.cer
qtinternetradio/irdb/inc/channelhistorywrapper.h
qtinternetradio/irdb/inc/irdb.h
qtinternetradio/irdb/inc/irdbviewstruct.h
qtinternetradio/irdb/inc/irdbwrapper.h
qtinternetradio/irdb/inc/irsqlstr.h
qtinternetradio/irdb/inc/searchrltwrapper.h
qtinternetradio/irdb/inc/urlinfowrapper.h
qtinternetradio/irdb/src/channelhistorywrapper.cpp
qtinternetradio/irdb/src/favoriteswrapper.cpp
qtinternetradio/irdb/src/imgwrapper.cpp
qtinternetradio/irdb/src/irdb.cpp
qtinternetradio/irdb/src/irdbwrapper.cpp
qtinternetradio/irdb/src/searchrltwrapper.cpp
qtinternetradio/irdb/src/songhistorywrapper.cpp
qtinternetradio/irdb/src/urlinfowrapper.cpp
qtinternetradio/irhswidgetplugin/src/irserviceclient.cpp
qtinternetradio/irqcommon/inc/irqisdsdatastructure.h
qtinternetradio/irqcommon/src/irqisdsdatastructure.cpp
qtinternetradio/irqfavoritesdb/inc/irqfavoritesdb.h
qtinternetradio/irqfavoritesdb/inc/irqfavoritesdb_p.h
qtinternetradio/irqfavoritesdb/irqfavoritesdb.pro
qtinternetradio/irqfavoritesdb/src/irqfavoritesdb.cpp
qtinternetradio/irqfavoritesdb/src/irqfavoritesdb_p.cpp
qtinternetradio/irqmediaplayer/src/irqmmfadapter.cpp
qtinternetradio/irqsonghistory/inc/irqsonghistoryengine.h
qtinternetradio/irqsonghistory/inc/irqsonghistoryinfo.h
qtinternetradio/irqsonghistory/irqsonghistory.pro
qtinternetradio/irqsonghistory/src/irqsonghistoryengine.cpp
qtinternetradio/irqsonghistory/src/irqsonghistoryinfo.cpp
qtinternetradio/rom/createsis_stub.bat
qtinternetradio/rom/ir3_qtinternetradio_stub.pkg
qtinternetradio/rom/ir3_qtinternetradio_stub.sis
qtinternetradio/rom/qtinternetradio.iby
qtinternetradio/ui/inc/irabstractlistviewbase.h
qtinternetradio/ui/inc/irapplication.h
qtinternetradio/ui/inc/irchannelmodel.h
qtinternetradio/ui/inc/irfavoritesmodel.h
qtinternetradio/ui/inc/irfavoritesview.h
qtinternetradio/ui/inc/irhistorymodel.h
qtinternetradio/ui/inc/irhistoryview.h
qtinternetradio/ui/inc/irlogoprovider.h
qtinternetradio/ui/inc/irplaycontroller.h
qtinternetradio/ui/inc/irqsonghistoryinfo.h
qtinternetradio/ui/inc/irsearchchannelsview.h
qtinternetradio/ui/inc/irsearchresultdb.h
qtinternetradio/ui/inc/irsonghistorymodel.h
qtinternetradio/ui/inc/irstationdetailsview.h
qtinternetradio/ui/inc/iruidefines.h
qtinternetradio/ui/resources/layout/abstractlistviewbase.docml
qtinternetradio/ui/resources/layout/openwebaddressview.docml
qtinternetradio/ui/resources/layout/searchchannelsview.docml
qtinternetradio/ui/src/irabstractlistviewbase.cpp
qtinternetradio/ui/src/irapplication.cpp
qtinternetradio/ui/src/irchanneldataprovider.cpp
qtinternetradio/ui/src/irchannelmodel.cpp
qtinternetradio/ui/src/irfavoritesmodel.cpp
qtinternetradio/ui/src/irfavoritesview.cpp
qtinternetradio/ui/src/irfileviewservice.cpp
qtinternetradio/ui/src/irhistorymodel.cpp
qtinternetradio/ui/src/irhistoryview.cpp
qtinternetradio/ui/src/irlastplayedstationinfo.cpp
qtinternetradio/ui/src/irlogoprovider.cpp
qtinternetradio/ui/src/irnowplayingview.cpp
qtinternetradio/ui/src/iropenwebaddressview.cpp
qtinternetradio/ui/src/irplaycontroller.cpp
qtinternetradio/ui/src/irplaylist.cpp
qtinternetradio/ui/src/irplsview.cpp
qtinternetradio/ui/src/irqsonghistoryinfo.cpp
qtinternetradio/ui/src/irsearchchannelsview.cpp
qtinternetradio/ui/src/irsearchresultdb.cpp
qtinternetradio/ui/src/irsettingsview.cpp
qtinternetradio/ui/src/irsonghistorymodel.cpp
qtinternetradio/ui/src/irsonghistoryview.cpp
qtinternetradio/ui/src/irstationdetailsview.cpp
qtinternetradio/ui/src/irstationsview.cpp
qtinternetradio/ui/src/irviewmanager.cpp
qtinternetradio/ui/ui.pro
Binary file internetradio2.0/cenrep/2002ffac.txt has changed
Binary file internetradio2.0/conf/internetradio.confml has changed
--- a/internetradio2.0/inc/iruid3.hrh	Fri Sep 17 08:27:59 2010 +0300
+++ b/internetradio2.0/inc/iruid3.hrh	Mon Oct 04 00:07:46 2010 +0300
@@ -20,7 +20,7 @@
 #define	__IRUID3_H__
 
 //Duplicate with : 
-//irquid3.hrh	\qtinternetradio\irqcommon\inc
+//irquid3.hrh	/qtinternetradio/irqcommon/inc
 #define UID3_INTERNET_RADIO_10_1_EXE        0x2002FFAC
 
 #define UID3_IRSETTINGS_DLL                 0x2002FFAE
--- a/internetradio2.0/install/internetradiostub.pkg	Fri Sep 17 08:27:59 2010 +0300
+++ b/internetradio2.0/install/internetradiostub.pkg	Mon Oct 04 00:07:46 2010 +0300
@@ -43,8 +43,7 @@
 ""-"z:\sys\bin\IRCacheMgmt.dll"
 ""-"z:\sys\bin\IRNetworkController.dll"
 ""-"z:\sys\bin\irsettings.dll"
-""-"z:\sys\bin\IRSessionLog.dll"
-""-"z:\sys\bin\IRSongHistory.dll"
+""-"z:\sys\bin\IRSessionLog.dll" 
 ""-"z:\sys\bin\IRSettingsView.dll"
 ""-"z:\sys\bin\irgeneralsettings200.dll"
 ;""-"z:\sys\bin\mpxequalizerview.dll"	
--- a/internetradio2.0/irsonghistory/inc/irsonghistorydb.h	Fri Sep 17 08:27:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,333 +0,0 @@
-/*
-* Copyright (c) 2006-2006 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:  Song History database used for stroing song history entries.
-*
-*/
-
-
-/* ---------------------------------------------------------------------------
-*  Version history:
-*  Template version:
-*  <ccm_history>
-*
-*  Version: 3, Thu Apr 14 12:00:00 2008 by Rohit
-*  Ref:
-*  Pc lint fixes
-*
-*  Version: 2, Thu Apr 10 20:00:00 2008 by Rohit
-*  Ref:
-*  Implemented SongHistory changes for channelwise songs
-*
-*  </ccm_history>
-* ============================================================================
-*/
-
-#ifndef CIRSONGHISTORYDB_H
-#define CIRSONGHISTORYDB_H
-
-#include <d32dbms.h>
-#include "irsettings.h"
-
-class CIRSongHistoryInfo;
-class CIRSettings;
- 
-
-// Maximum no of entries to be stored in the history list.
-const TInt KMaxNoChannelHistoryDbEntries = 30;
-const TInt KMaxNoSongHistoryDbEntries = 100;
-
-// Maximum length of Dbms field string
-const TInt KIRDbMaxStrLen = 255;
-
-const TInt KIRDbMaxChType = 2;
-
-const TInt KMaxColumnLength = 255;
-
-NONSHARABLE_CLASS(CIRSongHistoryDb) : public RDbNamedDatabase
-	{
-//member functions
-public:
-
-	/**
-	* Function : NewL()
-	* Two phased construction
-	* @return instance of CIRSongHistoryDb
-	*/
-		static CIRSongHistoryDb* NewL();
-
-	/**
-	* Function : NewLC()
-	* Two phased construction
-	* @return instance of CIRSongHistoryDb
-	*/
-		static CIRSongHistoryDb* NewLC();
-
-	/**
-	* Function : ~CIRSongHistoryDb()
-	* default destructor
-	*/
-		~CIRSongHistoryDb();
-
-
-
-    /**
-    * Function : AddToSongHistoryDbL()
-    * adds the song history entry into data base
-    * @param various channel information 
-    */
-    TBool AddToSongHistoryDbL( const TDesC& aSongName,
-                                const TDesC& aArtistName, 
-                                const TDesC& aChannelName, 
-                                const TDesC& aChannelUrl,
-                                RBuf& aDelSongName, 
-                                RBuf& aDelArtistname, 
-                                RBuf& aDelChannelName, 
-                                RBuf& aDelChannelUrl,
-                                TInt  aChannelType,
-                                TInt aChannelId,
-                                TInt aBitrate,
-                                const TDesC& aChannelDesc,
-                                const TDesC& aImageUrl,
-                                const TDesC& aGenreName,
-                                const TDesC& aCountryName,
-                                const TDesC& aLanguageName,
-                                const TDesC& aMusicFlag);
-	 /**
-	 * Function : AddToSongHistoryDb2L()
-	 * adds the song history entry into data base
-	 * @param various song information 
-	 */
-	 TBool AddToSongHistoryDb2L( const TDesC& aSongName,
-	                             const TDesC& aArtistName, 	                                
-                                 const TDesC& aChannelName,
-	                             const TDesC& aMusicFlag);
-
-
-	/**
-	* CIRSongHistoryDb::GetAllSongHistoryListL()
-	* gets all the song history entries  into an array
-	* @param aSongHistoryEntries is the array which is to be filled by the SongHistoryDb. 
-	*/
-
-		void GetAllSongHistoryListL(RPointerArray<CIRSongHistoryInfo>& aSongHistoryEntries);
-    /**
-	* CIRSongHistoryDb::GetAllSongHistoryList2L()
-	* gets all the song history entries  into an array
-	* @param aSongEntries is the array which is to be filled by the SongHistoryDb. 
-	*/
-		void GetAllSongHistoryList2L(RPointerArray<CIRSongHistoryInfo>& aSongEntries);
-	/**
-	* Function : ClearAllSongHistoryFromDb
-	* delete all the song entries from the database.
-	*/
-
-		TInt ClearAllSongHistoryFromDb();
-		
-	/**
-	* Function : ClearAllSongHistoryFromDb2
-	* delete all the song entries from the database.
-	*/
-		TInt ClearAllSongHistoryFromDb2();
-
-	/**
-	* Function : CountSongHistoryDb()
-	* count the database entries
-	*/
-
-		TInt CountSongHistoryDb();
-		
-	/**
-	* Function : CountSongHistoryDb2()
-	* count the database entries
-	*/
-		TInt CountSongHistoryDb2();
-
-	/**
-	* Function : GetLastHistoryItemL()
-	* Gives the last added entry in the database
-	* @param Channel data to be filled .
-	*/
-	void GetLastHistoryItemL(RBuf& aSongName, RBuf& aArtistName,
-					 RBuf& aChannelName, RBuf& aChannelUrl);
-
-	/**
-	* Function : GetChannelSongsCount()
-	* Returns SongsCount for given channel
-	*/
-	TUint GetChannelSongsCountL( const RBuf& aChannelName, const RBuf& aChannelUrl );
-	
-	/**
-	* Function : GetChannelSongsCount()
-	* Updates the song history DB when there is a channel removed in the isds.
-	*/
-    void SyncSongHistoryDbL(TInt aChannelId) ;
-    
-	/**
-	* Function : GetIdPresentInDb()
-	* Gets whether the particular channel ID is present in history DB or not. 
-	*/
-    TBool GetIdPresentInDbL(TInt aChannelId) ;
-    
-	/**
-	* Function : UpdateSongHistoryDb()
-	* Updates the song history DB when there is a channel change in the isds.
-	*/
-    TInt UpdateSongHistoryDbL( TInt aChannelId,
-						      const TDesC& aChannelUrl,
-						      const TDesC& aImageUrl,
-                              const TDesC& aGenreName,
-                              const TDesC& aCountryName,
-                              const TDesC& aLanguageName,						      
-							  const TDesC& aMusicFlag);
-
-    /*
-     * search if a record already exists in database. If yes, delete it.
-     */
-    void SearchAndDeleteRecordL(const TDesC& aChannelName, const TDesC& aChannelUrl,
-                                TInt aChannelType, TInt aPresetId);
-    
-    /*
-     * delete a recorder by the index, for station history database
-     * */
-    TInt DeleteOneHistory(TInt aIndex);
-    
-    /*
-     * delete a recorder by the index, for songhistory database
-     * */
-    TInt DeleteOneSongHistory(TInt aIndex);
-
-private:
-
-	/**
-	* Function : ConstructL()
-	* two phase construction
-	*/
-    void ConstructL();
-
-    /**
-	* Function : CloseSongHistoryDb()
-	* Closes the database
-	*/
-	void CloseSongHistoryDb();
-
-	/**
-	* Function : CreateSongHistoryTablesL()
-	* creates songhistory table with three columns
-	* log data
-	* ---------------------------------------------------------------------------
-	* SongHistoryTable
-	*---------------------------
-	*| SongName | ArtistName | ChannelName | ChannelUrl | ChannelType | ChannelId    | Bitrate      | ChannelDesc | ImageUrl   | GenreName  | CountryName | LanguageName | MusicStatus
-	*---------------------------
-	*|EDbColText| EDbColText | EDbColText  | EDbColText | EDbColUint8 | EDbColUint16 | EDbColUint16 | EDbColText  | EDbColText | EDbColText | EDbColText  | EDbColText   | EDbColText 
-	*----------------------------------------------------------------------------
-	*/
-	void CreateSongHistoryTablesL();
-	
-    /**
-	* Function : CreateSongHistoryTables2L()
-	* creates songhistory table with three columns
-	* log data
-	* ---------------------------------------------------------------------------
-	* SongHistoryTable
-	*---------------------------
-	*| SongName | ArtistName | ChannelName | MusicStatusFlag
-	*---------------------------
-	*|EDbColText| EDbColText | EDbColText  | EDbColText |
-	*----------------------------------------------------------------------------
-	*/
-	void CreateSongHistoryTables2L();
-
-   /**
-	* Function : CreateDbCondition()
-	* Creates  the dbms file conditionally(only if not yet created)
-	* @param aSongHistoryDbFile the Database file name
-	*/
-	void CreateDbCondition(const TFileName& aSongHistoryDbFile);
-
-
-	/**
-	* Function : OpenSongHistoryDbL()
-	* @param aSongHistoryDbFile the Database file name
-	* opening the data base
-	*/
-	void OpenSongHistoryDbL(const TFileName& aSongHistoryDbFile);
-
-	/**
-	* Function : CreateSongHistoryDb()
-	* creates the dbms files
-	* @param aSongHistoryDbFile database filename
-	*/
-	TInt CreateSongHistoryDb(const TFileName& aSongHistoryDbFile);
-	
-	/**
-	 * to wrapper the delete leaving
-	 */
-	TInt DeleteOneHistoryL(TInt aIndex);
-
-    /**
-     * to wrapper the delete leaving
-     */
-    TInt DeleteOneSongHistoryL(TInt aIndex);
-
-	/**
-	* Data-structure to hold unique channel info
-	*/
-	class CIRChannelInfo : public CBase
-	{
-	public:
-		~CIRChannelInfo()
-		{
-			iChannelUrl.Close();
-			iChannelName.Close();
-		}
-		RBuf iChannelUrl;
-		RBuf iChannelName;
-		TInt iChannelType;
-	};
-	
-
-
-	/**
-	* Comparer function to compare two CIRChannelInfo's
-	*/
-	static TBool CompareChannelInfos(const CIRChannelInfo& aFirst, const CIRChannelInfo& aSecond);
-	 
-//data members
-
-private:
-
-	//	File session
-
-    RFs iFsSession;
-
-
-     //	Table which stores History information
-
-    RDbTable iSongHistoryTable;
-
-    // only save the song info for the song history view.
-	RDbTable iSongHistoryTable2;
-
-    };
-
-#endif  //CIRSONGHISTORYDB_H
-
-
-
-
-
-
-
-
--- a/internetradio2.0/irsonghistory/inc/irsonghistoryinfo.h	Fri Sep 17 08:27:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,311 +0,0 @@
-/*
-* Copyright (c) 2007-2007 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:  header for the songhistory information class
-*
-*/
-
-
-#ifndef C_CIRSONGHISTORYINFO_H
-#define C_CIRSONGHISTORYINFO_H
-
-#include <s32mem.h>
-
-/**
- * SongHistory meta data information wrapper.
- */
-NONSHARABLE_CLASS( CIRSongHistoryInfo ) : public CBase
-    {
-
-public:
-
-	/**
-	*Function : NewL
-	*Function returns an instance of CIRSongHistoryInfo
-	*Two phase constructor
-	*@return instance of CIRSongHistoryInfo
-	*/
-    	IMPORT_C static CIRSongHistoryInfo * NewL();
-
-	/**
-	*CIRSongHistoryInfo::NewLC()
-	*Static function
-	*standard two phased constructor
-	*@return *CIRSongHistoryInfo
-	*/
-		IMPORT_C static CIRSongHistoryInfo* NewLC();
-
-	/**
-	*CIRSongHistoryInfo::~CIRSongHistoryInfo()
-	*standard C++ destructor
-	*/
-		IMPORT_C ~CIRSongHistoryInfo();
-
-	/**
-	*CIRSongHistoryInfo::SetHistoryInfoL()
-	*Function to set songhistory ingo from a RBuf
-	*/
-
-		IMPORT_C void SetHistoryInfoL(RBuf& aSongName,
-									 RBuf& aArtist, 
-									 RBuf& aStreamUrl, 
-									 RBuf& aChannelName,
-									 TInt aChannelType , 
-									 TInt aChannelId,
-									 TInt aBitrate,
-									 RBuf& aChannelDesc,
-									 RBuf& aImageUrl,
-                                     RBuf& aGenreName,
-                                     RBuf& aCountryName,
-                                     RBuf& aLanguageName,									 
-									 RBuf& aMusicStoreStatus );
-
-	/**
-	*CIRSongHistoryInfo::SetChannelNameL()
-	*Function to set channel name from a RBuf
-	*@param RBuf aChannelName
-	*/
-
-		void SetChannelNameL(RBuf& aChannelName);
-
-	/**
-	*CIRSongHistoryInfo::SetArtistL()
-	*Function to set artist name from a RBuf
-	*@param RBuf aArtist
-	*/
-
-		void SetArtistL(RBuf& aArtist);
-
-	/**
-	*CIRSongHistoryInfo::SetSongNameL()
-	*Function to set song name from a RBuf
-	*@param RBuf aSongName
-	*/
-
-  		void SetSongNameL (RBuf& aSongName);
-
-	/**
-	*CIRSongHistoryInfo::SetStreamUrlL()
-	*Function to set stream url from a RBuf
-	*@param RBuf aStreamUrl
-	*/
-
-		void SetStreamUrlL(RBuf& aStreamUrl);
-
-	/**
-	*CIRSongHistoryInfo::GetSongInfo()
-	*Function to get song name from a TDesC
-	*@return RBuf& instance 
-	*/
-
-		IMPORT_C const RBuf& GetSongInfo() const;
-
-	/**
-	*CIRSongHistoryInfo::GetArtistName()
-	*Function to get artist name from a TDesC
-	*@return RBuf& instance
-	*/
-
-		IMPORT_C const RBuf& GetArtistInfo() const;
-
-	/**
-	*CIRSongHistoryInfo::GetStreamUrl()
-	*Function to get url name from a TDesC
-	*@return RBuf& instance
-	*/
-
-		 IMPORT_C const RBuf& GetStreamUrl() const;
-
-	/**
-	*CIRSongHistoryInfo::GetChannelName()
-	*Function to get channel name from a TDesC
-	*@return RBuf& instance
-	*/
-
-		IMPORT_C const RBuf& GetChannelName() const;
-		
-	/**
-	*CIRSongHistoryInfo::GetChannelType()
-	*Function to get channel Type
-	*@return TInt channeltype
-	*/
-	    IMPORT_C  TInt GetChannelType() const;
-	    
-	/**
-	*CIRSongHistoryInfo::SetChannelType()
-	*Function to set channel Type
-	*@param TInt aChannelImgUrl
-	*/
-	    void SetChannelType(TInt aChannelImgUrl);
-	/**
-	*CIRSongHistoryInfo::SetChannelId()
-	*Function to set channel Id
-	*@param TInt aChannelId
-	*/
-	    void SetChannelId(TInt aChannelId);
-	/**
-	*CIRSongHistoryInfo::GetChannelId()
-	*Function to get channel Id
-	*@return TInt channelId
-	*/
-	    IMPORT_C  TInt GetChannelId() const;
-	/**
-	*CIRSongHistoryInfo::SetBitrate()
-	*Function to set bitrate
-	*@param TInt aBitrate
-	*/
-        void SetBitrate(TInt aBitrate);
-    /**
-    *CIRSongHistoryInfo::GetBitrate()
-    *Function to get bitrate
-    *@return TInt aBitrate
-    */
-        IMPORT_C  TInt GetBitrate() const;
-	/**
-	*CIRSongHistoryInfo::GetChannelDesc()
-	*Function to get channel Description
-	*@return RBuf& instance
-	*/
-        IMPORT_C const RBuf& GetChannelDesc() const ;
-	/**
-	*CIRSongHistoryInfo::SetChannelDescL()
-	*Function to set channel Description
-	* @param RBuf aChannelDesc
-	*/
-        void SetChannelDescL(RBuf& aChannelDesc) ;
-    /**
-    *CIRSongHistoryInfo::GetImageUrl()
-    *Function to get channel image Url
-    *@return RBuf& instance
-    */
-        IMPORT_C const RBuf& GetImageUrl() const ;
-    /**
-    *CIRSongHistoryInfo::SetImageUrlL()
-    *Function to set channel image Url
-    * @param RBuf aImageUrl
-    */        
-        void SetImageUrlL(RBuf& aImageUrl) ;
-    /**
-    *IRQSongHistoryInfo::GetGenreName()
-    *Function to get channel genre name
-    *@return RBuf& instance
-    */
-        IMPORT_C const RBuf& GetGenreName() const;
-    /**
-    *CIRSongHistoryInfo::SetGenreNameL()
-    *Function to set channel genre name
-    * @param RBuf aGenreName
-    */        
-        void SetGenreNameL(const RBuf& aGenreName);
-    /**
-    *IRQSongHistoryInfo::GetCountryName()
-    *Function to get channel country name
-    *@return RBuf& instance
-    */
-        IMPORT_C const RBuf& GetCountryName() const;
-    /**
-    *CIRSongHistoryInfo::SetCountryNameL()
-    *Function to set channel country name
-    * @param RBuf& aCountryName
-    */        
-        void SetCountryNameL(const RBuf& aCountryName);
-    /**
-    *IRQSongHistoryInfo::getLanguageName()
-    *Function to get channel language name
-    *@return RBuf& instance
-    */
-        IMPORT_C const RBuf& GetLanguageName() const;
-    /**
-    *CIRSongHistoryInfo::SetLanguageNameL()
-    *Function to set channel language name
-    * @param RBuf aLanguageName
-    */        
-        void SetLanguageNameL(const RBuf& aLanguageName);        
-	/**
-	*CIRSongHistoryInfo::SetChannelMusicStatusL()
-	*Function to set Channel MusicStoreStatus
-	*@param RBuf aChannelMusicStatus
-	*/
-        void SetChannelMusicStatusL(RBuf& aChannelMusicStatus) ;
-	/**
-	*CIRSongHistoryInfo::GetChannelMusicStatus()
-	*Function to get channel MusicStoreStatus
-	*@return RBuf& instance
-	*/
-        IMPORT_C const RBuf& GetChannelMusicStatus() const ;
-private:
-
-    /**
-     * Default constructor.
-     */
-
-		CIRSongHistoryInfo();
-
-
-private: //data
-
-	/**
-     * The name of the artist.
-     */
-		RBuf iArtistInfo;
-
-    /**
-     * The name of the song.
-     */
-		RBuf iSongInfo;
-
-    /**
-     * The stream URL.
-	 */
-		RBuf iStreamUrlInfo;
-
-    /**
-     * Channel Name.
-     */
-		RBuf iChannelInfo;
-		
-    /**
-     * Channel Type.
-     */
-		TInt iChannelType;
-		
-		
-    /**
-     * Channel Description.
-     */
-		RBuf iChannelDescription;
-    /**
-	 * Channel Description.
-     */
-        RBuf iImageUrl;
-        RBuf iGenreName;
-        RBuf iCountryName;
-        RBuf iLanguageName;
-    /**
-     * Channel Id.
-     */
-		TInt iChannelId;
-
-	/**
-	 * Channel bitrate.
-	 */
-	TInt iBitrate;
-		
-    /**
-     * Channel's MusicStoreStatus.
-     */
-		RBuf iMusicStoreStatus;
-
-    };
-
-#endif // C_CIRSONGHISTORYINFO_H
--- a/internetradio2.0/irsonghistory/src/irsonghistorydb.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1293 +0,0 @@
-/*
-* Copyright (c) 2006-2006 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:  Implementation of the songhistory database
-*
-*/
-
-
-/* ---------------------------------------------------------------------------
-*  Version history:
-*  Template version:
-*  <ccm_history>
-*
-* 
-*  Version: 3, Thu Apr 14 12:00:00 2008 by Rohit
-*  Ref:
-*  Pc lint fixes
-*
-*  Version: 2, Thu Apr 10 20:00:00 2008 by Rohit
-*  Ref:
-*  Implemented SongHistory changes for channelwise songs
-*
-*  </ccm_history>
-* ============================================================================
-*/
-
-#include <bautils.h>
-#include <badesca.h>    // CDesCArrayFlat
-#include <s32file.h>    // CFileStore & CPermanentFileStore
-#include <bautils.h>    // file helpers
-#include <eikenv.h>
-
-#include "irsonghistorydb.h"
-#include "irsonghistoryinfo.h"
-#include "irdebug.h"
-#include "irsettings.h"
-
-
- 
-_LIT( KSongHistoryDBTable,              "ChannelHistoryTable"  );
-_LIT( KSongHistoryDBTable2,             "SongHistoryTable"  );
-_LIT( KSongHistoryDBSongNameColumn,     "SongName"	   );
-_LIT( KSongHistoryDBArtistNameColumn,   "ArtistName"   );
-_LIT( KSongHistoryDBChannelNameColumn,  "ChannelName"  );
-_LIT( KSongHistoryDBChannelUrlColumn,   "ChannelUrl"  );
-_LIT( KSongHistoryDBChannelTypeColumn,   "ChannelType"  );
-_LIT( KSongHistoryDBChannelIdColumn,   "ChannelId"  );
-_LIT( KSongHistoryDBBitrateColumn,   "Bitrate"  );
-_LIT( KSongHistoryDBChannelDescColumn,   "ChannelDescription"  );
-_LIT( KSongHistoryDBImageUrlColumn,   "ImageUrl"  );
-_LIT( KSongHistoryDBGenreNameColumn,   "GenreName"  );
-_LIT( KSongHistoryDBCountryNameColumn,   "CountryName"  );
-_LIT( KSongHistoryDBLanguageNameColumn,   "LanguageName"  );
-_LIT( KSongHistoryDBMusicStatusColumn,   "MusicStoreStatus"  );
-
-_LIT(KSongHistoryDbFile,"songhistoryDb.db");
-_LIT(KNo , "No") ;
-
-const TInt KMaxSize = 255;
-
-TBool CIRSongHistoryDb::CompareChannelInfos(const CIRChannelInfo& aFirst,
-						 const CIRChannelInfo& aSecond)
-{
-   return ( aFirst.iChannelName == aSecond.iChannelName && 
-   					aFirst.iChannelUrl == aSecond.iChannelUrl &&
-   					aFirst.iChannelType == aSecond.iChannelType);
-}
-
- 
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Function : NewL()
-// two phased construction
-// ---------------------------------------------------------------------------
-//
-CIRSongHistoryDb* CIRSongHistoryDb::NewL()
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::NewL" );
-	CIRSongHistoryDb* self=CIRSongHistoryDb::NewLC();
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRSongHistoryDb::NewL - Exiting." );
-	return self;
-}
-
-
-// ---------------------------------------------------------------------------
-// Function : NewLC()
-// Two phased construction
-// ---------------------------------------------------------------------------
-//
-CIRSongHistoryDb* CIRSongHistoryDb::NewLC()
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::NewLC" );
-	CIRSongHistoryDb *self=new(ELeave)CIRSongHistoryDb;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	IRLOG_DEBUG( "CIRSongHistoryDb::NewLC - Exiting." );
-	return self;
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::~CIRSongHistoryDb()
-// default destructor
-// ---------------------------------------------------------------------------
-//
-CIRSongHistoryDb::~CIRSongHistoryDb()
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::~CIRSongHistoryDb" );
-
-	CloseSongHistoryDb();
-	iFsSession.Close();
-	IRLOG_DEBUG( "CIRSongHistoryDb::~CIRSongHistoryDb - Exiting." );
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::CreateDbCondition()
-// Creates both the dbms files conditionally(only if not yet created)
-// calls CreateSongHistoryDb()
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryDb::CreateDbCondition(const TFileName& aSongHistoryDbFile)
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::CreateDbCondition" );
-
-
-	if( !BaflUtils::FileExists(iFsSession, aSongHistoryDbFile) )
-	{
-		TInt error = CreateSongHistoryDb(aSongHistoryDbFile);
-		if( error )
-		{
-			IRLOG_DEBUG( "CIRSongHistoryDb::CreateDbCondition - Exiting (1)." );
-			
-		}
-	}
-	IRLOG_DEBUG( "CIRSongHistoryDb::CreateDbCondition - Exiting (2)." );
-	
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb:AddToSongHistoryDbL()
-// adds the session log entry into data base
-// Returns ETure if songHistory count exceeds 30, else EFalse
-// ---------------------------------------------------------------------------
-//
-TBool CIRSongHistoryDb::AddToSongHistoryDbL(const TDesC& aSongName,
-                                            const TDesC& aArtistName, 
-                                            const TDesC& aChannelName, 
-                                            const TDesC& aChannelUrl,
-                                            RBuf& aDelSongName, 
-                                            RBuf& aDelArtistName, 
-                                            RBuf& aDelChannelName, 
-                                            RBuf& aDelChannelUrl,
-                                            TInt  aChannelType,
-                                            TInt aChannelId,
-                                            TInt aBitrate,
-                                            const TDesC& aChannelDesc,
-                                            const TDesC& aImageUrl,
-                                            const TDesC& aGenreName,
-                                            const TDesC& aCountryName,
-                                            const TDesC& aLanguageName,                                                
-                                            const TDesC& aMusicFlag
-                                            )
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::AddSongHistoryStartL" );
-
-	TBool bRetval = EFalse;
-	TInt error= 0;
-
-	iSongHistoryTable.Reset();
-
-	//if song history entries are  greater than or equal to 30
-	if( iSongHistoryTable.CountL() >= KMaxNoChannelHistoryDbEntries )
-	{
-		//first row is selected
-		iSongHistoryTable.FirstL();
-
-		//the current row is selected
-		iSongHistoryTable.GetL();
-
-		//delete that entry
-		CDbColSet* columns = iSongHistoryTable.ColSetL();
-		TInt songColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
-		TInt artistColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );
-		TInt channelColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );
-		TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
-
-		delete columns;
-		columns = NULL;
-
-        aDelSongName.CreateL(iSongHistoryTable.ColDes( songColumn ));
-        aDelArtistName.CreateL(iSongHistoryTable.ColDes( artistColumn ));
-        aDelChannelName.CreateL(iSongHistoryTable.ColDes( channelColumn ));
-        aDelChannelUrl.CreateL(iSongHistoryTable.ColDes( channelUrlColumn ));
-        
-        iSongHistoryTable.DeleteL();
-        Compact();
-
-        bRetval = ETrue;
-	}
-
-    CDbColSet* columns = iSongHistoryTable.ColSetL();
-    CleanupStack::PushL(columns);
-
-	const TPtrC &songName = aSongName.Left(KIRDbMaxStrLen);
-	const TPtrC &artistName = aArtistName.Left(KIRDbMaxStrLen);
-	const TPtrC &channelName = aChannelName.Left(KIRDbMaxStrLen);
-	const TPtrC &channelUrl = aChannelUrl.Left(KIRDbMaxStrLen);
-    const TPtrC &channelDesc = aChannelDesc.Left(KIRDbMaxStrLen);
-    const TPtrC &imageUrl = aImageUrl.Left(KIRDbMaxStrLen);
-    const TPtrC &genreName = aGenreName.Left(KIRDbMaxStrLen);
-    const TPtrC &countryName = aCountryName.Left(KIRDbMaxStrLen);
-    const TPtrC &languageName = aLanguageName.Left(KIRDbMaxStrLen);
-	
-	TInt songLen = aSongName.Length();
-	TInt artistLen = aArtistName.Length();
-	if(  songLen + artistLen > KMaxSize )
-	{
-		IRLOG_DEBUG3( "CIRSongHistoryDb::AddSongHistoryStartL - LONG METADATA %d, %d", songLen, artistLen );
-	}
-	
-	TRAP(error,//trap start
-
-  		iSongHistoryTable.InsertL();
-		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBSongNameColumn ), songName);
-		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBArtistNameColumn ), artistName);
-		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBChannelNameColumn ), channelName);
-		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBChannelUrlColumn ), channelUrl);
-		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBChannelTypeColumn ), aChannelType);
-		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBChannelIdColumn ), aChannelId);
-		iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBBitrateColumn ), aBitrate);
-        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBChannelDescColumn ), channelDesc);
-        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBImageUrlColumn ), imageUrl);
-        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBGenreNameColumn ), genreName);
-        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBCountryNameColumn ), countryName);
-        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBLanguageNameColumn ), languageName);
-        iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBMusicStatusColumn ), aMusicFlag);
-		iSongHistoryTable.PutL();
-		);
-
- 	CleanupStack::PopAndDestroy(columns); 
- 	if( error!=KErrNone )
- 	{
-	 	User::LeaveIfError(error);
- 	}
-    
- 	iSongHistoryTable.Reset();
- 	IRLOG_DEBUG( "CIRSongHistoryDb::AddSongHistoryStartL - Exiting." );
-
-	return bRetval;
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb:AddToSongHistoryDb2L()
-// adds the history song into the db
-// Returns ETure if songHistory count exceeds 100, else EFalse
-// ---------------------------------------------------------------------------
-
-TBool CIRSongHistoryDb::AddToSongHistoryDb2L( const TDesC& aSongName,
-                                    const TDesC& aArtistName,                                   
-                                    const TDesC& aChannelName,
-                                    const TDesC& aMusicFlag)
-{
-    IRLOG_DEBUG( "CIRSongHistoryDb::AddToSongHistoryDb2L" );
-
-    TBool bRetval = EFalse;
-    TInt error= 0;
-    TInt songCompareFlag = 0;
-    TInt artistCompareFlag = 0;    
-     
-
-    iSongHistoryTable2.Reset();    
-    
-    CDbColSet* columns = iSongHistoryTable2.ColSetL();
-    CleanupStack::PushL(columns);
-    
-    /* the following is to judge wether the song is already in the db */    
-    if ( iSongHistoryTable2.CountL() >= 1 )
-    {
-        TInt songNameColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
-        TInt artistNameColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );     
-
-        for ( iSongHistoryTable2.LastL(); iSongHistoryTable2.AtRow(); iSongHistoryTable2.PreviousL() )
-        {
-            iSongHistoryTable2.GetL();
-            RBuf songName;
-            RBuf artistName;
-
-			CleanupClosePushL(songName);
-			CleanupClosePushL(artistName);
-			
-            songName.CreateL(iSongHistoryTable2.ColDes( songNameColumn ));
-            artistName.CreateL(iSongHistoryTable2.ColDes( artistNameColumn ));
-            
-            songCompareFlag = (songName).Compare(aSongName);
-            artistCompareFlag = (artistName).Compare(aArtistName);
-            
-            CleanupStack::PopAndDestroy(2);       
-            
-            if( 0 == songCompareFlag && 0 == artistCompareFlag )
-            {
-                CleanupStack::PopAndDestroy(columns); 
-                iSongHistoryTable2.Reset();
-                return bRetval;
-            }
-        }        
-    }
-	/* end  */
-    
-    //if song history entries are  greater than or equal to 100
-    if( iSongHistoryTable2.CountL() >= KMaxNoSongHistoryDbEntries )
-    {
-        //first row is selected
-        iSongHistoryTable2.FirstL();
-        //the current row is selected
-        iSongHistoryTable2.GetL();       
-        //delete the current row
-        iSongHistoryTable2.DeleteL();
-        Compact();     
-        bRetval = ETrue;   
-    }
-    
-    const TPtrC &songName = aSongName.Left(KIRDbMaxStrLen);
-    const TPtrC &artistName = aArtistName.Left(KIRDbMaxStrLen);
-    const TPtrC &channelName = aChannelName.Left(KIRDbMaxStrLen);
-    const TPtrC &musicFlag = aMusicFlag.Left(KIRDbMaxStrLen);
-     
-    
-    TInt songLen = aSongName.Length();
-    TInt artistLen = aArtistName.Length();
-    if(  songLen + artistLen > KMaxSize || aChannelName.Length() > KMaxSize)
-    {
-        IRLOG_DEBUG3( "CIRSongHistoryDb::AddToSongHistoryDb2L - too long song info: %d or channel info: %d", songLen+artistLen, aChannelName.Length() );
-    }
-    
-    TRAP(error,//trap start
-
-        iSongHistoryTable2.InsertL();
-        iSongHistoryTable2.SetColL(columns->ColNo( KSongHistoryDBSongNameColumn ), songName);
-        iSongHistoryTable2.SetColL(columns->ColNo( KSongHistoryDBArtistNameColumn ), artistName);        
-        iSongHistoryTable2.SetColL(columns->ColNo( KSongHistoryDBChannelNameColumn ), channelName);        
-        iSongHistoryTable2.SetColL(columns->ColNo( KSongHistoryDBMusicStatusColumn ), musicFlag);
-        iSongHistoryTable2.PutL();
-        );
-
-    CleanupStack::PopAndDestroy(columns); 
-    if( error!=KErrNone )
-    {
-        User::LeaveIfError(error);
-    }
-    
-    iSongHistoryTable2.Reset();
-    IRLOG_DEBUG( "CIRSongHistoryDb::AddSongHistoryStartL - Exiting." );
-
-    return bRetval;  
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::GetAllSongHistoryListL()
-//  gets all the song history entries  into an array
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryDb::GetAllSongHistoryListL(RPointerArray<CIRSongHistoryInfo>& aHistoryDataArr)
-{
- 	IRLOG_DEBUG( "CIRSongHistoryDb::GetAllSongHistoryListL" ); 	 
-
-    if(iSongHistoryTable.CountL() < 1)
-    {
-    	return;
-    }
-
-    CDbColSet* columns = iSongHistoryTable.ColSetL();
-    TInt songColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
-    TInt artistColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );
-    TInt channelColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );
-    TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
-    TInt channelTypeColumn = columns->ColNo( KSongHistoryDBChannelTypeColumn );
-    TInt channelIdColumn = columns->ColNo( KSongHistoryDBChannelIdColumn );
-    TInt bitrateColumn = columns->ColNo( KSongHistoryDBBitrateColumn );
-    TInt channelDescColumn = columns->ColNo( KSongHistoryDBChannelDescColumn );
-    TInt imageUrlColumn = columns->ColNo( KSongHistoryDBImageUrlColumn );
-    TInt genreNameColumn = columns->ColNo( KSongHistoryDBGenreNameColumn );
-    TInt countryNameColumn = columns->ColNo( KSongHistoryDBCountryNameColumn );
-    TInt languageNameColumn = columns->ColNo( KSongHistoryDBLanguageNameColumn );
-    TInt musicStatusColumn = columns->ColNo( KSongHistoryDBMusicStatusColumn );
-
-    delete columns;
-    columns = NULL; 	 
-    
- 	TInt song = 0;
- 	
- 	
-    for ( iSongHistoryTable.LastL(); iSongHistoryTable.AtRow(); iSongHistoryTable.PreviousL() ) 	 
-    {
-        iSongHistoryTable.GetL();
-        
-        RBuf songName;
-        RBuf artistName;
-        RBuf channelName;
-        RBuf channelUrl;
-        TInt channelType;
-        TInt channelId;
-        TInt bitrate;
-        RBuf channelDesc;
-        RBuf imageUrl;
-        RBuf genreName;
-        RBuf countryName;
-        RBuf languageName;
-        RBuf channelMusicStatus;
-        
-        songName.CreateL(iSongHistoryTable.ColDes( songColumn ));
-        songName.CleanupClosePushL();
-        
-        artistName.CreateL(iSongHistoryTable.ColDes( artistColumn ));
-        artistName.CleanupClosePushL();
-        
-        channelName.CreateL(iSongHistoryTable.ColDes( channelColumn ));
-        channelName.CleanupClosePushL();
-        
-        channelUrl.CreateL(iSongHistoryTable.ColDes( channelUrlColumn ));
-        channelUrl.CleanupClosePushL();
-        
-        channelType=iSongHistoryTable.ColUint8( channelTypeColumn );
-        
-        channelId=iSongHistoryTable.ColUint16( channelIdColumn );
-        
-        bitrate=iSongHistoryTable.ColUint16( bitrateColumn );
-        
-        channelDesc.CreateL(iSongHistoryTable.ColDes( channelDescColumn ));
-        channelDesc.CleanupClosePushL();
-
-        imageUrl.CreateL(iSongHistoryTable.ColDes( imageUrlColumn ));
-        imageUrl.CleanupClosePushL();
-
-        genreName.CreateL(iSongHistoryTable.ColDes( genreNameColumn ));
-        genreName.CleanupClosePushL();
-
-        countryName.CreateL(iSongHistoryTable.ColDes( countryNameColumn ));
-        countryName.CleanupClosePushL();
-
-        languageName.CreateL(iSongHistoryTable.ColDes( languageNameColumn ));
-        languageName.CleanupClosePushL();
-
-        channelMusicStatus.CreateL(iSongHistoryTable.ColDes( musicStatusColumn ));
-        channelMusicStatus.CleanupClosePushL();
- 
-        aHistoryDataArr[song]->SetHistoryInfoL(songName, artistName, channelUrl,
-                         channelName,channelType,channelId,bitrate,channelDesc ,
-                         imageUrl, genreName, countryName, languageName, channelMusicStatus);
-        ++song;        
-        CleanupStack::PopAndDestroy(&channelMusicStatus);
-        CleanupStack::PopAndDestroy(&languageName);
-        CleanupStack::PopAndDestroy(&countryName);
-        CleanupStack::PopAndDestroy(&genreName);
-        CleanupStack::PopAndDestroy(&imageUrl);
-        CleanupStack::PopAndDestroy(&channelDesc);
-        CleanupStack::PopAndDestroy(&channelUrl);
-        CleanupStack::PopAndDestroy(&channelName);
-        CleanupStack::PopAndDestroy(&artistName);
-        CleanupStack::PopAndDestroy(&songName);
-    }        
- 
-
-	IRLOG_DEBUG( "CIRSongHistoryDb::GetAllSongHistoryListL - Exiting." );
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::GetAllSongHistoryList2L()
-//  gets all the song history entries  into an array
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryDb::GetAllSongHistoryList2L(RPointerArray<CIRSongHistoryInfo>& aSongEntries)
-{
-    IRLOG_DEBUG( "CIRSongHistoryDb::GetAllSongHistoryList2L" );    
-
-    if(iSongHistoryTable2.CountL() < 1)
-    {
-        return;
-    }
-
-    CDbColSet* columns = iSongHistoryTable2.ColSetL();
-    TInt songColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
-    TInt artistColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );     
-    TInt channelNameColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );     
-    TInt musicStatusColumn = columns->ColNo( KSongHistoryDBMusicStatusColumn );
-
-    delete columns;
-    columns = NULL;
-    
-    TInt song = 0;
-    
-    for ( iSongHistoryTable2.LastL(); iSongHistoryTable2.AtRow(); iSongHistoryTable2.PreviousL() )
-    {
-        iSongHistoryTable2.GetL();
-         
-        RBuf songName;
-        RBuf artistInfo, channelName;
-        RBuf musicStatus;
-
-        CleanupClosePushL(songName);
-        CleanupClosePushL(artistInfo);
-        CleanupClosePushL(channelName);
-        CleanupClosePushL(musicStatus);
-
-        songName.CreateL(iSongHistoryTable2.ColDes( songColumn ));
-        artistInfo.CreateL(iSongHistoryTable2.ColDes( artistColumn ));
-        channelName.CreateL(iSongHistoryTable2.ColDes( channelNameColumn ));
-        musicStatus.CreateL(iSongHistoryTable2.ColDes(musicStatusColumn));
-        
-        aSongEntries[song]->SetSongNameL(songName);
-        aSongEntries[song]->SetArtistL(artistInfo);
-        aSongEntries[song]->SetChannelNameL(channelName);
-        aSongEntries[song]->SetChannelMusicStatusL(musicStatus);
-        ++song;         
-        
-        CleanupStack::PopAndDestroy(4);
-    }
-     
-    IRLOG_DEBUG( "CIRSongHistoryDb::GetAllSongHistoryListL - Exiting." );
-}
-
-// ---------------------------------------------------------------------------
-// Function : ClearAllSongHistoryFromDb
-// delete all the entries from the database.
-// ---------------------------------------------------------------------------
-//
-TInt CIRSongHistoryDb::ClearAllSongHistoryFromDb(/*RPointerArray<CIRSongHistoryInfo>& aSongHistoryInfoArr*/)
-{
-
-	TInt error = KErrNone;
-
-	IRLOG_DEBUG( "CIRSongHistoryDb::ClearAllSongHistoryFromDb - Entering" );
-	TRAP(error, iSongHistoryTable.FirstL());
-	if(error != KErrNone)
-	{
-		return error;
-	}
-
-    while (iSongHistoryTable.AtRow())
-	{
-		TRAPD(error,
-		iSongHistoryTable.GetL();
-		iSongHistoryTable.DeleteL();
-		iSongHistoryTable.NextL(););
-		if(error)
-		{
-		    Compact();
-		    return error;
-		}
-	}
-	
-    Compact();
-    IRLOG_DEBUG( "CIRSongHistoryDb::ClearAllSongHistoryFromDb - Exiting." );
-	return KErrNone;
-
-}
-
-TInt CIRSongHistoryDb::DeleteOneHistory(TInt aIndex)
-{
-    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneHistory - Entering" );
-    
-    TInt retValue = 0;
-    TRAPD(error,(retValue = DeleteOneHistoryL(aIndex)));
-    
-    if( KErrNone != error )
-    {
-        return error;
-    }
-    
-    if( KErrNone != retValue)
-    {
-        return retValue;
-    }    
-    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneHistory - exiting" );    
-    return KErrNone;
-}
-
-TInt CIRSongHistoryDb::DeleteOneHistoryL(TInt aIndex)
-{
-    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneHistoryL - Entering" );
-    TInt totalCount = iSongHistoryTable.CountL();     
-    if (aIndex < 0 || aIndex >= totalCount)
-    {
-        return KErrArgument;
-    }
-	
-    iSongHistoryTable.LastL();
-    TInt tempIndex = 0;     
-    while (tempIndex < aIndex)
-    {
-        TRAPD(error,iSongHistoryTable.PreviousL());
-        if (KErrNone != error)
-        {
-            Compact();
-            return error;
-        }
-        tempIndex++;
-    }
-    
-    iSongHistoryTable.GetL();
-    iSongHistoryTable.DeleteL();
-    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneHistoryL - exiting" );   
-    return KErrNone;    
-}
-
-TInt CIRSongHistoryDb::DeleteOneSongHistory(TInt aIndex)
-{
-    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneSongHistory - Entering" );
-    
-    TInt retValue = 0;
-    TRAPD(error,(retValue = DeleteOneSongHistoryL(aIndex)));
-    
-    if( KErrNone != error )
-    {
-        return error;
-    }
-    
-    if( KErrNone != retValue)
-    {
-        return retValue;
-    }    
-    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneSongHistory - exiting" );    
-    return KErrNone;
-}
-
-TInt CIRSongHistoryDb::DeleteOneSongHistoryL(TInt aIndex)
-{
-    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneSongHistoryL - Entering" );
-    TInt totalCount = iSongHistoryTable2.CountL();     
-    if (aIndex < 0 || aIndex >= totalCount)
-    {
-        return KErrArgument;
-    }
-    
-    iSongHistoryTable2.LastL();
-    TInt tempIndex = 0;     
-    while (tempIndex < aIndex)
-    {
-        TRAPD(error,iSongHistoryTable2.PreviousL());
-        if (KErrNone != error)
-        {
-            Compact();
-            return error;
-        }
-        tempIndex++;
-    }
-    
-    iSongHistoryTable2.GetL();
-    iSongHistoryTable2.DeleteL();
-    IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneSongHistoryL - exiting" );   
-    return KErrNone;    
-}
-
-// ---------------------------------------------------------------------------
-// Function : ClearAllSongHistoryFromDb2
-// delete all the entries from the database.
-// ---------------------------------------------------------------------------
-//
-TInt CIRSongHistoryDb::ClearAllSongHistoryFromDb2()
-{
-
-    TInt error = KErrNone;
-
-    IRLOG_DEBUG( "CIRSongHistoryDb::ClearAllSongHistoryFromDb2 - Entering" );
-    TRAP(error, iSongHistoryTable2.FirstL());
-    if(error != KErrNone)
-    {
-        return error;
-    }
-
-    while (iSongHistoryTable2.AtRow())
-    {
-        TRAPD(error,
-        iSongHistoryTable2.GetL();
-        iSongHistoryTable2.DeleteL();
-        iSongHistoryTable2.NextL(););
-        if(error)
-        {
-            Compact();
-            return error;
-        }
-
-    }
-    Compact();
-    IRLOG_DEBUG( "CIRSongHistoryDb::ClearAllSongHistoryFromDb - Exiting." );
-    return KErrNone;
-
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::ConstructL()
-// Standard 2nd phase construction
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryDb::ConstructL()
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::ConstructL" );
-	User::LeaveIfError(iFsSession.Connect());
-
-	CIRSettings* settings = CIRSettings::OpenL();
-
-	TFileName songHistoryDbFile = settings->PrivatePath();
-	songHistoryDbFile.Append(KSongHistoryDbFile);
-
-	CreateDbCondition(songHistoryDbFile);
-	OpenSongHistoryDbL(songHistoryDbFile);
-
-	settings->Close();
-
-	IRLOG_DEBUG( "CIRSongHistoryDb::ConstructL- Exiting." );
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::CloseSongHistoryDb()
-// Closes the database
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryDb::CloseSongHistoryDb()
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::CloseSongHistoryDb" );
-	iSongHistoryTable.Close();
-	iSongHistoryTable2.Close();
-	Close();
-	IRLOG_DEBUG( "CIRSongHistoryDb::CloseSongHistoryDb - Exiting." );
-}
-
-
-/**
-* Function : CreateSongHistoryTablesL()
-* creates songhistory table with three columns
-* log data
-* ---------------------------------------------------------------------------
-* SongHistoryTable
-*---------------------------
-*| SongName | ArtistName | ChannelName | ChannelUrl | ChannelType | ChannelId    | Bitrate      | ChannelDesc | ImageUrl   | GenreName  | CountryName | LanguageName | MusicStatus
-*---------------------------
-*|EDbColText| EDbColText | EDbColText  | EDbColText | EDbColUint8 | EDbColUint16 | EDbColUint16 | EDbColText  | EDbColText | EDbColText | EDbColText  | EDbColText   | EDbColText 
-*----------------------------------------------------------------------------
-*/
-void CIRSongHistoryDb::CreateSongHistoryTablesL()
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryTablesL" );
-    CDbColSet* columns = CDbColSet::NewLC();
-
-    TRAPD( error,
-    columns->AddL( TDbCol( KSongHistoryDBSongNameColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBArtistNameColumn, EDbColText, KMaxColumnLength) );
-    columns->AddL( TDbCol( KSongHistoryDBChannelNameColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBChannelUrlColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBChannelTypeColumn, EDbColUint8 ) );
-    columns->AddL( TDbCol( KSongHistoryDBChannelIdColumn, EDbColUint16 ) );
-    columns->AddL( TDbCol( KSongHistoryDBBitrateColumn, EDbColUint16 ) );
-    columns->AddL( TDbCol( KSongHistoryDBChannelDescColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBImageUrlColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBGenreNameColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBCountryNameColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBLanguageNameColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBMusicStatusColumn, EDbColText, KMaxColumnLength ) );
-    );
-	User::LeaveIfError( error );
-
-    User::LeaveIfError( CreateTable( KSongHistoryDBTable, *columns ) );
-
-    CleanupStack::PopAndDestroy( columns );
-	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryTablesL - Exiting." );
-}
-
-/**
-* Function : CreateSongHistoryTables2L()
-* creates songhistory table with three columns
-* log data
-* ---------------------------------------------------------------------------
-* SongHistoryTable
-*---------------------------
-*| SongName | ArtistName | ChannelName | MusicStatusFlag 
-*---------------------------
-*|EDbColText| EDbColText | EDbColText  | EDbColText 
-*----------------------------------------------------------------------------
-*/
-void CIRSongHistoryDb::CreateSongHistoryTables2L()
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryTablesL" );
-    CDbColSet* columns = CDbColSet::NewLC();
-
-    TRAPD( error,
-    columns->AddL( TDbCol( KSongHistoryDBSongNameColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBArtistNameColumn, EDbColText, KMaxColumnLength) );
-    columns->AddL( TDbCol( KSongHistoryDBChannelNameColumn, EDbColText, KMaxColumnLength) );
-    columns->AddL( TDbCol( KSongHistoryDBMusicStatusColumn, EDbColText, KMaxColumnLength ) );
-    );
-	User::LeaveIfError( error );
-
-    User::LeaveIfError( CreateTable( KSongHistoryDBTable2, *columns ) );
-
-    CleanupStack::PopAndDestroy( columns );
-	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryTablesL - Exiting." );
-}
-
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::OpenSongHistoryDbL()
-// opening the data base
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryDb::OpenSongHistoryDbL(const TFileName& aSongHistoryDbFile)
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::OpenSongHistoryDbL" );
-	CloseSongHistoryDb(); //Ensure that the database is closed before trying to open it.
-
-	 
-    TInt error  = KErrNone;
- 
-	error = Open(iFsSession,aSongHistoryDbFile);
-	if( error!=KErrNone )
-	{
-		//if database is failed to open then
-		//function leaves
-		IRLOG_ERROR2( "CIRSongHistoryDb::OpenSongHistoryDbL - Opening session database failed (%d)", error );
-		User::LeaveIfError(error);
-	}
-	if( IsDamaged() || !InTransaction() )
-	{
-		//if data base is damaged then
-		//it tried to recover
-		//if recovery is not possible function leaves
-		error = Recover();
-		if ( KErrNone == error)
-			{
-			//if recovered data base is compacted
-			error = Compact();
-			}
-	    User::LeaveIfError(error);
-	}
-
-	//open the table
-	error = iSongHistoryTable.Open(*this, KSongHistoryDBTable, iSongHistoryTable.EUpdatable);
-	if( error )
-	{
-		User::LeaveIfError(error);
-	}
-
-	error = iSongHistoryTable2.Open(*this, KSongHistoryDBTable2, iSongHistoryTable2.EUpdatable);
-	if( error )
-	{
-	    iSongHistoryTable.Close();
-		User::LeaveIfError(error);
-	} 
-
-	IRLOG_DEBUG( "CIRSongHistoryDb::OpenSongHistoryDbL - Exiting." );
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::CreateSongHistoryDb()
-// @database filename
-// ---------------------------------------------------------------------------
-//
-TInt CIRSongHistoryDb::CreateSongHistoryDb(const TFileName& aSongHistoryDbFile )
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryDb" );
-
-
-	TInt error = Replace(iFsSession,aSongHistoryDbFile);
-	if ( error != KErrNone )
-    {
-	    IRLOG_ERROR2( "CIRSongHistoryDb::CreateSongHistoryDb - Creating history database failed (%d)", error );
-	    return error;
-    }
-
-	TRAPD(err1,CreateSongHistoryTablesL());
-	if(err1)
-	{
-	    return err1;
-	}
-
-	//if error, no handling 
-	TRAPD(err2, CreateSongHistoryTables2L());
-	if( err2 )
-	{
-	    return err2;	  
-	}	
-	IRLOG_DEBUG( "CIRSongHistoryDb::CreateSongHistoryDb - Exiting." );
-	return KErrNone;
-}
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::CountSongHistoryDb()
-// count the database entries
-// ---------------------------------------------------------------------------
-//
-
-TInt CIRSongHistoryDb::CountSongHistoryDb()
-{
-	IRLOG_DEBUG( "CIRSongHistoryDb::CountSongHistoryDb" );
-	TInt historyCount = 0;
-	iSongHistoryTable.Reset();
-	TRAPD(error,historyCount= iSongHistoryTable.CountL());
-	if(error)
-	{
-		
-	}
-	IRLOG_DEBUG( "CIRSongHistoryDb::CountSongHistoryDb - Exiting." );
- 	return historyCount;
-
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::CountSongHistoryDb2()
-// count the database entries
-// ---------------------------------------------------------------------------
-//
-TInt CIRSongHistoryDb::CountSongHistoryDb2()
-{
-    IRLOG_DEBUG( "CIRSongHistoryDb::CountSongHistoryDb" );
-    TInt historyCount = 0;
-    iSongHistoryTable2.Reset();
-    TRAPD(error,historyCount= iSongHistoryTable2.CountL());
-    if(error)
-    {
-        historyCount = -1;
-    }
-    IRLOG_DEBUG( "CIRSongHistoryDb::CountSongHistoryDb - Exiting." );
-    return historyCount;
-}
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::GetLastHistoryItemL()
-// Gets the last song history item
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryDb::GetLastHistoryItemL(RBuf& aSongName, RBuf& aArtistName,
-				 RBuf& aChannelName, RBuf& aChannelUrl)
-{
-	if( iSongHistoryTable.IsEmptyL() || iSongHistoryTable.LastL() == EFalse)
-	{
-		return;
-	}
-
-	iSongHistoryTable.GetL();
-
-	CDbColSet* columns = iSongHistoryTable.ColSetL();
-	TInt songColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
-	TInt artistColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );
-	TInt channelColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );
-	TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
-
-	delete columns;
-    columns = NULL;
-
-    aSongName.CreateL(iSongHistoryTable.ColDes( songColumn ));
-    aArtistName.CreateL(iSongHistoryTable.ColDes( artistColumn ));
-    aChannelName.CreateL(iSongHistoryTable.ColDes( channelColumn ));
-    aChannelUrl.CreateL(iSongHistoryTable.ColDes( channelUrlColumn ));
-
-
-    iSongHistoryTable.Reset();
-}
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::GetChannelSongsCountL()
-// Gets the channel's song count.
-// ---------------------------------------------------------------------------
-//
-
-TUint CIRSongHistoryDb::GetChannelSongsCountL( const RBuf& aChannelName, const RBuf& aChannelUrl )
-{
-	_LIT( strQuery, "Select SongName from SongHistoryTable where ChannelName='%S' AND ChannelUrl='%S'");
-
-	TBuf<KMaxSize>  bufQuery;
-	bufQuery.Format( strQuery, &aChannelName, &aChannelUrl );
-
-	TDbQuery	querySearchChannel( bufQuery );
-	RDbView		dbView;
-
-	TInt error = dbView.Prepare( *this, querySearchChannel );
-	User::LeaveIfError(error);
-
-	error = dbView.Evaluate();	// 0, evaluation is complete 
-	User::LeaveIfError(error);
-
-	TInt cRows = dbView.CountL();
-
-	dbView.Close();
-
-	return cRows;
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::SyncSongHistoryDb()
-// Synchronises the History DB with removed channel entry in the ISDS
-// ---------------------------------------------------------------------------
-//
-
-void CIRSongHistoryDb::SyncSongHistoryDbL(TInt aChannelId)
-{
- 	IRLOG_DEBUG( "CIRSongHistoryDb::SyncSongHistoryDbL" );
-
-
-    if(iSongHistoryTable.CountL() < 1)
-    {
-    	return;
-    }
-
-    CDbColSet* columns = iSongHistoryTable.ColSetL();
-    TInt songColumn = columns->ColNo( KSongHistoryDBSongNameColumn );
-    TInt artistColumn = columns->ColNo( KSongHistoryDBArtistNameColumn );
-    TInt channelColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );
-    TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
-    TInt channelTypeColumn = columns->ColNo( KSongHistoryDBChannelTypeColumn );
-    TInt channelIdColumn = columns->ColNo( KSongHistoryDBChannelIdColumn );
-    TInt bitrateColumn = columns->ColNo( KSongHistoryDBBitrateColumn );
-    TInt channelDescColumn = columns->ColNo( KSongHistoryDBChannelDescColumn );
-    TInt imageUrlColumn = columns->ColNo( KSongHistoryDBImageUrlColumn );
-    TInt genreNameColumn = columns->ColNo( KSongHistoryDBGenreNameColumn );
-    TInt countryNameColumn = columns->ColNo( KSongHistoryDBCountryNameColumn );
-    TInt languageNameColumn = columns->ColNo( KSongHistoryDBLanguageNameColumn );
-    TInt musicStatusColumn = columns->ColNo( KSongHistoryDBMusicStatusColumn );
-
-    delete columns;
-    columns = NULL;
-
-	// Find out the channel to be changed 
-		for ( iSongHistoryTable.LastL(); iSongHistoryTable.AtRow(); iSongHistoryTable.PreviousL() )
-		{
-			iSongHistoryTable.GetL();
-			// Extracting the values from the database.
-				TInt channelId;
-				RBuf imageUrl, genreName, countryName, languageName;
-                RBuf channelMusicStatus;
-
-                CleanupClosePushL(imageUrl);
-                CleanupClosePushL(genreName);
-                CleanupClosePushL(countryName);
-                CleanupClosePushL(languageName);
-                CleanupClosePushL(channelMusicStatus);
-
-				channelId=iSongHistoryTable.ColUint16( channelIdColumn );
-                imageUrl.CreateL(iSongHistoryTable.ColDes( imageUrlColumn ));
-                genreName.CreateL(iSongHistoryTable.ColDes( genreNameColumn ));
-                countryName.CreateL(iSongHistoryTable.ColDes( countryNameColumn ));
-                languageName.CreateL(iSongHistoryTable.ColDes( languageNameColumn ));
-				channelMusicStatus.CreateL(iSongHistoryTable.ColDes( musicStatusColumn ));
-
-                
-                if(aChannelId == channelId)
-	                {
-	                iSongHistoryTable.UpdateL();
-		            iSongHistoryTable.SetColL(channelTypeColumn, 0);
-		            iSongHistoryTable.SetColL(channelIdColumn, 0);
-                    iSongHistoryTable.SetColL(imageUrlColumn, KNo);
-                    iSongHistoryTable.SetColL(genreNameColumn, KNo);
-                    iSongHistoryTable.SetColL(countryNameColumn, KNo);
-                    iSongHistoryTable.SetColL(languageNameColumn, KNo);
-		            iSongHistoryTable.SetColL(musicStatusColumn, KNo);
-		            iSongHistoryTable.PutL();
-	                }
-                CleanupStack::PopAndDestroy(5);
-		}
-	iSongHistoryTable.Reset();
-		
-	IRLOG_DEBUG( "CIRSongHistoryDb::SyncSongHistoryDbL - Exiting." );
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::GetIdPresentInDb()
-// Gets whether that particular channel id is present in Db or not.
-// ---------------------------------------------------------------------------
-//
-
-TBool CIRSongHistoryDb::GetIdPresentInDbL(TInt aChannelId)
-{
- 	IRLOG_DEBUG( "CIRSongHistoryDb::GetIdPresentInDbL" );
-
- 	TBool value = EFalse;
-
-    if(iSongHistoryTable.CountL() < 1)
-    {
-    	return value;
-    }
-
-    CDbColSet* columns = iSongHistoryTable.ColSetL();
-    TInt channelIdColumn = columns->ColNo( KSongHistoryDBChannelIdColumn );
-
-    delete columns;
-    columns = NULL;
-
-	// Find out the channel to be changed 
-		for ( iSongHistoryTable.LastL(); iSongHistoryTable.AtRow(); iSongHistoryTable.PreviousL() )
-		{
-			iSongHistoryTable.GetL();
-				TInt channelId;
-				
-				channelId=iSongHistoryTable.ColUint16( channelIdColumn );
-                if(aChannelId == channelId)
-	                {
-	                value = ETrue;
-	                }
-
-		}
-		
-	iSongHistoryTable.Reset();
-	
-	IRLOG_DEBUG( "CIRSongHistoryDb::GetIdPresentInDbL - Exiting." );
-	return value ;
-}
-
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryDb::UpdateSongHistoryDb()
-// Updates the song history DB when there is a channel change in the isds.
-// ---------------------------------------------------------------------------
-//
-
-TInt CIRSongHistoryDb::UpdateSongHistoryDbL(	TInt aChannelId,
-											const TDesC& aChannelUrl,
-                                            const TDesC& aImageUrl,
-                                            const TDesC& aGenreName,
-                                            const TDesC& aCountryName,
-                                            const TDesC& aLanguageName,
-											const TDesC& aMusicFlag)
-{
- 	IRLOG_DEBUG( "CIRSongHistoryDb::UpdateSongHistoryDbL" );
-
- 	TBool channelChanged = EFalse ;
- 	TInt compFlagUrl ;
- 	TInt compFlagImageUrl, compFlagGenreName, compFlagCountryName, compFlagLanguageName;
- 	TInt compFlagMusic ;
- 	TInt compUrlChange ;
-
-    if(iSongHistoryTable.CountL() < 1)
-    {
-    	return EFalse;
-    }
-
-    CDbColSet* columns = iSongHistoryTable.ColSetL();
-    TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
-    TInt channelTypeColumn = columns->ColNo( KSongHistoryDBChannelTypeColumn );
-    TInt channelIdColumn = columns->ColNo( KSongHistoryDBChannelIdColumn );
-    TInt channelDescColumn = columns->ColNo( KSongHistoryDBChannelDescColumn );
-    TInt imageUrlColumn = columns->ColNo( KSongHistoryDBImageUrlColumn );
-    TInt genreNameColumn = columns->ColNo( KSongHistoryDBGenreNameColumn );
-    TInt countryNameColumn = columns->ColNo( KSongHistoryDBCountryNameColumn );
-    TInt languageNameColumn = columns->ColNo( KSongHistoryDBLanguageNameColumn );
-    TInt musicStatusColumn = columns->ColNo( KSongHistoryDBMusicStatusColumn );
-
-    delete columns;
-    columns = NULL;
-
-	// Find out the channel to be changed 
-	
-		for ( iSongHistoryTable.LastL(); iSongHistoryTable.AtRow(); iSongHistoryTable.PreviousL() )
-		{
-			iSongHistoryTable.GetL();
-			// Extracting the values from the database.
-				RBuf channelUrl;
-				RBuf imageUrl, genreName, countryName, languageName;
-				TInt channelId;
-                RBuf channelMusicStatus;
-
-				CleanupClosePushL(channelUrl);
-				CleanupClosePushL(imageUrl);
-				CleanupClosePushL(genreName);
-				CleanupClosePushL(countryName);
-				CleanupClosePushL(languageName);
-				CleanupClosePushL(channelMusicStatus);
-
-				channelUrl.CreateL(iSongHistoryTable.ColDes( channelUrlColumn ));
-				imageUrl.CreateL(iSongHistoryTable.ColDes( imageUrlColumn ));
-                genreName.CreateL(iSongHistoryTable.ColDes( genreNameColumn ));
-                countryName.CreateL(iSongHistoryTable.ColDes( countryNameColumn ));
-                languageName.CreateL(iSongHistoryTable.ColDes( languageNameColumn ));
-
-				channelId=iSongHistoryTable.ColUint16( channelIdColumn );
-                
-                channelMusicStatus.CreateL(iSongHistoryTable.ColDes( musicStatusColumn ));
-                
-                if(aChannelId == channelId)
-	                {
-	                compFlagUrl =   (channelUrl).Compare(aChannelUrl);
-                    compFlagImageUrl = (imageUrl).Compare(aImageUrl);
-                    compFlagGenreName = (genreName).Compare(aGenreName);
-                    compFlagCountryName = (countryName).Compare(aCountryName);
-                    compFlagLanguageName = (languageName).Compare(aLanguageName);
-	                compFlagMusic = (channelMusicStatus).Compare(aMusicFlag);
-		            compUrlChange = (aChannelUrl).Compare(KNo);
-		                
-	                if(compFlagUrl && compUrlChange)
-		                {
-		                iSongHistoryTable.UpdateL();
-		                iSongHistoryTable.SetColL(channelUrlColumn, aChannelUrl);
-		                iSongHistoryTable.PutL();
-		                channelChanged = ETrue ;
-		                }
-                    if(compFlagImageUrl)
-                        {
-                        iSongHistoryTable.UpdateL();
-                        iSongHistoryTable.SetColL(imageUrlColumn, aImageUrl);
-                        iSongHistoryTable.PutL();
-                        channelChanged = ETrue ;
-                        }
-                    if(compFlagGenreName)
-                        {
-                        iSongHistoryTable.UpdateL();
-                        iSongHistoryTable.SetColL(genreNameColumn, aGenreName);
-                        iSongHistoryTable.PutL();
-                        channelChanged = ETrue ;
-                        }
-                    if(compFlagCountryName)
-                        {
-                        iSongHistoryTable.UpdateL();
-                        iSongHistoryTable.SetColL(countryNameColumn, aCountryName);
-                        iSongHistoryTable.PutL();
-                        channelChanged = ETrue ;
-                        }
-                    if(compFlagLanguageName)
-                        {
-                        iSongHistoryTable.UpdateL();
-                        iSongHistoryTable.SetColL(languageNameColumn, aLanguageName);
-                        iSongHistoryTable.PutL();
-                        channelChanged = ETrue ;
-                        }
-	                if(compFlagMusic)
-		                {
-		                iSongHistoryTable.UpdateL();
-		                iSongHistoryTable.SetColL(musicStatusColumn, aMusicFlag);
-		                iSongHistoryTable.PutL();
-		                channelChanged = ETrue ;
-		                }
-	                
-	                }
-                CleanupStack::PopAndDestroy(6);
-		}
-	iSongHistoryTable.Reset();
-	IRLOG_DEBUG( "CIRSongHistoryDb::UpdateSongHistoryDbL - Exiting." );
-	return channelChanged;
-}
-
-void CIRSongHistoryDb::SearchAndDeleteRecordL(const TDesC& aChannelName, const TDesC& aChannelUrl,
-                                              TInt aChannelType, TInt aPresetId)
-{
-    CDbColSet* columns = iSongHistoryTable.ColSetL();
-    TInt channelNameColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );
-    TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
-    TInt channelTypeColumn = columns->ColNo( KSongHistoryDBChannelTypeColumn );
-    TInt channelIdColumn = columns->ColNo(KSongHistoryDBChannelIdColumn);
-    
-    delete columns;
-    columns = NULL;
-    
-    for (iSongHistoryTable.LastL(); iSongHistoryTable.AtRow(); iSongHistoryTable.PreviousL())
-    {
-        iSongHistoryTable.GetL();
-        TPtrC channelName = iSongHistoryTable.ColDes(channelNameColumn);
-        TPtrC channelUrl  = iSongHistoryTable.ColDes(channelUrlColumn);
-        TInt channelType = iSongHistoryTable.ColInt(channelTypeColumn);
-        TInt channelId = iSongHistoryTable.ColInt(channelIdColumn);
-        
-        if (0 == aChannelType)
-        {
-            //user-defined channel
-            if (aChannelName == channelName && aChannelUrl == channelUrl)
-            {
-                iSongHistoryTable.DeleteL();  
-                break;
-            }
-        }
-        else
-        {
-            //channel from ISDS server
-            if (aChannelName == channelName && aPresetId == channelId)
-            {
-                iSongHistoryTable.DeleteL();  
-                break;
-            }
-        }
-    }
-    
-    iSongHistoryTable.Reset();
-}
--- a/internetradio2.0/irsonghistory/src/irsonghistoryinfo.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,367 +0,0 @@
-/*
-* Copyright (c) 2004 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 for the songhistory information.
-*
-*/
-
-#include "irsonghistoryinfo.h"
-
-// ---------------------------------------------------------------------------
-// Function : NewL
-// Function returns an instance of CIRSongHistoryInfo
-// Two phase constructor
-// ---------------------------------------------------------------------------
-//
-	EXPORT_C CIRSongHistoryInfo * CIRSongHistoryInfo::NewL()
-		{
-			CIRSongHistoryInfo* self =  CIRSongHistoryInfo :: NewLC();
-			CleanupStack::Pop( self );
-			return self;
-		}
-
-// ---------------------------------------------------------------------------
-//CIRLastPlayedSongs::NewLC()
-//Static function
-//standard two phased constructor
-// ---------------------------------------------------------------------------
-//
-	EXPORT_C CIRSongHistoryInfo * CIRSongHistoryInfo::NewLC()
-		{
-			CIRSongHistoryInfo* self = new( ELeave ) CIRSongHistoryInfo();
-			CleanupStack::PushL( self );
-			return self;
-		}
-// ---------------------------------------------------------------------------
-//CIRSongHistoryInfo::~CIRSongHistoryInfo()
-//standard C++ destructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CIRSongHistoryInfo::~CIRSongHistoryInfo()
-	{
-		iArtistInfo.Close();
-
-		iSongInfo.Close();
-
-		iStreamUrlInfo.Close();
-
-		iChannelInfo.Close();
-		
-		iChannelDescription.Close();
-
-        iImageUrl.Close();
-        iGenreName.Close();
-        iCountryName.Close();
-        iLanguageName.Close();
-		
-		iMusicStoreStatus.Close();
-		
-	}
-
-// ---------------------------------------------------------------------------
-//CIRSongHistoryInfo::~CIRSongHistoryInfo()
-//standard C++ constructor
-// ---------------------------------------------------------------------------
-//
-CIRSongHistoryInfo::CIRSongHistoryInfo()
-	 {
-		
-	 }
-
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetArtistL
-// Sets Artist name
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetArtistL(RBuf& aArtist)
- {
- 	iArtistInfo.CreateL(aArtist);
- }
- 
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetSongNameL
-// Sets Song name
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetSongNameL (RBuf& aSongName)
- {
- 	iSongInfo.CreateL(aSongName);
- }
- 
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetStreamUrlL
-// Sets Stream url name
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetStreamUrlL(RBuf& aStreamUrl)
- {
- 	iStreamUrlInfo.CreateL(aStreamUrl);
- }
- 
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetChannelNameL
-// Sets Channel name
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetChannelNameL(RBuf& aChannelName)
- {
- 	iChannelInfo.CreateL(aChannelName);
- }
- // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetChannelDescL
-// Sets Channel name
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetChannelDescL(RBuf& aChannelDesc)
- {
- 	iChannelDescription.CreateL(aChannelDesc);
- }
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetImageUrlL
-// Sets Channel image Url
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetImageUrlL(RBuf& aImageUrl)
- {
-    iImageUrl.CreateL(aImageUrl);
- }
- 
- // ---------------------------------------------------------------------------
- // CIRSongHistoryInfo::SetGenreNameL
- // Set channel genre name
- // ---------------------------------------------------------------------------
- //
-void CIRSongHistoryInfo::SetGenreNameL(const RBuf& aGenreName)
-{
-    iGenreName.CreateL(aGenreName);
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetCountryNameL
-// Set channel country name
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryInfo::SetCountryNameL(const RBuf& aCountryName)
-{
-    iCountryName.CreateL(aCountryName);
-}
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetLanguageNameL
-// Set channel language name
-// ---------------------------------------------------------------------------
-//
-void CIRSongHistoryInfo::SetLanguageNameL(const RBuf& aLanguageName)
-{
-    iLanguageName.CreateL(aLanguageName);
-}
- // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetChannelMusicStatusL
-// Sets Channel's MusicStoreStatus
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetChannelMusicStatusL(RBuf& aChannelMusicStatus)
- {
- 	iMusicStoreStatus.CreateL(aChannelMusicStatus);
- }
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetChannelType
-// Sets Channel TYpe
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetChannelType(TInt aChannelType)
- {
- 	iChannelType=aChannelType;
- }
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetChannelId
-// Sets Channel Id
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetChannelId(TInt aChannelId)
- {
- 	iChannelId=aChannelId;
- }
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetBitrate
-// Sets bitrate
-// ---------------------------------------------------------------------------
-//
- void CIRSongHistoryInfo::SetBitrate(TInt aBitrate)
- {
-    iBitrate=aBitrate;
- }
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::SetHistoryInfo
-// Sets Song History Information.
-// ---------------------------------------------------------------------------
-//
-
- EXPORT_C void CIRSongHistoryInfo::SetHistoryInfoL(RBuf& aSongName,
-												  RBuf& aArtist, 
-												  RBuf& aStreamUrl, 
-												  RBuf& aChannelName ,
-												  TInt aChannelType, 
-												  TInt aChannelId,
-												  TInt aBitrate,
-												  RBuf& aChannelDesc,
-                                                  RBuf& aImageUrl,
-                                                  RBuf& aGenreName,
-                                                  RBuf& aCountryName,
-                                                  RBuf& aLanguageName,
-												  RBuf& aMusicStoreStatus
-												   )
- {
- 	SetSongNameL(aSongName);
- 	SetArtistL(aArtist);
- 	SetStreamUrlL(aStreamUrl);
- 	SetChannelNameL(aChannelName);
-    SetChannelType(aChannelType);
-    SetChannelId(aChannelId);
-    SetBitrate(aBitrate);
-    SetChannelDescL(aChannelDesc);
-    SetImageUrlL(aImageUrl);
-    SetGenreNameL(aGenreName);
-    SetCountryNameL(aCountryName);
-    SetLanguageNameL(aLanguageName);
-    SetChannelMusicStatusL(aMusicStoreStatus);
-	
- }
- 
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetSongInfo
-// Gets the song information
-// ---------------------------------------------------------------------------
-//
- EXPORT_C const RBuf& CIRSongHistoryInfo::GetSongInfo() const
- {
- 	return iSongInfo;
- }
- 
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetArtistInfo
-// Gets Artist name
-// ---------------------------------------------------------------------------
-//
- EXPORT_C const RBuf& CIRSongHistoryInfo::GetArtistInfo() const
- {
- 	return iArtistInfo;
- }
- 
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetStreamUrl
-// Gets StreamUrl name
-// ---------------------------------------------------------------------------
-//
- EXPORT_C const RBuf& CIRSongHistoryInfo::GetStreamUrl() const
- {
- 	return iStreamUrlInfo;
- }
- 
- // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetChannelName
-// Gets Channel name
-// ---------------------------------------------------------------------------
-//
- EXPORT_C const RBuf& CIRSongHistoryInfo::GetChannelName() const
- {
- 	return iChannelInfo;
- }
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetChannelDesc
-// Gets Channel name
-// ---------------------------------------------------------------------------
-//
- EXPORT_C const RBuf& CIRSongHistoryInfo::GetChannelDesc() const 
- {
- 	return iChannelDescription;
- }
-
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetImageUrl
-// Gets Channel image Url
-// ---------------------------------------------------------------------------
-//
- EXPORT_C const RBuf& CIRSongHistoryInfo::GetImageUrl() const 
- {
-    return iImageUrl;
- }
- // ---------------------------------------------------------------------------
- // CIRSongHistoryInfo::GetGenreName
- // Get channel genre name
- // ---------------------------------------------------------------------------
- //
- 
- EXPORT_C const RBuf& CIRSongHistoryInfo::GetGenreName() const 
- {
-    return iGenreName;
- }
- 
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetCountryName
-// Get channel country name
-// ---------------------------------------------------------------------------
-//
- EXPORT_C const RBuf& CIRSongHistoryInfo::GetCountryName() const 
- {
-    return iCountryName;
- }
- 
-// ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetLanguageName
-// Get channel language name
-// ---------------------------------------------------------------------------
-//
- EXPORT_C const RBuf& CIRSongHistoryInfo::GetLanguageName() const 
- {
-    return iLanguageName;
- }
-
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetChannelType
-// Gets Channel Type
-// ---------------------------------------------------------------------------
-//
- EXPORT_C TInt CIRSongHistoryInfo::GetChannelType() const
- {
- 	return iChannelType;
- }
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetChannelId
-// Gets Channel Id
-// ---------------------------------------------------------------------------
-//
- EXPORT_C TInt CIRSongHistoryInfo::GetChannelId() const
- {
- 	return iChannelId;
- }
- // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetBitrate
-// Gets bitrate
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRSongHistoryInfo::GetBitrate() const
-{
-   return iBitrate;
-}
-  // ---------------------------------------------------------------------------
-// CIRSongHistoryInfo::GetChannelMusicStatus
-// Gets Channel MusicStoreStatus
-// ---------------------------------------------------------------------------
-//
- EXPORT_C const RBuf& CIRSongHistoryInfo::GetChannelMusicStatus() const 
- {
- 	return iMusicStoreStatus;
- }
--- a/package_definition.xml	Fri Sep 17 08:27:59 2010 +0300
+++ b/package_definition.xml	Mon Oct 04 00:07:46 2010 +0300
@@ -54,10 +54,6 @@
 	<!--  Move down a dir or break into components-->
       <unit bldFile="qtinternetradio" qt:proFile="all.pro" qt:qmakeArgs="-r -config rom"/>
      </component>
-     <component id="qtinternetradio_internal" name="Qt Internet Radio Internal" filter="s60,test,qt_unit_test">
-	  <!-- appears to be missing. Remove? 
-	  <unit bldFile="qtinternetradio/internal/tsrc" qt:proFile="tsrc.pro" filter="TA_InternetRadio"/> -->
-     </component>
     </collection>
   </package>
 </SystemDefinition>
--- a/qtinternetradio/all.pro	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/all.pro	Mon Oct 04 00:07:46 2010 +0300
@@ -17,7 +17,8 @@
 TEMPLATE = subdirs
 BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>" \
                              "rom/qtinternetradio.iby  CORE_APP_LAYER_IBY_EXPORT_PATH(qtinternetradio.iby)" 
-
+# stub sis
+BLD_INF_RULES.prj_exports += "./rom/ir3_qtinternetradio_stub.sis       /epoc32/data/z/system/install/ir3_qtinternetradio_stub.sis"
  
 exists($${OS_LAYER_PLATFORM_EXPORT_PATH(qt/translations/internet_radio_10_1*.ts)}) {
        BLD_INF_RULES.prj_exports += "rom/qtinternetradio_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(qtinternetradio_resources.iby)"  
@@ -35,8 +36,7 @@
           irqfavoritesdb \
           irqisdsclient \
           irqmediaplayer \
-          irqnetworkcontroller \
-          irqsonghistory \
+          irqnetworkcontroller \          
           irqnwkinfoobserver \
           irqstatisticsreporter \
           irhswidgetplugin \
--- a/qtinternetradio/bwins/irdbu.def	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/bwins/irdbu.def	Mon Oct 04 00:07:46 2010 +0300
@@ -1,57 +1,60 @@
 EXPORTS
 	?getChannelId@IRDBWrapper@@QAEPAV?$QList@I@@PBV?$QMap@IVQString@@@@0@Z @ 1 NONAME ; class QList<unsigned int> * IRDBWrapper::getChannelId(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
-	??_EIRDBWrapper@@UAE@I@Z @ 2 NONAME ; IRDBWrapper::~IRDBWrapper(unsigned int)
-	??_EsearchRltWrapper@@UAE@I@Z @ 3 NONAME ; searchRltWrapper::~searchRltWrapper(unsigned int)
-	?combineDeleteStr@IRDBWrapper@@IAEXPBV?$QMap@IVQString@@@@0PBVQString@@AAV3@@Z @ 4 NONAME ; void IRDBWrapper::combineDeleteStr(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *, class QString const *, class QString &)
-	?srhChannelId@searchRltWrapper@@AAEIAAVQString@@PBV?$QMap@IVQString@@@@1@Z @ 5 NONAME ; unsigned int searchRltWrapper::srhChannelId(class QString &, class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
-	??0urlInfoWrapper@@QAE@XZ @ 6 NONAME ; urlInfoWrapper::urlInfoWrapper(void)
-	??1imgWrapper@@UAE@XZ @ 7 NONAME ; imgWrapper::~imgWrapper(void)
-	??0channelHistoryWrapper@@QAE@XZ @ 8 NONAME ; channelHistoryWrapper::channelHistoryWrapper(void)
-	??0IRDBWrapper@@QAE@XZ @ 9 NONAME ; IRDBWrapper::IRDBWrapper(void)
-	?getImg@imgWrapper@@QAEPAV?$QList@PAVQVariant@@@@PBV?$QMap@IVQString@@@@0@Z @ 10 NONAME ; class QList<class QVariant *> * imgWrapper::getImg(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
-	?loadDataOfChannelIdCB@IRDBWrapper@@AAE_NAAVQSqlQuery@@PAV?$QList@I@@@Z @ 11 NONAME ; bool IRDBWrapper::loadDataOfChannelIdCB(class QSqlQuery &, class QList<unsigned int> *)
-	?getIRDB@IRDBWrapper@@IAEPAV?$QList@PAVQVariant@@@@PBV?$QMap@IVQString@@@@0@Z @ 12 NONAME ; class QList<class QVariant *> * IRDBWrapper::getIRDB(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
-	?combinePutStr@IRDBWrapper@@IAEXPBV?$QMap@IVQString@@@@PBVQString@@AAV3@2PBV?$QMap@IVQByteArray@@@@PAV?$QList@VQByteArray@@@@@Z @ 13 NONAME ; void IRDBWrapper::combinePutStr(class QMap<unsigned int, class QString> const *, class QString const *, class QString &, class QString &, class QMap<unsigned int, class QByteArray> const *, class QList<class QByteArray> *)
-	??1searchRltWrapper@@UAE@XZ @ 14 NONAME ; searchRltWrapper::~searchRltWrapper(void)
-	?putChannelHistory@channelHistoryWrapper@@QAE_NPBV?$QMap@IVQString@@@@PAIPBV?$QMap@IVQByteArray@@@@00@Z @ 15 NONAME ; bool channelHistoryWrapper::putChannelHistory(class QMap<unsigned int, class QString> const *, unsigned int *, class QMap<unsigned int, class QByteArray> const *, class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
-	??1urlInfoWrapper@@UAE@XZ @ 16 NONAME ; urlInfoWrapper::~urlInfoWrapper(void)
-	?getIRTableCB@songHistoryWrapper@@EAE_NAAVQSqlQuery@@PAV?$QList@PAVQVariant@@@@@Z @ 17 NONAME ; bool songHistoryWrapper::getIRTableCB(class QSqlQuery &, class QList<class QVariant *> *)
-	?deleteSongHistory@songHistoryWrapper@@QAE_NPBV?$QMap@IVQString@@@@0@Z @ 18 NONAME ; bool songHistoryWrapper::deleteSongHistory(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
-	?resetUrlInfo@urlInfoWrapper@@QAE_NPBV?$QMap@VQString@@I@@ABI@Z @ 19 NONAME ; bool urlInfoWrapper::resetUrlInfo(class QMap<class QString, unsigned int> const *, unsigned int const &)
-	?getIRTableCB@searchRltWrapper@@EAE_NAAVQSqlQuery@@PAV?$QList@PAVQVariant@@@@@Z @ 20 NONAME ; bool searchRltWrapper::getIRTableCB(class QSqlQuery &, class QList<class QVariant *> *)
-	?getIRTableCB@imgWrapper@@EAE_NAAVQSqlQuery@@PAV?$QList@PAVQVariant@@@@@Z @ 21 NONAME ; bool imgWrapper::getIRTableCB(class QSqlQuery &, class QList<class QVariant *> *)
-	?combineGetStr@IRDBWrapper@@IAEXPBV?$QMap@IVQString@@@@0PBVQString@@AAV3@@Z @ 22 NONAME ; void IRDBWrapper::combineGetStr(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *, class QString const *, class QString &)
-	??1channelHistoryWrapper@@UAE@XZ @ 23 NONAME ; channelHistoryWrapper::~channelHistoryWrapper(void)
-	?deleteFavorites@favoritesWrapper@@QAE_NPBV?$QMap@IVQString@@@@0@Z @ 24 NONAME ; bool favoritesWrapper::deleteFavorites(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
-	?combineCondStr@IRDBWrapper@@IAEXPBV?$QMap@IVQString@@@@0PBVQString@@AAV3@@Z @ 25 NONAME ; void IRDBWrapper::combineCondStr(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *, class QString const *, class QString &)
-	??0searchRltWrapper@@QAE@XZ @ 26 NONAME ; searchRltWrapper::searchRltWrapper(void)
-	??0songHistoryWrapper@@QAE@XZ @ 27 NONAME ; songHistoryWrapper::songHistoryWrapper(void)
-	?putFavorites@favoritesWrapper@@QAE_NPAV?$QMap@IVQString@@@@AA_N@Z @ 28 NONAME ; bool favoritesWrapper::putFavorites(class QMap<unsigned int, class QString> *, bool &)
-	??_EfavoritesWrapper@@UAE@I@Z @ 29 NONAME ; favoritesWrapper::~favoritesWrapper(unsigned int)
-	?getIRTableCB@IRDBWrapper@@EAE_NAAVQSqlQuery@@PAV?$QList@PAVQVariant@@@@@Z @ 30 NONAME ; bool IRDBWrapper::getIRTableCB(class QSqlQuery &, class QList<class QVariant *> *)
-	?getChannelHistory@channelHistoryWrapper@@QAEPAV?$QList@PAVQVariant@@@@PBV?$QMap@IVQString@@@@0@Z @ 31 NONAME ; class QList<class QVariant *> * channelHistoryWrapper::getChannelHistory(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
-	?srhChannelId@channelHistoryWrapper@@AAEIAAVQString@@PBV?$QMap@IVQString@@@@1@Z @ 32 NONAME ; unsigned int channelHistoryWrapper::srhChannelId(class QString &, class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
-	??_EsongHistoryWrapper@@UAE@I@Z @ 33 NONAME ; songHistoryWrapper::~songHistoryWrapper(unsigned int)
-	??1favoritesWrapper@@UAE@XZ @ 34 NONAME ; favoritesWrapper::~favoritesWrapper(void)
-	??_EchannelHistoryWrapper@@UAE@I@Z @ 35 NONAME ; channelHistoryWrapper::~channelHistoryWrapper(unsigned int)
-	?putSongHistory@songHistoryWrapper@@QAE_NPBV?$QMap@IVQString@@@@00@Z @ 36 NONAME ; bool songHistoryWrapper::putSongHistory(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
-	?getFavorites@favoritesWrapper@@QAEPAV?$QList@PAVQVariant@@@@PBV?$QMap@IVQString@@@@0@Z @ 37 NONAME ; class QList<class QVariant *> * favoritesWrapper::getFavorites(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
-	?putSearchRlt@searchRltWrapper@@QAE_NPBV?$QMap@IVQString@@@@PBV?$QMap@IVQByteArray@@@@00@Z @ 38 NONAME ; bool searchRltWrapper::putSearchRlt(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QByteArray> const *, class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
-	?loadDataOfIRDBCB@IRDBWrapper@@AAE_NAAVQSqlQuery@@PAV?$QList@PAVQVariant@@@@@Z @ 39 NONAME ; bool IRDBWrapper::loadDataOfIRDBCB(class QSqlQuery &, class QList<class QVariant *> *)
-	?getUrlInfo@urlInfoWrapper@@QAEPAV?$QList@PAVQVariant@@@@PBV?$QMap@IVQString@@@@0@Z @ 40 NONAME ; class QList<class QVariant *> * urlInfoWrapper::getUrlInfo(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
-	??_EurlInfoWrapper@@UAE@I@Z @ 41 NONAME ; urlInfoWrapper::~urlInfoWrapper(unsigned int)
-	??1songHistoryWrapper@@UAE@XZ @ 42 NONAME ; songHistoryWrapper::~songHistoryWrapper(void)
-	?getIRTableCB@favoritesWrapper@@EAE_NAAVQSqlQuery@@PAV?$QList@PAVQVariant@@@@@Z @ 43 NONAME ; bool favoritesWrapper::getIRTableCB(class QSqlQuery &, class QList<class QVariant *> *)
-	??_EimgWrapper@@UAE@I@Z @ 44 NONAME ; imgWrapper::~imgWrapper(unsigned int)
-	?combineInsertStr@urlInfoWrapper@@AAEXPBV?$QMap@VQString@@I@@ABIAAVQStringList@@@Z @ 45 NONAME ; void urlInfoWrapper::combineInsertStr(class QMap<class QString, unsigned int> const *, unsigned int const &, class QStringList &)
-	?deleteChannelHistory@channelHistoryWrapper@@QAE_NPBV?$QMap@IVQString@@@@0@Z @ 46 NONAME ; bool channelHistoryWrapper::deleteChannelHistory(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
-	?getIRTableCB@channelHistoryWrapper@@EAE_NAAVQSqlQuery@@PAV?$QList@PAVQVariant@@@@@Z @ 47 NONAME ; bool channelHistoryWrapper::getIRTableCB(class QSqlQuery &, class QList<class QVariant *> *)
-	??1IRDBWrapper@@UAE@XZ @ 48 NONAME ; IRDBWrapper::~IRDBWrapper(void)
-	?getSearchRlt@searchRltWrapper@@QAEPAV?$QList@PAVQVariant@@@@PBV?$QMap@IVQString@@@@0@Z @ 49 NONAME ; class QList<class QVariant *> * searchRltWrapper::getSearchRlt(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
-	?deleteSearchRlt@searchRltWrapper@@QAE_NPBV?$QMap@IVQString@@@@0@Z @ 50 NONAME ; bool searchRltWrapper::deleteSearchRlt(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
-	?updateImg@imgWrapper@@QAE_NPBV?$QMap@IVQString@@@@ABIPBV?$QMap@IVQByteArray@@@@@Z @ 51 NONAME ; bool imgWrapper::updateImg(class QMap<unsigned int, class QString> const *, unsigned int const &, class QMap<unsigned int, class QByteArray> const *)
-	??0favoritesWrapper@@QAE@XZ @ 52 NONAME ; favoritesWrapper::favoritesWrapper(void)
-	??0imgWrapper@@QAE@XZ @ 53 NONAME ; imgWrapper::imgWrapper(void)
-	?getSongHistory@songHistoryWrapper@@QAEPAV?$QList@PAVQVariant@@@@PBV?$QMap@IVQString@@@@0@Z @ 54 NONAME ; class QList<class QVariant *> * songHistoryWrapper::getSongHistory(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
-	?getIRTableCB@urlInfoWrapper@@EAE_NAAVQSqlQuery@@PAV?$QList@PAVQVariant@@@@@Z @ 55 NONAME ; bool urlInfoWrapper::getIRTableCB(class QSqlQuery &, class QList<class QVariant *> *)
+	?combinePutStr@IRDBWrapper@@IAEXPBV?$QMap@IVQString@@@@PBVQString@@AAV3@2PBV?$QMap@IVQByteArray@@@@PAV?$QList@VQByteArray@@@@PAH@Z @ 2 NONAME ; void IRDBWrapper::combinePutStr(class QMap<unsigned int, class QString> const *, class QString const *, class QString &, class QString &, class QMap<unsigned int, class QByteArray> const *, class QList<class QByteArray> *, int *)
+	??_EIRDBWrapper@@UAE@I@Z @ 3 NONAME ; IRDBWrapper::~IRDBWrapper(unsigned int)
+	??_EsearchRltWrapper@@UAE@I@Z @ 4 NONAME ; searchRltWrapper::~searchRltWrapper(unsigned int)
+	?getUrlInfo@urlInfoWrapper@@QAEPAV?$QList@PAVQVariant@@@@PBV?$QMap@IVQString@@@@0HH@Z @ 5 NONAME ; class QList<class QVariant *> * urlInfoWrapper::getUrlInfo(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *, int, int)
+	?combineDeleteStr@IRDBWrapper@@IAEXPBV?$QMap@IVQString@@@@0PBVQString@@AAV3@@Z @ 6 NONAME ; void IRDBWrapper::combineDeleteStr(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *, class QString const *, class QString &)
+	??0urlInfoWrapper@@QAE@XZ @ 7 NONAME ; urlInfoWrapper::urlInfoWrapper(void)
+	??1imgWrapper@@UAE@XZ @ 8 NONAME ; imgWrapper::~imgWrapper(void)
+	?srhChannelId@searchRltWrapper@@AAEIPBV?$QMap@IVQString@@@@0@Z @ 9 NONAME ; unsigned int searchRltWrapper::srhChannelId(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
+	?srhChannelId@channelHistoryWrapper@@AAEIPBV?$QMap@IVQString@@@@0@Z @ 10 NONAME ; unsigned int channelHistoryWrapper::srhChannelId(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
+	??0channelHistoryWrapper@@QAE@XZ @ 11 NONAME ; channelHistoryWrapper::channelHistoryWrapper(void)
+	?getIRDB@IRDBWrapper@@QAEPAV?$QList@PAVQVariant@@@@PBV?$QMap@IVQString@@@@0@Z @ 12 NONAME ; class QList<class QVariant *> * IRDBWrapper::getIRDB(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
+	??0IRDBWrapper@@QAE@XZ @ 13 NONAME ; IRDBWrapper::IRDBWrapper(void)
+	?getImg@imgWrapper@@QAEPAV?$QList@PAVQVariant@@@@PBV?$QMap@IVQString@@@@0@Z @ 14 NONAME ; class QList<class QVariant *> * imgWrapper::getImg(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
+	?combineSqlStr@searchRltWrapper@@AAEXABIPBV?$QMap@IVQString@@@@AAVQStringList@@@Z @ 15 NONAME ; void searchRltWrapper::combineSqlStr(unsigned int const &, class QMap<unsigned int, class QString> const *, class QStringList &)
+	?loadDataOfChannelIdCB@IRDBWrapper@@AAE_NAAVQSqlQuery@@PAV?$QList@I@@@Z @ 16 NONAME ; bool IRDBWrapper::loadDataOfChannelIdCB(class QSqlQuery &, class QList<unsigned int> *)
+	??1searchRltWrapper@@UAE@XZ @ 17 NONAME ; searchRltWrapper::~searchRltWrapper(void)
+	?putChannelHistory@channelHistoryWrapper@@QAE_NPBV?$QMap@IVQString@@@@PAIPBV?$QMap@IVQByteArray@@@@00@Z @ 18 NONAME ; bool channelHistoryWrapper::putChannelHistory(class QMap<unsigned int, class QString> const *, unsigned int *, class QMap<unsigned int, class QByteArray> const *, class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
+	??1urlInfoWrapper@@UAE@XZ @ 19 NONAME ; urlInfoWrapper::~urlInfoWrapper(void)
+	?getIRTableCB@songHistoryWrapper@@EAE_NAAVQSqlQuery@@PAV?$QList@PAVQVariant@@@@@Z @ 20 NONAME ; bool songHistoryWrapper::getIRTableCB(class QSqlQuery &, class QList<class QVariant *> *)
+	?deleteSongHistory@songHistoryWrapper@@QAE_NPBV?$QMap@IVQString@@@@0@Z @ 21 NONAME ; bool songHistoryWrapper::deleteSongHistory(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
+	?resetUrlInfo@urlInfoWrapper@@QAE_NPBV?$QMap@VQString@@I@@ABI@Z @ 22 NONAME ; bool urlInfoWrapper::resetUrlInfo(class QMap<class QString, unsigned int> const *, unsigned int const &)
+	?getIRTableCB@searchRltWrapper@@EAE_NAAVQSqlQuery@@PAV?$QList@PAVQVariant@@@@@Z @ 23 NONAME ; bool searchRltWrapper::getIRTableCB(class QSqlQuery &, class QList<class QVariant *> *)
+	?getIRTableCB@imgWrapper@@EAE_NAAVQSqlQuery@@PAV?$QList@PAVQVariant@@@@@Z @ 24 NONAME ; bool imgWrapper::getIRTableCB(class QSqlQuery &, class QList<class QVariant *> *)
+	?combineGetStr@IRDBWrapper@@IAEXPBV?$QMap@IVQString@@@@0PBVQString@@AAV3@@Z @ 25 NONAME ; void IRDBWrapper::combineGetStr(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *, class QString const *, class QString &)
+	??1channelHistoryWrapper@@UAE@XZ @ 26 NONAME ; channelHistoryWrapper::~channelHistoryWrapper(void)
+	?deleteFavorites@favoritesWrapper@@QAE_NPBV?$QMap@IVQString@@@@0@Z @ 27 NONAME ; bool favoritesWrapper::deleteFavorites(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
+	?combineCondStr@IRDBWrapper@@IAEXPBV?$QMap@IVQString@@@@0PBVQString@@AAV3@@Z @ 28 NONAME ; void IRDBWrapper::combineCondStr(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *, class QString const *, class QString &)
+	??0searchRltWrapper@@QAE@XZ @ 29 NONAME ; searchRltWrapper::searchRltWrapper(void)
+	??0songHistoryWrapper@@QAE@XZ @ 30 NONAME ; songHistoryWrapper::songHistoryWrapper(void)
+	?addSearchRltFinished@searchRltWrapper@@QAEXXZ @ 31 NONAME ; void searchRltWrapper::addSearchRltFinished(void)
+	?putFavorites@favoritesWrapper@@QAE_NPAV?$QMap@IVQString@@@@AA_N@Z @ 32 NONAME ; bool favoritesWrapper::putFavorites(class QMap<unsigned int, class QString> *, bool &)
+	??_EfavoritesWrapper@@UAE@I@Z @ 33 NONAME ; favoritesWrapper::~favoritesWrapper(unsigned int)
+	?getIRTableCB@IRDBWrapper@@EAE_NAAVQSqlQuery@@PAV?$QList@PAVQVariant@@@@@Z @ 34 NONAME ; bool IRDBWrapper::getIRTableCB(class QSqlQuery &, class QList<class QVariant *> *)
+	?getChannelHistory@channelHistoryWrapper@@QAEPAV?$QList@PAVQVariant@@@@PBV?$QMap@IVQString@@@@0@Z @ 35 NONAME ; class QList<class QVariant *> * channelHistoryWrapper::getChannelHistory(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
+	??_EsongHistoryWrapper@@UAE@I@Z @ 36 NONAME ; songHistoryWrapper::~songHistoryWrapper(unsigned int)
+	??1favoritesWrapper@@UAE@XZ @ 37 NONAME ; favoritesWrapper::~favoritesWrapper(void)
+	??_EchannelHistoryWrapper@@UAE@I@Z @ 38 NONAME ; channelHistoryWrapper::~channelHistoryWrapper(unsigned int)
+	?putSongHistory@songHistoryWrapper@@QAE_NPBV?$QMap@IVQString@@@@00@Z @ 39 NONAME ; bool songHistoryWrapper::putSongHistory(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
+	?getFavorites@favoritesWrapper@@QAEPAV?$QList@PAVQVariant@@@@PBV?$QMap@IVQString@@@@0@Z @ 40 NONAME ; class QList<class QVariant *> * favoritesWrapper::getFavorites(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
+	?addSearchRlt@searchRltWrapper@@QAE_NPBV?$QMap@IVQString@@@@_N@Z @ 41 NONAME ; bool searchRltWrapper::addSearchRlt(class QMap<unsigned int, class QString> const *, bool)
+	?putSearchRlt@searchRltWrapper@@QAE_NPBV?$QMap@IVQString@@@@PBV?$QMap@IVQByteArray@@@@00@Z @ 42 NONAME ; bool searchRltWrapper::putSearchRlt(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QByteArray> const *, class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
+	?loadDataOfIRDBCB@IRDBWrapper@@AAE_NAAVQSqlQuery@@PAV?$QList@PAVQVariant@@@@@Z @ 43 NONAME ; bool IRDBWrapper::loadDataOfIRDBCB(class QSqlQuery &, class QList<class QVariant *> *)
+	??_EurlInfoWrapper@@UAE@I@Z @ 44 NONAME ; urlInfoWrapper::~urlInfoWrapper(unsigned int)
+	??1songHistoryWrapper@@UAE@XZ @ 45 NONAME ; songHistoryWrapper::~songHistoryWrapper(void)
+	?getIRTableCB@favoritesWrapper@@EAE_NAAVQSqlQuery@@PAV?$QList@PAVQVariant@@@@@Z @ 46 NONAME ; bool favoritesWrapper::getIRTableCB(class QSqlQuery &, class QList<class QVariant *> *)
+	??_EimgWrapper@@UAE@I@Z @ 47 NONAME ; imgWrapper::~imgWrapper(unsigned int)
+	?combineInsertStr@urlInfoWrapper@@AAEXPBV?$QMap@VQString@@I@@ABIAAVQStringList@@@Z @ 48 NONAME ; void urlInfoWrapper::combineInsertStr(class QMap<class QString, unsigned int> const *, unsigned int const &, class QStringList &)
+	?deleteChannelHistory@channelHistoryWrapper@@QAE_NPBV?$QMap@IVQString@@@@0@Z @ 49 NONAME ; bool channelHistoryWrapper::deleteChannelHistory(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
+	?getIRTableCB@channelHistoryWrapper@@EAE_NAAVQSqlQuery@@PAV?$QList@PAVQVariant@@@@@Z @ 50 NONAME ; bool channelHistoryWrapper::getIRTableCB(class QSqlQuery &, class QList<class QVariant *> *)
+	??1IRDBWrapper@@UAE@XZ @ 51 NONAME ; IRDBWrapper::~IRDBWrapper(void)
+	?getSearchRlt@searchRltWrapper@@QAEPAV?$QList@PAVQVariant@@@@PBV?$QMap@IVQString@@@@0@Z @ 52 NONAME ; class QList<class QVariant *> * searchRltWrapper::getSearchRlt(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
+	?deleteSearchRlt@searchRltWrapper@@QAE_NPBV?$QMap@IVQString@@@@0@Z @ 53 NONAME ; bool searchRltWrapper::deleteSearchRlt(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
+	?updateImg@imgWrapper@@QAE_NPBV?$QMap@IVQString@@@@ABIPBV?$QMap@IVQByteArray@@@@@Z @ 54 NONAME ; bool imgWrapper::updateImg(class QMap<unsigned int, class QString> const *, unsigned int const &, class QMap<unsigned int, class QByteArray> const *)
+	??0favoritesWrapper@@QAE@XZ @ 55 NONAME ; favoritesWrapper::favoritesWrapper(void)
+	??0imgWrapper@@QAE@XZ @ 56 NONAME ; imgWrapper::imgWrapper(void)
+	?getSongHistory@songHistoryWrapper@@QAEPAV?$QList@PAVQVariant@@@@PBV?$QMap@IVQString@@@@0@Z @ 57 NONAME ; class QList<class QVariant *> * songHistoryWrapper::getSongHistory(class QMap<unsigned int, class QString> const *, class QMap<unsigned int, class QString> const *)
+	?getIRTableCB@urlInfoWrapper@@EAE_NAAVQSqlQuery@@PAV?$QList@PAVQVariant@@@@@Z @ 58 NONAME ; bool urlInfoWrapper::getIRTableCB(class QSqlQuery &, class QList<class QVariant *> *)
 
--- a/qtinternetradio/bwins/irqfavoritesu.def	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/bwins/irqfavoritesu.def	Mon Oct 04 00:07:46 2010 +0300
@@ -1,32 +1,10 @@
 EXPORTS
 	?makePresetUserDefined@IRQFavoritesDB@@QAEHHH@Z @ 1  NONAME ; int IRQFavoritesDB::makePresetUserDefined(int, int)
-	?staticMetaObject@IRQFavoritesDB@@2UQMetaObject@@B @ 2  NONAME ; struct QMetaObject const IRQFavoritesDB::staticMetaObject
-	?addPreset@IRQFavoritesDB@@QAEHABVIRQPreset@@@Z @ 3  NONAME ; int IRQFavoritesDB::addPreset(class IRQPreset const &)
-	?getPresets@IRQFavoritesDB@@QBEPAV?$QList@PAVIRQPreset@@@@XZ @ 4  NONAME ; class QList<class IRQPreset *> * IRQFavoritesDB::getPresets(void) const
-	?emptyPresetCount@IRQFavoritesDB@@QBEHXZ @ 5  NONAME ; int IRQFavoritesDB::emptyPresetCount(void) const
-	?searchPreset@IRQFavoritesDB@@QAEHHH@Z @ 6  NONAME ; int IRQFavoritesDB::searchPreset(int, int)
-	?deletePreset@IRQFavoritesDB@@QAEHH@Z @ 7  NONAME ; int IRQFavoritesDB::deletePreset(int)
-	?maxPresetCount@IRQFavoritesDB@@QAEHXZ @ 8  NONAME ; int IRQFavoritesDB::maxPresetCount(void)
-	??1IRQFavoritesDB@@UAE@XZ @ 9  NONAME ; IRQFavoritesDB::~IRQFavoritesDB(void)
-	?qt_metacall@IRQFavoritesDB@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 10  NONAME ; int IRQFavoritesDB::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?increasePlayedTimes@IRQFavoritesDB@@QAEXABVIRQPreset@@@Z @ 11  NONAME ; void IRQFavoritesDB::increasePlayedTimes(class IRQPreset const &)
-	?getPreviousPreset@IRQFavoritesDB@@QAEHH@Z @ 12  NONAME ; int IRQFavoritesDB::getPreviousPreset(int)
-	?trUtf8@IRQFavoritesDB@@SA?AVQString@@PBD0@Z @ 13  NONAME ; class QString IRQFavoritesDB::trUtf8(char const *, char const *)
-	??_EIRQFavoritesDB@@UAE@I@Z @ 14  NONAME ; IRQFavoritesDB::~IRQFavoritesDB(unsigned int)
-	?getMoveStatus@IRQFavoritesDB@@QAE_NXZ @ 15  NONAME ; bool IRQFavoritesDB::getMoveStatus(void)
-	?replaceUserDefinedPreset@IRQFavoritesDB@@QAEHABVIRQPreset@@@Z @ 16  NONAME ; int IRQFavoritesDB::replaceUserDefinedPreset(class IRQPreset const &)
-	?trUtf8@IRQFavoritesDB@@SA?AVQString@@PBD0H@Z @ 17  NONAME ; class QString IRQFavoritesDB::trUtf8(char const *, char const *, int)
-	?getNextPreset@IRQFavoritesDB@@QAEHH@Z @ 18  NONAME ; int IRQFavoritesDB::getNextPreset(int)
-	?metaObject@IRQFavoritesDB@@UBEPBUQMetaObject@@XZ @ 19  NONAME ; struct QMetaObject const * IRQFavoritesDB::metaObject(void) const
-	?tr@IRQFavoritesDB@@SA?AVQString@@PBD0H@Z @ 20  NONAME ; class QString IRQFavoritesDB::tr(char const *, char const *, int)
-	?replacePreset@IRQFavoritesDB@@QAEHABVIRQPreset@@@Z @ 21  NONAME ; int IRQFavoritesDB::replacePreset(class IRQPreset const &)
-	?getUniqId@IRQFavoritesDB@@QBEHH@Z @ 22  NONAME ; int IRQFavoritesDB::getUniqId(int) const
-	?addPreset@IRQFavoritesDB@@QAEHABVQString@@0@Z @ 23  NONAME ; int IRQFavoritesDB::addPreset(class QString const &, class QString const &)
-	?presetChanged@IRQFavoritesDB@@IAEXHHW4PSReason@1@@Z @ 24  NONAME ; void IRQFavoritesDB::presetChanged(int, int, enum IRQFavoritesDB::PSReason)
-	?tr@IRQFavoritesDB@@SA?AVQString@@PBD0@Z @ 25  NONAME ; class QString IRQFavoritesDB::tr(char const *, char const *)
-	?setMoveStatus@IRQFavoritesDB@@QAEX_N@Z @ 26  NONAME ; void IRQFavoritesDB::setMoveStatus(bool)
-	?qt_metacast@IRQFavoritesDB@@UAEPAXPBD@Z @ 27  NONAME ; void * IRQFavoritesDB::qt_metacast(char const *)
-	?getStaticMetaObject@IRQFavoritesDB@@SAABUQMetaObject@@XZ @ 28  NONAME ; struct QMetaObject const & IRQFavoritesDB::getStaticMetaObject(void)
-	??0IRQFavoritesDB@@QAE@XZ @ 29  NONAME ; IRQFavoritesDB::IRQFavoritesDB(void)
-        ?renamePreset@IRQFavoritesDB@@QAEHABVIRQPreset@@ABVQString@@@Z @ 30  NONAME ; int IRQFavoritesDB::renamePreset(class IRQPreset const &, class QString const &)
+	?addPreset@IRQFavoritesDB@@QAEHABVIRQPreset@@@Z @ 2  NONAME ; int IRQFavoritesDB::addPreset(class IRQPreset const &)
+	?getPresets@IRQFavoritesDB@@QBEPAV?$QList@PAVIRQPreset@@@@XZ @ 3  NONAME ; class QList<class IRQPreset *> * IRQFavoritesDB::getPresets(void) const
+	?deletePreset@IRQFavoritesDB@@QAEHABVIRQPreset@@@Z @ 4  NONAME ; int IRQFavoritesDB::deletePreset(class IRQPreset const &)
+	??1IRQFavoritesDB@@QAE@XZ @ 5  NONAME ; IRQFavoritesDB::~IRQFavoritesDB(void)
+	?replacePreset@IRQFavoritesDB@@QAEXABVIRQPreset@@@Z @ 6  NONAME ; void IRQFavoritesDB::replacePreset(class IRQPreset const &)
+	?renamePreset@IRQFavoritesDB@@QAEHABVIRQPreset@@ABVQString@@@Z @ 7  NONAME ; int IRQFavoritesDB::renamePreset(class IRQPreset const &, class QString const &)
+	??0IRQFavoritesDB@@QAE@XZ @ 8  NONAME ; IRQFavoritesDB::IRQFavoritesDB(void)
 
--- a/qtinternetradio/bwins/irqsonghistoryu.def	Fri Sep 17 08:27:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-EXPORTS
-	?setStationName@IRQSongInfo@@QAEXABVQString@@@Z @ 1  NONAME ; void IRQSongInfo::setStationName(class QString const &)
-	?getSongName@IRQSongInfo@@QBEABVQString@@XZ @ 2  NONAME ; class QString const & IRQSongInfo::getSongName(void) const
-	?GetCountryName@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 3  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetCountryName(void) const
-	?getImageUrl@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 4  NONAME ; class QString const & IRQSongHistoryInfo::getImageUrl(void) const
-	?getStationName@IRQSongInfo@@QBEABVQString@@XZ @ 5  NONAME ; class QString const & IRQSongInfo::getStationName(void) const
-	?getChannelType@IRQSongHistoryInfo@@QBEHXZ @ 6  NONAME ; int IRQSongHistoryInfo::getChannelType(void) const
-	?GetChannelId@CIRSongHistoryInfo@@QBEHXZ @ 7  NONAME ; int CIRSongHistoryInfo::GetChannelId(void) const
-	??1IRQSongHistoryInfo@@QAE@XZ @ 8  NONAME ; IRQSongHistoryInfo::~IRQSongHistoryInfo(void)
-	?handleMetaDataReceived@IRQSongHistoryEngine@@QAEXABVIRQMetaData@@ABVIRQPreset@@@Z @ 9  NONAME ; void IRQSongHistoryEngine::handleMetaDataReceived(class IRQMetaData const &, class IRQPreset const &)
-	?getCountryName@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 10  NONAME ; class QString const & IRQSongHistoryInfo::getCountryName(void) const
-	?getAllSongHistory@IRQSongHistoryEngine@@QAEXAAV?$QList@PAVIRQSongInfo@@@@@Z @ 11  NONAME ; void IRQSongHistoryEngine::getAllSongHistory(class QList<class IRQSongInfo *> &)
-	??0IRQSongHistoryInfo@@QAE@XZ @ 12  NONAME ; IRQSongHistoryInfo::IRQSongHistoryInfo(void)
-	?GetChannelDesc@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 13  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetChannelDesc(void) const
-	?getChannelId@IRQSongHistoryInfo@@QBEHXZ @ 14  NONAME ; int IRQSongHistoryInfo::getChannelId(void) const
-	?GetStreamUrl@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 15  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetStreamUrl(void) const
-	?closeInstance@IRQSongHistoryEngine@@QAEXXZ @ 16  NONAME ; void IRQSongHistoryEngine::closeInstance(void)
-	?setMusicshopStatus@IRQSongInfo@@QAEXABVQString@@@Z @ 17  NONAME ; void IRQSongInfo::setMusicshopStatus(class QString const &)
-	?GetSongInfo@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 18  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetSongInfo(void) const
-	?GetLanguageName@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 19  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetLanguageName(void) const
-	?getChannelDesc@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 20  NONAME ; class QString const & IRQSongHistoryInfo::getChannelDesc(void) const
-	?syncHistory@IRQSongHistoryEngine@@QAEXH@Z @ 21  NONAME ; void IRQSongHistoryEngine::syncHistory(int)
-	?getAllHistory@IRQSongHistoryEngine@@QAEXAAV?$QList@PAVIRQSongHistoryInfo@@@@@Z @ 22  NONAME ; void IRQSongHistoryEngine::getAllHistory(class QList<class IRQSongHistoryInfo *> &)
-	?handleSongMetaDataReceived@IRQSongHistoryEngine@@QAEXABVIRQMetaData@@ABVIRQPreset@@@Z @ 23  NONAME ; void IRQSongHistoryEngine::handleSongMetaDataReceived(class IRQMetaData const &, class IRQPreset const &)
-	?NewLC@CIRSongHistoryInfo@@SAPAV1@XZ @ 24  NONAME ; class CIRSongHistoryInfo * CIRSongHistoryInfo::NewLC(void)
-	?GetChannelMusicStatus@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 25  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetChannelMusicStatus(void) const
-	?GetBitrate@CIRSongHistoryInfo@@QBEHXZ @ 26  NONAME ; int CIRSongHistoryInfo::GetBitrate(void) const
-	?getArtistName@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 27  NONAME ; class QString const & IRQSongHistoryInfo::getArtistName(void) const
-	?GetGenreName@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 28  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetGenreName(void) const
-	?getMusicStoreStatus@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 29  NONAME ; class QString const & IRQSongHistoryInfo::getMusicStoreStatus(void) const
-	?getGenreName@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 30  NONAME ; class QString const & IRQSongHistoryInfo::getGenreName(void) const
-	?getBitrate@IRQSongHistoryInfo@@QBEHXZ @ 31  NONAME ; int IRQSongHistoryInfo::getBitrate(void) const
-	?getMusicshopStatus@IRQSongInfo@@QBEABVQString@@XZ @ 32  NONAME ; class QString const & IRQSongInfo::getMusicshopStatus(void) const
-	?GetChannelName@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 33  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetChannelName(void) const
-	?NewL@CIRSongHistoryInfo@@SAPAV1@XZ @ 34  NONAME ; class CIRSongHistoryInfo * CIRSongHistoryInfo::NewL(void)
-	?updateSongHistoryDb@IRQSongHistoryEngine@@QAEXHABVQString@@000000@Z @ 35  NONAME ; void IRQSongHistoryEngine::updateSongHistoryDb(int, class QString const &, class QString const &, class QString const &, class QString const &, class QString const &, class QString const &, class QString const &)
-	?getLanguageName@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 36  NONAME ; class QString const & IRQSongHistoryInfo::getLanguageName(void) const
-	?setSongName@IRQSongInfo@@QAEXABVQString@@@Z @ 37  NONAME ; void IRQSongInfo::setSongName(class QString const &)
-	?getArtistName@IRQSongInfo@@QBEABVQString@@XZ @ 38  NONAME ; class QString const & IRQSongInfo::getArtistName(void) const
-	?setAllInfo@IRQSongInfo@@QAEXABVQString@@000@Z @ 39  NONAME ; void IRQSongInfo::setAllInfo(class QString const &, class QString const &, class QString const &, class QString const &)
-	?deleteOneSongHistoryItem@IRQSongHistoryEngine@@QAE_NH@Z @ 40  NONAME ; bool IRQSongHistoryEngine::deleteOneSongHistoryItem(int)
-	?setArtistName@IRQSongInfo@@QAEXABVQString@@@Z @ 41  NONAME ; void IRQSongInfo::setArtistName(class QString const &)
-	?openInstance@IRQSongHistoryEngine@@SAPAV1@XZ @ 42  NONAME ; class IRQSongHistoryEngine * IRQSongHistoryEngine::openInstance(void)
-	?clearAllHistory@IRQSongHistoryEngine@@QAEHXZ @ 43  NONAME ; int IRQSongHistoryEngine::clearAllHistory(void)
-	?deleteOneItem@IRQSongHistoryEngine@@QAE_NH@Z @ 44  NONAME ; bool IRQSongHistoryEngine::deleteOneItem(int)
-	?clearAllSongHistory@IRQSongHistoryEngine@@QAEHXZ @ 45  NONAME ; int IRQSongHistoryEngine::clearAllSongHistory(void)
-	?getSongName@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 46  NONAME ; class QString const & IRQSongHistoryInfo::getSongName(void) const
-	?SetHistoryInfoL@CIRSongHistoryInfo@@QAEXAAVRBuf16@@000HHH000000@Z @ 47  NONAME ; void CIRSongHistoryInfo::SetHistoryInfoL(class RBuf16 &, class RBuf16 &, class RBuf16 &, class RBuf16 &, int, int, int, class RBuf16 &, class RBuf16 &, class RBuf16 &, class RBuf16 &, class RBuf16 &, class RBuf16 &)
-	?getChannelName@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 48  NONAME ; class QString const & IRQSongHistoryInfo::getChannelName(void) const
-	?handleSongMetaDataReceivedL@IRQSongHistoryEngine@@AAEXABVIRQMetaData@@ABVIRQPreset@@@Z @ 49  NONAME ; void IRQSongHistoryEngine::handleSongMetaDataReceivedL(class IRQMetaData const &, class IRQPreset const &)
-	??1CIRSongHistoryInfo@@UAE@XZ @ 50  NONAME ; CIRSongHistoryInfo::~CIRSongHistoryInfo(void)
-	?GetImageUrl@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 51  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetImageUrl(void) const
-	?getStreamUrl@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 52  NONAME ; class QString const & IRQSongHistoryInfo::getStreamUrl(void) const
-	?GetArtistInfo@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 53  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetArtistInfo(void) const
-	?GetChannelType@CIRSongHistoryInfo@@QBEHXZ @ 54  NONAME ; int CIRSongHistoryInfo::GetChannelType(void) const
-
--- a/qtinternetradio/common.pri	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/common.pri	Mon Oct 04 00:07:46 2010 +0300
@@ -13,11 +13,10 @@
 # Description:
 
 #DEFINES += USE_TEST_ISDS_SERVER
-#DEFINES += NOWPLAYING_VIEW_OPTION_B
 #DEFINES += ADV_ENABLED
 DEFINES += HS_WIDGET_ENABLED
+DEFINES += SUBTITLE_STR_BY_LOCID
 #DEFINES += STATISTIC_REPORT_TEST_ENABLED
-#DEFINES += TERMS_CONDITIONS_VIEW_ENABLED
 
 # ##########################################################
 # Logging flag definitions
@@ -33,3 +32,8 @@
 #  LOGGING_FLAGS += TRACE_TO_FILE
 
 DEFINES += $$LOGGING_FLAGS
+
+# ##########################################################
+# PlatSim flag definitions
+# ##########################################################
+#DEFINES += PLATSIM_DEBUG_CONF
\ No newline at end of file
--- a/qtinternetradio/eabi/irdbu.def	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/eabi/irdbu.def	Mon Oct 04 00:07:46 2010 +0300
@@ -10,7 +10,7 @@
 	_ZN11IRDBWrapper12getChannelIdEPK4QMapIj7QStringES4_ @ 9 NONAME
 	_ZN11IRDBWrapper12getIRTableCBER9QSqlQueryP5QListIP8QVariantE @ 10 NONAME
 	_ZN11IRDBWrapper13combineGetStrEPK4QMapIj7QStringES4_PKS1_RS1_ @ 11 NONAME
-	_ZN11IRDBWrapper13combinePutStrEPK4QMapIj7QStringEPKS1_RS1_S7_PKS0_Ij10QByteArrayEP5QListIS8_E @ 12 NONAME
+	_ZN11IRDBWrapper13combinePutStrEPK4QMapIj7QStringEPKS1_RS1_S7_PKS0_Ij10QByteArrayEP5QListIS8_EPi @ 12 NONAME
 	_ZN11IRDBWrapper14combineCondStrEPK4QMapIj7QStringES4_PKS1_RS1_ @ 13 NONAME
 	_ZN11IRDBWrapper16combineDeleteStrEPK4QMapIj7QStringES4_PKS1_RS1_ @ 14 NONAME
 	_ZN11IRDBWrapper16loadDataOfIRDBCBER9QSqlQueryP5QListIP8QVariantE @ 15 NONAME
@@ -21,7 +21,7 @@
 	_ZN11IRDBWrapperD0Ev @ 20 NONAME
 	_ZN11IRDBWrapperD1Ev @ 21 NONAME
 	_ZN11IRDBWrapperD2Ev @ 22 NONAME
-	_ZN14urlInfoWrapper10getUrlInfoEPK4QMapIj7QStringES4_ @ 23 NONAME
+	_ZN14urlInfoWrapper10getUrlInfoEPK4QMapIj7QStringES4_ii @ 23 NONAME
 	_ZN14urlInfoWrapper12getIRTableCBER9QSqlQueryP5QListIP8QVariantE @ 24 NONAME
 	_ZN14urlInfoWrapper12resetUrlInfoEPK4QMapI7QStringjERKj @ 25 NONAME
 	_ZN14urlInfoWrapper16combineInsertStrEPK4QMapI7QStringjERKjR11QStringList @ 26 NONAME
@@ -39,47 +39,50 @@
 	_ZN16favoritesWrapperD0Ev @ 38 NONAME
 	_ZN16favoritesWrapperD1Ev @ 39 NONAME
 	_ZN16favoritesWrapperD2Ev @ 40 NONAME
-	_ZN16searchRltWrapper12getIRTableCBER9QSqlQueryP5QListIP8QVariantE @ 41 NONAME
-	_ZN16searchRltWrapper12getSearchRltEPK4QMapIj7QStringES4_ @ 42 NONAME
-	_ZN16searchRltWrapper12putSearchRltEPK4QMapIj7QStringEPKS0_Ij10QByteArrayES4_S4_ @ 43 NONAME
-	_ZN16searchRltWrapper12srhChannelIdER7QStringPK4QMapIjS0_ES5_ @ 44 NONAME
-	_ZN16searchRltWrapper15deleteSearchRltEPK4QMapIj7QStringES4_ @ 45 NONAME
-	_ZN16searchRltWrapperC1Ev @ 46 NONAME
-	_ZN16searchRltWrapperC2Ev @ 47 NONAME
-	_ZN16searchRltWrapperD0Ev @ 48 NONAME
-	_ZN16searchRltWrapperD1Ev @ 49 NONAME
-	_ZN16searchRltWrapperD2Ev @ 50 NONAME
-	_ZN18songHistoryWrapper12getIRTableCBER9QSqlQueryP5QListIP8QVariantE @ 51 NONAME
-	_ZN18songHistoryWrapper14getSongHistoryEPK4QMapIj7QStringES4_ @ 52 NONAME
-	_ZN18songHistoryWrapper14putSongHistoryEPK4QMapIj7QStringES4_S4_ @ 53 NONAME
-	_ZN18songHistoryWrapper17deleteSongHistoryEPK4QMapIj7QStringES4_ @ 54 NONAME
-	_ZN18songHistoryWrapperC1Ev @ 55 NONAME
-	_ZN18songHistoryWrapperC2Ev @ 56 NONAME
-	_ZN18songHistoryWrapperD0Ev @ 57 NONAME
-	_ZN18songHistoryWrapperD1Ev @ 58 NONAME
-	_ZN18songHistoryWrapperD2Ev @ 59 NONAME
-	_ZN21channelHistoryWrapper12getIRTableCBER9QSqlQueryP5QListIP8QVariantE @ 60 NONAME
-	_ZN21channelHistoryWrapper12srhChannelIdER7QStringPK4QMapIjS0_ES5_ @ 61 NONAME
-	_ZN21channelHistoryWrapper17getChannelHistoryEPK4QMapIj7QStringES4_ @ 62 NONAME
-	_ZN21channelHistoryWrapper17putChannelHistoryEPK4QMapIj7QStringEPjPKS0_Ij10QByteArrayES4_S4_ @ 63 NONAME
-	_ZN21channelHistoryWrapper20deleteChannelHistoryEPK4QMapIj7QStringES4_ @ 64 NONAME
-	_ZN21channelHistoryWrapperC1Ev @ 65 NONAME
-	_ZN21channelHistoryWrapperC2Ev @ 66 NONAME
-	_ZN21channelHistoryWrapperD0Ev @ 67 NONAME
-	_ZN21channelHistoryWrapperD1Ev @ 68 NONAME
-	_ZN21channelHistoryWrapperD2Ev @ 69 NONAME
-	_ZTI10imgWrapper @ 70 NONAME
-	_ZTI11IRDBWrapper @ 71 NONAME
-	_ZTI14urlInfoWrapper @ 72 NONAME
-	_ZTI16favoritesWrapper @ 73 NONAME
-	_ZTI16searchRltWrapper @ 74 NONAME
-	_ZTI18songHistoryWrapper @ 75 NONAME
-	_ZTI21channelHistoryWrapper @ 76 NONAME
-	_ZTV10imgWrapper @ 77 NONAME
-	_ZTV11IRDBWrapper @ 78 NONAME
-	_ZTV14urlInfoWrapper @ 79 NONAME
-	_ZTV16favoritesWrapper @ 80 NONAME
-	_ZTV16searchRltWrapper @ 81 NONAME
-	_ZTV18songHistoryWrapper @ 82 NONAME
-	_ZTV21channelHistoryWrapper @ 83 NONAME
+	_ZN16searchRltWrapper12addSearchRltEPK4QMapIj7QStringEb @ 41 NONAME
+	_ZN16searchRltWrapper12getIRTableCBER9QSqlQueryP5QListIP8QVariantE @ 42 NONAME
+	_ZN16searchRltWrapper12getSearchRltEPK4QMapIj7QStringES4_ @ 43 NONAME
+	_ZN16searchRltWrapper12putSearchRltEPK4QMapIj7QStringEPKS0_Ij10QByteArrayES4_S4_ @ 44 NONAME
+	_ZN16searchRltWrapper12srhChannelIdEPK4QMapIj7QStringES4_ @ 45 NONAME
+	_ZN16searchRltWrapper13combineSqlStrERKjPK4QMapIj7QStringER11QStringList @ 46 NONAME
+	_ZN16searchRltWrapper15deleteSearchRltEPK4QMapIj7QStringES4_ @ 47 NONAME
+	_ZN16searchRltWrapper20addSearchRltFinishedEv @ 48 NONAME
+	_ZN16searchRltWrapperC1Ev @ 49 NONAME
+	_ZN16searchRltWrapperC2Ev @ 50 NONAME
+	_ZN16searchRltWrapperD0Ev @ 51 NONAME
+	_ZN16searchRltWrapperD1Ev @ 52 NONAME
+	_ZN16searchRltWrapperD2Ev @ 53 NONAME
+	_ZN18songHistoryWrapper12getIRTableCBER9QSqlQueryP5QListIP8QVariantE @ 54 NONAME
+	_ZN18songHistoryWrapper14getSongHistoryEPK4QMapIj7QStringES4_ @ 55 NONAME
+	_ZN18songHistoryWrapper14putSongHistoryEPK4QMapIj7QStringES4_S4_ @ 56 NONAME
+	_ZN18songHistoryWrapper17deleteSongHistoryEPK4QMapIj7QStringES4_ @ 57 NONAME
+	_ZN18songHistoryWrapperC1Ev @ 58 NONAME
+	_ZN18songHistoryWrapperC2Ev @ 59 NONAME
+	_ZN18songHistoryWrapperD0Ev @ 60 NONAME
+	_ZN18songHistoryWrapperD1Ev @ 61 NONAME
+	_ZN18songHistoryWrapperD2Ev @ 62 NONAME
+	_ZN21channelHistoryWrapper12getIRTableCBER9QSqlQueryP5QListIP8QVariantE @ 63 NONAME
+	_ZN21channelHistoryWrapper12srhChannelIdEPK4QMapIj7QStringES4_ @ 64 NONAME
+	_ZN21channelHistoryWrapper17getChannelHistoryEPK4QMapIj7QStringES4_ @ 65 NONAME
+	_ZN21channelHistoryWrapper17putChannelHistoryEPK4QMapIj7QStringEPjPKS0_Ij10QByteArrayES4_S4_ @ 66 NONAME
+	_ZN21channelHistoryWrapper20deleteChannelHistoryEPK4QMapIj7QStringES4_ @ 67 NONAME
+	_ZN21channelHistoryWrapperC1Ev @ 68 NONAME
+	_ZN21channelHistoryWrapperC2Ev @ 69 NONAME
+	_ZN21channelHistoryWrapperD0Ev @ 70 NONAME
+	_ZN21channelHistoryWrapperD1Ev @ 71 NONAME
+	_ZN21channelHistoryWrapperD2Ev @ 72 NONAME
+	_ZTI10imgWrapper @ 73 NONAME
+	_ZTI11IRDBWrapper @ 74 NONAME
+	_ZTI14urlInfoWrapper @ 75 NONAME
+	_ZTI16favoritesWrapper @ 76 NONAME
+	_ZTI16searchRltWrapper @ 77 NONAME
+	_ZTI18songHistoryWrapper @ 78 NONAME
+	_ZTI21channelHistoryWrapper @ 79 NONAME
+	_ZTV10imgWrapper @ 80 NONAME
+	_ZTV11IRDBWrapper @ 81 NONAME
+	_ZTV14urlInfoWrapper @ 82 NONAME
+	_ZTV16favoritesWrapper @ 83 NONAME
+	_ZTV16searchRltWrapper @ 84 NONAME
+	_ZTV18songHistoryWrapper @ 85 NONAME
+	_ZTV21channelHistoryWrapper @ 86 NONAME
 
--- a/qtinternetradio/eabi/irqfavoritesu.def	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/eabi/irqfavoritesu.def	Mon Oct 04 00:07:46 2010 +0300
@@ -1,32 +1,12 @@
 EXPORTS
-	_ZN14IRQFavoritesDB11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
-	_ZN14IRQFavoritesDB11qt_metacastEPKc @ 2 NONAME
-	_ZN14IRQFavoritesDB12deletePresetEi @ 3 NONAME
-	_ZN14IRQFavoritesDB12searchPresetEii @ 4 NONAME
-	_ZN14IRQFavoritesDB13getMoveStatusEv @ 5 NONAME
-	_ZN14IRQFavoritesDB13getNextPresetEi @ 6 NONAME
-	_ZN14IRQFavoritesDB13presetChangedEiiNS_8PSReasonE @ 7 NONAME
-	_ZN14IRQFavoritesDB13replacePresetERK9IRQPreset @ 8 NONAME
-	_ZN14IRQFavoritesDB13setMoveStatusEb @ 9 NONAME
-	_ZN14IRQFavoritesDB14maxPresetCountEv @ 10 NONAME
-	_ZN14IRQFavoritesDB16staticMetaObjectE @ 11 NONAME DATA 16
-	_ZN14IRQFavoritesDB17getPreviousPresetEi @ 12 NONAME
-	_ZN14IRQFavoritesDB19getStaticMetaObjectEv @ 13 NONAME
-	_ZN14IRQFavoritesDB19increasePlayedTimesERK9IRQPreset @ 14 NONAME
-	_ZN14IRQFavoritesDB21makePresetUserDefinedEii @ 15 NONAME
-	_ZN14IRQFavoritesDB24replaceUserDefinedPresetERK9IRQPreset @ 16 NONAME
-	_ZN14IRQFavoritesDB9addPresetERK7QStringS2_ @ 17 NONAME
-	_ZN14IRQFavoritesDB9addPresetERK9IRQPreset @ 18 NONAME
-	_ZN14IRQFavoritesDBC1Ev @ 19 NONAME
-	_ZN14IRQFavoritesDBC2Ev @ 20 NONAME
-	_ZN14IRQFavoritesDBD0Ev @ 21 NONAME
-	_ZN14IRQFavoritesDBD1Ev @ 22 NONAME
-	_ZN14IRQFavoritesDBD2Ev @ 23 NONAME
-	_ZNK14IRQFavoritesDB10getPresetsEv @ 24 NONAME
-	_ZNK14IRQFavoritesDB10metaObjectEv @ 25 NONAME
-	_ZNK14IRQFavoritesDB16emptyPresetCountEv @ 26 NONAME
-	_ZNK14IRQFavoritesDB9getUniqIdEi @ 27 NONAME
-	_ZTI14IRQFavoritesDB @ 28 NONAME DATA 12
-	_ZTV14IRQFavoritesDB @ 29 NONAME DATA 56
-        _ZN14IRQFavoritesDB12renamePresetERK9IRQPresetRK7QString @ 30 NONAME
+	_ZN14IRQFavoritesDB12deletePresetERK9IRQPreset @ 1 NONAME
+	_ZN14IRQFavoritesDB12renamePresetERK9IRQPresetRK7QString @ 2 NONAME
+	_ZN14IRQFavoritesDB13replacePresetERK9IRQPreset @ 3 NONAME
+	_ZN14IRQFavoritesDB21makePresetUserDefinedEii @ 4 NONAME
+	_ZN14IRQFavoritesDB9addPresetERK9IRQPreset @ 5 NONAME
+	_ZN14IRQFavoritesDBC1Ev @ 6 NONAME
+	_ZN14IRQFavoritesDBC2Ev @ 7 NONAME
+	_ZN14IRQFavoritesDBD1Ev @ 8 NONAME
+	_ZN14IRQFavoritesDBD2Ev @ 9 NONAME
+	_ZNK14IRQFavoritesDB10getPresetsEv @ 10 NONAME
 
--- a/qtinternetradio/eabi/irqsonghistoryu.def	Fri Sep 17 08:27:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-EXPORTS
-	_ZN11IRQSongInfo10setAllInfoERK7QStringS2_S2_S2_ @ 1 NONAME
-	_ZN11IRQSongInfo11setSongNameERK7QString @ 2 NONAME
-	_ZN11IRQSongInfo13setArtistNameERK7QString @ 3 NONAME
-	_ZN11IRQSongInfo14setStationNameERK7QString @ 4 NONAME
-	_ZN11IRQSongInfo18setMusicshopStatusERK7QString @ 5 NONAME
-	_ZN18CIRSongHistoryInfo15SetHistoryInfoLER6RBuf16S1_S1_S1_iiiS1_S1_S1_S1_S1_S1_ @ 6 NONAME
-	_ZN18CIRSongHistoryInfo4NewLEv @ 7 NONAME
-	_ZN18CIRSongHistoryInfo5NewLCEv @ 8 NONAME
-	_ZN18CIRSongHistoryInfoD0Ev @ 9 NONAME
-	_ZN18CIRSongHistoryInfoD1Ev @ 10 NONAME
-	_ZN18CIRSongHistoryInfoD2Ev @ 11 NONAME
-	_ZN18IRQSongHistoryInfoC1Ev @ 12 NONAME
-	_ZN18IRQSongHistoryInfoC2Ev @ 13 NONAME
-	_ZN18IRQSongHistoryInfoD1Ev @ 14 NONAME
-	_ZN18IRQSongHistoryInfoD2Ev @ 15 NONAME
-	_ZN20IRQSongHistoryEngine11syncHistoryEi @ 16 NONAME
-	_ZN20IRQSongHistoryEngine12openInstanceEv @ 17 NONAME
-	_ZN20IRQSongHistoryEngine13closeInstanceEv @ 18 NONAME
-	_ZN20IRQSongHistoryEngine13deleteOneItemEi @ 19 NONAME
-	_ZN20IRQSongHistoryEngine13getAllHistoryER5QListIP18IRQSongHistoryInfoE @ 20 NONAME
-	_ZN20IRQSongHistoryEngine15clearAllHistoryEv @ 21 NONAME
-	_ZN20IRQSongHistoryEngine17getAllSongHistoryER5QListIP11IRQSongInfoE @ 22 NONAME
-	_ZN20IRQSongHistoryEngine19clearAllSongHistoryEv @ 23 NONAME
-	_ZN20IRQSongHistoryEngine19updateSongHistoryDbEiRK7QStringS2_S2_S2_S2_S2_S2_ @ 24 NONAME
-	_ZN20IRQSongHistoryEngine22handleMetaDataReceivedERK11IRQMetaDataRK9IRQPreset @ 25 NONAME
-	_ZN20IRQSongHistoryEngine24deleteOneSongHistoryItemEi @ 26 NONAME
-	_ZN20IRQSongHistoryEngine26handleSongMetaDataReceivedERK11IRQMetaDataRK9IRQPreset @ 27 NONAME
-	_ZN20IRQSongHistoryEngine27handleSongMetaDataReceivedLERK11IRQMetaDataRK9IRQPreset @ 28 NONAME
-	_ZNK11IRQSongInfo11getSongNameEv @ 29 NONAME
-	_ZNK11IRQSongInfo13getArtistNameEv @ 30 NONAME
-	_ZNK11IRQSongInfo14getStationNameEv @ 31 NONAME
-	_ZNK11IRQSongInfo18getMusicshopStatusEv @ 32 NONAME
-	_ZNK18CIRSongHistoryInfo10GetBitrateEv @ 33 NONAME
-	_ZNK18CIRSongHistoryInfo11GetImageUrlEv @ 34 NONAME
-	_ZNK18CIRSongHistoryInfo11GetSongInfoEv @ 35 NONAME
-	_ZNK18CIRSongHistoryInfo12GetChannelIdEv @ 36 NONAME
-	_ZNK18CIRSongHistoryInfo12GetGenreNameEv @ 37 NONAME
-	_ZNK18CIRSongHistoryInfo12GetStreamUrlEv @ 38 NONAME
-	_ZNK18CIRSongHistoryInfo13GetArtistInfoEv @ 39 NONAME
-	_ZNK18CIRSongHistoryInfo14GetChannelDescEv @ 40 NONAME
-	_ZNK18CIRSongHistoryInfo14GetChannelNameEv @ 41 NONAME
-	_ZNK18CIRSongHistoryInfo14GetChannelTypeEv @ 42 NONAME
-	_ZNK18CIRSongHistoryInfo14GetCountryNameEv @ 43 NONAME
-	_ZNK18CIRSongHistoryInfo15GetLanguageNameEv @ 44 NONAME
-	_ZNK18CIRSongHistoryInfo21GetChannelMusicStatusEv @ 45 NONAME
-	_ZNK18IRQSongHistoryInfo10getBitrateEv @ 46 NONAME
-	_ZNK18IRQSongHistoryInfo11getImageUrlEv @ 47 NONAME
-	_ZNK18IRQSongHistoryInfo11getSongNameEv @ 48 NONAME
-	_ZNK18IRQSongHistoryInfo12getChannelIdEv @ 49 NONAME
-	_ZNK18IRQSongHistoryInfo12getGenreNameEv @ 50 NONAME
-	_ZNK18IRQSongHistoryInfo12getStreamUrlEv @ 51 NONAME
-	_ZNK18IRQSongHistoryInfo13getArtistNameEv @ 52 NONAME
-	_ZNK18IRQSongHistoryInfo14getChannelDescEv @ 53 NONAME
-	_ZNK18IRQSongHistoryInfo14getChannelNameEv @ 54 NONAME
-	_ZNK18IRQSongHistoryInfo14getChannelTypeEv @ 55 NONAME
-	_ZNK18IRQSongHistoryInfo14getCountryNameEv @ 56 NONAME
-	_ZNK18IRQSongHistoryInfo15getLanguageNameEv @ 57 NONAME
-	_ZNK18IRQSongHistoryInfo19getMusicStoreStatusEv @ 58 NONAME
-
--- a/qtinternetradio/install/ir3_qtinternetradio_armv5_udeb.pkg	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/install/ir3_qtinternetradio_armv5_udeb.pkg	Mon Oct 04 00:07:46 2010 +0300
@@ -55,8 +55,7 @@
 "\epoc32\release\armv5\udeb\irqisdsclient.dll"    - "!:\sys\bin\irqisdsclient.dll"
 "\epoc32\release\armv5\udeb\irqmediaplayer.dll"    - "!:\sys\bin\irqmediaplayer.dll"
 "\epoc32\release\armv5\udeb\irqutility.dll"    - "!:\sys\bin\irqutility.dll"
-"\epoc32\release\armv5\udeb\irqfavorites.dll"    - "!:\sys\bin\irqfavorites.dll"
-"\epoc32\release\armv5\udeb\irqsonghistory.dll"    - "!:\sys\bin\irqsonghistory.dll"
+"\epoc32\release\armv5\udeb\irqfavorites.dll"    - "!:\sys\bin\irqfavorites.dll" 
 "\epoc32\release\armv5\udeb\irqsettings.dll"    - "!:\sys\bin\irqsettings.dll"
 "\epoc32\release\armv5\udeb\irqnwkinfoobserver.dll"    - "!:\sys\bin\irqnwkinfoobserver.dll"
 "\epoc32\release\armv5\udeb\irqstatisticsreporter.dll"    - "!:\sys\bin\irqstatisticsreporter.dll"
--- a/qtinternetradio/install/ir3_qtinternetradio_armv5_urel.pkg	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/install/ir3_qtinternetradio_armv5_urel.pkg	Mon Oct 04 00:07:46 2010 +0300
@@ -56,8 +56,7 @@
 "\epoc32\release\armv5\urel\irqisdsclient.dll"    - "!:\sys\bin\irqisdsclient.dll"
 "\epoc32\release\armv5\urel\irqmediaplayer.dll"    - "!:\sys\bin\irqmediaplayer.dll"
 "\epoc32\release\armv5\urel\irqutility.dll"    - "!:\sys\bin\irqutility.dll"
-"\epoc32\release\armv5\urel\irqfavorites.dll"    - "!:\sys\bin\irqfavorites.dll"
-"\epoc32\release\armv5\urel\irqsonghistory.dll"    - "!:\sys\bin\irqsonghistory.dll"
+"\epoc32\release\armv5\urel\irqfavorites.dll"    - "!:\sys\bin\irqfavorites.dll" 
 "\epoc32\release\armv5\urel\irqsettings.dll"    - "!:\sys\bin\irqsettings.dll"
 "\epoc32\release\armv5\urel\irqnwkinfoobserver.dll"    - "!:\sys\bin\irqnwkinfoobserver.dll"
 "\epoc32\release\armv5\urel\irqstatisticsreporter.dll"    - "!:\sys\bin\irqstatisticsreporter.dll"
--- a/qtinternetradio/install/rd-key.pem	Fri Sep 17 08:27:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXAIBAAKBgQDLRF+r1FGGkCwTrb420kbnAps7gi1yYUcXYUdWeFTuBeQe5eW4
-6Y+LWaA8HMlDdoHRB0FgASisYcFagwno9+oFf4AJka4H1gWEs5XTGwAA1s0d8XGh
-7W7Dt9F5FZij8F7/9Pi6+FhhxZFIf1DD+yry9D7+Sp+BgdNALe4XOpf25QIBAwKB
-gQCHgupyjYuvCsgNHn7PNtnvVxInrB5MQNoPli+O+uNJWUK/Q+57Rl+yO8AoEzDX
-pFaLWiuVVhsdloDnAgabT/FXzYncs6uOHyEUV+dSXb78vtLPJqAX+Fg2i3hOXreB
-yskcZ13/OsKVOu5wgrJkx2baZufkqMwOSytf5y9nwjEIKwJBAP+inobagVNrN62j
-KQva3cC+UN/6XnKdTc0CA6bHyLOaJoH1xiMwG/VS2PGjHI0tiSMNtLn/QPpHJ003
-iabGhdUCQQDLjp/9UjFT6K6CF66Chqf30pZXhx+GTSQZmv/gvZiMly7X9fX9BGX3
-2MbJohBC4yI21XKTbisWywkF73Hwh+TRAkEAqmxprzxWN5zPyRdwspHpKymLP/w+
-9xOJM1atGdqFzRFvAU6EF3Vn+OHl9my9s3OwwgkjJqorUYTE3iUGby8D4wJBAIe0
-aqjhdjfwdFa6dFcEb/qMZDpaFQQzbWZnVUB+ZbMPdI/5TqitmU/l2dvBYCyXbCSO
-TGJJcg8yBgP09qBamIsCQFL7j1tM0XPVQJQ89WpKCld7O9ORxRGVj1eG0tWijrH8
-mGbYh8SGCVoWV3vrKSS8GBrFVgQnqUaHuEdtM7tpCAQ=
------END RSA PRIVATE KEY-----
--- a/qtinternetradio/install/rd.cer	Fri Sep 17 08:27:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICzDCCAjWgAwIBAgIBADANBgkqhkiG9w0BAQUFADArMRAwDgYDVQQKEwdSRCBD
-ZXJ0MRcwFQYDVQQDEw5SRCBDZXJ0aWZpY2F0ZTAeFw0wNDExMTUxMjQyMDZaFw0z
-NzA5MjMxMjQyMDZaMCsxEDAOBgNVBAoTB1JEIENlcnQxFzAVBgNVBAMTDlJEIENl
-cnRpZmljYXRlMIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDLRF+r1FGGkCwT
-rb420kbnAps7gi1yYUcXYUdWeFTuBeQe5eW46Y+LWaA8HMlDdoHRB0FgASisYcFa
-gwno9+oFf4AJka4H1gWEs5XTGwAA1s0d8XGh7W7Dt9F5FZij8F7/9Pi6+FhhxZFI
-f1DD+yry9D7+Sp+BgdNALe4XOpf25QIBA6OCAQAwgf0wDAYDVR0TBAUwAwEB/zAL
-BgNVHQ8EBAMCAoQwHQYDVR0OBBYEFFi/kuGzxhVpjGxe9ZwlxC3fH9jFMFMGA1Ud
-IwRMMEqAFFi/kuGzxhVpjGxe9ZwlxC3fH9jFoS+kLTArMRAwDgYDVQQKEwdSRCBD
-ZXJ0MRcwFQYDVQQDEw5SRCBDZXJ0aWZpY2F0ZYIBADBsBgNVHSAEZTBjMGEGBFUd
-IAAwWTATBggrBgEFBQcCARYHaHR0cDovLzBCBggrBgEFBQcCAjA2GjRGb3IgUiZE
-IHVzYWdlIG9ubHkuIFRoaXMgY2VydGlmaWNhdGUgaXMgbm90IHRydXN0ZWQuMA0G
-CSqGSIb3DQEBBQUAA4GBAHGB4RQMAgBdeT2hxfOr6f2nA/dZm+M5yX5daUtZnET9
-Ed0A9sazLawfN2G1KFQT9kxEParAyoAkpbMAsRrnRz/9cM3OHgFm/NiKRnf50DpT
-7oCx0I/65mVD2kt+xXE62/Ii5KPnTufIkPi2uLvURCia1tTS8JmJ8dtxDGyQt8BR
------END CERTIFICATE-----
--- a/qtinternetradio/irdb/inc/channelhistorywrapper.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irdb/inc/channelhistorywrapper.h	Mon Oct 04 00:07:46 2010 +0300
@@ -28,6 +28,8 @@
 public:
     /*
     * RowData:        [direction: in]table row value;
+    *                 reminder, channelUrl and bitrate can't be input from here;
+    *                 if the enum of channelUrl or bitrate is used here, return false;
     * cidUserDefined: [direction: out] return the channelid allocated by IRDB, 
     *                                  the channelId is a user-defined channelId;
     * logoMap: [direction: in]the logo rowData will be inserted into irdb via this structure;
@@ -75,13 +77,11 @@
 private:
     /*
     * search channelId according to parameter;
-    * condUserCidStr:[direction: in]specific condition(where) string for user-define uid;
     * condAND:       [direction: in]condition for search channelHistory, it is AND relationship in every pair;
     * condOR:        [direction: in]condition for search channelHistory, it is OR  relationship in every pair;
     * uint:          return channelId;
     */    
-    uint srhChannelId(QString& condUserCidStr,
-                      const columnMap* const condAND,
+    uint srhChannelId(const columnMap* const condAND = NULL,
                       const columnMap* const condOR = NULL);
 
 };
--- a/qtinternetradio/irdb/inc/irdb.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irdb/inc/irdb.h	Mon Oct 04 00:07:46 2010 +0300
@@ -69,6 +69,7 @@
                         const uint& channelId, 
                         const QString& aCondSqlStr, 
                         const QList<QByteArray>* apImgList = NULL,
+                        const int logoType = 0,
                         bool bPreHandle = false);
     /*
     * action is invoked from view of go to station;     
@@ -85,7 +86,8 @@
                         uint* const cidRet = NULL,
                         const QString& condStr = NULL, 
                         const QString& condUserCidStr = NULL,
-                        const QList<QByteArray>* apImgList = NULL);
+                        const QList<QByteArray>* apImgList = NULL,
+                        const int logoType = 0);
    
     /*
     * this fuction is used while synchronization data with iSDS side;  
@@ -163,10 +165,22 @@
     */
     IRDBCHAR updRowImg(const uint& channelId,
                        const QString& updSqlStr,
-                       QList<QByteArray>* apImgList = NULL);    
+                       QList<QByteArray>* apImgList = NULL,
+                       const int logotype = 0);    
 
 public:
     /*
+    *  handle request from search view;
+    *  aSqlList, sql string list, this list is provided by wrapper level;
+    *  bBegin,   if bBeging is true,it will invoke the operation of open db's connection.
+    */
+    IRDBCHAR handleRstFromSrhView(const uint& channelId, const QStringList& aSqlList, bool bBegin=true);
+   
+    /*
+    * call this function after call handleRstFromSrhView;
+    */
+    void closeIRDBConnection();
+    /*
     * DELETE rows in
     * channelHistory, searchRlt, songHistory, favorites, advertisement;
     * rows in img, channelInfo and urlInfo can't be removed directly.
@@ -174,13 +188,15 @@
     IRDBCHAR deleteRow(const QString& aDltSqlStr);
     
     /*
-    * DELETE rows in
-    * channelHistory, searchRlt, songHistory, favorites, advertisement;
-    * rows in img, channelInfo and urlInfo can't be removed directly.
+    * select rows from IRDB
+    * aBegin, aBegin is 0, will invoke the action of open db connection;
+    * aBegin == aEnd, will invoke the action of close db connection;
     */
     IRDBCHAR selectRow(IRDBWrapper* const apWrapper, 
                        const QString& aSltSqlStr,
-                       QList<QVariant*>* pDataSet);    
+                       QList<QVariant*>* pDataSet,
+                       int aBegin = 0,
+                       int aEnd = 0);    
  
 public:
     /*
@@ -229,7 +245,7 @@
     * search channelid from channelInfo table; 
     */
     IRDBCHAR isChannelIdExisted(uint channelId);    
- 
+    
 private:
     //IRDB Instance
     QSqlDatabase m_sqlDB;
@@ -242,6 +258,9 @@
     
     // The static instance  
     static IRDB* mpIRDBInstance; 
+    
+    //for data batch handle  
+    QSqlQuery* iIRQuery2;
    
 };    
 
--- a/qtinternetradio/irdb/inc/irdbviewstruct.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irdb/inc/irdbviewstruct.h	Mon Oct 04 00:07:46 2010 +0300
@@ -29,11 +29,15 @@
 typedef QMap<uint, QString>  columnMap;
 typedef QMap<uint, QByteArray> logoMap;
 
-enum EColumnLogo{bLogoInsert, sLogoInsert};
+enum EColumnLogo{bLogo, sLogo};
 const QString colNameLogo[] = {"bIcon", "sIcon"};
 const QString strBLogo = ":bIcon";
 const QString strSLogo = ":sIcon";
 
+const int IRDB_BOTH_LOGO = 0x03;// both logo, big and small is in logodata;
+const int IRDB_BIG_LOGO = 0x01; //big logo is in logodata;
+const int IRDB_SMALL_LOGO = 0x02; //small logo is in logodata
+
 const int IRDB_ALL_COLUMN = 25;
 const int IRDB_OPT_INSERT = 1;
 const int IRDB_OPT_UPDATE = 2;
@@ -51,7 +55,7 @@
                  lastModified,     channelType,   musicStoreStatus, 
                  imgUrl,           bLogoGet, sLogoGet,   
                  advertisementUrl, advertisementInUse, expiration,
-                 songName, artistName, channelUrl, opt, dataSource};
+                 songName, artistName, channelUrl, bitRate, opt, dataSource};
 
 const QString colNameView[] = {"channelId",        "channelName",       "channelNickName",  
                                "genreName",        "genreId",           "languageName",     "languageCode",  
@@ -59,7 +63,7 @@
                                "lastModified",     "channelType",       "musicStoreStatus", 
                                "imgUrl",           "bIcon",            "sIcon",     
                                "advertisementUrl", "advertisementInUse", "expiration",
-                               "songName", "artistName", "channelUrl", "opt", "dataSource"};
+                               "songName", "artistName", "channelUrl", "bitRate", "opt", "dataSource"};
 
 //flag of data belong to channelHistory;
 const int DATA_OF_CHANNELHISTORY = 1;
--- a/qtinternetradio/irdb/inc/irdbwrapper.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irdb/inc/irdbwrapper.h	Mon Oct 04 00:07:46 2010 +0300
@@ -38,13 +38,19 @@
     * If all parameters are default, all cid rows in IRDB will return;
     * condAND: condition for search IRDB, it is AND relationship in every pair;
     * condOR: condition for search IRDB, it is OR  relationship in every pair;
+    * here below enum can be input as condition(condAND or condOR):
+    * channelId,        channelName,   channelNickName,  
+      genreName,        genreId,       languageName, languageCode,  
+      countryName,      countryCode,   description,  shortDesc,    
+      lastModified,     channelType,   musicStoreStatus, 
+      imgUrl,           
+      advertisementUrl, advertisementInUse, expiration,
+      channelUrl, bitRate;
     */                       
     QList<uint>* getChannelId(const columnMap* const condAND = NULL,  
                               const columnMap* const condOR  = NULL);
 
-friend class IRDB;
 
-protected:
     /*
     * If all parameters are default, all rows in IRDB will return;
     * condAND: condition for search IRDB, it is AND relationship in every pair;
@@ -53,6 +59,8 @@
     QList<QVariant*>* getIRDB(const columnMap* const condAND = NULL,  
                               const columnMap* const condOR  = NULL);
 
+    friend class IRDB;
+
 protected:
     /*
     * create sql condition(where) string according to the input condAND and condAND;
@@ -80,7 +88,8 @@
                        QString& insSqlStr, 
                        QString& updSqlStr,
                        const logoMap* const logoData = NULL,
-                       QList<QByteArray>* logoArrayList = NULL);
+                       QList<QByteArray>* logoArrayList = NULL,
+                       int* logoType = NULL);
     
     /*
     * create sql select string according to the input condAND and condOR;
--- a/qtinternetradio/irdb/inc/irsqlstr.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irdb/inc/irsqlstr.h	Mon Oct 04 00:07:46 2010 +0300
@@ -20,7 +20,7 @@
 
 const QString IRDBName = "IRDB.db";
 
-#ifdef Q_CC_NOKIAX86
+#ifdef PLATSIM_DEBUG_CONF
     const QString IRDBFile = IRDBName;
 #else
     const QString IRDBFile = "c:\\private\\2002FFAC\\IRDB.db";    
@@ -31,8 +31,9 @@
 const QString IRDBConnectionName("IR");
 const QString IRDBSrhCIdCntFrmChannelInfo("select count(channelId) from channelInfo where channelId =");
 const QString IRDBSrhCIdCntFrmFavorites("select count(channelId) from favorites where channelId =");
-const QString IRDBSrhCIdFrmView("select channelid from IRVIEW_CHANNELINFO ");
-const QString IRDBSrhAllFrmView("select * from IRVIEW_CHANNELINFO ");
+const QString IRDBSrhCIdFrmChannelInfo("select channelid from IRVIEW_CHANNELINFO ");
+const QString IRDBSrhCIdFrmView("select channelId from IRVIEW_ALL ");
+const QString IRDBSrhAllFrmView("select * from IRVIEW_ALL ");
 const QString IRDBInsertIRBuff("insert into IRBuff (channelid, datasource, opt) values("); 
 const QString IRDBSrhCIdCntFrmSongHistory("select count(channelId) from songHistory where songName =");
 const QString IRDBSrhCIdCntFrmChannelHistory("select count(channelId) from channelHistory where channelId =");
@@ -82,7 +83,7 @@
 [description] nvarchar(255),   \
 [shortDesc] nvarchar(255),   \
 [lastModified] datetime DEFAULT (datetime(current_timestamp,'localtime')),   \
-[musicStoreStatus] numeric(1) DEFAULT (1),   \
+[musicStoreStatus] nvarchar(6),   \
 [imgUrl] nvarchar(255),   \
 [bIcon] BLOB,    \
 [sIcon] BLOB,    \
@@ -298,6 +299,11 @@
 refCnt = refCnt+1 \
 where channelId = new.channelId; \
 \
+UPDATE channelInfo \
+SET channelType = 0 \
+WHERE channelId = new.channelID \
+AND new.channelID >= 4026531840; \
+\
 delete from channelHistory \
 where channelLatestPlayTime = ( select min(channelLatestPlayTime) from channelHistory) \
 AND (select count(*) from channelHistory)> 100; \
@@ -354,6 +360,11 @@
 where \
 channelId = new.channelId;  \
   \
+UPDATE channelInfo \
+SET channelType = 0 \
+WHERE channelId = new.channelID \
+AND new.channelID >= 4026531840; \
+\
 delete from searchRlt \
 where SID = ( select min(SID) from searchRlt) AND (select count(*) from searchRlt)> 100; \
 \
@@ -389,7 +400,7 @@
 [channelName] nvarchar(255) ,\
 [channelNickName] nvarchar(255) ,\
 [genreName] nvarchar(255) ,\
-[genreId] nvarchar(64)),     \
+[genreId] nvarchar(64),\
 [languageName] nvarchar(255) ,\
 [languageCode] nvarchar(8) ,\
 [countryName] nvarchar(255) ,\
@@ -398,24 +409,10 @@
 [shortDesc] nvarchar(255) ,\
 [lastModified] datetime DEFAULT (datetime(current_timestamp,'localtime')), \
 [channelType] numeric(1) DEFAULT (1) ,\
-[musicStoreStatus] numeric(1) NOT NULL ,\
+[musicStoreStatus] nvarchar(6) ,\
 [refCnt] numeric(1) DEFAULT (0));");
 
 
-/*
-* Define for channelInfo Insert trigger;
-* the refCnt default value is 1;
-*/
-const QString TRI_INSERT_CHANNELINFO("CREATE TRIGGER [TRI_INSERT_channelInfo] \
-AFTER INSERT ON [channelInfo] FOR EACH ROW \
-BEGIN \
-\
-UPDATE channelInfo \
-SET channelType = 0 \
-WHERE channelId = new.channelID \
-AND new.channelID > 4294967295;  \
-\
-END;");
 
 
 /*
@@ -461,6 +458,21 @@
 [bIcon] BLOB,    \
 [sIcon] BLOB); ");
 
+/*
+* Definition for trigger img table;
+* when imgurl is updated(old.value isn't same with new.value),
+* the logo info in database will be remvoed;
+*/
+const QString TRI_UPDATE_IMG("CREATE TRIGGER [IRI_UPDATE_img] \
+AFTER UPDATE \
+ON [img] \
+FOR EACH ROW \
+BEGIN \
+update img \
+set sIcon = NULL, bIcon = NULL \
+where new.imgurl <> old.imgurl; \
+\
+END; ");
 
 
 /**************************************************
@@ -562,7 +574,7 @@
 AND artistName = new.artistName; \
  \
 delete from songHistory   \
-where songPlaySeq = ( select min(songPlaySeq) from searchRlt)    \
+where songPlaySeq = ( select min(songPlaySeq) from songHistory)    \
 AND (select count(*) from songHistory)> 100;   \
 END;");
 
@@ -702,26 +714,32 @@
 select \
 IRView_channelinfo.* \
 from \
-channelHistory LEFT JOIN IRView_channelinfo ON channelHistory.[channelId] = IRView_channelinfo.[channelID] ");
+channelHistory \
+LEFT JOIN \
+IRView_channelinfo ON channelHistory.[channelId] = IRView_channelinfo.[channelID] \
+order by channelHistory.[channelLatestPlayTime] desc ");
 
 const QString IRVIEW_FAVORITES(" Create  View [IRVIEW_favorites] As \
 select \
-IRView_channelinfo.*, favorites.[FavSeq] \
+IRView_channelinfo.* \
 from \
-favorites LEFT JOIN IRView_channelinfo ON favorites.[channelId] = IRView_channelinfo.[channelID] ");
+favorites LEFT JOIN IRView_channelinfo ON favorites.[channelId] = IRView_channelinfo.[channelID] \
+order by favorites.[FavSeq] desc ");
 
 
 const QString IRVIEW_SEARCHRLT(" Create  View [IRVIEW_searchRlt] As \
 select \
 IRView_channelinfo.* \
 from \
-searchRlt LEFT JOIN IRView_channelinfo ON searchRlt.[channelId] = IRView_channelinfo.[channelID] ");
+searchRlt LEFT JOIN IRView_channelinfo ON searchRlt.[channelId] = IRView_channelinfo.[channelID] \
+order by searchRlt.[channelLatestSrhTime] asc ");
 
 const QString IRVIEW_SONGHISTORY("Create  View [IRVIEW_songHistory] As \
 select \
-IRView_channelinfo.*, songHistory.[songName], songHistory.[artistName], songHistory.[songPlaySeq] \
+IRView_channelinfo.*, songHistory.[songName], songHistory.[artistName] \
 from \
-songHistory LEFT JOIN IRView_channelinfo ON songHistory.[channelId] = IRView_channelinfo.[channelID] ");
+songHistory LEFT JOIN IRView_channelinfo ON songHistory.[channelId] = IRView_channelinfo.[channelID] \
+order by songHistory.[songPlaySeq] desc ");
 
 
 const QString IR_VIEW_SRH_USERCID(" CREATE VIEW [IR_VIEW_SRH_USERCID] As \
@@ -729,6 +747,14 @@
 FROM channelinfo LEFT JOIN urlInfo ON channelinfo.channelID = urlInfo.channelID ");
 
 
+const QString IR_VIEW_ALL("Create  View [IRVIEW_ALL] As  \
+select \
+IRView_channelinfo.*,urlInfo.[channelUrl],  urlInfo.[bitRate] \
+from \
+IRView_channelInfo \
+LEFT JOIN \
+urlinfo ON IRView_channelinfo.[channelID] = urlInfo.[channelID] ");
+
 /**************************************************
 * define for drop IRDB VIEW, TABLE AND TRIGGER
 ***************************************************/
--- a/qtinternetradio/irdb/inc/searchrltwrapper.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irdb/inc/searchrltwrapper.h	Mon Oct 04 00:07:46 2010 +0300
@@ -27,6 +27,14 @@
 
 public:
     /*
+    * RowData: [direction: in] table row value
+    * bOpt:    [direction: in] true = the db connection should be open;
+    */
+    bool addSearchRlt(const columnMap* const RowData, 
+                      bool bOpt = true);    
+    
+    void addSearchRltFinished();
+    /*
     * RowData: [direction: in]table row value;
     * condAND: [direction: in]condition for search searchRlt, it is AND relationship in every pair;
     * condOR:  [direction: in]condition for search searchRlt, it is OR  relationship in every pair;
@@ -69,10 +77,17 @@
     * condOR:        [direction: in]condition for search channelHistory, it is OR  relationship in every pair;
     * uint:          return channelId;
     */    
-    uint srhChannelId(QString& condUserCidStr,
-                      const columnMap* const condAND,
+    uint srhChannelId(const columnMap* const condAND = NULL,
                       const columnMap* const condOR = NULL);
-
+    /*
+    * create QString List for handle(insert/update) the data come from search view
+    * channelId: [direction: in] channel id;
+    * RowData:   [direction: in] input data;
+    * sqlList:   [direction: out] return sql string; 
+    */
+    void combineSqlStr(const uint& channelId,
+                       const columnMap* const RowData, 
+                       QStringList& sqlList);
 };
 
 #endif
--- a/qtinternetradio/irdb/inc/urlinfowrapper.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irdb/inc/urlinfowrapper.h	Mon Oct 04 00:07:46 2010 +0300
@@ -35,9 +35,14 @@
     */     
     bool resetUrlInfo(const columnUrlInfoInsertMap* const RowData,
                       const uint& channelId);    
-
+    /*
+    * aBegin, aBegin is 0, will invoke the action of open db connection;
+    * aBegin == aEnd, will invoke the action of close db connection;
+    */
     QList<QVariant*>* getUrlInfo(const columnMap* const condAND = NULL,  
-                                 const columnMap* const condOR = NULL);
+                                 const columnMap* const condOR = NULL,
+                                 int aBegin = 0,
+                                 int aEnd = 0);
 
 private:
     /*
--- a/qtinternetradio/irdb/src/channelhistorywrapper.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irdb/src/channelhistorywrapper.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -75,8 +75,7 @@
     return true;
 }
 
-uint channelHistoryWrapper::srhChannelId(QString& condUserCidStr,
-                                         const columnMap* const condAND,
+uint channelHistoryWrapper::srhChannelId(const columnMap* const condAND,
                                          const columnMap* const condOR)
 {
     uint srhCID = 0;
@@ -90,12 +89,13 @@
     {
         srhCID = (condOR->value(channelId)).toUInt();         
     }
-
+#if 0 
     if(srhCID)
     {
         return srhCID ;
     }
 
+   
     //channelId column is false
     //only one case, go to station view, channelUrl and channelNickName
     //search channelId according to urlinof and channelNickName;
@@ -104,14 +104,22 @@
     {
         if( ( !(condAND->value(channelUrl).isEmpty())  )&&( !(condAND->value(channelNickName).isEmpty()) ) )
         {
+            QString escStr;
+        
             srhStr = "where "+ colNameView[channelUrl] + " = ";
-            srhStr = srhStr + "'" + condAND->value(channelUrl) + "' AND " ;
+            escStr = condAND->value(channelUrl);
+            escStr.replace('\'', "\'\'");
+            srhStr = srhStr + "'" + escStr + "' AND " ;
+
             srhStr = srhStr + colNameView[channelNickName] + " = ";
-            srhStr = srhStr + "'" + condAND->value(channelNickName) + "'";
+            escStr = condAND->value(channelNickName);
+            escStr.replace('\'', "\'\'");
+            srhStr = srhStr + "'" + escStr + "'";
         }
         condUserCidStr = srhStr;
     }
-          
+#endif
+    
     return srhCID;
 }
 
@@ -136,19 +144,29 @@
     columnMap* const RowDataAppend = const_cast<columnMap*>(RowData);
     QList<QByteArray>* pImgList = NULL;
     bool ret = true;
+    int logoType = 0;
 
 
-    if( NULL == RowData )
+    if( ( NULL == RowData )&&(NULL == logoData) )
     {
         return false;
     }
-
-    if(RowData->isEmpty())
+    
+    if(RowData)
     {
-        return false;
+        if(RowData->isEmpty())
+        {
+            return false;
+        }
     }
 
-
+    if(logoData)
+    {
+        if(logoData->isEmpty())
+        {
+            return false;
+        }      
+    }
     if( (NULL != condAND)&&(NULL != condOR) )
     {
         return false;
@@ -170,11 +188,6 @@
         }
     }
     
-    if(cidUserDefined)
-    {
-        *cidUserDefined = 0;	
-    }
-    
     insSqlStr = "insert into IRBuff ";   
     updSqlStr = "update IRBuff set ";
     RowDataAppend->insert(opt, QString::number(IRDB_OPT_INSERT));    
@@ -183,8 +196,8 @@
     if(NULL != logoData)
     {
         pImgList = new QList<QByteArray>();
-        combinePutStr(RowDataAppend, colNameView, insSqlStr, updSqlStr, logoData, pImgList); 
-        *pImgList=logoData->values();
+        combinePutStr(RowDataAppend, colNameView, insSqlStr, updSqlStr, logoData, pImgList, &logoType); 
+        //*pImgList=logoData->values();
     
     }
     else
@@ -194,22 +207,22 @@
                                         
     if( (NULL == condAND)&&(NULL == condOR) )
     {
-        uCid = srhChannelId(condUserCidStr,RowData);
+        uCid = srhChannelId(RowData);
     }
     else //here it must be "update" operation; condition string 
     {
-        uCid = srhChannelId(condUserCidStr,condAND, condOR);
+        uCid = srhChannelId(condAND, condOR);
         combineCondStr(condAND, condOR, colNameView, condSqlStr);
     }
 
     if(uCid)
     {
         //updSqlStr += condSqlStr;
-        m_pIRDB->chgRowIRDB(insSqlStr, updSqlStr, uCid, condSqlStr, pImgList)? ret = false:true;
+        m_pIRDB->chgRowIRDB(insSqlStr, updSqlStr, uCid, condSqlStr, pImgList, logoType)? ret = false:true;
     }
     else //here deliver the updSqlstr and condSqlStr seperately.
     {
-        m_pIRDB->chgRowIRDB(insSqlStr, updSqlStr, cidUserDefined, condSqlStr, condUserCidStr, pImgList)?ret = false:true;
+        m_pIRDB->chgRowIRDB(insSqlStr, updSqlStr, cidUserDefined, condSqlStr, condUserCidStr, pImgList, logoType)?ret = false:true;
     }  
     
     if(pImgList)
@@ -248,7 +261,7 @@
         }
     }
 
-    sltSqlStr = "select * from IRView_channelinfo ";
+    sltSqlStr = "select * from IRVIEW_CHANNELHISTORY ";
     combineGetStr(condAND, condOR, colNameView,sltSqlStr);
     pDataSet = new QList<QVariant*>();
     if( m_pIRDB->selectRow(this, sltSqlStr, pDataSet) )
--- a/qtinternetradio/irdb/src/favoriteswrapper.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irdb/src/favoriteswrapper.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -120,7 +120,7 @@
     }
 
     combineGetStr(condAND, condOR, colNameView, sltSqlStr);
-    sltSqlStr = sltSqlStr + " order by FavSeq desc ";
+//    sltSqlStr = sltSqlStr + " order by FavSeq desc ";
     pDataSet = new QList<QVariant*>();
     if( m_pIRDB->selectRow(this, sltSqlStr, pDataSet) )
     {
--- a/qtinternetradio/irdb/src/imgwrapper.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irdb/src/imgwrapper.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -35,32 +35,35 @@
     QString updSqlStr;
     QList<QByteArray>* pImgList = NULL;
     bool ret = true;
+    int logoType;
     
     if(!channelId)
     {
         return false;	
     }
 
-    if( NULL == RowData )
+    if( ( NULL == RowData )&&(NULL ==logoData) )
     {
         return false;
     }
-
-    if(RowData->isEmpty())
+    if(RowData)
     {
-        return false;
-    }
+        if(RowData->isEmpty())
+        {
+            return false;
+        }
 
-    if( true != (RowData->value(channelId)).isEmpty() )
-    {
-        return false;
-    }
+        if( true != (RowData->value(channelId)).isEmpty() )
+        {
+            return false;
+        }
+    }    
 
     updSqlStr = "update img set ";
     if(NULL != logoData)
      {
          pImgList = new QList<QByteArray>();
-         combinePutStr(RowData, colNameView, insSqlStr, updSqlStr, logoData, pImgList); 
+         combinePutStr(RowData, colNameView, insSqlStr, updSqlStr, logoData, pImgList, &logoType); 
      
      }
      else
@@ -71,7 +74,7 @@
     //create insSqlstr and updSqlStr in advance;
     updSqlStr = updSqlStr + "where channelId = " + QString::number(channelId);
     
-    m_pIRDB->updRowImg(channelId, updSqlStr, pImgList)? ret = false:true;
+    m_pIRDB->updRowImg(channelId, updSqlStr, pImgList, logoType)? ret = false:true;
     if(pImgList)
     {
         delete pImgList;
@@ -84,7 +87,7 @@
 QList<QVariant*>* imgWrapper::getImg(const columnMap* const condAND,  
                                    const columnMap* const condOR)
 {
-    QString sltSqlStr = "select * from IRVIEW_channelinfo ";
+    QString sltSqlStr = "select * from img ";
     QList<QVariant*>* pDataSet = NULL;
     
     if( (NULL != condAND)&&(NULL != condOR) )
--- a/qtinternetradio/irdb/src/irdb.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irdb/src/irdb.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -41,11 +41,16 @@
 #define IRDB_CID_UNEXISTED (0x11)
 #define IRDB_CID_USER_DEFINE (0xF0000000)
 
+#define INS_CHANNELINFO_FRM_SRHVIEW (0x00) 
+#define INS_IMG_FRM_SRHVIEW         (0x01)
+#define INS_SEARCHRLT_FRM_SRHVIEW   (0x02)
+#define UPD_CHANNELINFO_FRM_SRHVIEW (0x03) 
+#define UPD_IMG_FRM_SRHVIEW         (0x04)
 
 IRDB* IRDB::mpIRDBInstance = NULL;
 QMutex IRDB::mMutex;
 
-IRDB::IRDB(): m_RefCnt(0)
+IRDB::IRDB(): m_RefCnt(0),iIRQuery2(NULL)
 {
 }
 
@@ -149,15 +154,16 @@
 \
     <<TRI_INSERT_IRBUFF<<TRI_UPDATE_IRBUFF \
     <<TRI_INSERT_SEARCHRLT<<TRI_DELETE_SEARCHRLT \
-    <<TRI_INSERT_CHANNELINFO<<TRI_UPDATE_CHANNELINFO<<TRI_DELETE_CHANNELINFO \
+    <<TRI_UPDATE_CHANNELINFO<<TRI_DELETE_CHANNELINFO \
     <<TRI_INSERT_CHANNELHISTORY<<TRI_DELETE_CHANNELHISTORY \
     <<TRI_INSERT_ADVERTISEMENT<<TRI_UPDATE_ADVERTISEMENT \
+    <<TRI_UPDATE_IMG \
 \
     <<TRI_INSERT_SONGHISTORY<<TRI_UPDATE_SONGHISTORY<<TRI_DELETE_SONGHISTORY \
     <<TRI_INSERT_FAVORITES<<TRI_UPDATE_FAVORITES<<TRI_DELETE_FAVORITES \
 \
     <<IRVIEW_CHANNELINFO1<<IRVIEW_CHANNELINFO<<IRVIEW_CHANNELHISTORY<<IR_VIEW_SRH_USERCID \
-    <<IRVIEW_FAVORITES<<IRVIEW_SEARCHRLT<<IRVIEW_SONGHISTORY ;
+    <<IRVIEW_FAVORITES<<IRVIEW_SEARCHRLT<<IRVIEW_SONGHISTORY<<IR_VIEW_ALL ;
 
 
     for(int i = 0; i<sqlList.size();i++)
@@ -206,14 +212,15 @@
                           uint* const retCid,
                           const QString& aCondSqlStr, 
                           const QString& condUserCidStr, 
-                          const QList<QByteArray>* apImgList) 
+                          const QList<QByteArray>* apImgList,
+                          const int logoType) 
 {
     IRDBCHAR ret = IRDB_ERR_NONE;
     //channelId value 0 don't be used in CIRDB;
     uint channelId = 0;                     
     //sql string for search cid according to nickname and url; 
     QString strSrhCid = IRDBSrhUserCid + condUserCidStr;
-    QString strSrhDataSet = IRDBSrhCIdFrmView + aCondSqlStr;
+    QString strSrhDataSet = IRDBSrhCIdFrmChannelInfo + aCondSqlStr;
     
     //initialize the channelId for application level;
     if(retCid)
@@ -326,7 +333,7 @@
         * for the synchoronization concern, the m_sqlDB can't be closed until all the process is compeleted;    
         * m_sqlDB.close();
         */
-         ret = chgRowIRDB(aInsSqlStr, aUpdSqlStr, channelId, aCondSqlStr, apImgList,  true);
+         ret = chgRowIRDB(aInsSqlStr, aUpdSqlStr, channelId, aCondSqlStr, apImgList, logoType, true);
     }
 /*    else
     {
@@ -345,6 +352,7 @@
                           const uint& channelId, 
                           const QString& aCondSqlStr, 
                           const QList<QByteArray>* apImgList,
+                          const int logoType,
                           bool bPreHandle)
 {
     IRDBCHAR ret = IRDB_ERR_NONE;
@@ -410,8 +418,25 @@
             else
             {            
                 iIRQuery.prepare(aUpdSqlStr);
-                iIRQuery.bindValue(strBLogo, apImgList->at(bLogoInsert));
-                iIRQuery.bindValue(strSLogo, apImgList->at(sLogoInsert));
+                //when there are both big and small logo, first insert blogo and next insert slogo is required;
+                if(IRDB_BOTH_LOGO == logoType)
+                {
+                    iIRQuery.bindValue(strBLogo, apImgList->at(bLogo)); 
+                    iIRQuery.bindValue(strSLogo, apImgList->at(sLogo));                
+                }
+                else
+                {
+                    if( IRDB_BIG_LOGO == logoType&IRDB_BOTH_LOGO )
+                    {
+                        iIRQuery.bindValue(strBLogo, apImgList->at(0));                
+                    }
+                    if(IRDB_SMALL_LOGO == logoType&IRDB_BOTH_LOGO)
+                    {
+                        iIRQuery.bindValue(strSLogo, apImgList->at(0));
+                    }
+                
+                }
+                
                 if(false == iIRQuery.exec())
                 {
                     ret = IRDB_ERR_UPDATE;
@@ -432,8 +457,25 @@
         else
         {
             iIRQuery.prepare(aInsSqlStr);
-            iIRQuery.bindValue(strBLogo, apImgList->at(bLogoInsert));
-            iIRQuery.bindValue(strSLogo, apImgList->at(sLogoInsert));
+            //when there are both big and small logo, first insert blogo and next insert slogo is required;
+            if(IRDB_BOTH_LOGO == logoType)
+            {
+                iIRQuery.bindValue(strBLogo, apImgList->at(bLogo)); 
+                iIRQuery.bindValue(strSLogo, apImgList->at(sLogo));                
+            }
+            else
+            {
+                if( IRDB_BIG_LOGO == logoType&IRDB_BOTH_LOGO )
+                {
+                    iIRQuery.bindValue(strBLogo, apImgList->at(0));                
+                }
+                if(IRDB_SMALL_LOGO == logoType&IRDB_BOTH_LOGO)
+                {
+                    iIRQuery.bindValue(strSLogo, apImgList->at(0));
+                }
+            
+            }
+            
             if(false == iIRQuery.exec())
             {
                 ret = IRDB_ERR_UPDATE;
@@ -517,6 +559,94 @@
     
 }
 
+IRDBCHAR IRDB::handleRstFromSrhView(const uint& channelId, const QStringList& aSqlList, bool bBegin)
+{
+    QString strIsCIDExist = IRDBSrhCIdCntFrmChannelInfo + QString::number(channelId);
+    IRDBCHAR ret = IRDB_ERR_NONE;
+    
+    if(0 == channelId)
+    {
+        return IRDB_CID_UNEXISTED;
+    }    
+    if(true == bBegin)
+    {
+        if(false == openIRDBConnection())
+        {
+            return IRDB_ERR_OPEN;   
+        }
+        iIRQuery2 = new QSqlQuery(m_sqlDB);
+    }
+    
+  
+    
+    //iIRQuery.clear();
+    if(false == iIRQuery2->exec(strIsCIDExist))
+    {
+            ret = IRDB_ERR_SELECT; 
+    }
+    else
+    {
+        iIRQuery2->next();  
+        if(0 != iIRQuery2->value(0).toInt())
+        {
+            ret = IRDB_CID_EXISTED;
+        }
+    } 
+    
+    if(IRDB_CID_EXISTED == ret)
+    {
+        ret = IRDB_ERR_NONE;
+        if( false == iIRQuery2->exec(aSqlList.value(INS_SEARCHRLT_FRM_SRHVIEW)) )
+        {
+            ret = IRDB_ERR_INSERT;
+        }
+        //the update string should be excute;
+        if(false == iIRQuery2->exec(aSqlList.value(UPD_CHANNELINFO_FRM_SRHVIEW)))
+        {
+            ret = IRDB_ERR_UPDATE;
+        }
+        if(false == iIRQuery2->exec(aSqlList.value(UPD_IMG_FRM_SRHVIEW)))
+        {
+            ret = IRDB_ERR_UPDATE;
+        }
+    }
+    else if( IRDB_ERR_NONE == ret)
+    {
+        if( false == iIRQuery2->exec(aSqlList.value(INS_CHANNELINFO_FRM_SRHVIEW)) )
+        {
+            ret = IRDB_ERR_INSERT;
+        }
+        else
+        {
+            if(false == iIRQuery2->exec(aSqlList.value(INS_IMG_FRM_SRHVIEW)))
+            {
+                ret = IRDB_ERR_INSERT;
+            }else
+            {
+                if ( false == iIRQuery2->exec(aSqlList.value(INS_SEARCHRLT_FRM_SRHVIEW)) )
+                {
+                    ret = IRDB_ERR_INSERT;
+                }
+            }
+            
+        }
+    }
+
+    return ret ;      
+    
+}
+
+
+void IRDB::closeIRDBConnection()
+{
+    if( NULL != iIRQuery2)
+    {
+        iIRQuery2->clear();
+        delete iIRQuery2;
+        iIRQuery2 = NULL;	
+    }
+    m_sqlDB.close();
+}
 
 IRDBCHAR IRDB::isChannelIdExisted(uint channelId)
 {
@@ -721,7 +851,11 @@
     return ret; 
 }
 
-IRDBCHAR IRDB::selectRow(IRDBWrapper* const apWrapper, const QString& aCondStr, QList<QVariant*>* pDataSet)
+IRDBCHAR IRDB::selectRow(IRDBWrapper* const apWrapper, 
+                         const QString& aCondStr, 
+                         QList<QVariant*>* pDataSet,
+                         int aBegin,
+                         int aEnd)
 {
     IRDBCHAR ret = IRDB_ERR_NONE;   
     
@@ -730,9 +864,12 @@
         ret = IRDB_ERR_SELECT;      
     }
     
-    if(false == openIRDBConnection())
-    {
-        return IRDB_ERR_OPEN;   
+    if(0 == aBegin)
+    {    
+        if(false == openIRDBConnection())
+        {
+            return IRDB_ERR_OPEN;   
+        }
     }
  
     QSqlQuery iIRQuery(m_sqlDB);  
@@ -755,9 +892,13 @@
             ret = IRDB_ERR_WRAPPER;
     } 
         
+    
 
-    iIRQuery.clear();
-    m_sqlDB.close();
+    if(aBegin == aEnd)
+    {
+        iIRQuery.clear();
+        m_sqlDB.close();
+    }
  
     return ret; 
 }
@@ -824,7 +965,10 @@
 /*
 * only update imgUrl, imgLocalFile in img table; 
 */
-IRDBCHAR IRDB::updRowImg(const uint& channelId, const QString& updSqlStr, QList<QByteArray>* apImgList)
+IRDBCHAR IRDB::updRowImg(const uint& channelId, 
+                         const QString& updSqlStr, 
+                         QList<QByteArray>* apImgList, 
+                         const int logoType)
 {
     QString strIsCIDExist = IRDBSrhCIdCntFrmChannelInfo + QString::number(channelId) +";";    
     IRDBCHAR ret = IRDB_ERR_NONE;   
@@ -858,8 +1002,24 @@
         else
         {            
             iIRQuery.prepare(updSqlStr);
-            iIRQuery.bindValue(strBLogo, apImgList->at(bLogoInsert));
-            iIRQuery.bindValue(strSLogo, apImgList->at(sLogoInsert));
+            //when there are both big and small logo, first insert blogo and next insert slogo is required;
+            if(IRDB_BOTH_LOGO == logoType)
+            {
+                iIRQuery.bindValue(strBLogo, apImgList->at(bLogo)); 
+                iIRQuery.bindValue(strSLogo, apImgList->at(sLogo));                
+            }
+            else
+            {
+                if( IRDB_BIG_LOGO == logoType&IRDB_BOTH_LOGO )
+                {
+                    iIRQuery.bindValue(strBLogo, apImgList->at(0));                
+                }
+                if(IRDB_SMALL_LOGO == logoType&IRDB_BOTH_LOGO)
+                {
+                    iIRQuery.bindValue(strSLogo, apImgList->at(0));
+                }
+            
+            }
             if(false == iIRQuery.exec())
             {
                 ret = IRDB_ERR_UPDATE;
--- a/qtinternetradio/irdb/src/irdbwrapper.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irdb/src/irdbwrapper.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -132,7 +132,8 @@
                                 QString& insSqlStr, 
                                 QString& updSqlStr,
                                 const logoMap* const logoData,
-                                QList<QByteArray>* logoArrayList)
+                                QList<QByteArray>* logoArrayList,
+                                int* logoType)
 {
     bool bContinue = false;
     columnMap::const_iterator it;
@@ -140,6 +141,7 @@
     QString escStr;
     insSqlStr += "(";
     
+    
     if(NULL != RowData)
     {
         bContinue = true;
@@ -159,6 +161,14 @@
     
     if(NULL != logoData)
     {
+        if(logoType)
+        {
+            *logoType = 0x00; //
+        }
+        else
+        {
+            return;
+        }
         itLogoMap = logoData->begin();
         while(itLogoMap != logoData->end())
         {
@@ -166,7 +176,15 @@
             {
                      insSqlStr += ",";  
             }
- 
+            if(bLogo ==itLogoMap.key())
+            {
+                *logoType += IRDB_BIG_LOGO;
+            }
+            if(sLogo ==itLogoMap.key())
+            {
+                *logoType += IRDB_SMALL_LOGO;
+            }
+             
             insSqlStr += colNameLogo[itLogoMap.key()];
             ++itLogoMap;        
         }
@@ -195,6 +213,7 @@
 
     if(NULL != logoData)
     {
+      
         itLogoMap = logoData->begin();
         while(itLogoMap != logoData->end())
         {
@@ -202,6 +221,7 @@
             {
                  insSqlStr += ",";  
             }
+            
             insSqlStr = insSqlStr + " :"+colNameLogo[itLogoMap.key()];
             *logoArrayList<<itLogoMap.value();
 
@@ -239,6 +259,7 @@
     
     if(NULL != logoData)
     {
+
         itLogoMap = logoData->begin();
         while(itLogoMap != logoData->end())
         {
@@ -247,7 +268,7 @@
                  updSqlStr += ",";  
             }
 
-            updSqlStr = updSqlStr + colNameLogo[itLogoMap.key()] + "=:"+colNameLogo[itLogoMap.key()];
+            updSqlStr = updSqlStr + colNameLogo[itLogoMap.key()] + "=:"+colNameLogo[itLogoMap.key()] + " ";
             ++itLogoMap;        
         }
     }    
@@ -264,6 +285,7 @@
 {
     bool bDone = false;
     columnMap::const_iterator it;
+    QString escStr;
     
     if(NULL != condAND)
     {
@@ -279,8 +301,9 @@
                 {
                     condSqlStr += " AND ";
                 }
-                
-                condSqlStr = condSqlStr + pArryColName[it.key()] + "=" + "'" + it.value()+ "'" ;
+                escStr = it.value();
+                escStr.replace('\'', "\'\'");
+                condSqlStr = condSqlStr + pArryColName[it.key()] + "=" + "'" + escStr + "'" ;
                     
                 ++it;
             }
@@ -307,7 +330,8 @@
                 {
                     condSqlStr += " OR ";
                 }
-                
+                escStr = it.value();
+                escStr.replace('\'', "\'\'");
                 condSqlStr = condSqlStr + pArryColName[it.key()] + "=" + "'" + it.value()+ "'" ;
                 ++it;
              }               
--- a/qtinternetradio/irdb/src/searchrltwrapper.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irdb/src/searchrltwrapper.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -15,6 +15,7 @@
 
 #include <QSqlQuery>
 #include <QVariant>
+#include <QStringList>
 #include "searchrltwrapper.h"
 #include "irdb.h"
 
@@ -26,6 +27,199 @@
 {
 } 
 
+void searchRltWrapper::combineSqlStr(const uint &cid,
+                                     const columnMap* const RowData, 
+                                     QStringList &sqlList)
+{
+    columnMap::const_iterator it;
+    QString insSqlstrCnlInfo = "insert into channelInfo( ";
+    QString insSqlstrImg     = "insert into img( ";
+    QString insSqlstrSrhRlt  = "insert into searchrlt( "; 
+    QString escStr;
+    QString condStr = " where channelId ='" + QString::number(cid) + "' ";
+
+    bool FstOfStatementCnl = true;
+    bool FstOfStatementImg = true;
+
+    it = RowData->begin();
+    while(it != RowData->end())
+    {
+        if(channelId == it.key()) 
+        {
+            if(false == FstOfStatementCnl)
+            {
+                insSqlstrCnlInfo += ", ";                
+            }
+        
+            if(false == FstOfStatementImg)
+            {
+                insSqlstrImg += ", ";                
+            } 
+            
+            insSqlstrCnlInfo += colNameView[it.key()];
+            insSqlstrImg += colNameView[it.key()];
+            insSqlstrSrhRlt += colNameView[it.key()];
+            FstOfStatementCnl = false;
+            FstOfStatementImg = false;
+        }
+        
+        if( (channelName == it.key()) ||(shortDesc == it.key()) )
+        {
+            if(false == FstOfStatementCnl)
+            {
+                insSqlstrCnlInfo += ", ";                
+            }
+            
+            insSqlstrCnlInfo += colNameView[it.key()];
+            FstOfStatementCnl = false;
+        }
+        
+        if(imgUrl == it.key())
+        {
+            if(false == FstOfStatementImg)
+            {
+                insSqlstrImg += ", ";                
+            }
+            
+            insSqlstrImg += colNameView[it.key()];
+            FstOfStatementImg = false;
+        }
+
+        ++it;
+    }
+    
+    insSqlstrCnlInfo += ") values(";
+    insSqlstrImg += ") values(";
+    insSqlstrSrhRlt += ") values(";
+    FstOfStatementCnl = true;
+    FstOfStatementImg = true;
+        
+    it = RowData->begin();
+    while(it != RowData->end())
+    {
+        //here for escape char,
+        escStr = it.value();
+        escStr.replace('\'', "\'\'");
+
+        if(channelId == it.key()) 
+        {
+            if(false == FstOfStatementCnl)
+            {
+                insSqlstrCnlInfo += ", ";                
+            }
+            
+            if(false == FstOfStatementImg)
+            {
+                insSqlstrImg += ", ";                
+            }
+            
+            insSqlstrCnlInfo  = insSqlstrCnlInfo + "'"+ escStr+ "'";
+            insSqlstrImg      = insSqlstrImg + "'"+ escStr+ "'";
+            insSqlstrSrhRlt   = insSqlstrSrhRlt + "'"+ escStr+ "'";
+            FstOfStatementCnl = false;
+            FstOfStatementImg = false;
+        }
+        
+        if( (channelName == it.key()) ||(shortDesc == it.key()) )
+        {
+            if(false == FstOfStatementCnl)
+            {
+                insSqlstrCnlInfo += ", ";                
+            }
+        
+            insSqlstrCnlInfo = insSqlstrCnlInfo + "'"+ escStr+ "'";
+            FstOfStatementCnl = false;                
+        }
+
+        if(imgUrl == it.key())
+        {
+            if(false == FstOfStatementImg)
+            {
+                insSqlstrImg += ", ";                
+            }
+        
+            insSqlstrImg = insSqlstrImg + "'"+ escStr+ "'";
+            FstOfStatementImg = false;                  
+        }            
+          
+        ++it;
+    
+    }    
+    
+    insSqlstrImg += ") ";
+    insSqlstrCnlInfo += ") ";
+    insSqlstrSrhRlt += ") ";
+    
+    QString updSqlStrCnlInfo = "update channelInfo set ";
+    QString updSqlStrCnlImg = "update img set ";
+    //part two, create update string;
+    FstOfStatementCnl = true;
+    FstOfStatementImg = true;
+    
+    it = RowData->begin();
+     
+    while( it != RowData->end())
+    {
+            //here for escape char,
+        escStr = it.value();
+        escStr.replace('\'', "\'\'");
+        if( (channelName == it.key()) ||(shortDesc == it.key()) )
+        {
+            if(false == FstOfStatementCnl)
+            {
+                updSqlStrCnlInfo += ", ";
+            }
+            updSqlStrCnlInfo = updSqlStrCnlInfo + colNameView[it.key()] + "=" + "'" + escStr + "'";
+            FstOfStatementCnl = false;
+        }
+        if(imgUrl == it.key())
+        {
+            updSqlStrCnlImg = updSqlStrCnlImg + colNameView[it.key()] + "=" + "'" + escStr + "'";
+        }  
+
+        ++it;
+    }
+    updSqlStrCnlInfo += condStr;
+    updSqlStrCnlImg  += condStr;
+    sqlList<<insSqlstrCnlInfo<<insSqlstrImg<<insSqlstrSrhRlt<<updSqlStrCnlInfo<<updSqlStrCnlImg ;
+    
+    return;
+}
+
+
+bool searchRltWrapper::addSearchRlt(const columnMap* const RowData, bool bOpt)
+{
+    uint uCid = 0;
+    QStringList sqlStrList;
+    
+    if( NULL == RowData )
+    {
+        return false;
+    }
+
+    if(RowData->isEmpty())
+    {
+        return false;
+    }
+    uCid = srhChannelId(RowData);
+    
+    if(0 == uCid)
+    {
+        return false;
+    }
+    
+    combineSqlStr(uCid, RowData, sqlStrList);
+    
+    return m_pIRDB->handleRstFromSrhView(uCid, sqlStrList, bOpt)? false:true;
+          
+}
+
+void searchRltWrapper::addSearchRltFinished()
+{
+    m_pIRDB->closeIRDBConnection();
+    return;
+}
+
 /*
 * this fuction don't suport "update" operation for mutliple records ;
 * if condAND != NULL AND condOR != NULL, illegal operation;
@@ -46,6 +240,7 @@
     columnMap* const RowDataAppend = const_cast<columnMap*>(RowData);
     QList<QByteArray>* pImgList = NULL;
     bool ret = true;
+    int logoType = 0;
     
     if( NULL == RowData )
     {
@@ -87,7 +282,7 @@
     if(NULL != logoData)
     {
         pImgList = new QList<QByteArray>();
-        combinePutStr(RowDataAppend, colNameView, insSqlStr, updSqlStr, logoData, pImgList); 
+        combinePutStr(RowDataAppend, colNameView, insSqlStr, updSqlStr, logoData, pImgList, &logoType); 
     
     }
     else
@@ -97,22 +292,22 @@
     
     if( (NULL == condAND)&&(NULL == condOR) )
     {
-        uCid = srhChannelId(condUserCidStr,RowData);
+        uCid = srhChannelId(RowData);
     }
     else //here it must be "update" operation; condition string 
     {
-        uCid = srhChannelId(condUserCidStr,condAND, condOR);
+        uCid = srhChannelId(condAND, condOR);
         combineCondStr(condAND, condOR, colNameView,condSqlStr);
     }
 
     if(uCid)
     {
         //updSqlStr += condSqlStr;
-        m_pIRDB->chgRowIRDB(insSqlStr, updSqlStr, uCid, condSqlStr, pImgList)? ret = false:true;
+        m_pIRDB->chgRowIRDB(insSqlStr, updSqlStr, uCid, condSqlStr, pImgList, logoType)? ret = false:true;
     }
     else //here deliver the updSqlstr and condSqlStr seperately.
     {
-        m_pIRDB->chgRowIRDB(insSqlStr, updSqlStr, NULL, condSqlStr, condUserCidStr, pImgList)?ret = false:true;
+        m_pIRDB->chgRowIRDB(insSqlStr, updSqlStr, NULL, condSqlStr, condUserCidStr, pImgList, logoType)?ret = false:true;
     }    
 
     if(pImgList)
@@ -212,8 +407,7 @@
     return true;
 }
 
-uint searchRltWrapper::srhChannelId(QString& condUserCidStr,
-                                    const columnMap* const condAND,
+uint searchRltWrapper::srhChannelId(const columnMap* const condAND,
                                     const columnMap* const condOR)
 {
     uint srhCID = 0;
@@ -227,7 +421,7 @@
     {
         srhCID = (condOR->value(channelId)).toUInt();         
     }
-
+#if 0
     if(srhCID)
     {
         return srhCID ;
@@ -248,7 +442,7 @@
         }
         condUserCidStr = srhStr;
     }
-          
+#endif          
     return srhCID;
 }
 
--- a/qtinternetradio/irdb/src/songhistorywrapper.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irdb/src/songhistorywrapper.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -163,7 +163,7 @@
 QList<QVariant*>* songHistoryWrapper::getSongHistory(const columnMap* const condAND,  
                                                      const columnMap* const condOR)
 {
-    QString sltSqlStr = "select * from songHistory ";
+    QString sltSqlStr = "select * from IRVIEW_SONGHISTORY ";
     QList<QVariant*>* pDataSet = NULL;
     
     if( (NULL != condAND)&&(NULL != condOR) )
@@ -188,7 +188,7 @@
     }
 
     combineGetStr(condAND, condOR, colNameView, sltSqlStr);
-    sltSqlStr = sltSqlStr + " order by songPlaySeq desc ";
+    
     pDataSet = new QList<QVariant*>();
     if( m_pIRDB->selectRow(this, sltSqlStr, pDataSet) )
     {
--- a/qtinternetradio/irdb/src/urlinfowrapper.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irdb/src/urlinfowrapper.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -77,7 +77,9 @@
 }
 
 QList<QVariant*>* urlInfoWrapper::getUrlInfo(const columnMap* const condAND,  
-                                             const columnMap* const condOR)
+                                             const columnMap* const condOR,
+                                             int aBegin,
+                                             int aEnd)
 {
     QString sltSqlStr = "select channelUrl, channelId, bitRate from urlInfo ";
     QList<QVariant*>* pDataSet = NULL;
@@ -105,7 +107,7 @@
 
     combineGetStr(condAND, condOR, colNameView, sltSqlStr);
     pDataSet = new QList<QVariant*>(); 
-    if( m_pIRDB->selectRow(this, sltSqlStr, pDataSet) )
+    if( m_pIRDB->selectRow(this, sltSqlStr, pDataSet, aBegin, aEnd) )
     {
         delete pDataSet;
         pDataSet = NULL;
--- a/qtinternetradio/irhswidgetplugin/src/irserviceclient.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irhswidgetplugin/src/irserviceclient.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -79,6 +79,7 @@
         if (0 == mRef)
         {
             delete mInstatnce;
+            mInstatnce = NULL;
         }
         mMutex.unlock();
     }
--- a/qtinternetradio/irqcommon/inc/irqisdsdatastructure.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irqcommon/inc/irqisdsdatastructure.h	Mon Oct 04 00:07:46 2010 +0300
@@ -40,7 +40,7 @@
    QString shortDescription;
    QString imageURL;
    //added for cache search
-   int     channelID;
+   uint     channelID;
 };
 
 class IRQChannelServerURL
@@ -103,8 +103,9 @@
    int uniqID; //unique id generated for the preset saved at favourite
    
    int type; //0 for user defined 1 for isds type.
-   int presetId;//isds generated preset id
-   QString name; //preset name        
+   uint presetId;//isds generated preset id
+   QString name; //preset name   
+   QString nickName;     
    QString languageCode;//preset language code
    QString languageName; // preset language
    QString countryCode;//preset country of origin code     
--- a/qtinternetradio/irqcommon/src/irqisdsdatastructure.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irqcommon/src/irqisdsdatastructure.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -74,6 +74,7 @@
     this->languageCode = aOther.languageCode;
     this->languageName = aOther.languageName;
     this->name = aOther.name;
+    this->nickName = aOther.nickName;
     this->presetId = aOther.presetId;
     this->type = aOther.type;
     this->iChannelUrlCount = aOther.iChannelUrlCount;
@@ -88,7 +89,7 @@
     aStream>>languageCode>>languageName 
            >>countryCode>>countryName
            >>genreName>>genreId
-           >>name>>lastModified
+           >>name>>nickName>>lastModified
            >>advertisementUrl>>advertisementInUse
            >>imgUrl>>description>>shortDesc
            >>musicStoreStatus;
@@ -109,7 +110,7 @@
     aStream<<languageCode<<languageName
            <<countryCode<<countryName
            <<genreName<<genreId
-           <<name<<lastModified
+           <<name<<nickName<<lastModified
            <<advertisementUrl<<advertisementInUse
            <<imgUrl<<description<<shortDesc
            <<musicStoreStatus;
--- a/qtinternetradio/irqfavoritesdb/inc/irqfavoritesdb.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irqfavoritesdb/inc/irqfavoritesdb.h	Mon Oct 04 00:07:46 2010 +0300
@@ -17,126 +17,54 @@
 #ifndef IRQFAVORITESDB_H
 #define IRQFAVORITESDB_H
 
-#include <QObject>
-
 #include "irqfavoritesdbexporter.h"
 
 class IRQPreset;
-class IRQFavoritesDBPrivate;
+class favoritesWrapper;
+class channelHistoryWrapper;
+class urlInfoWrapper;
 
-class IRQFAVORITES_DLL_EXPORT IRQFavoritesDB : public QObject
+class IRQFAVORITES_DLL_EXPORT IRQFavoritesDB
 {
-Q_OBJECT
-public:
-    enum PSReason
-    {
-        PSCreated,
-        PSDeleted,
-        PSModified
-    };
-    
 public:
 
     IRQFavoritesDB();
 
     ~IRQFavoritesDB();
 
-    /* add a preset 
+    /* add a preset to favorites
      * @param IRQPreset& the isds preset,
      * @return  errcode
      */
     int addPreset(const IRQPreset& aPreset);
 
-    /* add a preset manually
-     * @return  errcode
-     * @param 
-     */
-    int addPreset(const QString& aName, const QString& aURL);
-
-    /* get a preset uniq id
-     * @return 
-     * @param
-     */
-    int getUniqId(int aNum) const;
-    
-    /* delete a preset by uniq id
+    /* delete a preset
      * @return errcode
      * @param
      */
-    int deletePreset(int aUniqId);
-    
-    /* search a preset by uniqpresetId / isdspresetid
-     * warning: the function needs further checking
-     *  @return errcode
-     */
-    int searchPreset(int aUniqPresetId, int aIsdsPresetId);
-
-    /* get the previouse preset index in the internal list
-     * @return the index
-     */
-    int getPreviousPreset(int aIndex);
-
-    /* get the next preset index
-     * @return the index
-     */
-    int getNextPreset(int aIndex); 
+    int deletePreset(const IRQPreset& aPreset);
 
     /* replace with new preset
      * @return errcode 
      */
-    int replacePreset(const IRQPreset& aNewPreset);
-
-    /* @return errcode
-     */
-    int replaceUserDefinedPreset(const IRQPreset& aNewPreset);
+    void replacePreset(const IRQPreset& aNewPreset);
 
     /* change the preset type to user defined
      * @return errcode
      */
     int makePresetUserDefined(int aChannelId, int aUserDefinedChannelId);
 
-    /* get the empty preset left count
-     * @return the count of empty presets left 
-     */
-    int emptyPresetCount() const;
-
-    /* get the max preset count supported now
-     * @return errcode 
-     */
-    int maxPresetCount();
-
-    /* the interface is not used currently.
-     **/
-    void setMoveStatus(bool aStatus);
-
-    /* the interface is not used currently 
-     */
-    bool getMoveStatus();
-
     /* for CIRPreset is just an interface so we can wrapper it into the IRQPreset.
      * the interface get the IRQPreset list. The upper layer will free all the items
      * in the list and the list self*/
     QList<IRQPreset*>* getPresets() const;
-
-    /*
-     * Increase the played times of the preset if it's in the favorites
-     */
-    void increasePlayedTimes(const IRQPreset &aPreset);
     
     int renamePreset(const IRQPreset &aPreset, const QString &aNewName);
-    
-signals:
-    /*
-     * the signal will triggered when we receive the message that preset is changed
-     */
-    void presetChanged(int aId, int aDataHandler, PSReason aReason);
 
 private:
-    IRQFavoritesDBPrivate * const d_ptr;
-    
-    Q_DISABLE_COPY(IRQFavoritesDB)
-    
-    friend class IRQFavoritesDBPrivate;
+    favoritesWrapper *iFavoritesWrapper;
+    channelHistoryWrapper *iHistoryWrapper;
+    urlInfoWrapper *iUrlWrapper;
 };
 
 #endif
--- a/qtinternetradio/irqfavoritesdb/inc/irqfavoritesdb_p.h	Fri Sep 17 08:27:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
-* Copyright (c) 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:
-*
-*/
-
-#ifndef IRQFAVORITESDB_P_H
-#define IRQFAVORITESDB_P_H
-
-#include <QObject>
-
-#include "pspresetobserver.h"
-
-class CIRFavoritesDb;
-class IRQPreset;
-class IRQFavoritesDB;
-
-class IRQFavoritesDBPrivate : public MPSPresetObserver
-{
-public:
-    IRQFavoritesDBPrivate(IRQFavoritesDB *aIRQFavorites);
-    
-    ~IRQFavoritesDBPrivate();
-    
-    void init();
-    
-    int addPreset(const IRQPreset& aPreset);
-    
-    int addPreset(const QString& aName, const QString& aURL);
-    
-    int getUniqId(int aNum) const;
-            
-    int deletePreset(int aUniqId);
-    
-    int searchPreset(int aUniqPresetId, int aIsdsPresetId);
-    
-    int getPreviousPreset(int aIndex);
-    
-    int getNextPreset(int aIndex); 
-    
-    int replacePreset(const IRQPreset& aNewPreset);
-    
-    int replaceUserDefinedPreset(const IRQPreset& aNewPreset);
-    
-    int makePresetUserDefined(int aChannelId, int aUserDefinedChannelId);
-    
-    int emptyPresetCount() const;
-    
-    int maxPresetCount();
-    
-    void setMoveStatus(bool aStatus);
-    
-    bool getMoveStatus();
-    
-    QList<IRQPreset*>* getPresets() const;
-    
-    void increasePlayedTimes(const IRQPreset &aPreset);
-    
-    int renamePreset(const IRQPreset &aPreset, const QString &aNewName);
-    
-private:
-    /* from MPSPresetObserver */
-    void HandlePresetChangedL(TInt aId, TUid aDataHandler, MPSPresetObserver::TPSReason aType);
-    
-    void addPresetL(const IRQPreset& aPreset, int& aRetValue);
-    
-    void replacePresetL(const IRQPreset& aNewPreset);
-        
-    void replaceUserDefinedPresetL(const IRQPreset& aNewPreset);
-        
-    void increasePlayedTimesL(const IRQPreset &aPreset);
-    
-    int renamePresetL(const IRQPreset &aPreset, const QString &aNewName);
-    
-private:
-    IRQFavoritesDB * const q_ptr;
-    CIRFavoritesDb *mIRFavoritesDb;
-};
-
-#endif  //IRQFAVORITESDB_P_H
--- a/qtinternetradio/irqfavoritesdb/irqfavoritesdb.pro	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irqfavoritesdb/irqfavoritesdb.pro	Mon Oct 04 00:07:46 2010 +0300
@@ -24,19 +24,11 @@
 MOC_DIR = moc
 DEPENDPATH = src
 
-INCLUDEPATH += ../../internetradio2.0/irfavoritesdb/inc \
-               ../../internetradio2.0/ircommon/inc \
-               ../../internetradio2.0/irpresetplugin/inc  \
-               ../irqcommon/inc \
-               ../../presetserver/include \
-               ../../presetserver/clientinc \
-               ../../presetserver/serverinc
+INCLUDEPATH += ../irqcommon/inc \
+               ../irdb/inc
                
-               
-LIBS += -lirdatastructures \
-        -lirfavoritesdb \
-        -lirqutility \
-        -lpsclient100
+LIBS += -lirdb \
+        -lirqutility
 
 symbian{
   TARGET.UID3 = 0x2002FFBC
@@ -47,13 +39,11 @@
 
 #header files list
 HEADERS += inc/irqfavoritesdb.h  \
-           inc/irqfavoritesdb_p.h \
            inc/irqfavoritesdbexporter.h
            
 
 #source files list
-SOURCES += irqfavoritesdb.cpp \
-           irqfavoritesdb_p.cpp
+SOURCES += irqfavoritesdb.cpp
 
 SYMBIAN_PLATFORMS = WINSCW ARMV5
 
--- a/qtinternetradio/irqfavoritesdb/src/irqfavoritesdb.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irqfavoritesdb/src/irqfavoritesdb.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -14,132 +14,157 @@
 * Description:
 *
 */
-#include "irqfavoritesdb.h" 
-#include "irqfavoritesdb_p.h"
+#include <QVariant>
 
-IRQFavoritesDB::IRQFavoritesDB() : d_ptr(new IRQFavoritesDBPrivate(this))
-{    
-    d_ptr->init();
+#include "irqfavoritesdb.h" 
+#include "favoriteswrapper.h"
+#include "channelhistorywrapper.h"
+#include "urlinfowrapper.h"
+#include "irqisdsdatastructure.h"
+#include "irqenums.h"
+
+IRQFavoritesDB::IRQFavoritesDB()
+{
+    iFavoritesWrapper = new favoritesWrapper;
+    iHistoryWrapper = new channelHistoryWrapper;
+    iUrlWrapper = new urlInfoWrapper;
 }
 
 IRQFavoritesDB::~IRQFavoritesDB()
 {
-    delete d_ptr;
+    delete iFavoritesWrapper;
+    delete iHistoryWrapper;
+    delete iUrlWrapper;
 }
 
-//add a preset 
+//add a preset to favorites
 //@param IRQPreset& the preset
 //@return  errcode
 int IRQFavoritesDB::addPreset(const IRQPreset& aPreset)
 {
-    return d_ptr->addPreset(aPreset);
+    bool ret = false;
+    bool newRow = false;
+    
+    columnMap map;
+    map.insert(channelId, QString::number(aPreset.presetId));
+    ret = iFavoritesWrapper->putFavorites(&map, newRow);
+    
+    if (!ret)
+    {
+        return EIRQErrorNotFound;  //presetId is not found
+    }
+    
+    if (newRow)
+    {
+        return EIRQErrorNone;
+    }
+    else
+    {
+        return EIRQErrorAlreadyExist;
+    }
 }
 
-//add a preset manually
-//@return  errcode
-//@param 
-//
-int IRQFavoritesDB::addPreset(const QString& aName, const QString& aURL)
-{
-    return d_ptr->addPreset(aName, aURL);
-}
-
-//get a preset uniq id
-//@return errcode
-//@param
-//
-int IRQFavoritesDB::getUniqId(int aNum) const
-{
-    return d_ptr->getUniqId(aNum);
-}
-
-//delete a preset by uniq id
+//delete a preset
 //@return errcode
 //@param
 //
-int IRQFavoritesDB::deletePreset(int aUniqId)
+int IRQFavoritesDB::deletePreset(const IRQPreset& aPreset)
 {
-    return d_ptr->deletePreset(aUniqId);
-}
+    columnMap map;
+    map.insert(channelId, QString::number(aPreset.presetId));
+    bool ret = iFavoritesWrapper->deleteFavorites(&map, NULL);
 
-//search a preset by uniqpresetId / isdspresetid
-//warning: the function needs further checking
-//@return errcode
-//
-int IRQFavoritesDB::searchPreset(int aUniqPresetId, int aIsdsPresetId)
-{
-    return d_ptr->searchPreset(aUniqPresetId, aIsdsPresetId);
+    if (ret)
+    {
+        return EIRQErrorNone;
+    }
+    else
+    {
+        return EIRQErrorNotFound;
+    }
 }
 
-//
-//get the previouse preset index in the internal list
-//@return the index
-//
-int IRQFavoritesDB::getPreviousPreset(int aIndex)
-{
-    return d_ptr->getPreviousPreset(aIndex);
-}
-
-//
-//get the next preset index
-//@return the index
-//
-int IRQFavoritesDB::getNextPreset(int aIndex)
-{
-    return d_ptr->getNextPreset(aIndex);
-}
- 
 //replace with new preset
 //@return errcode 
 //
-int IRQFavoritesDB::replacePreset(const IRQPreset& aNewPreset)
+void IRQFavoritesDB::replacePreset(const IRQPreset& aNewPreset)
 {
-    return d_ptr->replacePreset(aNewPreset);
-}
-
-//@return errcode
-//
-int IRQFavoritesDB::replaceUserDefinedPreset(const IRQPreset& aNewPreset)
-{
-    return d_ptr->replaceUserDefinedPreset(aNewPreset);
+    //write the preset data to database
+    columnMap map;
+    QString url;
+    
+    if (IRQPreset::EIsds == aNewPreset.type)
+    {
+        map.insert(channelId, QString::number(aNewPreset.presetId));
+    }
+    map.insert(channelName, aNewPreset.name);
+    map.insert(languageCode, aNewPreset.languageCode);
+    map.insert(languageName, aNewPreset.languageName);
+    map.insert(countryCode, aNewPreset.countryCode);
+    map.insert(countryName, aNewPreset.countryName);
+    map.insert(lastModified, aNewPreset.lastModified);
+    map.insert(musicStoreStatus, aNewPreset.musicStoreStatus);
+    map.insert(description, aNewPreset.description);
+    map.insert(shortDesc, aNewPreset.shortDesc);
+    map.insert(genreId, aNewPreset.genreId);
+    map.insert(genreName, aNewPreset.genreName);
+    map.insert(advertisementUrl, aNewPreset.advertisementUrl);
+    map.insert(advertisementInUse, aNewPreset.advertisementInUse);
+    map.insert(imgUrl, aNewPreset.imgUrl);
+    
+    uint cIdResult = 0;
+    if (IRQPreset::EIsds == aNewPreset.type)
+    {
+        cIdResult = aNewPreset.presetId;
+        columnMap condAnd;
+        condAnd.insert(channelId, QString::number(aNewPreset.presetId));
+        iHistoryWrapper->putChannelHistory(&map, NULL, NULL, &condAnd);
+    }
+    else
+    {
+        columnMap condAnd;
+        condAnd.insert(channelType, QString::number(aNewPreset.type));
+        aNewPreset.getChannelUrlAt(0, url);
+        condAnd.insert(channelUrl, url);
+        condAnd.insert(channelName, aNewPreset.name);
+        QList<uint> *ids = iHistoryWrapper->getChannelId(&condAnd);
+        if (ids && ids->count() > 0)
+        {
+            //the user-defined preset is already in database
+            cIdResult = ids->at(0);
+            condAnd.clear();
+            condAnd.insert(channelId, QString::number(cIdResult));
+            iHistoryWrapper->putChannelHistory(&map, NULL, NULL, &condAnd);
+        }
+        else
+        {
+            //the user-defined preset is not in database
+            iHistoryWrapper->putChannelHistory(&map, &cIdResult);
+        }
+        
+        delete ids;
+    }
+    
+    //write url info to database
+    columnUrlInfoInsertMap urlmap;
+    
+    unsigned int bitrate = 0;
+    for (int i = 0; i < aNewPreset.getChannelURLCount(); i++)
+    {
+        aNewPreset.getChannelBitrate(i, bitrate);
+        aNewPreset.getChannelUrlAt(i, url);
+        urlmap.insert(url, bitrate);
+    }
+    
+    iUrlWrapper->resetUrlInfo(&urlmap, cIdResult);
 }
 
 //change the preset type to user defined
 //@return errcode
 //
-int IRQFavoritesDB::makePresetUserDefined(int aChannelId, int aUserDefinedChannelId)
-{
-    return d_ptr->makePresetUserDefined(aChannelId, aUserDefinedChannelId);
-}
-
-//get the empty preset left count
-//@return the count of empty presets left 
-//
-int IRQFavoritesDB::emptyPresetCount() const
+int IRQFavoritesDB::makePresetUserDefined(int /*aChannelId*/, int /*aUserDefinedChannelId*/)
 {
-    return d_ptr->emptyPresetCount();
-}
-
-//get the max preset count supported now
-//@return errcode 
-//
-int IRQFavoritesDB::maxPresetCount()
-{
-    return d_ptr->maxPresetCount();
-}
-
-//the interface is not used currently.
-//
-void IRQFavoritesDB::setMoveStatus(bool aStatus)
-{
-    d_ptr->setMoveStatus(aStatus);  
-}
-
-//the interface is not used currently 
-//
-bool IRQFavoritesDB::getMoveStatus()
-{
-    return d_ptr->getMoveStatus();
+    return 0;
 }
 
 //for CIRPreset is just an interface so we can wrapper it into the IRQPreset.
@@ -148,18 +173,84 @@
 //
 QList<IRQPreset*>* IRQFavoritesDB::getPresets() const
 {
-    return d_ptr->getPresets();
-}
-
-/*
- * Increase the played times of the preset if it's in the favorites
- */
-void IRQFavoritesDB::increasePlayedTimes(const IRQPreset &aPreset)
-{
-    d_ptr->increasePlayedTimes(aPreset);
+    favoritesWrapper favorites;
+    QList<QVariant*> *dataSet = favorites.getFavorites();
+    if (NULL == dataSet)
+    {
+        return NULL;
+    }
+    
+    QList<IRQPreset*> *presetList = NULL;
+    if (dataSet->count() > 0)
+    {
+        presetList = new QList<IRQPreset*>;
+        int dataSize = dataSet->count();
+        for (int i = 0; i < dataSize; ++i)
+        {
+            IRQPreset *preset = new IRQPreset;
+            bool ok = false;
+            QVariant *row = dataSet->at(i);
+            preset->type = row[channelType].toInt(&ok);
+            preset->presetId = row[channelId].toUInt(&ok);
+            preset->name = row[channelName].toString();
+            preset->nickName = row[channelNickName].toString();
+            preset->languageCode = row[languageCode].toString();
+            preset->languageName = row[languageName].toString();
+            preset->countryCode = row[countryCode].toString();
+            preset->countryName = row[countryName].toString();
+            preset->lastModified = row[lastModified].toString();
+            preset->musicStoreStatus = row[musicStoreStatus].toString();
+            preset->description = row[description].toString();
+            preset->shortDesc = row[shortDesc].toString();
+            preset->genreName = row[genreName].toString();
+            preset->genreId = row[genreId].toString();
+            preset->advertisementInUse = row[advertisementInUse].toString();
+            preset->advertisementUrl = row[advertisementUrl].toString();
+            preset->imgUrl = row[imgUrl].toString();
+            
+            delete []row;
+            
+            //get url info and write to preset
+            urlInfoWrapper urlInfo;
+            columnMap cond;
+            cond.insert(channelId, QString::number(preset->presetId));
+            QList<QVariant*> *urlDataSet = urlInfo.getUrlInfo(&cond, NULL, i, dataSize-1);
+            int urlSize =  urlDataSet->count();
+            for (int j = 0; j < urlSize; ++j)
+            {
+                IRQChannelServerURL url;
+                url.url = urlDataSet->at(j)[channelUrl_URL].toString();
+                url.bitrate = urlDataSet->at(j)[bitRate_URL].toInt();
+                preset->insertChannelServer(url);
+                delete []urlDataSet->at(j);
+            }
+            delete urlDataSet;
+            
+            presetList->append(preset);
+        }
+    }
+    
+    delete dataSet;
+    
+    return presetList;
 }
 
 int IRQFavoritesDB::renamePreset(const IRQPreset &aPreset, const QString &aNewName)
 {
-    return d_ptr->renamePreset(aPreset, aNewName);
+    channelHistoryWrapper wrapper;
+    columnMap map;
+
+    map.insert(channelNickName, aNewName);
+    columnMap condAND;
+    condAND.insert(channelId, QString::number(aPreset.presetId));
+    bool ret = wrapper.putChannelHistory(&map, NULL, NULL, &condAND);
+    
+    if (ret)
+    {
+        return EIRQErrorNone;
+    }
+    else
+    {
+        return EIRQErrorGeneral;
+    }
 }
--- a/qtinternetradio/irqfavoritesdb/src/irqfavoritesdb_p.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,284 +0,0 @@
-/*
-* Copyright (c) 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:
-*
-*/
-
-#include "irfavoritesdb.h"
-#include "irqfavoritesdb.h"
-#include "irqfavoritesdb_p.h"
-#include "irqenums.h"
-#include "irqutility.h" 
-#include "irqisdsdatastructure.h"
-#include "irpreset.h"
-#include "irisdspreset.h"
-
-IRQFavoritesDBPrivate::IRQFavoritesDBPrivate(IRQFavoritesDB *aIRQFavorites) : q_ptr(aIRQFavorites),
-                                                                              mIRFavoritesDb(NULL)
-{
-}
-
-IRQFavoritesDBPrivate::~IRQFavoritesDBPrivate()
-{
-    delete mIRFavoritesDb;
-    mIRFavoritesDb = NULL;
-}
-
-void IRQFavoritesDBPrivate::init()
-{
-    TRAPD(err, mIRFavoritesDb = CIRFavoritesDb::NewL());
-    if (KErrNone != err)
-    {
-        return;
-    }
-
-    /* add self to the observers of the CIRFavoritesDb. When the call back function
-    * is called, it means that preset is changed and we send a signal to the uper layer*/
-    mIRFavoritesDb->AddObserver(*this);
-}
-
-int IRQFavoritesDBPrivate::addPreset(const IRQPreset& aPreset)
-{
-    int returnCode = 0;
-    TRAPD(err, addPresetL(aPreset, returnCode));
-    
-    int result = 0;
-    if (KErrNone != err)
-    {
-        IRQUtility::convertSError2QError(err, result);
-    }
-    else
-    {
-        IRQUtility::convertSError2QError(returnCode, result);
-    }
-    return result;
-}
-
-int IRQFavoritesDBPrivate::addPreset(const QString& aName, const QString& aURL)
-{
-    if (0 == aName.size() || 0 == aURL.size())
-    {
-        return EIRQErrorBadParameter;
-    }
-    
-    TPtrC16 nameptr(reinterpret_cast<const TUint16*> (aName.utf16()));
-    TPtrC16 urlptr(reinterpret_cast<const TUint16*> (aURL.utf16()));
-    int returnCode = 0;
-    TRAPD(err, mIRFavoritesDb->AddPresetL(nameptr, urlptr, returnCode));
-    
-    int result = 0;
-    if (KErrNone != err)
-    {
-        IRQUtility::convertSError2QError(err, result);
-    }
-    else
-    {
-        IRQUtility::convertSError2QError(returnCode, result);
-    }
-    return result;
-}
-
-int IRQFavoritesDBPrivate::getUniqId(int aNum) const
-{
-    if ( aNum < 0 || aNum >= mIRFavoritesDb->iFavPresetList.Count())
-    {
-        return EIRQErrorBadParameter;
-    }
-        
-    //the preset's uniqid is equal to the CIRPreset's id
-    return mIRFavoritesDb->iFavPresetList[aNum]->Id();
-}
-
-int IRQFavoritesDBPrivate::deletePreset(int aUniqId)
-{
-    TRAPD(err, (mIRFavoritesDb->DeletePresetL(aUniqId)));
-    int result = 0;
-    IRQUtility::convertSError2QError(err, result);
-    return result;
-}
-
-int IRQFavoritesDBPrivate::searchPreset(int aUniqPresetId, int aIsdsPresetId)
-{
-    int returnCode = 0;
-    int result = 0; //for QT
-    returnCode = mIRFavoritesDb->SearchPreset(aUniqPresetId, aIsdsPresetId);
-    IRQUtility::convertSError2QError(returnCode, result);
-    return result;
-}
-
-int IRQFavoritesDBPrivate::getPreviousPreset(int aIndex)
-{
-    return mIRFavoritesDb->GetPreviousPreset(aIndex);
-}
-
-int IRQFavoritesDBPrivate::getNextPreset(int aIndex)
-{
-    return mIRFavoritesDb->GetNextPreset(aIndex);
-}
-
-int IRQFavoritesDBPrivate::replacePreset(const IRQPreset& aNewPreset)
-{
-    TRAPD(err, replacePresetL(aNewPreset));
-    int result = 0;
-    IRQUtility::convertSError2QError(err, result);
-    return result;
-}
-
-int IRQFavoritesDBPrivate::replaceUserDefinedPreset(const IRQPreset& aNewPreset)
-{
-    TRAPD(err, replaceUserDefinedPresetL(aNewPreset));
-    int result = 0;
-    IRQUtility::convertSError2QError(err, result);
-    return result;
-}
-
-int IRQFavoritesDBPrivate::makePresetUserDefined(int aChannelId, int aUserDefinedChannelId)
-{
-    TRAPD(err, mIRFavoritesDb->MakePresetUserDefinedL(aChannelId, aUserDefinedChannelId));
-    int result = 0;
-    IRQUtility::convertSError2QError(err, result);
-    return result;
-}
-
-int IRQFavoritesDBPrivate::emptyPresetCount() const
-{
-    return mIRFavoritesDb->EmptyPresetCount();
-}
-
-int IRQFavoritesDBPrivate::maxPresetCount()
-{
-    return mIRFavoritesDb->MaxPresetCount();
-}
-
-void IRQFavoritesDBPrivate::setMoveStatus(bool aStatus)
-{
-    mIRFavoritesDb->SetMoveStatus(aStatus);  
-}
-
-bool IRQFavoritesDBPrivate::getMoveStatus()
-{
-    if (mIRFavoritesDb->GetMoveStatus())
-    {
-        return true;
-    }
-    else
-    {
-        return false;
-    }
-}
-
-QList<IRQPreset*>* IRQFavoritesDBPrivate::getPresets() const
-{
-    QList<IRQPreset*> * presetList = new QList<IRQPreset*> ();
-    const RIRPresetArray& cirPresetList = mIRFavoritesDb->GetAllSortedPresets();
-    int counts = cirPresetList.Count();
-    for (int i = 0; i < counts; i++)
-    {
-        IRQPreset *irqPreset = new IRQPreset();
-        IRQUtility::convertCIRPreset2IRQPreset(*(cirPresetList[i]), *irqPreset);
-        presetList->append(irqPreset);
-    }
-    return presetList;
-}
-
-void IRQFavoritesDBPrivate::increasePlayedTimes(const IRQPreset &aPreset)
-{
-    TRAP_IGNORE(increasePlayedTimesL(aPreset));
-}
-
-int IRQFavoritesDBPrivate::renamePreset(const IRQPreset &aPreset, const QString &aNewName)
-{
-    int returnCode = 0;
-    TRAPD(err, returnCode = renamePresetL(aPreset, aNewName));
-    
-    int result = 0;
-    if (KErrNone != err)
-    {
-        IRQUtility::convertSError2QError(err, result);
-    }
-    else
-    {
-        IRQUtility::convertSError2QError(returnCode, result);
-    }
-    return result;
-}
-
-/* from MPSPresetObserver */
-void IRQFavoritesDBPrivate::HandlePresetChangedL(TInt aId, TUid aDataHandler, MPSPresetObserver::TPSReason aType)
-{
-    IRQFavoritesDB::PSReason reason = IRQFavoritesDB::PSCreated;
-    switch (aType)
-    {
-    case EPSCreated:
-        reason = IRQFavoritesDB::PSCreated;
-        break;
-        
-    case EPSDeleted:
-        reason = IRQFavoritesDB::PSDeleted;
-        break;
-        
-    case EPSModified:
-        reason = IRQFavoritesDB::PSModified;
-        break;
-        
-    default:
-        Q_ASSERT(false);
-        break;
-    }
-    
-    emit q_ptr->presetChanged(aId, aDataHandler.iUid, reason);
-}
-
-void IRQFavoritesDBPrivate::addPresetL(const IRQPreset& aPreset, int& aRetValue)
-{
-    CIRIsdsPreset * cirPreset = CIRIsdsPreset::NewLC();
-    IRQUtility::convertIRQPreset2CIRIsdsPreset(aPreset, *cirPreset);
-    mIRFavoritesDb->AddPresetL(*cirPreset, aRetValue);
-    CleanupStack::PopAndDestroy(cirPreset);
-}
-
-void IRQFavoritesDBPrivate::replacePresetL(const IRQPreset& aNewPreset)
-{
-    CIRIsdsPreset * cirPreset = CIRIsdsPreset::NewLC();
-    IRQUtility::convertIRQPreset2CIRIsdsPreset(aNewPreset, *cirPreset);
-    mIRFavoritesDb->ReplacePresetL(*cirPreset);
-    CleanupStack::PopAndDestroy(cirPreset);
-}
-
-void IRQFavoritesDBPrivate::replaceUserDefinedPresetL(const IRQPreset& aNewPreset)
-{
-    CIRIsdsPreset *cirPreset = CIRIsdsPreset::NewLC();
-    IRQUtility::convertIRQPreset2CIRIsdsPreset(aNewPreset, *cirPreset);
-    mIRFavoritesDb->ReplaceUserDefinedPresetL(*cirPreset);
-    CleanupStack::PopAndDestroy(cirPreset);
-}
-
-void IRQFavoritesDBPrivate::increasePlayedTimesL(const IRQPreset &aPreset)
-{
-    CIRIsdsPreset * cirPreset = CIRIsdsPreset::NewLC();
-    IRQUtility::convertIRQPreset2CIRIsdsPreset(aPreset, *cirPreset);
-    mIRFavoritesDb->IncreasePlayedTimesL(*cirPreset);    
-    CleanupStack::PopAndDestroy(cirPreset);
-}
-
-int IRQFavoritesDBPrivate::renamePresetL(const IRQPreset &aPreset, const QString &aNewName)
-{
-    CIRIsdsPreset * cirPreset = CIRIsdsPreset::NewLC();
-    IRQUtility::convertIRQPreset2CIRIsdsPreset(aPreset, *cirPreset);
-    TPtrC newName(reinterpret_cast<const TUint16*>(aNewName.utf16()), aNewName.length());
-    int ret = mIRFavoritesDb->RenamePresetL(*cirPreset, newName);
-    CleanupStack::PopAndDestroy(cirPreset);
-    
-    return ret;
-}
--- a/qtinternetradio/irqmediaplayer/src/irqmmfadapter.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/irqmediaplayer/src/irqmmfadapter.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -45,6 +45,7 @@
     ,iQMetaData(NULL)
     ,iPrepareTimer(NULL), iStereoEffect(NULL)
 {
+    LOG_METHOD;
     iPlayState = EStopped;
 }
 
@@ -56,6 +57,7 @@
 //
 IRQMMFAdapter::~IRQMMFAdapter()
 {
+    LOG_METHOD;
     destroyPlayer();
 
     delete iQMetaData;
@@ -87,11 +89,13 @@
     TRAPD(error, playL(aUrl, aApId));
     if (NULL == iQMetaData)
     {
+        LOG("Error Occured(EIRQErrorOutOfMemory)");
         emit errorOccured(EIRQErrorOutOfMemory);
     }
 
     if (KErrNone != error)
     {
+        LOG_FORMAT("Error Occured = %d", (int)error);
         emit errorOccured(EIRQPlayerErrorGeneral);
     }
 }
@@ -103,6 +107,8 @@
 //
 void IRQMMFAdapter::playL(const QString &aUrl, int aApId)
 {
+    LOG_METHOD;
+    
     // Save stream Url
     if (NULL == iQMetaData)
     {
@@ -128,6 +134,7 @@
     stop();
 
     // Open url
+    LOG("CVideoPlayerUtility::OpenUrlL(stationUrl, aApId, KNullDesC8, KUidController)");
     iVideoPlayer->OpenUrlL(stationUrl, aApId, KNullDesC8, KUidController);
     iPlayState = EOpenning;
 }
@@ -140,8 +147,11 @@
 //
 void IRQMMFAdapter::stop()
 {
+    LOG_METHOD;
+    
     if (iVideoPlayer && EStopped != iPlayState)
     {
+        LOG("Stop the prepare timeout timer");
         if (iPrepareTimer)
         {
             if (iPrepareTimer->IsActive())
@@ -150,6 +160,8 @@
             }
         }
 
+        LOG("CVideoPlayerUtility::Stop()");
+        LOG("CVideoPlayerUtility::Close()");
         iVideoPlayer->Stop();
         iVideoPlayer->Close();
         iPlayState = EStopped;
@@ -165,6 +177,7 @@
 void IRQMMFAdapter::setVolume(int aVolume)
 {
     LOG_METHOD;
+    
     if (iVideoPlayer && iPlayState > EOpenning)
     {
         // aVolume is a percentage
@@ -178,9 +191,11 @@
         }
         int volume = aVolume*iVideoPlayer->MaxVolume()/KVolumeMaxPercentage;
 
+        LOG_FORMAT("CVideoPlayerUtility::SetVolumeL(%d)", volume);
         TRAPD(error, iVideoPlayer->SetVolumeL(volume));
         if (KErrNone != error)
         {
+            LOG_FORMAT("Error Occured = %d", (int)error);
             emit errorOccured(EIRQPlayerErrorGeneral);
         }
     }
@@ -194,6 +209,8 @@
 //
 int IRQMMFAdapter::getVolume()
 {
+    LOG_METHOD;
+    
     int volume = KVolumeMinPercentage;
 
     if (iVideoPlayer && iPlayState > EOpenning)
@@ -217,6 +234,7 @@
 
 void IRQMMFAdapter::enableStereoEffect()
 {
+    LOG_METHOD;
     if (IRQPlayerAdapterInterface::EPlaying != iPlayState)
     {
         return;
@@ -227,6 +245,7 @@
 
 void IRQMMFAdapter::disableStereoEffect()
 {
+    LOG_METHOD;
     if (iStereoEffect)
     {
         if (iStereoEffect->IsEnabled())
@@ -234,6 +253,7 @@
             TRAPD(error, iStereoEffect->DisableL());
             if (KErrNone != error)
             {
+                LOG_FORMAT("Error Occured = %d", (int)error);
                 emit errorOccured(EIRQPlayerErrorSetStereoFailed);
             }
             delete iStereoEffect;
@@ -264,6 +284,7 @@
         }
 
         // Prepare to playback
+        LOG("CVideoPlayerUtility::Prepare()");
         iVideoPlayer->Prepare();
         iPlayState = EConnecting;
 
@@ -276,9 +297,11 @@
         TTimeIntervalMicroSeconds32 interval(KConnectingTime);
         iPrepareTimer->Start(interval,interval,
                              TCallBack(IRQMMFAdapter::isPrepareCompleted,this));
+        LOG_FORMAT("Start the prepare timeout timer = %d sec", (int)interval.Int()/1000000);
     }
     else
     {
+        LOG_FORMAT("Error Occured = %d", (int)aError);
         emit errorOccured(EIRQPlayerErrorConnectingFailed);
     }
 }
@@ -294,6 +317,7 @@
 {
     LOG_METHOD;
     // Cancel the previous request if pending
+    LOG("Stop the prepare timeout timer");
     if (iPrepareTimer->IsActive())
     {
         iPrepareTimer->Cancel();
@@ -315,21 +339,25 @@
         }
 
         // Send signal ConnectionEstablished
+        LOG_FORMAT("bit rate = %d", iQMetaData->getBitrate());
         emit connectionEstablished(iQMetaData->getBitrate());
 
         // Set specific event to get meta data from player
         setMetadataEventConfig();
 
         // Start playback
+        LOG("CVideoPlayerUtility::Play()");
         iVideoPlayer->Play();
         iPlayState = EBuffering;
     }
     else if (KErrServerBusy == aError)
     {
+        LOG("Error Occured(EIRQPlayerErrorServerFull)");
         emit errorOccured(EIRQPlayerErrorServerFull);
     }
     else
     {
+        LOG_FORMAT("Error Occured = %d", (int)aError);
         emit errorOccured(EIRQPlayerErrorConnectingFailed);
     }
 }
@@ -347,6 +375,7 @@
     LOG_METHOD;
     if (KErrNone != aError)
     {
+        LOG_FORMAT("Error Occured = %d", (int)aError);
         emit errorOccured(EIRQPlayerErrorGeneral);
     }
 }
@@ -360,40 +389,56 @@
 void IRQMMFAdapter::MvpuoEvent(TMMFEvent const & aEvent)
 {
     LOG_METHOD;
-    LOG_FORMAT( "aevent is %d", (int)aEvent);
     if (KMMFEventCategoryVideoPlayerGeneralError == aEvent.iEventType)
     {
+        LOG("Event Type = KMMFEventCategoryVideoPlayerGeneralError");
         switch (aEvent.iErrorCode)
         {
             case KErrHardwareNotAvailable:
+                LOG("Event Error Code = KErrHardwareNotAvailable");
+                emit errorOccured(EIRQPlayerErrorAudioDeviceLost);
+                break;                
             case KErrMMAudioDevice:
                 // Higher priority application has taken over the
                 // audio device. --> Do stop.
+                LOG("Event Error Code = KErrMMAudioDevice");
                 emit errorOccured(EIRQPlayerErrorAudioDeviceLost);
                 break;
             case KErrDisconnected:
+                LOG("Event Error Code = KErrDisconnected");
                 emit errorOccured(EIRQPlayerErrorConnectionLost);
                 break;
-            case KErrTimedOut:    
+            case KErrTimedOut:  
+                LOG("Event Error Code = KErrTimedOut");  
                 emit errorOccured(EIRQPlayerErrorTimeOut);
                 break;
-            case KErrServerBusy:    
+            case KErrServerBusy:  
+                LOG("Event Error Code = KErrServerBusy");  
                 emit errorOccured(EIRQPlayerErrorServerFull);
                 break;                                            
             default:
+                LOG_FORMAT("Event Error Code = %d", (int)aEvent.iErrorCode);
                 emit errorOccured(EIRQPlayerErrorGeneral);			
                 break;
         }
     }
     else if (KMMFRefreshMetaData == aEvent.iEventType)
     {
+        LOG("Event Type = KMMFRefreshMetaData");
+        LOG_FORMAT( "Event Error Code = %d", (int)aEvent.iErrorCode);
         // Get refreshed meta data
         TRAPD(error, getRefreshedMetaDataL(aEvent.iErrorCode));
         if (KErrNone != error)
         {
+            LOG_FORMAT("Get MetaData Error Occured = %d", (int)error);
             emit errorOccured(EIRQPlayerErrorGeneral);
         }
     }
+    else
+    {
+        LOG_FORMAT("Event Type = %d", (int)aEvent.iEventType.iUid);
+        LOG_FORMAT("Event Error Code = %d", (int)aEvent.iErrorCode);
+    }
 }
 
 // ---------------------------------------------------------------------------
@@ -404,6 +449,7 @@
 //
 void IRQMMFAdapter::MvpuoFrameReady(CFbsBitmap& aFrame,TInt aError)
 {
+    LOG_METHOD;
     Q_UNUSED(aFrame);
     Q_UNUSED(aError);
 }
@@ -420,15 +466,18 @@
     // Get buffering progress and send it to application
     int percentageComplete = 0;
 
+    LOG("CVideoPlayerUtility::GetVideoLoadingProgressL()");
     TRAPD(error, iVideoPlayer->GetVideoLoadingProgressL(percentageComplete));
 
     if (KErrNone == error)
     {
         // Send signal to UpdateProgress
+        LOG_FORMAT("Loading Percentage Complete = %d", percentageComplete);
         emit percentageBuffered(percentageComplete);
     }
     else
     {
+        LOG_FORMAT("Error Occured = %d", (int)error);
         emit errorOccured(EIRQPlayerErrorGeneral);
     }
 }
@@ -458,6 +507,7 @@
     LOG_METHOD;
     if (iQMetaData)
     {
+        LOG("CVideoPlayerUtility::MetaDataEntryL()");
         CMMFMetaDataEntry* pMetadataEntry = iVideoPlayer->MetaDataEntryL(index);
 
         QString entryName = QString::fromUtf16(pMetadataEntry->Name().Ptr(),
@@ -493,9 +543,13 @@
 //
 void IRQMMFAdapter::createPlayerL()
 {
+    LOG_METHOD;
+    
+    LOG("CVideoPlayerUtility::NewL()");
     // Create player instance
     iVideoPlayer = CVideoPlayerUtility2::NewL(*this,KAudioPriorityAudioPlaybackStreaming ,
                                              (TMdaPriorityPreference)KAudioPrefRealOneStreaming);
+    LOG("CVideoPlayerUtility::RegisterForVideoLoadingNotification()");
     // Register loading notification
     iVideoPlayer->RegisterForVideoLoadingNotification(*this);
 }
@@ -507,6 +561,7 @@
 //
 void IRQMMFAdapter::destroyPlayer()
 {
+    LOG_METHOD;
     delete iVideoPlayer;
     iVideoPlayer = NULL;
 }
@@ -518,10 +573,12 @@
 //
 void IRQMMFAdapter::setMetadataEventConfig()
 {
+    LOG_METHOD;
     TMMFMessageDestinationPckg  destinationPckg(KUidInterfaceMMFControllerMetadataEventMsg);
     TPckgBuf<TBool>             metadataEventPckg(EMMFEnableMetadataEvent);
 
     //  Enable meta data event.
+    LOG("CVideoPlayerUtility::CustomCommandSync(EMMFSetMetadataEventConfig)");
     iVideoPlayer->CustomCommandSync(destinationPckg,
                                     EMMFSetMetadataEventConfig,
                                     metadataEventPckg,
@@ -535,6 +592,8 @@
 //
 TInt IRQMMFAdapter::isPrepareCompleted(TAny* aPtr)
 {
+    LOG_METHOD;
+    LOG("Prepare timeout timer call back function");
     IRQMMFAdapter* self = static_cast<IRQMMFAdapter*>(aPtr);
     if (self)
     {
@@ -551,6 +610,7 @@
 void IRQMMFAdapter::checkPrepare()
 {
     LOG_METHOD;
+    LOG("Stop the prepare timeout timer");
     if (iPrepareTimer->IsActive())
     {
         // Cancel the previous request if pending
@@ -559,6 +619,7 @@
 
     if (EConnecting == iPlayState)
     {
+        LOG("Error Occured(EIRQPlayerErrorConnectingFailed)");
         emit errorOccured(EIRQPlayerErrorConnectingFailed);
         stop();
     }
--- a/qtinternetradio/irqsonghistory/inc/irqsonghistoryengine.h	Fri Sep 17 08:27:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,145 +0,0 @@
-/*
-* Copyright (c) 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:
-*
-*/
-#ifndef IRQSONGHISTORYENGINE_H_
-#define IRQSONGHISTORYENGINE_H_
-
-#include <QObject>
-
-class IRQMetaData;
-class IRQPreset;
-class IRQSongHistoryInfo;
-class CIRSongHistoryDb;
-class IRQSongInfo;
-
-/**
-* Engine component for Internet Radio SongHistory.
-*/
-class IRQSongHistoryEngine : public QObject
-{
-    Q_OBJECT
-
-public:
-
-    IMPORT_C static IRQSongHistoryEngine* openInstance();
-    IMPORT_C void closeInstance();
-
-    /**
-    * Get all history from daba base
-    * @param    QList<IRQSongHistoryInfo *>
-    */
-    IMPORT_C void getAllHistory(QList<IRQSongHistoryInfo *>& aSongHistoryArr);
-    
-    /**
-     * this is songs' get, the above will be changed to the stations only
-     */
-    IMPORT_C void getAllSongHistory(QList<IRQSongInfo *>& aSongHistoryArr);
-
-    /**
-    * Clear all history in data base
-    */
-    IMPORT_C int clearAllHistory();
-    
-    IMPORT_C int clearAllSongHistory();
-
-    /**
-    * Called by the UI when a particular channel has been removed from the ISDS.
-    */
-    IMPORT_C void syncHistory(int aChannelId);
-
-    /**
-    * Called by the UI when a particular channel has been changed in the ISDS.
-    */
-
-    IMPORT_C void updateSongHistoryDb(int aChannelId,
-            const QString& aChannelName, const QString& aChannelUrl,
-            const QString& aImageUrl, const QString& aGenreName,
-            const QString& aCountryName, const QString& aLanguageName,
-            const QString& aMusicFlag);
-
-    /**
-    * Connected with play controller with the song name changed.
-    * @param    aMetaData   The meta data contains song name, artist and bitrate.
-    * @param    aPreset     The preset contains other information.
-    */
-    IMPORT_C void handleMetaDataReceived(const IRQMetaData& aMetaData, const IRQPreset& aPreset);
-    /**
-    * Connected with play controller with the song name changed.
-    * @param    aMetaData   The meta data contains song name, artist and bitrate.
-    * @param    aMusicshopStatus     The music shop status of the song
-    */
-    IMPORT_C void handleSongMetaDataReceived(const IRQMetaData& aMetaData, const IRQPreset& preset);
-    
-    /*
-     * delete one item from the station history db
-     * @param   aIndex    the index of the item need deleted
-     */
-    IMPORT_C bool deleteOneItem(int aIndex);
-
-    /*
-     * delete one item from the song history db
-     * @param   aIndex    the index of the item need deleted
-     */
-    IMPORT_C bool deleteOneSongHistoryItem(int aIndex);
-
-private:
-
-    enum TSongHistoryItemChange
-    {
-        ENOCHANGE = 0,
-        ECHANNELCHANGED,
-        EMETADATACHANGED,
-        EBLANKENTRIES
-    };
-
-private:
-
-    /**
-     *  Creates IRQSongHistoryEngine instance
-     */
-    static IRQSongHistoryEngine* createInstanceL();
-    
-    void constructL();
-
-    /**
-    * Constructor.
-    */
-    IRQSongHistoryEngine();
-
-    /**
-    * Destructor.
-    */
-    ~IRQSongHistoryEngine();
-    
-    TSongHistoryItemChange detectSongHistoryItemChangesL(const IRQMetaData& aMetaData, const QString& aChannelName);
-    
-    void handleMetaDataReceivedL(const IRQMetaData& aMetaData, const IRQPreset& aPreset);
-	void getAllHistoryL(QList<IRQSongHistoryInfo *>& aSongHistoryArr);
-	void handleSongMetaDataReceivedL(const IRQMetaData& aMetaData, const IRQPreset& aPreset);
-    void getAllSongHistoryL(QList<IRQSongInfo *>& aSongHistoryArr);
-
-private:
-
-    /** An instance of songhistory database. */
-    CIRSongHistoryDb* iSongHistoryDb;
-
-    /**
-     * Number of objects currently referring to the singleton object IRQSongHistoryEngine
-     */
-    int iSingletonInstances;
-};
-
-#endif //IRQSONGHISTORYENGINE_H_
--- a/qtinternetradio/irqsonghistory/inc/irqsonghistoryinfo.h	Fri Sep 17 08:27:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,319 +0,0 @@
-/*
-* Copyright (c) 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:
-*
-*/
-#ifndef IRQSONGHISTORYINFO_H_
-#define IRQSONGHISTORYINFO_H_
-
-#include <QString>
-
-/**
- * SongHistory meta data information wrapper.
- */
-class IRQSongHistoryInfo
-{
-public:
-
-    /**
-     * Default constructor.
-     */
-    IMPORT_C IRQSongHistoryInfo();
-
-    /**
-    *IRQSongHistoryInfo::~IRQSongHistoryInfo()
-    *standard C++ destructor
-    */
-    IMPORT_C ~IRQSongHistoryInfo();
-
-    /**
-    *IRQSongHistoryInfo::getArtistName()
-    *Function to get artist name from a TDesC
-    *@return QString& instance
-    */
-    IMPORT_C const QString& getArtistName() const;
-
-    /**
-    *IRQSongHistoryInfo::getSongName()
-    *Function to get song name from a TDesC
-    *@return QString& instance
-    */
-    IMPORT_C const QString& getSongName() const;
-
-    /**
-    *IRQSongHistoryInfo::getStreamUrl()
-    *Function to get url name from a TDesC
-    *@return QString& instance
-    */
-    IMPORT_C const QString& getStreamUrl() const;
-
-    /**
-    *IRQSongHistoryInfo::getChannelName()
-    *Function to get channel name from a TDesC
-    *@return QString& instance
-    */
-    IMPORT_C const QString& getChannelName() const;
-
-    /**
-    *IRQSongHistoryInfo::getChannelDesc()
-    *Function to get channel Description
-    *@return QString& instance
-    */
-    IMPORT_C const QString& getChannelDesc() const;
-
-    /**
-    *IRQSongHistoryInfo::getImageURL()
-    *Function to get channel image URL
-    *@return QString& instance
-    */
-    IMPORT_C const QString& getImageUrl() const;
-    /**
-    *IRQSongHistoryInfo::getGenreName()
-    *Function to get channel genre name
-    *@return QString& instance
-    */
-    IMPORT_C const QString& getGenreName() const;
-    /**
-    *IRQSongHistoryInfo::getCountryName()
-    *Function to get channel country Name
-    *@return QString& instance
-    */
-    IMPORT_C const QString& getCountryName() const;
-    /**
-    *IRQSongHistoryInfo::getLanguageName()
-    *Function to get channel language name
-    *@return QString& instance
-    */
-    IMPORT_C const QString& getLanguageName() const;
-
-    /**
-    *IRQSongHistoryInfo::getMusicStoreStatus()
-    *Function to get channel MusicStoreStatus
-    *@return QString& instance
-    */
-    IMPORT_C const QString& getMusicStoreStatus() const;
-
-    /**
-    *IRQSongHistoryInfo::getChannelType()
-    *Function to get channel Type
-    *@return int channeltype
-    */
-    IMPORT_C  int getChannelType() const;
-
-    /**
-    *IRQSongHistoryInfo::getChannelId()
-    *Function to get channel Id
-    *@return int channelId
-    */
-    IMPORT_C  int getChannelId() const;
-
-    /**
-    *IRQSongHistoryInfo::getBitrate()
-    *Function to get channel bitrate
-    *@return int bitrate
-    */
-    IMPORT_C  int getBitrate() const;
-
-    /**
-    *IRQSongHistoryInfo::setHistoryInfoL()
-    *Function to set songhistory info
-    */
-    void setHistoryInfo(const QString& aArtistName,
-                        const QString& aSongName,
-                        const QString& aStreamUrl,
-                        const QString& aChannelName,
-                        const QString& aChannelDesc,
-                        const QString& aImageUrl,
-                        const QString& aGenreName,
-                        const QString& aCountryName,
-                        const QString& aLanguageName,                        
-                        const QString& aMusicStoreStatus, 
-                        int aChannelType,
-                        int aChannelId,
-                        int aBitrate);
-
-    /**
-    *IRQSongHistoryInfo::setArtistName()
-    *Function to set artist name from a QString
-    *@param QString aArtistName
-    */
-    void setArtistName(const QString& aArtistName);
-
-    /**
-    *IRQSongHistoryInfo::setSongName()
-    *Function to set song name from a QString
-    *@param QString aSongName
-    */
-    void setSongName (const QString& aSongName);
-
-    /**
-    *IRQSongHistoryInfo::setStreamUrl()
-    *Function to set stream url from a QString
-    *@param QString aStreamUrl
-    */
-    void setStreamUrl(const QString& aStreamUrl);
-
-    /**
-    *IRQSongHistoryInfo::setChannelName()
-    *Function to set channel name from a QString
-    *@param QString aChannelName
-    */
-    void setChannelName(const QString& aChannelName);
-
-    /**
-    *IRQSongHistoryInfo::setChannelDesc()
-    *Function to set channel Description
-    * @param QString aChannelDesc
-    */
-    void setChannelDesc(const QString& aChannelDesc);
-
-    /**
-    *IRQSongHistoryInfo::setImageURL()
-    *Function to set channel image URL
-    * @param QString aImageUrl
-    */
-    void setImageUrl(const QString& aImageUrl);
-    
-    /**
-    *IRQSongHistoryInfo::setGenreName()
-    *Function to set channel genre name
-    * @param QString aGenreName
-    */
-    void setGenreName(const QString& aGenreName);
-        
-    /**
-    *IRQSongHistoryInfo::setCountryName()
-    *Function to set channel country name
-    * @param QString aCountryName
-    */
-    void setCountryName(const QString& aCountryName);
-    
-    /**
-    *IRQSongHistoryInfo::setLanguageName()
-    *Function to set channel language name
-    * @param QString aLanguageName
-    */
-    void setLanguageName(const QString& aLanguageName);
-
-    /**
-    *IRQSongHistoryInfo::setMusicStoreStatus()
-    *Function to set Channel MusicStoreStatus
-    *@param QString aMusicStoreStatus
-    */
-    void setMusicStoreStatus(const QString& aMusicStoreStatus);
-
-    /**
-    *IRQSongHistoryInfo::setChannelType()
-    *Function to set channel Type
-    *@param int aChannelType
-    */
-    void setChannelType(int aChannelType);
-
-    /**
-    *IRQSongHistoryInfo::setChannelId()
-    *Function to set channel Id
-    *@param int aChannelId
-    */
-    void setChannelId(int aChannelId);
-
-    /**
-    *IRQSongHistoryInfo::setBitrate()
-    *Function to set channel bitrate
-    *@param int aBitrate
-    */
-    void setBitrate(int aBitrate);
-
-private:
-
-    /**
-     * The name of the artist.
-     */
-    QString iArtistName;
-
-    /**
-     * The name of the song.
-     */
-    QString iSongName;
-
-    /**
-     * The stream URL.
-     */
-    QString iStreamUrl;
-
-    /**
-     * Channel Name.
-     */
-    QString iChannelName;
-
-    /**
-     * Channel Description.
-     */
-    QString iChannelDescription;
-
-    /**
-     * Channel's image Url.
-     */
-    QString iImageUrl;
-    QString iGenreName;
-    QString iCountryName;
-    QString iLanguageName;
-    /**
-     * Channel's MusicStoreStatus.
-     */
-    QString iMusicStoreStatus;
-
-    /**
-     * Channel Type.
-     */
-    int iChannelType;
-
-    /**
-     * Channel Id.
-     */
-    int iChannelId;
-
-    /**
-     * Channel bitrate.
-     */
-    int iBitrate;
-};
-
-class IRQSongInfo
-{
-public:
-  
-    
-    IMPORT_C void setSongName(const QString& aName);
-    IMPORT_C const QString& getSongName() const;
-    
-    IMPORT_C void setArtistName(const QString& aArtist);
-    IMPORT_C const QString& getArtistName()const;
-
-    IMPORT_C void setStationName(const QString& aStationName);
-    IMPORT_C const QString& getStationName()const;
-
-    IMPORT_C void setMusicshopStatus(const QString& aStatus);
-    IMPORT_C const QString& getMusicshopStatus()const;
-    
-    IMPORT_C void setAllInfo(const QString& aName, const QString& aArtist, const QString& aStationName, const QString& aStatus);
-    
-private:
-    
-    QString iSongName;
-    QString iSongArtist;
-    QString iStationName;
-    QString iMusicshopStatus;
-
-};
-#endif // IRQSONGHISTORYINFO_H_
--- a/qtinternetradio/irqsonghistory/irqsonghistory.pro	Fri Sep 17 08:27:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-# Copyright (c) 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:
-
-TEMPLATE = lib
-TARGET = irqsonghistory
-TARGET.CAPABILITY = CAP_GENERAL_DLL
-
-defFilePath = ..
-
-DEPENDPATH += src ../../internetradio2.0/irsonghistory/src
-LIBS += -lbafl -ledbms -lefsrv -lirsettings -lflogger
-
-INCLUDEPATH += inc \
-               ../irqmediaplayer/inc \
-               ../irqcommon/inc \
-               ../../internetradio2.0/irsettings/inc \
-               ../../internetradio2.0/inc \
-               ../../internetradio2.0/irsonghistory/inc \
-
-MOC_DIR = moc
-
-symbian{
-  TARGET.UID3 = 0x2002FFC3
-  TARGET.EPOCALLOWDLLDATA = 1
-  MMP_RULES += SMPSAFE
-}
-
-# Input
-HEADERS += inc/irqsonghistoryengine.h \
-           inc/irqsonghistoryinfo.h
-
-SOURCES += irqsonghistoryengine.cpp \
-           irqsonghistoryinfo.cpp \
-           irsonghistorydb.cpp \
-           irsonghistoryinfo.cpp
-
-SYMBIAN_PLATFORMS = WINSCW ARMV5
-
-!exists( $(RVCT22BIN) ) {       
-        !exists( $(RVCT31BIN) ) {
-           exists( $(RVCT40BIN) ) {       
-               QMAKE_CFLAGS.ARMCC += --import_all_vtbl   
-           }           
-        }
- }
\ No newline at end of file
--- a/qtinternetradio/irqsonghistory/src/irqsonghistoryengine.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,524 +0,0 @@
-/*
-* Copyright (c) 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:
-*
-*/
-#include "irsonghistoryinfo.h"
-#include "irsonghistorydb.h"
-#include "irqsonghistoryinfo.h"
-#include "irqisdsdatastructure.h"
-#include "irqmetadata.h"
-#include "irqsonghistoryengine.h"
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryEngine::openInstance()
-// Static function to get a singleton instance of IRQSongHistoryEngine
-// @return IRQSongHistoryEngine *
-// ---------------------------------------------------------------------------
-//
-EXPORT_C IRQSongHistoryEngine* IRQSongHistoryEngine::openInstance()
-{
-    // Get singleton instance
-    IRQSongHistoryEngine* irqSongHistoryEngine =
-                           reinterpret_cast<IRQSongHistoryEngine*>(Dll::Tls());
-
-    if (NULL == irqSongHistoryEngine)
-    {
-        TRAPD(error, irqSongHistoryEngine = createInstanceL());
-        if (KErrNone != error)
-        {
-            delete irqSongHistoryEngine;
-            irqSongHistoryEngine = NULL;
-            Dll::SetTls(NULL);
-        }
-    }
-    else
-    {
-        irqSongHistoryEngine->iSingletonInstances++;
-    }
-
-    return irqSongHistoryEngine;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryEngine::closeInstance()
-// Close a singleton instance of IRQSongHistoryEngine
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void IRQSongHistoryEngine::closeInstance()
-{
-    iSingletonInstances--;
-
-    if (0 == iSingletonInstances)
-    {
-        Dll::SetTls(NULL);
-        delete this;
-    }
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryEngine::createInstanceL()
-// Creates IRQSongHistoryEngine instance
-// @return IRQSongHistoryEngine*
-// ---------------------------------------------------------------------------
-//
-IRQSongHistoryEngine* IRQSongHistoryEngine::createInstanceL()
-{
-    IRQSongHistoryEngine* irqSongHistoryEngine = new (ELeave) IRQSongHistoryEngine();
-    irqSongHistoryEngine->constructL();
-    User::LeaveIfError(Dll::SetTls(irqSongHistoryEngine));
-    irqSongHistoryEngine->iSingletonInstances = 1;
-
-    return irqSongHistoryEngine;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryEngine::constructL()
-// Two-Phase Constructor.
-// ---------------------------------------------------------------------------
-//
-void IRQSongHistoryEngine::constructL()
-{
-    iSongHistoryDb = CIRSongHistoryDb::NewL();
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryEngine::IRQSongHistoryEngine()
-// standard C++ Constructor
-// ---------------------------------------------------------------------------
-//
-IRQSongHistoryEngine::IRQSongHistoryEngine()
-{
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryEngine::~IRQSongHistoryEngine()
-// standard C++ destructor
-// ---------------------------------------------------------------------------
-//
-IRQSongHistoryEngine::~IRQSongHistoryEngine()
-{
-    delete iSongHistoryDb;
-    iSongHistoryDb = NULL;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryEngine::handleMetaDataReceivedL()
-// Invoked when channel name or song & artist name are changed.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void IRQSongHistoryEngine::handleMetaDataReceived(const IRQMetaData& aMetaData,
-        const IRQPreset& aPreset)
-{
-    TRAPD(error, handleMetaDataReceivedL(aMetaData, aPreset));
-    if (KErrNone != error)
-    {
-        
-    }
-}
-
-EXPORT_C void IRQSongHistoryEngine::handleSongMetaDataReceived(const IRQMetaData& aMetaData,
-        const IRQPreset& aPreset)
-{
-    TRAPD(error, handleSongMetaDataReceivedL(aMetaData,aPreset));
-    if (KErrNone != error)
-    {        
-    }
-}
-
-EXPORT_C void IRQSongHistoryEngine::handleSongMetaDataReceivedL(const IRQMetaData& aMetaData,
-        const IRQPreset& aPreset)
-{
-    
-    TPtrC songName(reinterpret_cast<const TUint16*>(aMetaData.getSongName().utf16()), aMetaData.getSongName().length());
-    TPtrC artistName(reinterpret_cast<const TUint16*>(aMetaData.getArtistName().utf16()), aMetaData.getArtistName().length());    
-    TPtrC channelName(reinterpret_cast<const TUint16*>(aPreset.name.utf16()), aPreset.name.length());
-    TPtrC musicFlag(reinterpret_cast<const TUint16*>(aPreset.musicStoreStatus.utf16()), aPreset.musicStoreStatus.length());    
-    TBool bExceededMax = iSongHistoryDb->AddToSongHistoryDb2L(songName,
-                             artistName,
-                             channelName,
-                             musicFlag);                            
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryEngine::handleMetaDataReceivedL()
-// ---------------------------------------------------------------------------
-//
-void IRQSongHistoryEngine::handleMetaDataReceivedL(const IRQMetaData& aMetaData,
-        const IRQPreset& aPreset)
-{
-    // Read Channel properties
-    TPtrC songName(reinterpret_cast<const TUint16*>(aMetaData.getSongName().utf16()), aMetaData.getSongName().length());
-    TPtrC artistName(reinterpret_cast<const TUint16*>(aMetaData.getArtistName().utf16()), aMetaData.getArtistName().length());
-    TPtrC channelUrl(reinterpret_cast<const TUint16*>(aMetaData.getStreamUrl().utf16()), aMetaData.getStreamUrl().length());
-    TPtrC channelName(reinterpret_cast<const TUint16*>(aPreset.name.utf16()), aPreset.name.length());
-    TPtrC channelDesc(reinterpret_cast<const TUint16*>(aPreset.description.utf16()), aPreset.description.length());
-    TPtrC imageUrl(reinterpret_cast<const TUint16*>(aPreset.imgUrl.utf16()), aPreset.imgUrl.length());
-    TPtrC genreName(reinterpret_cast<const TUint16*>(aPreset.genreName.utf16()), aPreset.genreName.length()>KMaxColumnLength ? KMaxColumnLength : aPreset.genreName.length());
-    TPtrC countryName(reinterpret_cast<const TUint16*>(aPreset.countryName.utf16()), aPreset.countryName.length());
-    TPtrC languageName(reinterpret_cast<const TUint16*>(aPreset.languageName.utf16()), aPreset.languageName.length());
-    TPtrC musicFlag(reinterpret_cast<const TUint16*>(aPreset.musicStoreStatus.utf16()), aPreset.musicStoreStatus.length());
-    TUint8 channelType = aPreset.type;
-    TUint16 channelId = aPreset.presetId;
-    TUint16 bitrate = aMetaData.getBitrate();
-
-    if (channelType == 1)
-    {
-        TInt ret = iSongHistoryDb->GetIdPresentInDbL( channelId );
-        if(ret)
-        {
-            TInt modified = iSongHistoryDb->UpdateSongHistoryDbL( channelId ,
-                       channelUrl ,imageUrl ,genreName, countryName, languageName, musicFlag);   
-            // TODO notify uplayer to change layout?
-        }
-    }
-    else if (channelType != 0)
-    {
-        // the channel type can only be 1 (isds channel) or 0 (user defined channel)
-        channelType = 0;
-    }
-    
-    iSongHistoryDb->SearchAndDeleteRecordL(channelName, channelUrl, channelType, channelId);
-    
-	RBuf delSongName;
-	delSongName.CleanupClosePushL();
-	RBuf delArtistName;
-	delArtistName.CleanupClosePushL();
-	RBuf delChannelName;
-	delChannelName.CleanupClosePushL();
-	RBuf delChannelUrl;
-	delChannelUrl.CleanupClosePushL();
-    TBool bExceededMax = iSongHistoryDb->AddToSongHistoryDbL(songName,
-                         artistName,
-                         channelName,
-                         channelUrl,
-                         delSongName,
-                         delArtistName,
-                         delChannelName,
-                         delChannelUrl ,
-                         channelType,
-                         channelId,
-                         bitrate,
-                         channelDesc,
-                         imageUrl,
-                         genreName,
-                         countryName,
-                         languageName,
-                         musicFlag);
-
-    CleanupStack::PopAndDestroy(4, &delSongName);
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryEngine::detectSongHistoryItemChangesL()
-// To detect any change in the song history items.
-// ---------------------------------------------------------------------------
-//
-IRQSongHistoryEngine::TSongHistoryItemChange IRQSongHistoryEngine::detectSongHistoryItemChangesL(
-        const IRQMetaData& aMetaData, const QString& aChannelName)
-{
-	if(aChannelName.length() == 0)
-	{
-		return EBLANKENTRIES;
-	}
-
-	RBuf song;
-	song.CleanupClosePushL();
-	RBuf artist;
-	artist.CleanupClosePushL();
-	RBuf channel;
-	channel.CleanupClosePushL();
-	RBuf url;
-	url.CleanupClosePushL();
-
-	iSongHistoryDb->GetLastHistoryItemL(song, artist, channel, url);
-
-	TSongHistoryItemChange retval = ENOCHANGE;
-
-    QString tmpsong = QString::fromUtf16(song.Ptr(), song.Length());
-    QString tmpartist = QString::fromUtf16(artist.Ptr(), artist.Length());
-    QString tmpchannel = QString::fromUtf16(channel.Ptr(), channel.Length());
-    QString tmpurl = QString::fromUtf16(url.Ptr(), url.Length());
-	if (tmpsong == aMetaData.getSongName() && tmpartist == aMetaData.getArtistName()
-	       && tmpchannel == aChannelName && tmpurl == aMetaData.getStreamUrl())
-	{
-		retval = ENOCHANGE;
-	}
-	else
-	{
-		retval = ECHANNELCHANGED;
-	}
-
-    CleanupStack::PopAndDestroy(4, &song);
-
-	return retval;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryEngine::getAllHistory
-// Invoked when when UI request.
-// Getting the data from SongHistoryDb.
-// ---------------------------------------------------------------------------
-
-EXPORT_C void IRQSongHistoryEngine::getAllHistory(QList<IRQSongHistoryInfo *>& aSongHistoryArr)
-{
-    TRAP_IGNORE(getAllHistoryL(aSongHistoryArr));
-}
-
-EXPORT_C void IRQSongHistoryEngine::getAllSongHistory(QList<IRQSongInfo *>& aSongHistoryArr)
-{
-    TRAP_IGNORE(getAllSongHistoryL(aSongHistoryArr));
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryEngine::getAllHistoryL
-// Invoked when when UI request.
-// Getting the data from SongHistoryDb.
-// ---------------------------------------------------------------------------
-
-void IRQSongHistoryEngine::getAllHistoryL(QList<IRQSongHistoryInfo *>& aSongHistoryArr)
-{
-    // clear the array
-    while (!aSongHistoryArr.isEmpty())
-    {
-        delete aSongHistoryArr.takeFirst();
-    }
-
-    int songCount = iSongHistoryDb->CountSongHistoryDb();
-
-    if (songCount == 0)
-    {
-        return;
-    }
-
-    // get song history list
-    RPointerArray<CIRSongHistoryInfo> historyDataArr;
-    for (int arrCount = 0 ; arrCount < songCount ; arrCount++ )
-    {
-        CIRSongHistoryInfo *songHistory = CIRSongHistoryInfo::NewL();
-        CleanupStack::PushL(songHistory);
-        historyDataArr.AppendL(songHistory);
-        CleanupStack::Pop(songHistory);
-    }
-
-    iSongHistoryDb->GetAllSongHistoryListL(historyDataArr);
-
-    // create IRQSongHistoryInfo array and set
-    QString songName;
-    QString artist;
-    QString streamUrl;
-    QString channelName;
-    int channelType;
-    int channelId;
-    int bitrate;
-    QString channelDesc;
-    QString imageUrl;
-    QString genreName;
-    QString countryName;
-    QString languageName;
-    QString musicStoreStatus;
-    for (int arrCount = 0 ; arrCount < songCount ; arrCount++ )
-    {
-        songName = QString::fromUtf16(historyDataArr[arrCount]->GetSongInfo().Ptr(),
-                             historyDataArr[arrCount]->GetSongInfo().Length());
-        artist = QString::fromUtf16(historyDataArr[arrCount]->GetArtistInfo().Ptr(),
-                             historyDataArr[arrCount]->GetArtistInfo().Length());
-        streamUrl = QString::fromUtf16(historyDataArr[arrCount]->GetStreamUrl().Ptr(),
-                             historyDataArr[arrCount]->GetStreamUrl().Length());
-        channelName = QString::fromUtf16(historyDataArr[arrCount]->GetChannelName().Ptr(),
-                             historyDataArr[arrCount]->GetChannelName().Length());
-        channelType = historyDataArr[arrCount]->GetChannelType();
-        channelId = historyDataArr[arrCount]->GetChannelId();
-        bitrate = historyDataArr[arrCount]->GetBitrate();
-        channelDesc = QString::fromUtf16(historyDataArr[arrCount]->GetChannelDesc().Ptr(),
-                             historyDataArr[arrCount]->GetChannelDesc().Length());
-        imageUrl = QString::fromUtf16(historyDataArr[arrCount]->GetImageUrl().Ptr(),
-                                     historyDataArr[arrCount]->GetImageUrl().Length());
-        genreName = QString::fromUtf16(historyDataArr[arrCount]->GetGenreName().Ptr(),                
-                                     historyDataArr[arrCount]->GetGenreName().Length());
-        countryName = QString::fromUtf16(historyDataArr[arrCount]->GetCountryName().Ptr(),
-                                     historyDataArr[arrCount]->GetCountryName().Length());
-        languageName = QString::fromUtf16(historyDataArr[arrCount]->GetLanguageName().Ptr(),
-                                     historyDataArr[arrCount]->GetLanguageName().Length());
-        musicStoreStatus = QString::fromUtf16(historyDataArr[arrCount]->GetChannelMusicStatus().Ptr(),
-                             historyDataArr[arrCount]->GetChannelMusicStatus().Length());
-       IRQSongHistoryInfo* irqsongHistory = new IRQSongHistoryInfo();
-       if (NULL == irqsongHistory)
-       {
-           break;
-       }
-       irqsongHistory->setHistoryInfo(artist, songName, streamUrl, channelName, channelDesc 
-                                      , imageUrl, genreName, countryName, languageName, musicStoreStatus, channelType, channelId, bitrate);
-       aSongHistoryArr.append(irqsongHistory);
-    }
-    
-    historyDataArr.ResetAndDestroy();
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryEngine::getAllHistoryL
-// Invoked when when UI request.
-// Getting the data from SongHistoryDb.
-// ---------------------------------------------------------------------------
-
-void IRQSongHistoryEngine::getAllSongHistoryL(QList<IRQSongInfo *>& aSongHistoryArr)
-{
-    // clear the array
-    while (!aSongHistoryArr.isEmpty())
-    {
-        delete aSongHistoryArr.takeFirst();
-    }
-
-    int songCount = iSongHistoryDb->CountSongHistoryDb2();
-
-    if (songCount == 0)
-    {
-        return;
-    }
-
-    // get song history list
-    RPointerArray<CIRSongHistoryInfo> historyDataArr;
-    for (int arrCount = 0 ; arrCount < songCount ; arrCount++ )
-    {
-        CIRSongHistoryInfo *songHistory = CIRSongHistoryInfo::NewL();
-        CleanupStack::PushL(songHistory);
-        historyDataArr.AppendL(songHistory);
-        CleanupStack::Pop(songHistory);
-    }
-
-    iSongHistoryDb->GetAllSongHistoryList2L(historyDataArr);
-
-    // create IRQSongHistoryInfo array and set
-    QString songName;
-    QString artist;     
-    QString stationName;     
-    QString musicStoreStatus;
-    
-    for (int arrCount = 0; arrCount < songCount; arrCount++)
-    {
-        songName = QString::fromUtf16(
-                historyDataArr[arrCount]->GetSongInfo().Ptr(),
-                historyDataArr[arrCount]->GetSongInfo().Length());
-        artist = QString::fromUtf16(
-                historyDataArr[arrCount]->GetArtistInfo().Ptr(),
-                historyDataArr[arrCount]->GetArtistInfo().Length());
-        stationName = QString::fromUtf16(
-                historyDataArr[arrCount]->GetChannelName().Ptr(),
-                historyDataArr[arrCount]->GetChannelName().Length());
-        musicStoreStatus = QString::fromUtf16(
-                historyDataArr[arrCount]->GetChannelMusicStatus().Ptr(),
-                historyDataArr[arrCount]->GetChannelMusicStatus().Length());
-        IRQSongInfo* irqsong = new IRQSongInfo();
-
-        irqsong->setAllInfo(songName, artist, stationName, musicStoreStatus);
-        aSongHistoryArr.append(irqsong);
-    }
-    
-    historyDataArr.ResetAndDestroy();
-}
-// ---------------------------------------------------------------------------
-// IRQSongHistoryEngine::clearAllHistory
-// Invoked when when UI request.
-// Clears the SongHistoryDb.
-// ---------------------------------------------------------------------------
-
- EXPORT_C int IRQSongHistoryEngine::clearAllHistory( )
- {
-     return iSongHistoryDb->ClearAllSongHistoryFromDb();
- }
- 
- EXPORT_C int IRQSongHistoryEngine::clearAllSongHistory( )
- {
-     return iSongHistoryDb->ClearAllSongHistoryFromDb2();
- }
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryEngine::syncHistory
-// Invoked when when UI request.
-// Synchronises the Song history DB with the new data in the ISDS.
-// ---------------------------------------------------------------------------
-EXPORT_C void IRQSongHistoryEngine::syncHistory(int aChannelId)
-{
-    TRAPD(err,iSongHistoryDb->SyncSongHistoryDbL(aChannelId));
-    if (err)
-    {
-    }
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryEngine::updateSongHistoryDb
-// Invoked when when UI request.
-// Synchronises the Song history DB with the new data in the ISDS.
-// ---------------------------------------------------------------------------
-EXPORT_C void IRQSongHistoryEngine::updateSongHistoryDb(int aChannelId,
-        const QString& aChannelName,
-        const QString& aChannelUrl,
-        const QString& aImageUrl,
-        const QString& aGenreName,
-        const QString& aCountryName,
-        const QString& aLanguageName,
-        const QString& aMusicFlag)
-{
-    TInt ret = KErrNone ;
-    TUint16 channelId = aChannelId; // prevent data overflow
-
-    TRAPD(err,ret = iSongHistoryDb->GetIdPresentInDbL( channelId ));
-
-    if (err)
-    {
-        return;
-    }
-
-    if (ret)
-    {
-        TPtrC channelName(reinterpret_cast<const TUint16*>(aChannelName.utf16()));
-        TPtrC channelUrl(reinterpret_cast<const TUint16*>(aChannelUrl.utf16()));
-        TPtrC imageUrl(reinterpret_cast<const TUint16*>(aImageUrl.utf16()));
-        TPtrC genreName(reinterpret_cast<const TUint16*>(aGenreName.utf16()));
-        TPtrC countryName(reinterpret_cast<const TUint16*>(aCountryName.utf16()));
-        TPtrC languageName(reinterpret_cast<const TUint16*>(aLanguageName.utf16()));
-        TPtrC musicFlag(reinterpret_cast<const TUint16*>(aMusicFlag.utf16()));
-        TRAP_IGNORE(iSongHistoryDb->UpdateSongHistoryDbL( channelId ,
-                channelUrl,
-                imageUrl,
-                genreName,
-                countryName,
-                languageName,
-                musicFlag));
-    }
-}
-
-EXPORT_C bool IRQSongHistoryEngine::deleteOneItem(int aIndex)
-{    
-    int retValue = 0;
-    retValue = iSongHistoryDb->DeleteOneHistory(aIndex);
-    if( KErrNone != retValue )
-    {
-        return false;
-    }
-    
-    return true;
-}
-
-EXPORT_C bool IRQSongHistoryEngine::deleteOneSongHistoryItem(int aIndex)
-{    
-    int retValue = 0;
-    retValue = iSongHistoryDb->DeleteOneSongHistory(aIndex);
-    if( KErrNone != retValue )
-    {
-        return false;
-    }
-    
-    return true;
-}
--- a/qtinternetradio/irqsonghistory/src/irqsonghistoryinfo.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,380 +0,0 @@
-/*
-* Copyright (c) 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:
-*
-*/
-#include "irqsonghistoryinfo.h"
-
-// ---------------------------------------------------------------------------
-//IRQSongHistoryInfo::~IRQSongHistoryInfo()
-//standard C++ constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C IRQSongHistoryInfo::IRQSongHistoryInfo()
-{
-    iChannelType = 0;
-    iChannelId = 0;
-    iBitrate = 0;
-}
-
-// ---------------------------------------------------------------------------
-//IRQSongHistoryInfo::~IRQSongHistoryInfo()
-//standard C++ destructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C IRQSongHistoryInfo::~IRQSongHistoryInfo()
-{
-
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::getArtistName
-// gets Artist name
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const QString& IRQSongHistoryInfo::getArtistName() const
-{
-    return iArtistName;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::getSongName
-// gets the song information
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const QString& IRQSongHistoryInfo::getSongName() const
-{
-    return iSongName;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::getStreamUrl
-// gets StreamUrl
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const QString& IRQSongHistoryInfo::getStreamUrl() const
-{
-    return iStreamUrl;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::getChannelName
-// gets Channel name
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const QString& IRQSongHistoryInfo::getChannelName() const
-{
-    return iChannelName;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::getChannelDesc
-// gets Channel Description
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const QString& IRQSongHistoryInfo::getChannelDesc() const
-{
-    return iChannelDescription;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::getImageUrl
-// gets Channel image Url
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const QString& IRQSongHistoryInfo::getImageUrl() const
-{
-    return iImageUrl;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::getGenreName
-// gets Channel genre name
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const QString& IRQSongHistoryInfo::getGenreName() const 
-{
-  return iGenreName;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::getCountryName
-// gets Channel country name
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const QString& IRQSongHistoryInfo::getCountryName() const 
-{
-  return iCountryName;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::getLanguageName
-// gets Channel language name
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const QString& IRQSongHistoryInfo::getLanguageName() const 
-{
-  return iLanguageName;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::getMusicStoreStatus
-// gets Channel MusicStoreStatus
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const QString& IRQSongHistoryInfo::getMusicStoreStatus() const
-{
-    return iMusicStoreStatus;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::getChannelType
-// gets Channel Type
-// ---------------------------------------------------------------------------
-//
-EXPORT_C int IRQSongHistoryInfo::getChannelType() const
-{
-    return iChannelType;
-}
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::getChannelId
-// gets Channel Id
-// ---------------------------------------------------------------------------
-//
-EXPORT_C int IRQSongHistoryInfo::getChannelId() const
-{
-    return iChannelId;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::getBitrate
-// gets Channel bitrate
-// ---------------------------------------------------------------------------
-//
-EXPORT_C int IRQSongHistoryInfo::getBitrate() const
-{
-    return iBitrate;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::setHistoryInfo
-// sets Song History Information.
-// ---------------------------------------------------------------------------
-//
-void IRQSongHistoryInfo::setHistoryInfo(const QString& aArtistName,
-        const QString& aSongName,
-        const QString& aStreamUrl,
-        const QString& aChannelName,
-        const QString& aChannelDesc,
-        const QString& aImageUrl,
-	    const QString& aGenreName,
-	    const QString& aCountryName,
-	    const QString& aLanguageName,
-        const QString& aMusicStoreStatus, 
-        int aChannelType,
-        int aChannelId,
-        int aBitrate)
-{
-    setArtistName(aArtistName);
-    setSongName(aSongName);
-    setStreamUrl(aStreamUrl);
-    setChannelName(aChannelName);
-    setChannelDesc(aChannelDesc);
-    setImageUrl(aImageUrl);
-    setGenreName(aGenreName);
-    setCountryName(aCountryName);
-    setLanguageName(aLanguageName);    
-    setMusicStoreStatus(aMusicStoreStatus);
-    setChannelType(aChannelType);
-    setChannelId(aChannelId);
-    setBitrate(aBitrate);
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::setArtistName
-// sets Artist name
-// ---------------------------------------------------------------------------
-//
-void IRQSongHistoryInfo::setArtistName(const QString& aArtistName)
-{
-    iArtistName = aArtistName;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::setSongName
-// sets Song name
-// ---------------------------------------------------------------------------
-//
-void IRQSongHistoryInfo::setSongName (const QString& aSongName)
-{
-    iSongName = aSongName;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::setStreamUrl
-// sets Stream url
-// ---------------------------------------------------------------------------
-//
-void IRQSongHistoryInfo::setStreamUrl(const QString& aStreamUrl)
-{
-    iStreamUrl = aStreamUrl;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::setChannelName
-// sets Channel name
-// ---------------------------------------------------------------------------
-//
-void IRQSongHistoryInfo::setChannelName(const QString& aChannelName)
-{
-    iChannelName = aChannelName;
-}
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::setChannelDesc
-// sets Channel description
-// ---------------------------------------------------------------------------
-//
-void IRQSongHistoryInfo::setChannelDesc(const QString& aChannelDesc)
-{
-    iChannelDescription = aChannelDesc;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::setImageUrl
-// sets Channel image Url
-// ---------------------------------------------------------------------------
-//
-void IRQSongHistoryInfo::setImageUrl(const QString& aImageUrl)
-{
-    iImageUrl = aImageUrl;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::setGenreName
-// sets Channel genre name
-// ---------------------------------------------------------------------------
-//
-void IRQSongHistoryInfo::setGenreName(const QString& aGenreName)
-{
-	iGenreName = aGenreName;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::setCountryName
-// sets Channel country name
-// ---------------------------------------------------------------------------
-//
-void IRQSongHistoryInfo::setCountryName(const QString& aCountryName)
-{
-	iCountryName = aCountryName;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::setLanguageName
-// sets Channel language name
-// ---------------------------------------------------------------------------
-//
-void IRQSongHistoryInfo::setLanguageName(const QString& aLanguageName)
-{
-	iLanguageName = aLanguageName;
-}
-
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::setMusicStoreStatus
-// sets Channel's MusicStoreStatus
-// ---------------------------------------------------------------------------
-//
-void IRQSongHistoryInfo::setMusicStoreStatus(const QString& aMusicStoreStatus)
-{
-    iMusicStoreStatus = aMusicStoreStatus;
-}
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::setChannelType
-// sets Channel type
-// ---------------------------------------------------------------------------
-//
-void IRQSongHistoryInfo::setChannelType(int aChannelType)
-{
-    iChannelType = aChannelType;
-}
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::setChannelId
-// sets Channel Id
-// ---------------------------------------------------------------------------
-//
-void IRQSongHistoryInfo::setChannelId(int aChannelId)
-{
-    iChannelId = aChannelId;
-}
-// ---------------------------------------------------------------------------
-// IRQSongHistoryInfo::setBitrate
-// sets Channel bitrate
-// ---------------------------------------------------------------------------
-//
-void IRQSongHistoryInfo::setBitrate(int aBitrate)
-{
-    iBitrate = aBitrate;
-}
-
-
-
-EXPORT_C void IRQSongInfo::setSongName(const QString& aName)
-{
-    iSongName = aName;
-}
-
-EXPORT_C const QString& IRQSongInfo::getSongName() const
-{
-    return iSongName;
-}
-
-EXPORT_C void IRQSongInfo::setArtistName(const QString& aArtist)
-{
-    iSongArtist = aArtist;
-}
-
-EXPORT_C void IRQSongInfo::setStationName(const QString& aStationName)
-{
-    iStationName = aStationName;
-}
-
-EXPORT_C const QString& IRQSongInfo::getArtistName() const
-{
-    return iSongArtist;
-}
-
-EXPORT_C const QString& IRQSongInfo::getStationName() const
-{
-    return iStationName;
-}
-EXPORT_C void IRQSongInfo::setMusicshopStatus(const QString& aStatus)
-{
-    iMusicshopStatus = aStatus;
-}
-
-EXPORT_C const QString& IRQSongInfo::getMusicshopStatus() const
-{
-    return iMusicshopStatus;
-}
-
-EXPORT_C void IRQSongInfo::setAllInfo(const QString& aName, const QString& aArtist, const QString& aStationName, const QString& aStatus)
-{
-    iSongName =   aName;
-    iSongArtist = aArtist;
-    iStationName = aStationName;
-    iMusicshopStatus = aStatus;
-}
-
-
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/rom/createsis_stub.bat	Mon Oct 04 00:07:46 2010 +0300
@@ -0,0 +1,19 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+@echo off
+echo
+makesis -s ir3_qtinternetradio_stub.pkg
+echo.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/rom/ir3_qtinternetradio_stub.pkg	Mon Oct 04 00:07:46 2010 +0300
@@ -0,0 +1,47 @@
+;
+; Copyright (c) 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:
+;
+; ui_armv5_udeb.pkg generated by qmake at Fri May 8 09:53:45 2009
+; This file is generated by qmake and should not be modified by the user
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"QtInternetRadio"},(0x2002FFAC),1,0,0
+
+; Localised Vendor name
+%{"Nokia, Qt Software"}
+
+; Unique Vendor name
+:"Nokia, Qt Software"
+
+;qtinternetradio
+""    - "z:\sys\bin\internet_radio_10_1.exe"
+""    - "z:\resource\apps\internet_radio_10_1.rsc"
+""    - "z:\private\10003a3f\import\apps\internet_radio_10_1_reg.rsc"
+""    - "z:\resource\qt\translations\internet_radio_10_1_en.qm"
+""    - "z:\sys\bin\irqnetworkcontroller.dll"
+""    - "z:\sys\bin\irqisdsclient.dll"
+""    - "z:\sys\bin\irqmediaplayer.dll"
+""    - "z:\sys\bin\irqutility.dll"
+""    - "z:\sys\bin\irqfavorites.dll" 
+""    - "z:\sys\bin\irqsettings.dll"
+""    - "z:\sys\bin\irqnwkinfoobserver.dll"
+""    - "z:\sys\bin\irqstatisticsreporter.dll"
+""    - "z:\sys\bin\irqsystemeventhandler.dll"
+""    - "z:\sys\bin\irqlogger.dll"
+""    - "z:\sys\bin\irdb.dll"
\ No newline at end of file
Binary file qtinternetradio/rom/ir3_qtinternetradio_stub.sis has changed
--- a/qtinternetradio/rom/qtinternetradio.iby	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/rom/qtinternetradio.iby	Mon Oct 04 00:07:46 2010 +0300
@@ -26,8 +26,7 @@
 file=ABI_DIR\BUILD_DIR\irqisdsclient.dll           SHARED_LIB_DIR\irqisdsclient.dll
 file=ABI_DIR\BUILD_DIR\irqmediaplayer.dll          SHARED_LIB_DIR\irqmediaplayer.dll
 file=ABI_DIR\BUILD_DIR\irqutility.dll              SHARED_LIB_DIR\irqutility.dll
-file=ABI_DIR\BUILD_DIR\irqfavorites.dll            SHARED_LIB_DIR\irqfavorites.dll
-file=ABI_DIR\BUILD_DIR\irqsongHistory.dll          SHARED_LIB_DIR\irqsonghistory.dll
+file=ABI_DIR\BUILD_DIR\irqfavorites.dll            SHARED_LIB_DIR\irqfavorites.dll 
 file=ABI_DIR\BUILD_DIR\irqsettings.dll             SHARED_LIB_DIR\irqsettings.dll
 file=ABI_DIR\BUILD_DIR\irqnwkinfoobserver.dll      SHARED_LIB_DIR\irqnwkinfoobserver.dll
 file=ABI_DIR\BUILD_DIR\irqstatisticsreporter.dll     SHARED_LIB_DIR\irqstatisticsreporter.dll
@@ -36,5 +35,7 @@
 file=ABI_DIR\BUILD_DIR\irdb.dll                    SHARED_LIB_DIR\irdb.dll
 
 data=DATAZ_\PRIVATE\10003A3F\IMPORT\APPS\internet_radio_10_1_reg.rsc     Private\10003a3f\import\apps\internet_radio_10_1_reg.rsc
+
+data=ZSYSTEM\install\ir3_qtinternetradio_stub.sis    system\install\ir3_qtinternetradio_stub.sis
  
 #endif
--- a/qtinternetradio/ui/inc/irabstractlistviewbase.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/inc/irabstractlistviewbase.h	Mon Oct 04 00:07:46 2010 +0300
@@ -104,7 +104,6 @@
 	HbAction      *iFavoritesAction;
 	HbAction      *iGenresAction;
 	HbAction      *iSearchAction;
-	QTimer        *iConvertTimer;
 
     TIRViewParameter iViewParameter;	
 };
--- a/qtinternetradio/ui/inc/irapplication.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/inc/irapplication.h	Mon Oct 04 00:07:46 2010 +0300
@@ -106,9 +106,7 @@
     void cancelConnect();
     void loadGenre();     
     void handleDiskSpaceLow(qint64 aCriticalLevel);
-#ifdef TERMS_CONDITIONS_VIEW_ENABLED    
-    void handleTermsConsAccepted();
-#endif    
+  
     void handleCallActivated();
     void handleCallDeactivated();
     void handleHeadsetConnected();
--- a/qtinternetradio/ui/inc/irchannelmodel.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/inc/irchannelmodel.h	Mon Oct 04 00:07:46 2010 +0300
@@ -23,6 +23,9 @@
 class HbIcon;
 class IRQChannelItem;
 class IRSearchResultDB;
+class IRLogoProvider;
+class IRQIsdsClient;
+class QTimer;
 
 class IrChannelModel : public QAbstractListModel
 {
@@ -34,29 +37,39 @@
 
     int rowCount(const QModelIndex &aParent = QModelIndex()) const;
     QVariant data(const QModelIndex &aIndex, int aRole = Qt::DisplayRole) const;
-    QString imageUrl(int aRow);
-    void setLogo(HbIcon *aIcon, int aIndex);
     void initWithCache();    
     void save2Cache();
     //not take ownership
     IRQChannelItem * getChannelItemByIndex(int aIndex); 
     void cleanupDatabase();
-    void clearAndDestroyLogos();
-    
+    void startDownloadingLogo();
+    void stopDownloadingLogo();
+
 public slots:
-    void updateData(QList<IRQChannelItem*> *aPushItemsList);
+    void updateData(QList<IRQChannelItem*> *aPushItemsList, bool bInit=false);
 
 signals:
     void dataAvailable();
 
+private slots:
+    void downloadNextLogo();
+    void logoData(const QByteArray &aLogoData);
+
 private:
+    void clearAndDestroyLogos();
     void clearAndDestroyItems();
+    void updateIconIndexArray();
+    void setLogo(HbIcon *aIcon, int aIndex);
     
 private:
     QList<IRQChannelItem*> *iChannelList;
-    QMap<int, HbIcon*>     iLogos;
-    HbIcon *iStationLogo;
-    IRSearchResultDB *iDB;
+    QMap<int, HbIcon*>      iLogos;
+    HbIcon                 *iStationLogo;
+    IRSearchResultDB       *iDB;
+    QList<int>              iIconIndexArray;
+    IRQIsdsClient          *iIsdsClient;
+    IRLogoProvider         *iLogoProvider;
+    QTimer                 *iTimer;
 };
 
 #endif
--- a/qtinternetradio/ui/inc/irfavoritesmodel.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/inc/irfavoritesmodel.h	Mon Oct 04 00:07:46 2010 +0300
@@ -23,6 +23,9 @@
 class IRQPreset;
 class IRQFavoritesDB;
 class HbIcon;
+class IRLogoProvider;
+class IRQIsdsClient;
+class QTimer;
 
 class IRFavoritesModel : public QAbstractListModel
 {    
@@ -42,25 +45,35 @@
     bool isLogoReady(int aIndex) const;
     bool checkFavoritesUpdate();
     
-    void clearFavoriteDB();
     void clearAndDestroyLogos();
     bool deleteOneFavorite(int aIndex);  
     bool deleteMultiFavorites(const QModelIndexList &aIndexList);
     
     void updateFavoriteName(int aIndex, const QString &aNewName);
     
+    void startDownloadingLogo();
+    void stopDownloadingLogo();
+    
 signals:
     void modelChanged();
     
+private slots:
+    void downloadNextLogo();
+    void logoData(const QByteArray &aLogoData);
     
 private:
     void clearPresetList();
+    void updateIconIndexArray();
     
 private:
     IRQFavoritesDB    *iFavoritesDb;
     QList<IRQPreset*> *iPresetsList;
     HbIcon            *iStationLogo;
     QList<HbIcon*>    iLogos;
+    QList<int>         iIconIndexArray;
+    IRQIsdsClient *iIsdsClient;
+    IRLogoProvider *iLogoProvider;
+    QTimer *iTimer;
 };
 
 #endif
--- a/qtinternetradio/ui/inc/irfavoritesview.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/inc/irfavoritesview.h	Mon Oct 04 00:07:46 2010 +0300
@@ -23,7 +23,6 @@
 class HbSelectionDialog;
 class IRFavoritesModel;
 class IRStationShare;
-class IRQPreset;
 
 class IRFavoritesView : public IrAbstractListViewBase 
 {
@@ -41,9 +40,6 @@
 private slots:
     void deleteFavorites();        
     void networkRequestNotified(IRQNetworkEvent aEvent);    
-    void convertAnother();
-    void presetLogoDownload(IRQPreset* aPreset);
-    void presetLogoDownloadError();	
     void modelChanged();
     void actionClicked(HbAction *aAction);
     void renameConfirmed(HbAction *aAction);
@@ -59,28 +55,21 @@
     void setCheckedAction();
     void handleItemSelected();
     void prepareMenu();
-    void startConvert(int aIndex); 
     void shareContextAction();
     void deleteContextAction();
     void renameContextAction();
     void detailsContextAction();
-    void updateIconIndexArray();
     void popupDeleteContextConfirmMessageBox();
     
     //from base view 
     void listViewLongPressed(HbAbstractViewItem *aItem, const QPointF& aCoords);
     
-    void initToolBar();
-    
 private:
     
     IRStationShare    *iStationShare;
     IRFavoritesModel  *iModel;
     HbSelectionDialog *iMultiDeleteDialog;
     HbAction          *iMultiDeleteAction;
-    //the following are used to support the img
-    QList<int>         iIconIndexArray;
-    IRQPreset         *iLogoPreset;
     
     friend class IRViewManager;
 };
--- a/qtinternetradio/ui/inc/irhistorymodel.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/inc/irhistorymodel.h	Mon Oct 04 00:07:46 2010 +0300
@@ -19,9 +19,13 @@
 
 #include <QAbstractItemModel>
 
-class IRQSongHistoryEngine;
-class IRQSongHistoryInfo;
 class HbIcon;
+class IRQPreset;
+class channelHistoryWrapper;
+class urlInfoWrapper;
+class IRLogoProvider;
+class IRQIsdsClient;
+class QTimer;
 
 class IRHistoryModel : public QAbstractListModel
 {
@@ -33,25 +37,43 @@
     int rowCount(const QModelIndex &aParent = QModelIndex()) const;
     QVariant data(const QModelIndex &aIndex, int aRole = Qt::DisplayRole) const;
     
-    IRQSongHistoryInfo* getHistoryInfo(int aIndex);
-    void clearAllList();
+    IRQPreset* getHistoryInfo(int aIndex);
+    void clearAllHistory();
     bool checkHistoryUpdate();
-    void clearAndDestroyLogos();
-    QString getImageUrl(int aRow) const;
-    void setLogo(HbIcon *aIcon, int aIndex);
-    bool deleteOneItem(int aIndex);
+    bool deleteHistory(int aIndex);
+    
+    void startDownloadingLogo();
+    void stopDownloadingLogo();    
     
 signals:
     void modelChanged();   
 
-private:
-    void getAllList();
-
+private slots:
+    void downloadNextLogo();
+    void logoData(const QByteArray &aLogoData);
+    
 private:
-    QList<IRQSongHistoryInfo *> iHistoryList;
-    IRQSongHistoryEngine *iHistoryEngine;
-    QMap<int, HbIcon*>     iLogos;
-    HbIcon *iStationLogo;
+    void refreshModel();
+    void clearModel();
+    
+    void clearAndDestroyLogos();
+    QString getImageUrl(int aRow) const;
+    void setLogo(HbIcon *aIcon, int aIndex);
+		
+    bool isLogoReady(int aIndex) const;
+    void updateIconIndexArray();
+    
+private:
+    QList<IRQPreset *>      iHistoryList;
+    channelHistoryWrapper  *iHistoryEngine;
+    urlInfoWrapper         *iUrlInfoWrapper;
+    QList<HbIcon*>          iLogos;
+    HbIcon                 *iStationLogo;
+    
+    QList<int>              iIconIndexArray;
+    IRQIsdsClient          *iIsdsClient;
+    IRLogoProvider         *iLogoProvider;
+    QTimer                 *iTimer;    
 };
 
 #endif /* IRHISTORYMODEL_H_ */
--- a/qtinternetradio/ui/inc/irhistoryview.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/inc/irhistoryview.h	Mon Oct 04 00:07:46 2010 +0300
@@ -20,9 +20,9 @@
 #include "irabstractlistviewbase.h" 
 #include "irqevent.h"
 
-class IRQPreset;
+
 class IRHistoryModel;
-class IRQSongHistoryInfo; 
+
 
 class IRHistoryView : public IrAbstractListViewBase
 {
@@ -40,10 +40,7 @@
 private slots:
     void clearAllList(HbAction *aAction);
     void networkRequestNotified(IRQNetworkEvent aEvent);
-    //to start the convertion asynchronously
-    void convertAnother();
-    void presetLogoDownload(IRQPreset* aPreset);
-    void presetLogoDownloadError();
+    
     void modelChanged();
     
     void actionClicked(HbAction *aAction);
@@ -57,24 +54,14 @@
     void prepareMenu();
 #ifdef HS_WIDGET_ENABLED	
     void itemAboutToBeSelected(bool &aNeedNetwork);
-#endif	
-    void startConvert(int aIndex); 
-    void convertStationHistory2Preset(const IRQSongHistoryInfo& aHistoryInfo, IRQPreset& aPreset);
+#endif
     void addContextAction();
     void deleteContextAction();
     void detailsContextAction();
 
 private:  
     IRHistoryModel *iModel;
-    HbAction       *iClearHistoryAction;
-    HbAction       *iSongHistoryAction;
-    
-
-    //the following are used to support the img
-    QList<int> iIconIndexArray;
-    IRQPreset *iLogoPreset;
-     
-    
+    HbAction       *iClearHistoryAction; 
     friend class IRViewManager;
 };
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/ui/inc/irlogoprovider.h	Mon Oct 04 00:07:46 2010 +0300
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+#ifndef IRLOGOPROVIDER_H_
+#define IRLOGOPROVIDER_H_
+
+#include <QObject>
+
+class IRQIsdsClient;
+class IRQPreset;
+
+class IRLogoProvider : public QObject
+{
+    Q_OBJECT
+public:
+    explicit IRLogoProvider(IRQIsdsClient *aIsdsClient);
+    ~IRLogoProvider();
+    
+    void getLogo(IRQPreset *aPreset);
+    
+    void activate(const QObject *aReceiver, const char *aFunc);
+    void deactivate();
+    
+signals:
+    void logoData(const QByteArray &aLogoData);
+    
+private slots:
+    void presetLogoDownload(IRQPreset* aPreset);
+    void presetLogoDownloadError(); 
+    
+private:
+    IRQIsdsClient *iIsdsClient;
+};
+
+#endif /* IRLOGOPROVIDER_H_ */
--- a/qtinternetradio/ui/inc/irplaycontroller.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/inc/irplaycontroller.h	Mon Oct 04 00:07:46 2010 +0300
@@ -25,10 +25,13 @@
 class IRApplication;
 class IRQMediaPlayer;
 class IRQPreset;
-class IRQMetaData;
-class IRQSongHistoryEngine;
+class IRQMetaData; 
 class IRQStatisticsReporter;
 class HbMessageBox;
+class IRDBWrapper;
+class channelHistoryWrapper;
+class urlInfoWrapper;
+
 /**
  * This class is a wrapper for IRQMediaPlayer.
  */
@@ -106,10 +109,6 @@
     IRQMetaData * getMetaData() const;
     
     IRQTerminatedType getStopReason() const;
-    
-#ifdef _DEBUG
-    int bitrateTrying() const;
-#endif 
 
 signals:
     // emitted when meta data is available
@@ -165,7 +164,10 @@
 	
 	void startSession();
 	void endSession(IRQTerminatedType aStopReason);
-
+	
+	void saveSong2DB(const IRQMetaData& aMetaData, const IRQPreset& aPreset);
+    void saveStation2DB(IRQPreset *aPreset);
+	
 private:
     IRApplication *iApplication;
     IRQMediaPlayer *iMediaPlayer;
@@ -190,8 +192,7 @@
     bool  iStationLogoAvailableBackup;            
     
     // reference of IRQMediaPlayer meta data        
-    IRQMetaData *iMetaData;
-    IRQSongHistoryEngine *iSongHistoryEngine;
+    IRQMetaData *iMetaData;    
 
     EPlayState iPlayState;
     
@@ -218,6 +219,10 @@
     IRQTerminatedType iStopReason;
     
     HbMessageBox *iErrorNote;
+    
+    IRDBWrapper             *iDbWrapper;
+    channelHistoryWrapper   *iHistoryWrapper;
+    urlInfoWrapper          *iUrlInfoWrapper;        
 };
 
 #endif  //IRPLAYCONTROLLER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/ui/inc/irqsonghistoryinfo.h	Mon Oct 04 00:07:46 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 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:
+*
+*/
+#ifndef IRQSONGHISTORYINFO_H_
+#define IRQSONGHISTORYINFO_H_
+
+#include <QString>
+ 
+class IRQSongInfo
+{
+public:
+  
+    
+    void setSongName(const QString& aName);
+    const QString& getSongName() const;
+    
+    void setArtistName(const QString& aArtist);
+    const QString& getArtistName()const;   
+
+    void setMusicshopStatus(const QString& aStatus);
+    const QString& getMusicshopStatus()const;
+    
+    
+    void setStationName(const QString& aStationName);
+    const QString& getStationName() const;
+    
+    void setChannelID(const QString& aChannelID);
+    const QString& getChannelID()const;
+    
+    void setAllInfo(const QString& aStationName, const QString& aSongName, const QString& aArtist, const QString& aStatus, const QString& aChannelID);
+    
+private:
+    
+    QString iSongName;
+    QString iSongArtist;    
+    QString iMusicshopStatus;
+    QString iStationName;
+    QString iChannelID;
+
+};
+#endif // IRQSONGHISTORYINFO_H_
--- a/qtinternetradio/ui/inc/irsearchchannelsview.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/inc/irsearchchannelsview.h	Mon Oct 04 00:07:46 2010 +0300
@@ -20,13 +20,13 @@
 #include "irqevent.h"
 #include "irbaseview.h"
 #include "irqenums.h"
- 
+
+class HbGroupBox;
 class HbListView;
 class HbSearchPanel;
 class HbAction;
 class IrChannelModel; 
 class IRQPreset;
-class QTimer;
 
 class IRSearchChannelsView : public IRBaseView
 {
@@ -53,8 +53,8 @@
     void loadLayout();
     void handleItemSelected();    
     void initMenu();
-    void startConvert(int aIndex);   
-    void initTimer();
+    void resetHeadingText();
+    
     bool eventFilter(QObject *object, QEvent *event);
     
 private slots: //slots
@@ -67,10 +67,6 @@
     void clickItem(const QModelIndex&);    
     //for playing a channel in the search result list
     void presetResponse(IRQPreset *aPreset);  
-    //to start the convertion 
-    void convertAnother();
-    void presetLogoDownload(IRQPreset* aPreset);
-    void presetLogoDownloadError();
     void hideVkb();
     void showVkb();
 
@@ -86,6 +82,7 @@
         ESearch_Loading //loading means searching or buffering.
     };    
     
+    HbGroupBox          *iHeadingLabel;
     HbListView          *iListView;
     QString              iKeyText;
     
@@ -95,10 +92,8 @@
     IrChannelModel      *iChannelModel;
     //the object is created by IsdsClient, but application is responsible for free
     IRQPreset           *iPreset;
-    IRQPreset           *iLogoPreset;     
-    QTimer              *iConvertTimer;
-    QList<int>           iIconIndexArray;
-    IRQSettings          *iSettings;    
+    IRQSettings         *iIRSettings;
+    bool                 iFirstTime;
     friend class IRViewManager;
 };
 #endif //IRSEARCHCHANNELSVIEW_H
--- a/qtinternetradio/ui/inc/irsearchresultdb.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/inc/irsearchresultdb.h	Mon Oct 04 00:07:46 2010 +0300
@@ -19,9 +19,9 @@
 #define IRSEARCHRESULTDB_H
  
 #include "irqenums.h"
- 
-class QSqlDatabase; 
+
 class IRQChannelItem;
+class searchRltWrapper;
 
 class IRSearchResultDB 
 {	
@@ -35,11 +35,8 @@
 	//caller needs to release the memory
 	QList<IRQChannelItem*> * getCahcedChannelList();	
 	IRQError clearCache();
-    
-private:		
-    void createDBConnection();    
-		
+
 private:
-	  QSqlDatabase         *iDB;
+    searchRltWrapper         *iSearchRltWrapper;
 };
 #endif//IRSEARCHRESULTDB_H
--- a/qtinternetradio/ui/inc/irsonghistorymodel.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/inc/irsonghistorymodel.h	Mon Oct 04 00:07:46 2010 +0300
@@ -19,10 +19,10 @@
 #define IRSONGHISTORYMODEL_H_
 
 #include <QAbstractItemModel>
-
-class IRQSongHistoryEngine;
+ 
 class IRQSongInfo;
 class IRQMetaData;
+class songHistoryWrapper;
 
 class IRSongHistoryModel : public QAbstractListModel
 {
@@ -47,9 +47,9 @@
     void getAllList();
 
 private:
-    QList<IRQSongInfo *> mSongHistoryList;
-    IRQSongHistoryEngine *mHistoryEngine;  
+    QList<IRQSongInfo *> mSongHistoryList;     
     Qt::Orientation mOrientation;
+    songHistoryWrapper *mHistoryWrapper;
 };
 
 #endif 
--- a/qtinternetradio/ui/inc/irstationdetailsview.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/inc/irstationdetailsview.h	Mon Oct 04 00:07:46 2010 +0300
@@ -34,7 +34,7 @@
 public:
     ~IRStationDetailsView();
     void setDetails();
-    void setDetails(IRQPreset * aPreset);
+    void setDetails(const IRQPreset * aPreset);
     
 protected:
     IRStationDetailsView(IRApplication* aApplication, TIRViewId aViewId);
--- a/qtinternetradio/ui/inc/iruidefines.h	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/inc/iruidefines.h	Mon Oct 04 00:07:46 2010 +0300
@@ -60,6 +60,7 @@
 static const char* ABSTRACT_LIST_VIEW_BASE_WITH_PLAYINGBANNER_SECTION  = "section_with_playingbanner";
 static const char* ABSTRACT_LIST_VIEW_BASE_NO_TOOLBAR_SECTION          = "section_no_toolbar_with_heading";
 static const char* ABSTRACT_LIST_VIEW_BASE_WITH_TOOLBAR_SECTION        = "section_with_toolbar_no_heading";
+static const char* ABSTRACT_LIST_VIEW_BASE_ADD_TOOLBAR_SECTION         = "section_add_toolbar";
 
 // OpenWebAddressView -- Object Name
 static const char* OPEN_WEB_ADDRESS_VIEW_OBJECT_VIEW                       = "ext-IRQOpenWebAddressView";
@@ -70,7 +71,7 @@
 static const char* SEARCH_CHANNELS_VIEW_OBJECT_VIEW                   = "ext-IRSearchChannelsView"; 
 static const char* SEARCH_CHANNELS_VIEW_SEARCHPANEL_WIDGET            = "search_panel";
 static const char* SEARCH_CHANNELS_VIEW_SEARCHLISTVIEW_WIDGET         = "search_listview";
- 
+static const char* SEARCH_CHANNELS_VIEW_HEADINGTEXT_WIDGET            = "headingText";
 
 // IRNowplayingView  -- Object Name
 static const char* NOW_PLAYING_VIEW_OBJECT_NAME                       = "ext-nowplayingview"; 
@@ -119,4 +120,7 @@
 
 #define LOADING_ANIMATION_ICON_SIZE 50
 
+const int KBitmapSize = 59;
+const int KMaxLineEditLength = 255;
+
 #endif /* IRUIDEFINES_H_ */
--- a/qtinternetradio/ui/resources/layout/abstractlistviewbase.docml	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/resources/layout/abstractlistviewbase.docml	Mon Oct 04 00:07:46 2010 +0300
@@ -116,6 +116,19 @@
             <bool name="visible" value="FALSE"/>
         </widget>
     </section>
+    
+    <section name="section_add_toolbar">
+        <widget name="ext-IrAbstractListViewBase" type="HbView">
+            <widget name="toolbar" role="HbView:toolBar" type="HbToolBar">
+                <enums name="orientation" value="Horizontal"/>
+                <ref object="genres" role="HbToolBar:addAction"/>
+                <ref object="collections" role="HbToolBar:addAction"/>
+                <ref object="favorites" role="HbToolBar:addAction"/>
+                <ref object="search" role="HbToolBar:addAction"/>
+            </widget>
+        </widget>
+    </section>
+        
     <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
         <uistate name="Common ui state" sections="#common"/>
         <uistate name="with_playingbanner" sections="#common section_with_playingbanner"/>
--- a/qtinternetradio/ui/resources/layout/openwebaddressview.docml	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/resources/layout/openwebaddressview.docml	Mon Oct 04 00:07:46 2010 +0300
@@ -25,7 +25,7 @@
                     <string locid="txt_common_button_play_audio" name="text"/>
                     <string name="state" value="normal"/>
                 </widget>
-                <contentsmargins bottom="var(hb-param-margin-gene-screen)" left="var(hb-param-margin-gene-screen)" right="var(hb-param-margin-gene-screen)" top="var(hb-param-margin-gene-screen)"/>
+                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                 <layout type="anchor">
                     <anchoritem dst="dataForm" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
                     <anchoritem dst="dataForm" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
--- a/qtinternetradio/ui/resources/layout/searchchannelsview.docml	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/resources/layout/searchchannelsview.docml	Mon Oct 04 00:07:46 2010 +0300
@@ -5,17 +5,20 @@
     </object>
     <widget name="ext-IRSearchChannelsView" type="HbView">
         <widget name="content" role="HbView:widget" type="HbWidget">
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>           
+            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+            <widget name="headingText" type="HbGroupBox">
+                <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                <sizehint height="expr(var(hb-param-text-height-secondary)+2*var(hb-param-margin-gene-middle-vertical))" type="PREFERRED"/>
+                <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+            </widget>
             <widget name="search_listview" type="HbListView">                 
             </widget>
-            
             <widget name="search_panel" type="HbSearchPanel">
                 <bool name="progressive" value="FALSE"/>
             </widget>
-            
-            <real name="z" value="0"/>
             <layout orientation="Vertical" type="linear">
-                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>                
+                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                <linearitem itemname="headingText" spacing="0un"/>
                 <linearitem itemname="search_listview" spacing="0un"/>                
                 <linearitem itemname="search_panel" spacing="0un"/>
             </layout>
--- a/qtinternetradio/ui/src/irabstractlistviewbase.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irabstractlistviewbase.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -49,7 +49,7 @@
       iArtistSongName(NULL),
       iHeadingLabel(NULL),
       iCollectionsAction(NULL), iFavoritesAction(NULL),
-      iGenresAction(NULL), iSearchAction(NULL),iConvertTimer(NULL),
+      iGenresAction(NULL), iSearchAction(NULL),
       iViewParameter(EIRViewPara_InvalidId)
 {
     // Create widget hierarchy
@@ -310,7 +310,7 @@
             //set the banner text as station name
             IRQPreset *nowPlayingPreset = iPlayController->getNowPlayingPreset();
             Q_ASSERT(nowPlayingPreset);
-            addBanner(nowPlayingPreset->name, false);
+            addBanner(nowPlayingPreset->nickName, false);
         }
     }
     else
@@ -322,7 +322,7 @@
 void IrAbstractListViewBase::addBanner(const QString &aText, const bool &aMetaDataFlag)
 {
     iLoader.load(ABSTRACT_LIST_VIEW_BASE_LAYOUT_FILENAME, ABSTRACT_LIST_VIEW_BASE_WITH_PLAYINGBANNER_SECTION);
-    iStationName->setPlainText(iPlayController->getNowPlayingPreset()->name);
+    iStationName->setPlainText(iPlayController->getNowPlayingPreset()->nickName);
     if (aMetaDataFlag)
     {
         iArtistSongName->setText(aText);
--- a/qtinternetradio/ui/src/irapplication.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irapplication.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -690,40 +690,13 @@
     return retVal;
 }
 
-#ifdef TERMS_CONDITIONS_VIEW_ENABLED 
-void IRApplication::handleTermsConsAccepted()
-{
-    LOG_METHOD;
-    iSettings->reSetFlagTermsAndConditions();
-    IRBaseView * termsConsView = iViewManager->getView(EIRView_TermsConsView);
-    iViewManager->removeView(termsConsView);
-    termsConsView->deleteLater();
-    
-    iViewManager->activateView(iStartingViewId); 
-    QEvent* initEvent = new QEvent(iInitEvent);
-    QCoreApplication::postEvent(this, initEvent, Qt::HighEventPriority); 	 
-}
-#endif
-
 void IRApplication::launchStartingView(TIRViewId aViewId)
 {
     LOG_METHOD;
     iStartingViewId = aViewId;
-#ifdef TERMS_CONDITIONS_VIEW_ENABLED     
-    bool isFirstTimeUsage = false;
-    iSettings->isFlagTermsAndConditions(isFirstTimeUsage);
-    
-    if(isFirstTimeUsage)
-    {
-        iViewManager->activateView(EIRView_TermsConsView);  
-    }
-    else
-#endif    
-    {
-        iViewManager->activateView(iStartingViewId);
-        QEvent* initEvent = new QEvent(iInitEvent);
-        QCoreApplication::postEvent(this, initEvent, Qt::HighEventPriority);         
-    }
+    iViewManager->activateView(iStartingViewId);
+    QEvent* initEvent = new QEvent(iInitEvent);
+    QCoreApplication::postEvent(this, initEvent, Qt::HighEventPriority);
     
     iAppFullyStarted = true;
 }
--- a/qtinternetradio/ui/src/irchanneldataprovider.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irchanneldataprovider.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -22,8 +22,8 @@
 #include "irqisdsdatastructure.h"
 #include "irqisdsclient.h"
 #include "irsearchresultdb.h"
+#include "iruidefines.h"
 
-const int KBitmapSize = 59;
 const int KDownloadLogoInterval = 10; //msec
 
 IRChannelDataProvider::IRChannelDataProvider(QObject *aParent) : HgDataProviderModel(aParent),
--- a/qtinternetradio/ui/src/irchannelmodel.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irchannelmodel.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -15,16 +15,31 @@
 *
 */
 
-#include <hbicon.h>
+#include <HbIcon>
+#include <QTimer>
 
 #include "irchannelmodel.h"
 #include "irqisdsdatastructure.h"
 #include "irsearchresultdb.h"
+#include "irqisdsclient.h"
+#include "irlogoprovider.h"
 
 IrChannelModel::IrChannelModel(QObject *aParent): QAbstractListModel(aParent)
                                                 , iChannelList(NULL),iDB(NULL)
 {
-    iStationLogo = new HbIcon("qtg_large_internet_radio");   
+    iIsdsClient = IRQIsdsClient::openInstance();
+    iLogoProvider = new IRLogoProvider(iIsdsClient);
+    
+    iTimer = new QTimer;
+    iTimer->setInterval(10);
+    connect(iTimer, SIGNAL(timeout()), this, SLOT(downloadNextLogo()));
+    
+    iStationLogo = new HbIcon("qtg_large_internet_radio");
+
+    if( NULL == iDB )
+    {
+        iDB = new IRSearchResultDB();
+    }
 }
 
 IrChannelModel::~IrChannelModel()
@@ -36,11 +51,21 @@
     
     clearAndDestroyLogos();
 
+    stopDownloadingLogo();
+
     if( iDB )
     {
         delete iDB;
         iDB = NULL;
     }
+
+    delete iLogoProvider;
+    if (iIsdsClient)
+    {
+        iIsdsClient->closeInstance();
+        iIsdsClient = NULL;
+    }
+    delete iTimer;
 }
 
 int IrChannelModel::rowCount(const QModelIndex &aParent) const
@@ -55,18 +80,6 @@
     return count;
 }
 
-QString IrChannelModel::imageUrl(int aRow)
-{
-    if (iChannelList)
-    {
-        return iChannelList->at(aRow)->imageURL;
-    }
-    else
-    {
-        return "";
-    }
-}
-
 void IrChannelModel::setLogo(HbIcon *aIcon, int aIndex)
 {
     iLogos[aIndex] = aIcon;
@@ -119,37 +132,29 @@
     }
 }
 
-void IrChannelModel::updateData(QList<IRQChannelItem*> *aPushItemsList)
+void IrChannelModel::updateData(QList<IRQChannelItem*> *aPushItemsList, bool bInit)
 {
     if (iChannelList != aPushItemsList)
     {
         clearAndDestroyItems();
         iChannelList = aPushItemsList;
     }
+    if(false == bInit)
+    {
+        save2Cache();
+    
+    }
     
     clearAndDestroyLogos();
-    
+
+    updateIconIndexArray();
+
     emit dataAvailable();
 }
 
 void IrChannelModel::initWithCache()
 {
-    if( NULL == iDB )
-    {
-        iDB = new IRSearchResultDB();
-    }
-    
-    QList<IRQChannelItem*> *channelList = iDB->getCahcedChannelList();
-   
-    if( NULL == channelList )
-    {
-        //some error happens
-        return;
-    }
-    
-    clearAndDestroyItems();
-    clearAndDestroyLogos();
-    iChannelList = channelList;    
+    updateData(iDB->getCahcedChannelList(), true);
 }
 
 void IrChannelModel::save2Cache()
@@ -178,7 +183,8 @@
     clearAndDestroyItems();
     clearAndDestroyLogos();
     iDB->clearCache();
-    
+    iIconIndexArray.clear();
+
     emit dataAvailable();
 }
 
@@ -204,3 +210,75 @@
         iChannelList = NULL;
     }
 }
+
+void IrChannelModel::startDownloadingLogo()
+{
+    iLogoProvider->activate(this, SLOT(logoData(const QByteArray&)));
+    iTimer->start();
+}
+
+void IrChannelModel::stopDownloadingLogo()
+{
+    iIsdsClient->isdsLogoDownCancelTransaction();
+    iTimer->stop();
+    iLogoProvider->deactivate();
+}
+
+void IrChannelModel::downloadNextLogo()
+{
+    iTimer->stop();
+    int leftCount = iIconIndexArray.count();
+
+    if (0 != leftCount)
+    {
+         int row = iIconIndexArray[0];
+         IRQPreset preset;
+         preset.name = iChannelList->at(row)->channelName;
+         preset.shortDesc = iChannelList->at(row)->shortDescription;
+         preset.type = IRQPreset::EIsds;
+         preset.presetId = iChannelList->at(row)->channelID;
+		 preset.imgUrl = iChannelList->at(row)->imageURL;
+         iLogoProvider->getLogo(&preset);
+    }
+}
+
+void IrChannelModel::logoData(const QByteArray &aLogoData)
+{
+    if (aLogoData.size() > 0)
+    {
+        QPixmap tempMap;
+        bool ret = tempMap.loadFromData((const unsigned char*)aLogoData.constData(), aLogoData.size());
+        if( ret )
+        {
+            QIcon convertIcon(tempMap);
+            HbIcon *hbIcon = new HbIcon(convertIcon);
+            int index = iIconIndexArray[0];
+            setLogo(hbIcon, index);  
+        }
+    }
+    
+    iIconIndexArray.removeAt(0);
+    int leftCount = iIconIndexArray.count();
+    if( leftCount > 0 )
+    {
+        iTimer->start();  
+    }
+}
+
+void IrChannelModel::updateIconIndexArray()
+{
+    iIconIndexArray.clear();
+    
+    for (int i = 0; i < rowCount(); ++i)
+    {
+        if (iChannelList->at(i)->imageURL != "" && !iLogos.contains(i))
+        {
+            iIconIndexArray.append(i);
+        }
+    }
+
+    if (iIconIndexArray.size() > 0)
+    {
+        startDownloadingLogo();
+    }
+}
--- a/qtinternetradio/ui/src/irfavoritesmodel.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irfavoritesmodel.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -15,11 +15,14 @@
 *
 */
 #include <QtAlgorithms>
-#include <hbicon.h>
+#include <HbIcon>
+#include <QTimer>
 
 #include "irqfavoritesdb.h"
 #include "irqisdsdatastructure.h"
 #include "irfavoritesmodel.h"
+#include "irqisdsclient.h"
+#include "irlogoprovider.h"
 
 IRFavoritesModel::IRFavoritesModel(IRQFavoritesDB *aFavoritesDb, QObject *aParent) 
                                   : QAbstractListModel(aParent), iFavoritesDb(aFavoritesDb),
@@ -30,6 +33,13 @@
         iPresetsList = aFavoritesDb->getPresets();
     }
     
+    iIsdsClient = IRQIsdsClient::openInstance();
+    iLogoProvider = new IRLogoProvider(iIsdsClient);
+    
+    iTimer = new QTimer;
+    iTimer->setInterval(10);
+    connect(iTimer, SIGNAL(timeout()), this, SLOT(downloadNextLogo()));
+    
     iStationLogo = new HbIcon("qtg_large_internet_radio");
 }
 
@@ -38,6 +48,14 @@
     delete iStationLogo;
     clearPresetList();
     clearAndDestroyLogos();
+    
+    delete iLogoProvider;
+    if (iIsdsClient)
+    {
+        iIsdsClient->closeInstance();
+        iIsdsClient = NULL;
+    }
+    delete iTimer;
 }
 
 IRQPreset* IRFavoritesModel::getPreset(int aIndex) const
@@ -114,7 +132,7 @@
         QVariantList list;
         int row = aIndex.row();
 
-        QString primaryText = iPresetsList->at(row)->name;
+        QString primaryText = iPresetsList->at(row)->nickName;
         list.append(primaryText);
         QString secondaryText = iPresetsList->at(row)->shortDesc;
         
@@ -158,6 +176,7 @@
     clearPresetList();
     clearAndDestroyLogos();
     iPresetsList = iFavoritesDb->getPresets();
+    updateIconIndexArray();
     emit modelChanged();
     return true;
 }
@@ -173,42 +192,6 @@
     iLogos.clear();
 }
 
-void IRFavoritesModel::clearFavoriteDB()
-{
-    if (NULL == iPresetsList)
-    {
-        return;
-    }
-    
-    int presetSize = iPresetsList->count();
-
-    if(!presetSize)
-    {
-    	return;
-    }
-
-    int uniqId = 0;
-    
-    while(presetSize--)
-    {
-        uniqId = iFavoritesDb->getUniqId(presetSize);
-        
-        //There is the probability that the return value<0, so I added this judgment.
-        if(uniqId < 0 )
-        {
-        	//if here, the Id, which is mapped to preset's item, can't be found. 
-        	//jump out from while 
-        	break; 
-        }
-        iFavoritesDb->deletePreset(uniqId);
-    	
-    }
-
-    clearPresetList();
-    clearAndDestroyLogos();
-    emit modelChanged();
-}
-
 void IRFavoritesModel::clearPresetList()
 {
     if (NULL == iPresetsList)
@@ -231,8 +214,14 @@
         return false;
     }
     
+    if (!iIconIndexArray.empty())
+    {
+        iIsdsClient->isdsLogoDownCancelTransaction();
+        iTimer->stop();
+    }  
+    
     IRQPreset *preset = iPresetsList->at(aIndex);        
-    int ret = iFavoritesDb->deletePreset(preset->uniqID);
+    int ret = iFavoritesDb->deletePreset(*preset);
     if ( 0 != ret )
     {
         return false;
@@ -249,6 +238,14 @@
     }
     iLogos.removeAt(aIndex);
     endRemoveRows();
+    
+    updateIconIndexArray();
+    
+    if (!iIconIndexArray.empty())
+    {
+        iTimer->start();
+    }   
+    
     return true;    
 }
 
@@ -259,6 +256,12 @@
         return true;
     }
 
+    if (!iIconIndexArray.empty())
+    {
+        iIsdsClient->isdsLogoDownCancelTransaction();
+        iTimer->stop();
+    }
+    
     int index = 0;
     bool retVal = true;
     QList<int> indexToBeDelete;
@@ -273,7 +276,8 @@
             continue;
         }
         
-        if (0 != iFavoritesDb->deletePreset(iPresetsList->at(index)->uniqID))
+        IRQPreset *preset = iPresetsList->at(index);
+        if (0 != iFavoritesDb->deletePreset(*preset) )
         {
             retVal = false;
             continue;
@@ -302,6 +306,13 @@
         endRemoveRows();         
     }
 
+    updateIconIndexArray();
+    
+    if (!iIconIndexArray.empty())
+    {
+        iTimer->start();
+    }
+    
     return retVal;    
 }
 
@@ -309,7 +320,68 @@
 {
     if (aIndex >= 0 && aIndex < iPresetsList->count())
     {
-        iPresetsList->at(aIndex)->name = aNewName;
+        iPresetsList->at(aIndex)->nickName = aNewName;
         emit dataChanged(index(aIndex), index(aIndex));
     }
 }
+
+void IRFavoritesModel::startDownloadingLogo()
+{
+    iLogoProvider->activate(this, SLOT(logoData(const QByteArray&)));
+    iTimer->start();
+}
+
+void IRFavoritesModel::stopDownloadingLogo()
+{
+    iIsdsClient->isdsLogoDownCancelTransaction();
+    iTimer->stop();
+    iIconIndexArray.clear();
+    iLogoProvider->deactivate();
+}
+
+void IRFavoritesModel::downloadNextLogo()
+{
+    iTimer->stop();
+    int leftCount = iIconIndexArray.count();
+
+    if (0 != leftCount)
+    {
+         iLogoProvider->getLogo(iPresetsList->at(iIconIndexArray[0]));
+    }
+}
+
+void IRFavoritesModel::logoData(const QByteArray &aLogoData)
+{
+    if (aLogoData.size() > 0)
+    {
+        QPixmap tempMap;
+        bool ret = tempMap.loadFromData((const unsigned char*)aLogoData.constData(), aLogoData.size());
+        if( ret )
+        {
+            QIcon convertIcon(tempMap);
+            HbIcon *hbIcon = new HbIcon(convertIcon);
+            int index = iIconIndexArray[0];
+            setLogo(hbIcon, index);  
+        }
+    }
+    
+    iIconIndexArray.removeAt(0);
+    int leftCount = iIconIndexArray.count();
+    if( leftCount > 0 )
+    {
+        iTimer->start();  
+    }
+}
+
+void IRFavoritesModel::updateIconIndexArray()
+{
+    iIconIndexArray.clear();
+    
+    for (int i = 0; i < rowCount(); ++i)
+    {
+        if (getImgUrl(i) != "" && !isLogoReady(i))
+        {
+            iIconIndexArray.append(i);
+        }
+    } 
+}
--- a/qtinternetradio/ui/src/irfavoritesview.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irfavoritesview.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -20,8 +20,6 @@
 #include <hbmenu.h>
 #include <hbgroupbox.h>
 #include <hbselectiondialog.h>
-#include <QPixmap>
-#include <QTimer>
 #include <HbInputDialog>
 #include <hbscrollbar.h>
 #include <HbLineEdit>
@@ -40,7 +38,6 @@
 #include "iruidefines.h"
 #include "irstationshare.h"
 #include "irstationdetailsview.h"
-const int KBitmapSize = 59;
 
 const QString KActionShareName("Share");
 const QString KActionDeleteName("Delete");
@@ -57,23 +54,17 @@
                                  : IrAbstractListViewBase(aApplication, aViewId),
                                    iStationShare(NULL),
                                    iMultiDeleteDialog(NULL),
-                                   iMultiDeleteAction(NULL),
-                                   iLogoPreset(NULL)
+                                   iMultiDeleteAction(NULL)
 {    
     setFlag(EViewFlag_ClearStackWhenActivate|EViewFlag_StickyViewEnabled);
-    
-	initToolBar();
+    iLoader.load(ABSTRACT_LIST_VIEW_BASE_LAYOUT_FILENAME, ABSTRACT_LIST_VIEW_BASE_ADD_TOOLBAR_SECTION);
+
     iModel = new IRFavoritesModel(iFavorites, this);
     iListView->setModel(iModel);
-    
-    iConvertTimer = new QTimer(this);
-    iConvertTimer->setInterval(10);
-    
+        
     connect(iModel, SIGNAL(modelChanged()), this, SLOT(modelChanged()));
     connect(iNetworkController, SIGNAL(networkRequestNotified(IRQNetworkEvent)),
             this, SLOT(networkRequestNotified(IRQNetworkEvent))); 
-    connect(iConvertTimer, SIGNAL(timeout()), this, SLOT(convertAnother()));
-
 }
 
 /*
@@ -81,9 +72,6 @@
  */
 IRFavoritesView::~IRFavoritesView()
 {
-    delete iLogoPreset;
-    iLogoPreset = NULL;
-    
     delete iMultiDeleteDialog;
     iMultiDeleteDialog = NULL; 
     
@@ -96,7 +84,6 @@
     Q_UNUSED(aReason);
     
     TIRHandleResult ret = IrAbstractListViewBase::handleCommand(aCommand, aReason);
-    int leftCount = 0;
     
     switch (aCommand)
     {
@@ -106,17 +93,7 @@
         break;
                 
     case EIR_ViewCommand_ACTIVATED:        
-        connect(iIsdsClient, SIGNAL(presetLogoDownloaded(IRQPreset* )),
-                this, SLOT(presetLogoDownload(IRQPreset* )));
-        connect(iIsdsClient, SIGNAL(presetLogoDownloadError()),
-                this, SLOT(presetLogoDownloadError()));
-        
-        leftCount = iIconIndexArray.count();
-        if( leftCount > 0 )
-        {
-            iConvertTimer->start();
-        }
-        
+        iModel->startDownloadingLogo();
         getViewManager()->saveScreenShot();
         ret = EIR_NoDefault;
         break;
@@ -124,17 +101,7 @@
     case EIR_ViewCommand_DEACTIVATE:        		 
         
         iModel->clearAndDestroyLogos();
-        iConvertTimer->stop();
-        iIsdsClient->isdsLogoDownCancelTransaction();
-        //iIconIndexArray must be cleared, because timer call back convertAnother() might be
-        //called after view is deactivated. In that case, iModel->getImgURL(aIndex); will crash
-        iIconIndexArray.clear();
-        
-        disconnect(iIsdsClient, SIGNAL(presetLogoDownloaded(IRQPreset*)),
-                   this, SLOT(presetLogoDownload(IRQPreset* )));
-        disconnect(iIsdsClient, SIGNAL(presetLogoDownloadError()),
-                   this, SLOT(presetLogoDownloadError()));
-
+        iModel->stopDownloadingLogo();
         ret = EIR_NoDefault;
         break;
 
@@ -258,75 +225,6 @@
     }
 }
 
-void IRFavoritesView::startConvert(int aIndex)
-{     
-    QString url = iModel->getImgUrl(aIndex);
-    
-    IRQPreset tempPreset;
-    tempPreset.imgUrl = url;
-    tempPreset.type = IRQPreset::EIsds;
-
-    iIsdsClient->isdsLogoDownSendRequest(&tempPreset, 0, KBitmapSize, KBitmapSize); 
-}
-
-//if the logo is downloaded ok
-void IRFavoritesView::presetLogoDownload(IRQPreset* aPreset)
-{
-    if (NULL == aPreset)
-    {
-        presetLogoDownloadError();
-        return;
-    }
-
-    delete iLogoPreset;
-    iLogoPreset = aPreset;
-
-    if (iLogoPreset->logoData.size() > 0)
-    {
-        QPixmap tempMap;
-        bool ret = tempMap.loadFromData((const unsigned char*)iLogoPreset->logoData.constData(), iLogoPreset->logoData.size());
-        if( ret )
-        {
-            QIcon convertIcon(tempMap);
-            HbIcon *hbIcon = new HbIcon(convertIcon);
-            int index = iIconIndexArray[0];
-            iModel->setLogo(hbIcon, index);
-            iIconIndexArray.removeAt(0);
-            int leftCount = iIconIndexArray.count();
-            if( leftCount > 0 )
-            {
-                iConvertTimer->start();  
-            }            
-            return;             
-        }        
-    }    
-    
-    presetLogoDownloadError();
-}
-
-//if the logo download fails
-void IRFavoritesView::presetLogoDownloadError()
-{
-    iIconIndexArray.removeAt(0);
-    int leftCount = 0;
-    leftCount = iIconIndexArray.count();
-    if( leftCount > 0 )
-    {
-        iConvertTimer->start();
-    }    
-}
-
-void IRFavoritesView::convertAnother()
-{
-    iConvertTimer->stop();
-    int leftCount = iIconIndexArray.count();
-
-    if (0 != leftCount)
-    {
-        startConvert(iIconIndexArray[0]);
-    }
-}
-
 void IRFavoritesView::modelChanged()
 {
 #ifdef SUBTITLE_STR_BY_LOCID
@@ -335,7 +233,6 @@
     QString headingStr = hbTrId("Favorites") + " (" + QString::number(iModel->rowCount()) + ")";
 #endif
     setHeadingText(headingStr);
-    updateIconIndexArray();
     
     iListView->reset();
     iListView->setCurrentIndex(iModel->index(0));
@@ -349,12 +246,6 @@
         QModelIndexList selectedIndexes = iMultiDeleteDialog->selectedModelIndexes();
         if (!selectedIndexes.empty())
         {
-            if (!iIconIndexArray.empty())
-            {
-                iIsdsClient->isdsLogoDownCancelTransaction();
-                iConvertTimer->stop();
-            }
-            
             if(!iModel->deleteMultiFavorites(selectedIndexes))
             {
 #ifdef SUBTITLE_STR_BY_LOCID
@@ -364,18 +255,12 @@
 #endif
             }
 
-            updateIconIndexArray();
 #ifdef SUBTITLE_STR_BY_LOCID
             QString headingStr = hbTrId("txt_irad_subtitle_favorites") + " (" + QString::number(iModel->rowCount()) + ")";
 #else
             QString headingStr = hbTrId("Favorites") + " (" + QString::number(iModel->rowCount()) + ")";
 #endif
             setHeadingText(headingStr);  
-			
-            if (!iIconIndexArray.empty())
-            {
-                iConvertTimer->start();
-            }
         }
     }   
 }
@@ -463,20 +348,6 @@
     iStationShare->shareStations(*iModel->getPreset(current));    
 }
 
-void IRFavoritesView::updateIconIndexArray()
-{
-    iIconIndexArray.clear();
-    
-    for (int i = 0; i < iModel->rowCount(); ++i)
-    {
-        if (iModel->getImgUrl(i) != "" 
-            && !iModel->isLogoReady(i))
-        {
-            iIconIndexArray.append(i);
-        }
-    }    
-}
-
 void IRFavoritesView::renameContextAction()
 {
     int current = iListView->currentIndex().row();
@@ -489,9 +360,9 @@
     dlg->setPromptText(hbTrId("Rename"));
 #endif
     HbLineEdit* lineEdit = dlg->lineEdit();
-    lineEdit->setMaxLength(256);
+    lineEdit->setMaxLength(KMaxLineEditLength);
     dlg->setInputMode(HbInputDialog::TextInput);
-    dlg->setValue(preset->name);   
+    dlg->setValue(preset->nickName);   
     dlg->setAttribute(Qt::WA_DeleteOnClose);
     dlg->open(this, SLOT(renameConfirmed(HbAction*)));
 }
@@ -509,16 +380,9 @@
 
 void IRFavoritesView::deleteContextAction()
 {
-    if (!iIconIndexArray.empty())
-    {
-        iIsdsClient->isdsLogoDownCancelTransaction();
-        iConvertTimer->stop();
-    }  
-    
     int current = iListView->currentIndex().row();    
     if (iModel->deleteOneFavorite(current))
     {
-        updateIconIndexArray();
 #ifdef SUBTITLE_STR_BY_LOCID
         QString headingStr = hbTrId("txt_irad_subtitle_favorites") + " (" + QString::number(iModel->rowCount()) + ")";
 #else
@@ -533,12 +397,7 @@
 #else
         popupNote(hbTrId("Operation failed"), HbMessageBox::MessageTypeWarning);        
 #endif
-    }
-    
-    if (!iIconIndexArray.empty())
-    {
-        iConvertTimer->start();
-    }    
+    } 
 }
 
 void IRFavoritesView::renameConfirmed(HbAction *aAction)
@@ -588,16 +447,6 @@
     }
 }
 
-void IRFavoritesView::initToolBar()
-{
-    //add HbActions to the toolbar, the HbActions have been created in IrAbstractListViewBase
-    HbToolBar *viewToolBar = toolBar();
-    viewToolBar->addAction(iGenresAction);
-    viewToolBar->addAction(iCollectionsAction);
-    viewToolBar->addAction(iFavoritesAction);
-    viewToolBar->addAction(iSearchAction);
-}
-
 void IRFavoritesView::popupDeleteContextConfirmMessageBox()
 {
 #ifdef SUBTITLE_STR_BY_LOCID
--- a/qtinternetradio/ui/src/irfileviewservice.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irfileviewservice.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -15,17 +15,20 @@
 *
 */
 #include <xqserviceutil.h>
+#include <xqsharablefile.h>
 
 #include "irfileviewservice.h"
 #include "irplaylist.h"
 #include "irapplication.h"
 #include "irqsettings.h"
+#include "irqlogger.h"
 
 #define INTERNETRADIO_SERVICE_NAME "internet_radio_10_1.com.nokia.symbian.IFileView"
 
 IRFileViewService::IRFileViewService(IRApplication *aApplication) : XQServiceProvider(INTERNETRADIO_SERVICE_NAME),
 iApplication(aApplication), iPlayList(NULL)
 {
+    LOG_METHOD;
     if (XQServiceUtil::isService())
     {
         //Publishes all public slots on this object
@@ -45,6 +48,7 @@
 
 void IRFileViewService::view(const QString &aFileName)
 {
+    LOG_METHOD;
     if (NULL == iPlayList)
     {
         iPlayList = new IRPlayList;
@@ -69,7 +73,10 @@
     }
 }
 
-void IRFileViewService::view(const XQSharableFile &/*aSharableFile*/)
+void IRFileViewService::view(const XQSharableFile &aSharableFile)
 {
-
+    LOG_METHOD;
+    QString name = aSharableFile.fileName();
+    LOG(STRING2CHAR(name));
+    view(name);
 }
--- a/qtinternetradio/ui/src/irhistorymodel.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irhistorymodel.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -15,37 +15,58 @@
 *
 */
 
-#include <hbicon.h>
+#include <HbIcon>
+#include <QTimer>
 
-#include "irqsonghistoryinfo.h"
-#include "irqsonghistoryengine.h"
+#include "irqisdsdatastructure.h"
+#include "channelhistorywrapper.h"
+#include "urlinfowrapper.h"
 #include "irhistorymodel.h"
+#include "irqisdsclient.h"
+#include "irlogoprovider.h"
 
-IRHistoryModel::IRHistoryModel(QObject *aParent) : QAbstractListModel(aParent)
+IRHistoryModel::IRHistoryModel(QObject *aParent) : QAbstractListModel(aParent),
+    iHistoryEngine(NULL), iUrlInfoWrapper(NULL), iStationLogo(NULL),
+    iIsdsClient(NULL), iLogoProvider(NULL), iTimer(NULL)
 {
     iStationLogo = new HbIcon("qtg_large_internet_radio");
 
-    iHistoryEngine = IRQSongHistoryEngine::openInstance();
-    getAllList();
+    iHistoryEngine = new channelHistoryWrapper();
+    
+    iUrlInfoWrapper = new urlInfoWrapper();
+    
+    iIsdsClient = IRQIsdsClient::openInstance();
+    iLogoProvider = new IRLogoProvider(iIsdsClient);
+    
+    iTimer = new QTimer();
+    iTimer->setInterval(10);
+    connect(iTimer, SIGNAL(timeout()), this, SLOT(downloadNextLogo()));
+        
+    refreshModel();
 }
 
 IRHistoryModel::~IRHistoryModel()
 {
+    clearModel();
+	
     delete iStationLogo;
     iStationLogo = NULL;
-
-    clearAndDestroyLogos();
-
-    while (!iHistoryList.isEmpty())
+    
+    delete iHistoryEngine;
+    iHistoryEngine = NULL;
+    
+    delete iUrlInfoWrapper;
+    iUrlInfoWrapper = NULL;
+    
+	stopDownloadingLogo();
+	
+    delete iLogoProvider;
+    if (iIsdsClient)
     {
-        delete iHistoryList.takeFirst();
+        iIsdsClient->closeInstance();
+        iIsdsClient = NULL;
     }
-    
-    if (iHistoryEngine)
-    {
-        iHistoryEngine->closeInstance();
-        iHistoryEngine = NULL;
-    }
+    delete iTimer;    
 }
 
 int IRHistoryModel::rowCount(const QModelIndex &aParent) const
@@ -56,11 +77,17 @@
 
 QString IRHistoryModel::getImageUrl(int aRow) const
 {
-    return iHistoryList.at(aRow)->getImageUrl();
+    return iHistoryList.at(aRow)->imgUrl;
 }
 
 void IRHistoryModel::setLogo(HbIcon *aIcon, int aIndex)
 {
+    int elementCountNeedToAdd = aIndex + 1 - iLogos.size();
+    while (elementCountNeedToAdd > 0)
+    {
+        iLogos.append(NULL);
+        elementCountNeedToAdd--;
+    }
     iLogos[aIndex] = aIcon;
     emit dataChanged(index(aIndex), index(aIndex));
 }
@@ -82,10 +109,10 @@
         QVariantList list;
         
         int row = aIndex.row();
-        QString primaryText = iHistoryList.at(row)->getChannelName();
+        QString primaryText = iHistoryList.at(row)->nickName;
         list.append(primaryText);
         // fix bug #9888,if left descriptions as blank, only one line appears
-        QString tempDes = iHistoryList.at(row)->getChannelDesc();
+        QString tempDes = iHistoryList.at(row)->shortDesc;
         if (0 == tempDes.length())
         {
             tempDes = " ";
@@ -98,23 +125,29 @@
     {
         QVariantList list;
         int row = aIndex.row();
-        const HbIcon *icon = iLogos.value(row);
-        if (icon)
+        if(row < iLogos.size())
         {
-            list.append(*icon);
+            const HbIcon *icon = iLogos[row];
+            if (icon)
+            {
+                list.append(*icon);
+            }
+            else
+            {
+                list.append(*iStationLogo);
+            }            
         }
         else
         {
             list.append(*iStationLogo);
-        }
-        
+        }       
         return list;
     }
 
     return QVariant();
 }
 
-IRQSongHistoryInfo* IRHistoryModel::getHistoryInfo(int aIndex)
+IRQPreset* IRHistoryModel::getHistoryInfo(int aIndex)
 {
     if (aIndex >= 0 && aIndex < iHistoryList.count())
     {
@@ -124,54 +157,246 @@
     return NULL;
 }
 
-void IRHistoryModel::clearAllList()
+void IRHistoryModel::clearAllHistory()
 {
-    while (!iHistoryList.isEmpty())
+    if (iHistoryEngine->deleteChannelHistory())
     {
-        IRQSongHistoryInfo *firstItem = iHistoryList.takeFirst();
-        delete firstItem;
+        clearModel();
+        emit modelChanged();
     }
-    iHistoryEngine->clearAllHistory();
-    clearAndDestroyLogos();
-    emit modelChanged();
 }
 
 bool IRHistoryModel::checkHistoryUpdate()
 {
-    getAllList();    
+    refreshModel();    
     return true;
 }
 
 void IRHistoryModel::clearAndDestroyLogos()
 {
-    for (QMap<int, HbIcon*>::iterator it = iLogos.begin(); it != iLogos.end(); ++it)
+    int size = iLogos.size(); 
+    for (int i = 0; i < size; i ++)
     {
-        delete it.value();
+        delete iLogos[i];
+        iLogos[i] = NULL;
     }
-    
     iLogos.clear();
 }
 
-void IRHistoryModel::getAllList()
+void IRHistoryModel::refreshModel()
 {
-    iHistoryEngine->getAllHistory(iHistoryList);
-
+    clearModel();
+    
+    QList<QVariant*>* historySet = NULL;
+    historySet = iHistoryEngine->getChannelHistory();
+    
+    if (NULL == historySet)
+    {
+        return;
+    }
+    int dataSize = historySet->size();
+    for (int i = 0; i < dataSize; i++)
+    {
+        IRQPreset* preset = new IRQPreset();
+        preset->presetId = (*(historySet->at(i) + channelId)).toUInt();  
+        preset->name = (*(historySet->at(i) + channelName)).toString();
+        preset->nickName = (*(historySet->at(i) + channelNickName)).toString();
+        
+        preset->genreName = (*(historySet->at(i) + genreName)).toString();
+        preset->genreId = (*(historySet->at(i) + genreId)).toString();
+        preset->languageName = (*(historySet->at(i) + languageName)).toString();
+        preset->languageCode = (*(historySet->at(i) + languageCode)).toString(); 
+        
+        preset->countryName = (*(historySet->at(i) + countryName)).toString();
+        preset->countryCode = (*(historySet->at(i) + countryCode)).toString();
+        preset->description = (*(historySet->at(i) + description)).toString();
+        preset->shortDesc = (*(historySet->at(i) + shortDesc)).toString();
+        
+        preset->lastModified = (*(historySet->at(i) + lastModified)).toString();
+        preset->type = (*(historySet->at(i) + channelType)).toInt();
+        preset->musicStoreStatus = (*(historySet->at(i) + musicStoreStatus)).toString(); 
+        
+        preset->imgUrl = (*(historySet->at(i) + imgUrl)).toString();
+        
+        preset->advertisementUrl = (*(historySet->at(i) + advertisementUrl)).toString();
+        preset->advertisementInUse = (*(historySet->at(i) + advertisementInUse)).toString();
+       
+        columnMap selectCriteria;
+        selectCriteria.insert(channelId, QString::number(preset->presetId));
+        
+        QList<QVariant*>* urlInfoList = iUrlInfoWrapper->getUrlInfo(&selectCriteria, NULL, i, dataSize-1);        
+        if (NULL == urlInfoList)
+        {
+            delete preset;
+            preset = NULL;
+            continue;
+        }
+        int urlSize = urlInfoList->size();
+        for (int j = 0; j < urlSize; j++)
+        {
+            IRQChannelServerURL urlInfo;
+            urlInfo.serverName = preset->name;
+            urlInfo.url = (*(urlInfoList->at(j) + channelUrl_URL)).toString();
+            urlInfo.bitrate = (*(urlInfoList->at(j) + bitRate_URL)).toInt();
+            preset->insertChannelServer(urlInfo);
+        }        
+        
+        while(false == urlInfoList->isEmpty())
+        {
+            delete []urlInfoList->takeFirst();
+        }
+        urlInfoList->clear();
+        
+        delete urlInfoList;
+        urlInfoList = NULL;
+        
+        iHistoryList.append(preset);
+    }
+    
+    while(false == historySet->isEmpty())
+    {
+        delete []historySet->takeFirst();
+    }
+    historySet->clear();
+    
+    delete historySet;
+    historySet = NULL;
+    
+    updateIconIndexArray();
+    
     emit modelChanged();
 }
 
-bool IRHistoryModel::deleteOneItem(int aIndex)
+void IRHistoryModel::clearModel()
+{
+    while (!iHistoryList.isEmpty())
+    {
+        IRQPreset *firstItem = iHistoryList.takeFirst();
+        delete firstItem;
+    }
+	
+    clearAndDestroyLogos();	
+	updateIconIndexArray();    
+}    
+
+bool IRHistoryModel::deleteHistory(int aIndex)
 {
-    bool ret = iHistoryEngine->deleteOneItem(aIndex);
-     
-    if( !ret )
+    if (aIndex < 0 && aIndex >= iHistoryList.count())
+    {
+        return false;
+    }
+        
+    if (!iIconIndexArray.empty())
+    {
+        iIsdsClient->isdsLogoDownCancelTransaction();
+        iTimer->stop();
+    }
+            
+    columnMap selectCriteria;
+    selectCriteria.insert(channelId, QString::number(iHistoryList.at(aIndex)->presetId));
+         
+    if (!iHistoryEngine->deleteChannelHistory(&selectCriteria))
     {
         return false;                
     }
     
     beginRemoveRows(QModelIndex(), aIndex, aIndex);
+    
+    delete iHistoryList.at(aIndex);
     iHistoryList.removeAt(aIndex);
+    
+    if (aIndex < iLogos.size())
+    {
+        delete iLogos[aIndex];
+        iLogos.removeAt(aIndex);
+    }
+	
+    updateIconIndexArray();
+    
     endRemoveRows(); 
     
-    emit modelChanged();    
+    emit modelChanged();  
+    
+    if (!iIconIndexArray.empty())
+    {
+        iTimer->start();
+    }
+          
     return true;
 }
+
+void IRHistoryModel::startDownloadingLogo()
+{
+    iLogoProvider->activate(this, SLOT(logoData(const QByteArray&)));
+    iTimer->start();
+}
+
+void IRHistoryModel::stopDownloadingLogo()
+{
+    iIsdsClient->isdsLogoDownCancelTransaction();
+    iTimer->stop();
+    iIconIndexArray.clear();
+    iLogoProvider->deactivate();
+}
+
+void IRHistoryModel::downloadNextLogo()
+{
+    iTimer->stop();
+    int leftCount = iIconIndexArray.count();
+
+    if (0 != leftCount)
+    {
+         iLogoProvider->getLogo(iHistoryList.at(iIconIndexArray[0]));
+    }
+}
+
+void IRHistoryModel::logoData(const QByteArray &aLogoData)
+{
+    if (aLogoData.size() > 0)
+    {
+        QPixmap tempMap;
+        bool ret = tempMap.loadFromData((const unsigned char*)aLogoData.constData(), aLogoData.size());
+        if( ret )
+        {
+            QIcon convertIcon(tempMap);
+            HbIcon *hbIcon = new HbIcon(convertIcon);
+            int index = iIconIndexArray[0];
+            setLogo(hbIcon, index);  
+        }
+    }
+    
+    iIconIndexArray.removeAt(0);
+    int leftCount = iIconIndexArray.count();
+    if( leftCount > 0 )
+    {
+        iTimer->start();  
+    }
+}
+
+bool IRHistoryModel::isLogoReady(int aIndex) const
+{
+    int logoListCount = iLogos.count();
+    if (aIndex >= 0 
+        && aIndex < logoListCount)
+    {
+        return iLogos[aIndex] != NULL;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+void IRHistoryModel::updateIconIndexArray()
+{
+    iIconIndexArray.clear();
+    
+    for (int i = 0; i < rowCount(); ++i)
+    {
+        if (getImageUrl(i) != "" && !isLogoReady(i))
+        {
+            iIconIndexArray.append(i);
+        }
+    } 
+}
+
--- a/qtinternetradio/ui/src/irhistoryview.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irhistoryview.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -18,8 +18,6 @@
 #include <hbmenu.h>
 #include <hbaction.h>
 #include <hbnotificationdialog.h>
-#include <QPixmap>
-#include <QTimer>
 
 #include "irviewmanager.h"
 #include "irapplication.h"
@@ -28,16 +26,13 @@
 #include "irhistoryview.h"
 #include "irqisdsdatastructure.h"
 #include "irhistorymodel.h"
-#include "irqsonghistoryinfo.h"
 #include "irqnetworkcontroller.h" 
-#include "irqutility.h"
 #include "irqenums.h"
 #include "irqfavoritesdb.h"
 #include "irstationdetailsview.h"
 #include "iruidefines.h"
 
 
-const int KBitmapSize = 59;
 const QString KActionAddName("Add");
 const QString KActionDeleteName("Delete");
 const QString KActionDetailsName("Details");
@@ -48,8 +43,7 @@
  * Description : constructor
  */
 IRHistoryView::IRHistoryView(IRApplication *aApplication, TIRViewId aViewId) :
-    IrAbstractListViewBase(aApplication, aViewId), iClearHistoryAction(NULL),
-    iLogoPreset(NULL)
+    IrAbstractListViewBase(aApplication, aViewId), iClearHistoryAction(NULL)
 {   
     iModel = new IRHistoryModel(this);
     iListView->setModel(iModel);
@@ -61,14 +55,10 @@
     iClearHistoryAction = new HbAction(hbTrId("Clear list"), menu());    
 #endif
     
-    iConvertTimer = new QTimer(this);
-    iConvertTimer->setInterval(10);
-    
     connect(iClearHistoryAction, SIGNAL(triggered()), this, SLOT(popupClearHistoryConfirmMessageBox()));
     connect(iNetworkController, SIGNAL(networkRequestNotified(IRQNetworkEvent)),
     this, SLOT(networkRequestNotified(IRQNetworkEvent)));
     connect(iModel, SIGNAL(modelChanged()), this, SLOT(modelChanged()));
-    connect(iConvertTimer, SIGNAL(timeout()), this, SLOT(convertAnother()));
 }
 void IRHistoryView::popupClearHistoryConfirmMessageBox()
 {
@@ -83,8 +73,6 @@
  */
 IRHistoryView::~IRHistoryView()
 {
-    delete iLogoPreset;
-    iLogoPreset = NULL; 
 }
 
 /*
@@ -98,7 +86,6 @@
 {
     Q_UNUSED(aReason);
     TIRHandleResult ret = IrAbstractListViewBase::handleCommand(aCommand, aReason);
-    int leftCount = 0;
     
     switch (aCommand)
     {
@@ -109,33 +96,12 @@
         break;
                 
     case EIR_ViewCommand_ACTIVATED:
-        connect(iIsdsClient, SIGNAL(presetLogoDownloaded(IRQPreset* )),
-                this, SLOT(presetLogoDownload(IRQPreset* )));
-        connect(iIsdsClient, SIGNAL(presetLogoDownloadError()),
-                this, SLOT(presetLogoDownloadError()));
-        
-        leftCount = iIconIndexArray.count();
-        if( leftCount > 0 )
-        {
-            iConvertTimer->start();
-        }
+        iModel->startDownloadingLogo();
         ret = EIR_NoDefault;
         break;
 
     case EIR_ViewCommand_DEACTIVATE:
-
-        iModel->clearAndDestroyLogos();
-        iConvertTimer->stop();
-        iIsdsClient->isdsLogoDownCancelTransaction();     
-        
-        //iIconIndexArray must be cleared, because timer call back convertAnother() might be
-        //called after view is deactivated. In that case, iModel->getImgURL(aIndex); will crash
-        iIconIndexArray.clear();
-
-        disconnect(iIsdsClient, SIGNAL(presetLogoDownloaded(IRQPreset*)),
-                   this, SLOT(presetLogoDownload(IRQPreset* )));
-        disconnect(iIsdsClient, SIGNAL(presetLogoDownloadError()),
-                   this, SLOT(presetLogoDownloadError()));
+        iModel->stopDownloadingLogo();
         ret = EIR_NoDefault;
         break;
 
@@ -156,24 +122,21 @@
 void IRHistoryView::handleItemSelected()
 {
     int index = iListView->currentIndex().row();
-    IRQSongHistoryInfo *hisInfo = iModel->getHistoryInfo(index);
-    if (NULL == hisInfo)
+    IRQPreset *preset = iModel->getHistoryInfo(index);
+    if (NULL == preset)
     {
         return;
     }
 
-    IRQPreset preset;
-    convertStationHistory2Preset(*hisInfo, preset);
-    
-    if (hisInfo->getChannelType())
+    if (preset->type)
     {
         // channel from isds server
-        iPlayController->connectToChannel(&preset, EIRQHistoryIsds);
+        iPlayController->connectToChannel(preset, EIRQHistoryIsds);
     }
     else
     {
         // user defined channel
-        iPlayController->connectToChannel(&preset,EIRQHistoryAdhoc);
+        iPlayController->connectToChannel(preset,EIRQHistoryAdhoc);
     }
 }
 
@@ -183,7 +146,7 @@
     aNeedNetwork =  true;
     
     int index = iListView->currentIndex().row();
-    iPlayController->setConnectingStationName(iModel->getHistoryInfo(index)->getChannelName()); 
+    iPlayController->setConnectingStationName(iModel->getHistoryInfo(index)->nickName); 
 }
 #endif
 
@@ -220,19 +183,7 @@
     if (iModel->checkHistoryUpdate())
     {
         iListView->reset();
-        iListView->setCurrentIndex(iModel->index(0));
-
-        //because we get all the history refreshed, so clear the icon array.
-        iIconIndexArray.clear();
-
-        //initialize the iconindices
-        for (int i = 0; i < iModel->rowCount(); ++i)
-        {
-            if (iModel->getImageUrl(i) != "")
-            {
-                iIconIndexArray.append(i);
-            }
-        }  
+        iListView->setCurrentIndex(iModel->index(0)); 
     }
 }
 
@@ -247,10 +198,7 @@
     {
         if (aAction == dialog->actions().at(0))
         {
-            iIconIndexArray.clear();
-            iModel->clearAllList();
-            iConvertTimer->stop();
-            iIsdsClient->isdsLogoDownCancelTransaction();
+            iModel->clearAllHistory();
             iListView->reset();
         }
     }    
@@ -270,78 +218,6 @@
     }
 } 
 
-void IRHistoryView::startConvert(int aIndex)
-{
-    QString url = iModel->getImageUrl(aIndex);
-
-    IRQPreset tempPreset;
-    tempPreset.imgUrl = url;
-    tempPreset.type = IRQPreset::EIsds;
-    iIsdsClient->isdsLogoDownSendRequest(&tempPreset, 0, KBitmapSize, KBitmapSize);
-}
-
-//if the logo is downloaded ok
-void IRHistoryView::presetLogoDownload(IRQPreset* aPreset)
-{
-    if (NULL == aPreset)
-    {
-        presetLogoDownloadError();
-        return;
-    }
-
- 
-    delete iLogoPreset;             
-    iLogoPreset = aPreset;
-     
-    if (iLogoPreset->logoData.size() > 0)
-    {
-        QPixmap tempMap;
-        bool ret = tempMap.loadFromData((const unsigned char*)iLogoPreset->logoData.constData(), iLogoPreset->logoData.size());
-        if( ret )
-        {
-            QIcon convertIcon(tempMap);
-            HbIcon *hbIcon = new HbIcon(convertIcon);
-            int index = iIconIndexArray[0];
-            iModel->setLogo(hbIcon, index);
-            iIconIndexArray.removeAt(0);
-            int leftCount = iIconIndexArray.count();
-            if( leftCount > 0 )
-            {
-                iConvertTimer->start();  
-            }
-            return;
-        }           
-    } 
- 
-    presetLogoDownloadError();
-}
-
- 
-
-//if the logo download fails
-void IRHistoryView::presetLogoDownloadError()
-{
-    // if the logo download fails, try to download the next
-    iIconIndexArray.removeAt(0);
-    int leftCount = 0;
-    leftCount = iIconIndexArray.count();
-    if( leftCount > 0 )
-    {
-        iConvertTimer->start();
-    }    
-}
-
-void IRHistoryView::convertAnother()
-{     
-    iConvertTimer->stop();
-    int leftCount = iIconIndexArray.count();
-
-    if (0 != leftCount)
-    {
-        startConvert(iIconIndexArray[0]);
-    }
-}
-
 void IRHistoryView::modelChanged()
 {
 #ifdef SUBTITLE_STR_BY_LOCID
@@ -376,10 +252,8 @@
 void IRHistoryView::addContextAction()
 {        
     QModelIndex current = iListView->currentIndex();     
-    IRQSongHistoryInfo * currentInfo = iModel->getHistoryInfo(current.row());
-    IRQPreset preset;
-    convertStationHistory2Preset(*currentInfo, preset);   
-    int retValue = iFavorites->addPreset(preset);
+    IRQPreset * preset = iModel->getHistoryInfo(current.row());
+    int retValue = iFavorites->addPreset(*preset);
 
     HbNotificationDialog *add2FavNote = new HbNotificationDialog();
     add2FavNote->setModal(true);
@@ -427,7 +301,7 @@
 void IRHistoryView::deleteContextAction()
 {
     int current = iListView->currentIndex().row();     
-    bool ret = iModel->deleteOneItem(current);     
+    bool ret = iModel->deleteHistory(current);     
     if( !ret )
 	  {
 #ifdef SUBTITLE_STR_BY_LOCID
@@ -440,13 +314,10 @@
 void IRHistoryView::detailsContextAction()
 {   
     int selectedItemIndex = iListView->currentIndex().row();
-    IRQSongHistoryInfo *channelDetailInfo = iModel->getHistoryInfo(selectedItemIndex);
-
-    IRQPreset channelPreset;
-    convertStationHistory2Preset(*channelDetailInfo, channelPreset);
+    IRQPreset *channelPreset = iModel->getHistoryInfo(selectedItemIndex);
 
     IRStationDetailsView *stationDetailsView = static_cast<IRStationDetailsView*>(getViewManager()->getView(EIRView_StationDetailsView, true));    
-    stationDetailsView->setDetails(&channelPreset);
+    stationDetailsView->setDetails(channelPreset);
 
     getViewManager()->activateView(EIRView_StationDetailsView);
 }
@@ -484,25 +355,6 @@
     contextMenu->open();
 }
 
-void IRHistoryView::convertStationHistory2Preset(const IRQSongHistoryInfo& aHistoryInfo, IRQPreset& aPreset)
-{
-    IRQChannelServerURL url;
-    url.serverName = aHistoryInfo.getChannelName();
-    url.url = aHistoryInfo.getStreamUrl();
-    url.bitrate = aHistoryInfo.getBitrate();
-    aPreset.name = aHistoryInfo.getChannelName();
-    aPreset.insertChannelServer(url);
-    aPreset.type = aHistoryInfo.getChannelType();
-    aPreset.presetId = aHistoryInfo.getChannelId();
-    aPreset.shortDesc = aHistoryInfo.getChannelDesc();  
-    aPreset.imgUrl = aHistoryInfo.getImageUrl();
-    aPreset.genreName = aHistoryInfo.getGenreName();
-    aPreset.countryName = aHistoryInfo.getCountryName();
-    aPreset.languageName = aHistoryInfo.getLanguageName();
-    aPreset.description = aHistoryInfo.getChannelDesc();
-    aPreset.musicStoreStatus = aHistoryInfo.getMusicStoreStatus();
-}
-
  
  
  
--- a/qtinternetradio/ui/src/irlastplayedstationinfo.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irlastplayedstationinfo.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -64,7 +64,7 @@
     
 #ifdef HS_WIDGET_ENABLED	
     QSettings settings(KIrSettingOrganization, KIrSettingApplication);
-    settings.setValue(KIrSettingStationName,iLastPlayedStation->name);
+    settings.setValue(KIrSettingStationName,iLastPlayedStation->nickName);
 #endif
     
     QFile file(KFileName);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/ui/src/irlogoprovider.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -0,0 +1,123 @@
+/*
+* Copyright (c) 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:
+*
+*/
+#include <QVariant>
+
+#include "irlogoprovider.h"
+#include "imgwrapper.h"
+#include "irqisdsclient.h"
+#include "irqisdsdatastructure.h"
+#include "iruidefines.h"
+
+
+IRLogoProvider::IRLogoProvider(IRQIsdsClient *aIsdsClient) : iIsdsClient(aIsdsClient)
+{
+    
+}
+
+IRLogoProvider::~IRLogoProvider()
+{
+}
+
+void IRLogoProvider::getLogo(IRQPreset *aPreset)
+{
+    imgWrapper wrapper;
+    columnMap map;
+    
+    map.insert(channelId, QString::number(aPreset->presetId));
+    map.insert(imgUrl, aPreset->imgUrl);
+    QList<QVariant*> *dataSet = wrapper.getImg(&map);
+    if (dataSet)
+    {
+        //logo data has been saved into database
+        if (dataSet->count() > 0)
+        {
+            QVariant *row = dataSet->at(0);
+            QByteArray logo = row[sLogoGet].toByteArray();
+            if (logo.size() > 0)
+            {
+                emit logoData(logo);
+            }
+            else
+            {
+                //logo data hasn't been saved into database, call isds client to get it
+                iIsdsClient->isdsLogoDownSendRequest(aPreset, 0, KBitmapSize, KBitmapSize); 
+            }
+        }
+        else
+        {
+            //logo data hasn't been saved into database, call isds client to get it
+            iIsdsClient->isdsLogoDownSendRequest(aPreset, 0, KBitmapSize, KBitmapSize); 
+        }
+        
+        while (!dataSet->isEmpty())
+        {
+            delete []dataSet->takeFirst();
+        }
+        delete dataSet;
+    }
+    else
+    {
+        //logo data hasn't been saved into database, call isds client to get it
+        iIsdsClient->isdsLogoDownSendRequest(aPreset, 0, KBitmapSize, KBitmapSize); 
+    }
+}
+
+void IRLogoProvider::activate(const QObject *aReceiver, const char *aFunc)
+{
+    connect(iIsdsClient, SIGNAL(presetLogoDownloaded(IRQPreset* )),
+            this, SLOT(presetLogoDownload(IRQPreset* )));
+    connect(iIsdsClient, SIGNAL(presetLogoDownloadError()),
+            this, SLOT(presetLogoDownloadError()));
+    connect(this, SIGNAL(logoData(const QByteArray&)), aReceiver, aFunc);
+}
+
+void IRLogoProvider::deactivate()
+{
+    disconnect(iIsdsClient, SIGNAL(presetLogoDownloaded(IRQPreset*)),
+               this, SLOT(presetLogoDownload(IRQPreset* )));
+    disconnect(iIsdsClient, SIGNAL(presetLogoDownloadError()),
+               this, SLOT(presetLogoDownloadError()));
+    disconnect(SIGNAL(logoData(const QByteArray&)));
+}
+
+void IRLogoProvider::presetLogoDownload(IRQPreset* aPreset)
+{
+    if (NULL == aPreset)
+    {
+        presetLogoDownloadError();
+        return;
+    }
+    
+    //logo data is available, save it to database
+    imgWrapper wrapper;
+    columnMap rowData;
+    rowData.insert(imgUrl, aPreset->imgUrl);
+    
+    logoMap logo;
+    logo.insert(bLogo, QByteArray());
+    logo.insert(sLogo, aPreset->logoData);
+    bool ret = wrapper.updateImg(&rowData, aPreset->presetId, &logo);
+    
+    emit logoData(aPreset->logoData);
+    delete aPreset;
+}
+
+void IRLogoProvider::presetLogoDownloadError()
+{
+    QByteArray data;
+    emit logoData(data);
+}
--- a/qtinternetradio/ui/src/irnowplayingview.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irnowplayingview.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -26,11 +26,6 @@
 #include <HbColorScheme>
 #include <HbEvent>
 
-#ifdef NOWPLAYING_VIEW_OPTION_B
-#include <hbframedrawer.h>
-#include <hbframeitem.h>
-#endif
-
 #include "irviewmanager.h"
 #include "irapplication.h"
 #include "irplaycontroller.h"
@@ -70,13 +65,11 @@
 static const QString KSongColor("qtc_lcd_content_normal");
 static const QString KStationColor("qtc_lcd_content_normal");
 
-#ifdef NOWPLAYING_VIEW_OPTION_B
-static const QString KLcdGraphics("qtg_fr_lcd");
-#endif
-
 #ifdef STATISTIC_REPORT_TEST_ENABLED    
-static const int KDummySongRecognitionUid = 0xE4EF7D71;
-static const int KDummyMusicStoreUid = 0xE609761B;
+static const int KDummySongRecognitionUid   = 0xE4EF7D71;
+static const int KIRMusicStoreUid           = 0xE609761B;
+#else
+static const int KIRMusicStoreUid           = 0;
 #endif
 
 static void saveStationLogo(const QPixmap &aStationLogo);
@@ -255,17 +248,7 @@
     iSongNameLabel->setTextColor(HbColorScheme::color(KSongColor));
     iSongNameMarquee->setTextColor(HbColorScheme::color(KSongColor));
     iStationName->setTextColor(HbColorScheme::color(KStationColor));
-    
-#ifdef NOWPLAYING_VIEW_OPTION_B
-	HbWidget * viewContainer = qobject_cast<HbWidget *> (iLoader.findObject(VIEW_CONTAINER));
-    HbFrameDrawer* drawer = new HbFrameDrawer(KLcdGraphics, HbFrameDrawer::NinePieces);
-    HbFrameItem* backgroundItem = new HbFrameItem(drawer, viewContainer);
-    if (backgroundItem)
-    {
-        viewContainer->setBackgroundItem(backgroundItem);
-    }
-#endif
-    
+ 
 #ifdef ADV_ENABLED
     iAdvImage = qobject_cast<HbLabel *> (iLoader.findObject( NOW_PLAYING_VIEW_OBJECT_ADVERTISEMENT_IMAGE));
     iAdvImage->setIcon(HbIcon(KDefaultStationLogo));
@@ -285,7 +268,7 @@
     
     if(iPlayController->getNowPlayingPreset())
     {
-        iStationName->setPlainText(iPlayController->getNowPlayingPreset()->name);
+        iStationName->setPlainText(iPlayController->getNowPlayingPreset()->nickName);
     }
     loadStationLogo();
 }
@@ -481,7 +464,7 @@
     if (playList && 1 == playList->getNumberOfEntries())
     {
         IRQPreset *preset = playList->getPresetForEntry(0);
-        iStationName->setPlainText(preset->name);
+        iStationName->setPlainText(preset->nickName);
         iFindinNmsAllowed = (0 == preset->musicStoreStatus.compare("yes",Qt::CaseInsensitive));
 #ifdef HS_WIDGET_ENABLED            
         iPlayController->reloadNowplayingPreset(preset,false,EIRQAdhocExternal);
@@ -503,7 +486,7 @@
             IRQPreset *lastPreset = lastPlayedStationInfo->getLastPlayedStation();
             if (lastPreset)
             {
-                iStationName->setPlainText(lastPreset->name); 
+                iStationName->setPlainText(lastPreset->nickName); 
                 iFindinNmsAllowed = (0 == lastPreset->musicStoreStatus.compare("yes",Qt::CaseInsensitive));
             }
             else
@@ -748,53 +731,59 @@
 void IRNowPlayingView::handleMusicStoreAction()
 {
     LOG_METHOD;
-   
-    if(!iFindinNmsAllowed)
-    {
-#ifdef STATISTIC_REPORT_TEST_ENABLED    
-    if(IRQUtility::launchAppByUid(KDummyMusicStoreUid))
+
+    if (!IRQUtility::findAppByUid(KIRMusicStoreUid))  // if no music store, coming soon is shown.
     {
-        iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsLaunch,iPlayController->getNowPlayingPreset()->presetId);
-    }
-#else // STATISTIC_REPORT_TEST_ENABLED
 #ifdef SUBTITLE_STR_BY_LOCID
-        popupNote(hbTrId("txt_irad_info_not_allowed_by_this_station"), HbMessageBox::MessageTypeInformation);
-#else  // SUBTITLE_STR_BY_LOCID
-        popupNote(hbTrId("Not allowed by station"), HbMessageBox::MessageTypeInformation);        
-#endif // SUBTITLE_STR_BY_LOCID
-#endif // STATISTIC_REPORT_TEST_ENABLED        
-        return;        
+        popupNote(hbTrId("txt_irad_info_music_store_not_available"), HbMessageBox::MessageTypeInformation);
+#else
+        popupNote(hbTrId("Service Coming Soon"), HbMessageBox::MessageTypeInformation);    
+#endif        
+        return;
     }
     
-    if(!iSongNameAvailable)
-    {
-#ifdef STATISTIC_REPORT_TEST_ENABLED    
-    if(IRQUtility::launchAppByUid(KDummyMusicStoreUid))
-    {
-        iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsLaunch,iPlayController->getNowPlayingPreset()->presetId);
+    bool launchResult = false;
+    if (iFindinNmsAllowed && iSongNameAvailable)
+    {       
+        // TODO : launch music store with search result page
+        launchResult = IRQUtility::launchAppByUid(KIRMusicStoreUid);
+        if (launchResult)        
+        {
+            if (iPlayController->getNowPlayingPreset()->type)
+            {
+                iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsFind,iPlayController->getNowPlayingPreset()->presetId);
+            }
+            else
+            {            
+                iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsFind,0);
+            }
+        }
     }
-#else // STATISTIC_REPORT_TEST_ENABLED        
-#ifdef SUBTITLE_STR_BY_LOCID
-        popupNote(hbTrId("txt_irad_info_no_song_info"), HbMessageBox::MessageTypeInformation);
-#else // SUBTITLE_STR_BY_LOCID
-        popupNote(hbTrId("No song info"), HbMessageBox::MessageTypeInformation);        
-#endif // SUBTITLE_STR_BY_LOCID
-#endif // STATISTIC_REPORT_TEST_ENABLED        
-        return;        
+    else
+    {
+        // TODO : lunch music store with homepage  
+        launchResult = IRQUtility::launchAppByUid(KIRMusicStoreUid);
+        if (launchResult)        
+        {
+            if (iPlayController->getNowPlayingPreset()->type)
+            {
+                iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsLaunch,iPlayController->getNowPlayingPreset()->presetId);
+            }
+            else
+            {            
+                iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsLaunch,0);
+            }
+        }        
     }
     
-#ifdef STATISTIC_REPORT_TEST_ENABLED    
-    if(IRQUtility::launchAppByUid(KDummyMusicStoreUid))
-    {
-        iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsFind,iPlayController->getNowPlayingPreset()->presetId);
+    if (!launchResult)
+    {        
+#ifdef SUBTITLE_STR_BY_LOCID
+        popupNote(hbTrId("txt_irad_info_music_store_not_available"), HbMessageBox::MessageTypeInformation);
+#else
+        popupNote(hbTrId("Music store not ready"), HbMessageBox::MessageTypeInformation);    
+#endif
     }
-#else // STATISTIC_REPORT_TEST_ENABLED     
-#ifdef SUBTITLE_STR_BY_LOCID
-    popupNote(hbTrId("txt_irad_info_music_store_not_available"), HbMessageBox::MessageTypeInformation);
-#else  // SUBTITLE_STR_BY_LOCID
-    popupNote(hbTrId("Music store not ready"), HbMessageBox::MessageTypeInformation);    
-#endif // SUBTITLE_STR_BY_LOCID
-#endif // STATISTIC_REPORT_TEST_ENABLED 
 }
 
 void IRNowPlayingView::handleIdentifySongAction()
--- a/qtinternetradio/ui/src/iropenwebaddressview.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/iropenwebaddressview.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -38,7 +38,7 @@
 #include "irqenums.h"
 #include "iruidefines.h"
 #include "irqsettings.h"
-static const int MAX_URL_CHARACTOR_NUMBER = 255;
+
 static const int MAX_DATA_FORM_NUMBER_ROWS = 4;
 static const int MIN_DATA_FORM_NUMBER_ROWS = 1;
 
@@ -101,7 +101,7 @@
     connect(iPlayButton, SIGNAL(released()), this, SLOT(play()));
     HbStyleLoader::registerFilePath(OPEN_WEB_ADDRESS_VIEW_PUSH_BUTTON_CSS);
     HbStyleLoader::registerFilePath(OPEN_WEB_ADDRESS_VIEW_PUSH_BUTTON_WIDGETML);
-
+    
     connect(iNetworkController, SIGNAL(networkRequestNotified(IRQNetworkEvent)),
     this, SLOT(networkRequestNotified(IRQNetworkEvent)));
 
@@ -115,8 +115,8 @@
 {
     if (iSettings)
     {
-        iSettings->setManuallyInputtedStationUrl(iUrl->contentWidgetData(QString("text")).toString());
-        iSettings->setManuallyInputtedStationName(iName->contentWidgetData(QString("text")).toString());    
+        iSettings->setManuallyInputtedStationUrl(iUrlEditorPtr->text());
+        iSettings->setManuallyInputtedStationName(iNameEditorPtr->text());    
         iSettings->closeInstance();
     }
 }
@@ -196,13 +196,13 @@
  */
 void IROpenWebAddressView::initUrlAndName()
 {
-    QString temp = iUrl->contentWidgetData(QString("text")).toString();
+    QString temp = iUrlEditorPtr->text();
     if (0 == temp.size())
     {
         iUrl->setContentWidgetData(QString("text"), QString("http://"));
     }
 
-    temp = iName->contentWidgetData(QString("text")).toString();
+    temp = iNameEditorPtr->text();
     if (0 == temp.size())
     {
 #ifdef SUBTITLE_STR_BY_LOCID
@@ -223,7 +223,7 @@
 #else
     iUrl = new HbDataFormModelItem(HbDataFormModelItem::TextItem, hbTrId("Station address"));
 #endif     
-    iUrl->setContentWidgetData("maxLength",MAX_URL_CHARACTOR_NUMBER);
+    iUrl->setContentWidgetData("maxLength", KMaxLineEditLength);
     if (Qt::Horizontal == getViewManager()->orientation())
     {
         iUrl->setContentWidgetData("maxRows", MIN_DATA_FORM_NUMBER_ROWS);
@@ -237,7 +237,7 @@
     iName = new HbDataFormModelItem(
             HbDataFormModelItem::TextItem, hbTrId("Station name"));    
 #endif
-    iName->setContentWidgetData("maxLength", MAX_URL_CHARACTOR_NUMBER);
+    iName->setContentWidgetData("maxLength", KMaxLineEditLength);
     if (Qt::Horizontal == getViewManager()->orientation())
     {
         iName->setContentWidgetData("maxRows", MIN_DATA_FORM_NUMBER_ROWS);
@@ -313,7 +313,7 @@
 {
     IRQChannelServerURL server;
 
-    server.url = iUrl->contentWidgetData(QString("text")).toString();
+    server.url = iUrlEditorPtr->text();
     server.url.remove(" ");
 
     // check the URL
@@ -329,7 +329,7 @@
 
     // Give it an initial value, supposed to be 32 kbps.
     server.bitrate = 32;
-    server.serverName = iName->contentWidgetData(QString("text")).toString();
+    server.serverName = iNameEditorPtr->text();
     if (0 == server.serverName.size())
     {
 #ifdef SUBTITLE_STR_BY_LOCID
@@ -341,8 +341,7 @@
 
     aPreset.insertChannelServer(server);
     aPreset.name = server.serverName;
-    aPreset.description = hbTrId("txt_irad_info_added_station_description");
-    aPreset.shortDesc = aPreset.description;
+    aPreset.description = "";
     aPreset.type = 0;     
     aPreset.presetId = 0;
     aPreset.uniqID = 0;
@@ -395,9 +394,9 @@
         && event->type() == QEvent::FocusIn )
     {
 #ifdef SUBTITLE_STR_BY_LOCID
-        if(hbTrId("txt_irad_info_unnamed_station") == iName->contentWidgetData(QString("text")).toString())
+        if(hbTrId("txt_irad_info_unnamed_station") == iNameEditorPtr->text())
 #else
-        if(hbTrId("Unnamed station") == iName->contentWidgetData(QString("text")).toString())            
+        if(hbTrId("Unnamed station") == iNameEditorPtr->text())            
 #endif
         {
             iName->setContentWidgetData(QString("text"), QString(""));
--- a/qtinternetradio/ui/src/irplaycontroller.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irplaycontroller.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -16,7 +16,7 @@
  */
 #include <hbmessagebox.h>
 #include <QTimer>
-#ifdef Q_CC_NOKIAX86
+#ifdef PLATSIM_DEBUG_CONF
 #include <QFile>
 #include <QTextStream>
 #endif
@@ -30,19 +30,22 @@
 #include "irviewmanager.h"
 #include "irqisdsdatastructure.h"
 #include "irlastplayedstationinfo.h"
-#include "irqnetworkcontroller.h" 
-#include "irqsonghistoryengine.h"
+#include "irqnetworkcontroller.h"  
 #include "irqmetadata.h"
 #include "irqsettings.h"
 #include "irqfavoritesdb.h"
 #include "irqstatisticsreporter.h"
 #include "irenummapper.h" 
 #include "irqlogger.h"
+#include "irdbwrapper.h"
+#include "urlinfowrapper.h"
+#include "channelhistorywrapper.h"
+#include "songhistorywrapper.h"
 #ifdef HS_WIDGET_ENABLED
 #include "irservicedef.h"
 #endif
 
-#ifdef Q_CC_NOKIAX86
+#ifdef PLATSIM_DEBUG_CONF
 void getRadioServerAddress(QString & aUrl);
 #endif
 
@@ -103,8 +106,7 @@
     iConnectedFromBackup(EIRQIsds),
     iStationLogoAvailable(false),
     iStationLogoAvailableBackup(false),
-    iMetaData(NULL),
-    iSongHistoryEngine(NULL),
+    iMetaData(NULL),   
     iPlayState(EIdle),
     iResuming(false),
     iTryingBitrate(0),
@@ -112,7 +114,10 @@
     iRealBitrate(0),
     iLastError(EIRQErrorNone),
     iStopReason(EIRQUnknownTermination),
-    iErrorNote(NULL)
+    iErrorNote(NULL),
+    iDbWrapper(NULL),
+    iHistoryWrapper(NULL),
+    iUrlInfoWrapper(NULL)
 {
     // use the last played station to initiliaze the backup value.
     // can regard the player is bootup, and initilize its LCD screen with last played station info if available.
@@ -141,11 +146,11 @@
     
     connectSignalSlot(); 
     iStatisticsReporter = IRQStatisticsReporter::openInstance();
+ 
 	
-	if( !iApplication->isEmbeddedInstance() )
-    {
-        iSongHistoryEngine = IRQSongHistoryEngine::openInstance();
-    }
+    iDbWrapper = new IRDBWrapper();
+    iHistoryWrapper = new channelHistoryWrapper();
+    iUrlInfoWrapper = new urlInfoWrapper();
 }
 
 /*
@@ -169,17 +174,21 @@
     iErrorNote = NULL;
 
     saveStationLogoFlag(iStationLogoAvailable);
-	
-    if (iSongHistoryEngine)
-    {
-        iSongHistoryEngine->closeInstance();
-        iSongHistoryEngine = NULL;
-    }
+ 
     
     if (iStatisticsReporter)
     {
         iStatisticsReporter->closeInstance();
     }
+    
+    delete iDbWrapper;
+    iDbWrapper = NULL;
+    
+    delete iHistoryWrapper;
+    iHistoryWrapper = NULL;
+    
+    delete iUrlInfoWrapper;
+    iUrlInfoWrapper = NULL;
 }
 
 /*
@@ -249,7 +258,7 @@
     if (iUrlArray)
     {
         firstTryUrl = iUrlArray->at(0);
-#ifdef Q_CC_NOKIAX86
+#ifdef PLATSIM_DEBUG_CONF
         firstTryUrl = "http://172.28.205.171:8000";
         getRadioServerAddress(firstTryUrl);
 #endif
@@ -265,15 +274,30 @@
 void IRPlayController::resume()
 {
     qDebug("IRPlayController::resume(), Entering");
-    if (iMediaPlayer && (EStopped == iPlayState))
+    if (iMediaPlayer && (EStopped == iPlayState) && iNowPlayingPreset)
     {
         iResuming = true;
-        
-        if (iLastPlayedUrl != "")
+
+		//Check whether quality settings have been changed.
+        QString firstTryUrl = getFirstTryUrl(iNowPlayingPreset);
+        if (firstTryUrl.isEmpty())
         {
-            qDebug("IRPlayController::resume(), iLastPlayedUrl is not empty, doPlay()");
+            return;
+        }
+		else if( firstTryUrl==iLastPlayedUrl )
+		{
+			qDebug("IRPlayController::resume(), play by iLastPlayedUrl, doPlay()");
+		
             doPlay(iLastPlayedUrl);
-        }
+		}
+		else
+		{
+			iLastPlayedUrlBackup = iLastPlayedUrl;
+			iLastPlayedUrl = firstTryUrl;
+			
+			qDebug("IRPlayController::resume(), play by new url, doPlay()");
+			doPlay(firstTryUrl);
+		}       
     }
     qDebug("IRPlayController::resume(), Exiting");
 }
@@ -399,6 +423,23 @@
     }
 }
 
+void IRPlayController::saveSong2DB(const IRQMetaData& aMetaData, const IRQPreset& aPreset)
+{
+    if( iApplication->isEmbeddedInstance() ) 
+    {
+        return;
+    }
+    
+    songHistoryWrapper songs;    
+    columnMap map;
+    
+    map.insert(channelId, QString::number(aPreset.presetId));
+    map.insert(songName, aMetaData.getSongName());
+    map.insert(artistName, aMetaData.getArtistName());
+    
+    songs.putSongHistory(&map);     
+}
+
 /*
  * Description : get current volume setting from media player or
  *               central repository
@@ -586,8 +627,6 @@
         if (iTryingBitrate != iRealBitrate)
         {
             iNowPlayingPreset->setUrlBitrate(0,iRealBitrate);
-            //when bitrate is available, it should be written to favorites db
-            iApplication->getFavoritesDB()->replaceUserDefinedPreset(*iNowPlayingPreset);
             iTryingBitrate = iRealBitrate;
         }
     }
@@ -698,32 +737,29 @@
         iPlayState = EPlaying;
         iApplication->stopLoadingAnimation();
 
-        iApplication->getViewManager()->activateView(EIRView_PlayingView);
+        iApplication->getViewManager()->activateView(EIRView_PlayingView);  
+
+        emit playingStarted();
+        
+        // Save the station information to database iNowPlayingPreset
+        saveStation2DB(iNowPlayingPreset);
         if( !iApplication->isEmbeddedInstance() )
         {
             //update last played station
             IRLastPlayedStationInfo *lastPlayedStationInfo = iApplication->getLastPlayedStationInfo();
             lastPlayedStationInfo->updateLastPlayedStation(iNowPlayingPreset,iConnectedFrom);
-            lastPlayedStationInfo->commitLastPlayedStation();
-        }        
-
-        //increase the played times of current preset
-        iApplication->getFavoritesDB()->increasePlayedTimes(*iNowPlayingPreset);
-
-        emit playingStarted();
-
-        // if the metadata is available, show it.
-        emit metaDataAvailable(iMetaData);
-        
-        if( !iApplication->isEmbeddedInstance() )
-        {
-            // Save the station information to database
-            IRQMetaData tmpMetaData;
-            tmpMetaData.setBitrate(iRealBitrate);
-            tmpMetaData.setStreamUrl(iLastPlayedUrl);
-            iSongHistoryEngine->handleMetaDataReceived(tmpMetaData, *iNowPlayingPreset);            
+            lastPlayedStationInfo->commitLastPlayedStation();         
         }
 
+        // if the metadata is available, show it. here, preset->nickName is already available
+        emit metaDataAvailable(iMetaData);
+
+        //save the metadata to the db
+        if( NULL != iMetaData )
+        {
+            saveSong2DB(*iMetaData,*iNowPlayingPreset);            
+        }
+        
         // open stereo defaultly
         iMediaPlayer->enableStereoEffect();
     }
@@ -745,21 +781,16 @@
  */
 void IRPlayController::handleMetaDataReceived(IRQMetaData& aIRmetaData)
 {
-    iMetaData = &aIRmetaData;
-    //TO DO: there maybe a potential bug when the user cancel the play, 	
-    if ((aIRmetaData.getSongName().trimmed() != "")
-            || (aIRmetaData.getArtistName().trimmed() != ""))
-    {
-        //when we are play the musicplayer and get the metadata from lower layer, we save the 
-        //song's metadata into the db.  After we save it to db, we emit the next signal to notify the UI         
-        iSongHistoryEngine->handleSongMetaDataReceived(*iMetaData,
-                *iNowPlayingPreset);  
-    }   
+    //when we get metadata, we just update the member but not save to song history db for 
+    //if the preset is user-defined, we do not get the preset ID in current.
+    //just after the 100 percent progress, the play state will be playing
+    iMetaData = &aIRmetaData;    
 
     if (EPlaying == iPlayState)
     {
         // This signal will cause addBanner() work. Sometimes the metadata will come before
         // the buffering is 100%, we need to avoid to show playing banner before 100% buffering.
+        saveSong2DB(*iMetaData, *iNowPlayingPreset);  
         emit metaDataAvailable(iMetaData);        
     }    
 }
@@ -927,25 +958,120 @@
 void IRPlayController::startSession()
 {
 	iGetServerResult = false;
-
-    int channelId = 0;
-    if(iNowPlayingPreset)
-    {
-        channelId = iNowPlayingPreset->presetId;
-    }
 	      
     if(iStatisticsReporter)
     {
-        iStatisticsReporter->sessionStarted(channelId,MAP_TO_ENGINE_ConnectedFrom(iConnectedFrom));
+        if (iNowPlayingPreset && iNowPlayingPreset->type) // for isds station, use the channel id
+        {
+            iStatisticsReporter->sessionStarted(iNowPlayingPreset->presetId,MAP_TO_ENGINE_ConnectedFrom(iConnectedFrom));
+        }
+        else // for user defined station, use 0 as channel id instead of the id generated from IRDB
+        {
+            iStatisticsReporter->sessionStarted(0,MAP_TO_ENGINE_ConnectedFrom(iConnectedFrom));
+        }
     }
 }
 
-#ifdef _DEBUG
-int IRPlayController::bitrateTrying() const
+void IRPlayController::saveStation2DB(IRQPreset *aPreset)
 {
-    return iTryingBitrate;
+    if (NULL == aPreset)
+    {
+        return;
+    }
+    
+    columnMap stationInfoSet;
+    
+    stationInfoSet.insert(channelName,aPreset->name);
+    
+    if (aPreset->nickName.isEmpty())
+    {
+        aPreset->nickName = aPreset->name;
+    }
+    stationInfoSet.insert(channelNickName,aPreset->nickName);
+
+    if (aPreset->type) // isds station
+    {
+        stationInfoSet.insert(channelId, QString::number(aPreset->presetId));
+    }
+    else
+    {
+        // for user defined station, should query its existence at first
+        // if not, since putHistoryInfo() does NOT allow url info, same user defined station
+        // can only have name and nick name info, which will leads to two different channel id generated.
+        QString userDefinedUrl;
+        if (EIRQErrorNone == aPreset->getChannelUrlAt(0,userDefinedUrl))
+        {
+            stationInfoSet.insert(channelUrl,userDefinedUrl);
+            stationInfoSet.insert(channelType,QString::number(aPreset->type));
+            QList<uint> *channelIdList = iDbWrapper->getChannelId(&stationInfoSet);
+            if (channelIdList && (channelIdList->count() > 0))
+            {
+                aPreset->presetId = channelIdList->at(0);
+                stationInfoSet.insert(channelId, QString::number(channelIdList->at(0)));
+                
+            }
+            if (channelIdList)
+            {
+                channelIdList->clear();
+                delete channelIdList;
+                channelIdList = NULL;
+            }
+            stationInfoSet.remove(channelType);
+            stationInfoSet.remove(channelUrl);
+        }
+    }
+
+    stationInfoSet.insert(genreName, aPreset->genreName);
+    stationInfoSet.insert(genreId, aPreset->genreId);
+    stationInfoSet.insert(languageName, aPreset->languageName);
+    stationInfoSet.insert(languageCode, aPreset->languageCode);
+    
+    stationInfoSet.insert(countryName, aPreset->countryName);
+    stationInfoSet.insert(countryCode, aPreset->countryCode);
+    stationInfoSet.insert(description, aPreset->description);
+    stationInfoSet.insert(shortDesc, aPreset->shortDesc);
+    
+    stationInfoSet.insert(lastModified, aPreset->lastModified);
+    stationInfoSet.insert(musicStoreStatus, aPreset->musicStoreStatus);
+    
+    stationInfoSet.insert(imgUrl, aPreset->imgUrl);
+    
+    stationInfoSet.insert(advertisementUrl, aPreset->advertisementUrl);
+    stationInfoSet.insert(advertisementInUse, aPreset->advertisementInUse);
+
+    // should remove url and channel type before put, otherwise false will be returned
+    stationInfoSet.remove(channelUrl);
+    stationInfoSet.remove(channelType);
+    
+    bool ret = false;
+    if (aPreset->type) // isds station
+    {
+        ret = iHistoryWrapper->putChannelHistory(&stationInfoSet);
+    }
+    else // fetch the channel id for user defined station, generated by DB
+    {
+        uint generatedChannelId = 0;
+        ret = iHistoryWrapper->putChannelHistory(&stationInfoSet,&generatedChannelId);
+        aPreset->presetId = generatedChannelId;
+    }
+    
+    if ((false == ret)||(0 == aPreset->presetId))
+    {
+        return;
+    }
+    
+    columnUrlInfoInsertMap urlInfoSet;
+    QString url;
+    unsigned int bitrate;
+    for (int i=0; i < aPreset->getChannelURLCount(); i++)
+    {
+        aPreset->getChannelUrlAt(i,url);
+        aPreset->getChannelBitrate(i,bitrate);
+        urlInfoSet.insert(url,bitrate);
+    }
+    
+    iUrlInfoWrapper->resetUrlInfo(&urlInfoSet, aPreset->presetId);
 }
-#endif 
 
 void saveStationLogoFlag(bool aIsStationLogoAvailable)
 {
@@ -956,7 +1082,7 @@
 }
 
 //get IP address configuration of test radio server
-#ifdef Q_CC_NOKIAX86
+#ifdef PLATSIM_DEBUG_CONF
 void getRadioServerAddress(QString & aUrl)
 {
     QFile file("C:\\data\\QTIRConfigure.txt");
--- a/qtinternetradio/ui/src/irplaylist.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irplaylist.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -108,8 +108,9 @@
         
         preset->insertChannelServer(server);
         preset->name = item->title();
-        preset->description = item->file();
-        preset->shortDesc = item->file();
+        preset->nickName = item->title();
+        preset->description = "";
+        preset->shortDesc = "";
         preset->type = 0;
         preset->uniqID = 0;
         preset->presetId = 0;
--- a/qtinternetradio/ui/src/irplsview.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irplsview.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -92,8 +92,9 @@
     IRQPreset preset;
     preset.insertChannelServer(server);
     preset.name = iPlsModel->getTitle(currentRow);
-    preset.description = iPlsModel->getFile(currentRow);
-    preset.shortDesc = iPlsModel->getFile(currentRow);
+    preset.nickName = iPlsModel->getTitle(currentRow);
+    preset.description = "";
+    preset.shortDesc = "";
     preset.type = 0;
     preset.uniqID = 0;
     preset.presetId = 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/ui/src/irqsonghistoryinfo.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 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:
+*
+*/
+#include "irqsonghistoryinfo.h"
+
+void IRQSongInfo::setSongName(const QString& aName)
+{
+    iSongName = aName;
+}
+
+const QString& IRQSongInfo::getSongName() const
+{
+    return iSongName;
+}
+
+void IRQSongInfo::setArtistName(const QString& aArtist)
+{
+    iSongArtist = aArtist;
+}
+
+void IRQSongInfo::setStationName(const QString& aStationName)
+{
+    iStationName = aStationName;
+}
+
+const QString& IRQSongInfo::getArtistName() const
+{
+    return iSongArtist;
+}
+
+const QString& IRQSongInfo::getStationName() const
+{
+    return iStationName;
+}
+void IRQSongInfo::setMusicshopStatus(const QString& aStatus)
+{
+    iMusicshopStatus = aStatus;
+}
+
+const QString& IRQSongInfo::getMusicshopStatus() const
+{
+    return iMusicshopStatus;
+}
+
+void IRQSongInfo::setChannelID(const QString& aChannelID)
+{
+    iChannelID = aChannelID;
+}
+
+const QString& IRQSongInfo::getChannelID() const
+{
+    return iChannelID;
+}
+
+void IRQSongInfo::setAllInfo(const QString& aStationName, const QString& aSongName, const QString& aArtist, const QString& aStatus, const QString& aChannelID)
+{
+    iStationName = aStationName;
+    iSongName =   aSongName;
+    iSongArtist = aArtist;    
+    iMusicshopStatus = aStatus;
+    iChannelID = aChannelID;
+}
+
+
+
--- a/qtinternetradio/ui/src/irsearchchannelsview.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irsearchchannelsview.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -15,7 +15,6 @@
 *
 */
 
-#include <qtimer.h>
 #include <hblistview.h>
 #include <hbsearchpanel.h>
 #include <hbaction.h>
@@ -40,22 +39,18 @@
 #include "irplaycontroller.h"
 #include "irqlogger.h"
 #include "irqsettings.h"
- 
-const uint KBitmapSize = 59;
 
 IRSearchChannelsView::IRSearchChannelsView(IRApplication* aApplication,
         TIRViewId aViewId): IRBaseView(aApplication, aViewId),
-        iListView(NULL),iSearchPanelWidget(NULL),iSearchState(ESearch_init),
-        iChannelModel(NULL),iPreset(NULL),iLogoPreset(NULL),
-        iConvertTimer(NULL) 
+        iHeadingLabel(NULL),iListView(NULL),iSearchPanelWidget(NULL),iSearchState(ESearch_init),
+        iChannelModel(NULL),iPreset(NULL),iFirstTime(true)
 {
     LOG_METHOD;
-    iSettings = IRQSettings::openInstance();    
+    iIRSettings = IRQSettings::openInstance();    
     loadLayout();
     connectWidget();  
     switch2InitState();       
     initMenu();        
-    initTimer();
 }
 
 void IRSearchChannelsView::initMenu()
@@ -66,25 +61,14 @@
     connect(exitAction, SIGNAL(triggered()), iApplication, SIGNAL(quit()));
 }
 
-void IRSearchChannelsView::initTimer()
-{     
-    LOG_METHOD;
-    iConvertTimer = new QTimer(this);
-    iConvertTimer->setInterval(10); 
-    
-    connect(iConvertTimer, SIGNAL(timeout()), this, SLOT(convertAnother()));
-}
-
- 
-
 IRSearchChannelsView::~IRSearchChannelsView()
 {   
     LOG_METHOD;
     
-    if (iSettings)
+    if (iIRSettings)
     {
-        iSettings->setSearchText(iKeyText);
-        iSettings->closeInstance();
+        iIRSettings->setSearchText(iKeyText);
+        iIRSettings->closeInstance();
     }    
     
     if( iPreset != NULL )
@@ -92,18 +76,6 @@
         delete iPreset;
         iPreset = NULL;
     }
-    
-    if( iLogoPreset != NULL )
-    {
-        delete iLogoPreset;
-        iLogoPreset = NULL;
-    }
-    
-    if( NULL != iChannelModel )
-    {
-        iChannelModel->save2Cache();
-    }
- 
 }
 
 void IRSearchChannelsView::loadLayout()
@@ -118,9 +90,11 @@
     iLoader.setObjectTree( roots );
     iLoader.load(SEARCH_CHANNELS_VIEW_LAYOUT_FILENAME);   
     
+    iHeadingLabel = qobject_cast<HbGroupBox *>(iLoader.findWidget(SEARCH_CHANNELS_VIEW_HEADINGTEXT_WIDGET));
+    
     iSearchPanelWidget = qobject_cast<HbSearchPanel *>(iLoader.findWidget(SEARCH_CHANNELS_VIEW_SEARCHPANEL_WIDGET));    
     QString searchText;
-    iSettings->getSearchText(searchText);
+    iIRSettings->getSearchText(searchText);
     iKeyText = searchText;
     iSearchPanelWidget->setCriteria(searchText);
    
@@ -132,9 +106,7 @@
     iListView->setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAsNeeded);
     
     iChannelModel = new IrChannelModel(this);
-    iChannelModel->initWithCache();
     iListView->setModel(iChannelModel);
-    scrollbar->setValue(0.0);    
     
     iListView->installEventFilter(this);
           
@@ -165,13 +137,7 @@
     connect(iIsdsClient, SIGNAL(operationException(IRQError)),
             this, SLOT(operationException(IRQError)));   
     connect(iIsdsClient, SIGNAL(presetResponse(IRQPreset *)),
-            this, SLOT(presetResponse(IRQPreset *)));    
-    connect(iIsdsClient, SIGNAL(presetLogoDownloaded(IRQPreset* )),
-            this, SLOT(presetLogoDownload(IRQPreset* )));     
-    connect(iIsdsClient, SIGNAL(presetLogoDownloadError()),
-            this, SLOT(presetLogoDownloadError()));
-    
-   
+            this, SLOT(presetResponse(IRQPreset *)));
 }
 
 void IRSearchChannelsView::disconnectIsdsClient()
@@ -183,10 +149,6 @@
             SLOT(operationException(IRQError))); 
     disconnect(iIsdsClient, SIGNAL(presetResponse(IRQPreset *)),
                        this, SLOT(presetResponse(IRQPreset *)));
-    disconnect(iIsdsClient, SIGNAL(presetLogoDownloaded(IRQPreset*)),
-                       this, SLOT(presetLogoDownload(IRQPreset* )));
-    disconnect(iIsdsClient, SIGNAL(presetLogoDownloadError()),
-                       this, SLOT(presetLogoDownloadError()));  
 }
 
 void IRSearchChannelsView::switch2InitState()
@@ -201,7 +163,7 @@
     LOG_METHOD;
     iSearchPanelWidget->clearFocus();
     iListView->setFocus();
-    iSearchState = ESearch_Loading; 
+    iSearchState = ESearch_Loading;
     iApplication->startLoadingAnimation(this, SLOT(minimizeSearchPanel()));
 }
 
@@ -243,7 +205,9 @@
         if(EIR_UseNetwork_StartSearch == getUseNetworkReason())
         {
             Q_ASSERT( !iKeyText.isEmpty() );
-            iIsdsClient->isdsSearchRequest(iKeyText);             
+            iChannelModel->stopDownloadingLogo();    
+            switch2LoadingState();
+            iIsdsClient->isdsSearchRequest(iKeyText);
         }
         else if( EIR_UseNetwork_SelectItem == getUseNetworkReason() )
         {            
@@ -281,11 +245,10 @@
     if( ESearch_Loading == iSearchState )
     {
         iIsdsClient->isdsCancelRequest();            
-        iConvertTimer->stop();
-        iIsdsClient->isdsLogoDownCancelTransaction();
     }
- 
-    
+
+    iChannelModel->stopDownloadingLogo();
+
     setUseNetworkReason(EIR_UseNetwork_NoReason);    
     switch2LoadingState();
     iIsdsClient->isdsSearchRequest(iKeyText);    
@@ -295,16 +258,17 @@
 {        
     LOG_METHOD;
     switch2InitState();
-    
+
     QString errStr;    
     switch(aError)
     {
     case EIRQErrorNotFound:
-#ifdef SUBTITLE_STR_BY_LOCID 
+#ifdef SUBTITLE_STR_BY_LOCID
         errStr = hbTrId("txt_irad_info_no_matching_station_found");
 #else
-        errStr = hbTrId("No matching station found");        
+        errStr = hbTrId("No matching station found");
 #endif
+        iChannelModel->cleanupDatabase();
         break;
     default:
 #ifdef SUBTITLE_STR_BY_LOCID
@@ -316,7 +280,6 @@
     }
     
     popupNote(errStr, HbMessageBox::MessageTypeWarning);     
-    iChannelModel->cleanupDatabase();
 }
 
 void IRSearchChannelsView::clickItem(const QModelIndex&)
@@ -345,28 +308,17 @@
     LOG_METHOD;
     delete iPreset;
     iPreset = aPreset;
-    
+
     if (iPreset)
     {
         iPlayController->connectToChannel(iPreset,EIRQIsds);
     }
 }
 
-void IRSearchChannelsView::convertAnother()
-{
-    LOG_METHOD;
-    iConvertTimer->stop();
-    int leftCount = iIconIndexArray.count();
-    
-    if( leftCount > 0 )
-    { 
-        startConvert(iIconIndexArray[0]);   
-    }
-}
- 
 void IRSearchChannelsView::dataChanged()
 {
     LOG_METHOD;
+    resetHeadingText();
     switch2InitState();      
     iListView->reset();
     if( iChannelModel->rowCount() )
@@ -377,98 +329,16 @@
     
     //we move the focus to the listview and the search panel will
     //hide the virtual keyboard at the same time
-    iListView->setFocus();            
-    
-    iIconIndexArray.clear();
-    //initialize the iconindices
-    for (int i = 0; i < iChannelModel->rowCount(); ++i)
-    {
-        if (iChannelModel->imageUrl(i) != "")
-        {            
-            iIconIndexArray.append(i);
-        }
-    }
-    
-    if( iIconIndexArray.count() > 0 )
-    {
-        iConvertTimer->start();        
-    }   
-}
-
-void IRSearchChannelsView::startConvert(int aIndex)
-{
-    LOG_METHOD;
-    QString url = iChannelModel->imageUrl(aIndex);
- 
-    IRQPreset tempPreset;
-    tempPreset.imgUrl = url;
-    tempPreset.type = IRQPreset::EIsds;
-    
-    bool cached = iIsdsClient->isdsIsLogoCached(&tempPreset, KBitmapSize, KBitmapSize);
-    
-    if( !cached )
-    {
-        bool network = iNetworkController->getNetworkStatus();
-        //if the network is not ready, some exception happens and we don't get the logos
-        //for they are not so important.
-        if( !network )
-        {             
-            return;
-        }       
-    }
-    
-    iIsdsClient->isdsLogoDownSendRequest(&tempPreset, 0, KBitmapSize, KBitmapSize); 
+    iListView->setFocus();
 }
 
-//if the logo is downloaded ok
-void IRSearchChannelsView::presetLogoDownload(IRQPreset* aPreset)
+void IRSearchChannelsView::resetHeadingText()
 {
-    LOG_METHOD;
-    if( NULL == aPreset )
-    {
-        presetLogoDownloadError();
-        return;
-    } 
-    
- 
-    delete iLogoPreset;            
-    iLogoPreset = aPreset;    
-
-    if (iLogoPreset->logoData.size() > 0)
-    {         
-        QPixmap tempMap;      
-        bool ret = tempMap.loadFromData((const unsigned char*)iLogoPreset->logoData.constData(), iLogoPreset->logoData.size());
-        QIcon convertIcon(tempMap);
-       
-        if( ret )
-        {            
-            HbIcon *hbIcon = new HbIcon(convertIcon);
-            int index = iIconIndexArray[0];
-            iChannelModel->setLogo(hbIcon, index);
-            iIconIndexArray.removeAt(0);     
-            int leftCount = iIconIndexArray.count(); 
-            if( leftCount > 0 )
-            {
-                iConvertTimer->start();  
-            }             
-            return;
-        }     
-    }    
-    
-    presetLogoDownloadError(); 
-}
-
-//if the logo download fails
-void IRSearchChannelsView::presetLogoDownloadError()
-{
-    LOG_METHOD;
-    // if the logo download fails, try to download the next
-    iIconIndexArray.removeAt(0);
-    int leftCount = iIconIndexArray.count();
-    if( leftCount > 0 )
-    {
-        iConvertTimer->start();
-    }     
+#ifdef SUBTITLE_STR_BY_LOCID
+    iHeadingLabel->setHeading(hbTrId("txt_irad_subtitle_search_results") + " (" + QString::number(iChannelModel->rowCount()) + ")");         
+#else
+    iHeadingLabel->setHeading(hbTrId("Search results") + " (" + QString::number(iChannelModel->rowCount()) + ")");  
+#endif 
 }
 
 void IRSearchChannelsView::minimizeSearchPanel()
@@ -476,10 +346,8 @@
     LOG_METHOD;
     if( ESearch_Loading == iSearchState )
     {
-        iPlayController->cancelBuffering(); 
         iIsdsClient->isdsCancelRequest();
-        iConvertTimer->stop();
-        iIsdsClient->isdsLogoDownCancelTransaction();
+        iChannelModel->stopDownloadingLogo();
         switch2InitState();      
     }
     
@@ -509,8 +377,7 @@
     
     switch (aCommand)
     {   
-    case EIR_ViewCommand_ACTIVATED:         
-        iIconIndexArray.clear();        
+    case EIR_ViewCommand_ACTIVATED:             
         iListView->clearFocus();
         iSearchPanelWidget->setFocusDelegation(FocusDelegationFirstChild);  
         iSearchPanelWidget->setFocus();        
@@ -520,13 +387,21 @@
             showVkb();
         }
         connectIsdsClient();
+        if (iFirstTime)
+        {
+            iChannelModel->initWithCache();
+            iFirstTime = false;
+        }
+        else
+        {
+            iChannelModel->startDownloadingLogo();
+        }
         break;
         
     case EIR_ViewCommand_DEACTIVATE:     
         disconnectIsdsClient();
         iIsdsClient->isdsCancelRequest();            
-        iConvertTimer->stop();
-        iIsdsClient->isdsLogoDownCancelTransaction();
+        iChannelModel->stopDownloadingLogo();
         switch2InitState();
         break;
 
--- a/qtinternetradio/ui/src/irsearchresultdb.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irsearchresultdb.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -15,31 +15,22 @@
 *
 */
 
-#include <QFile>
-#include <QSqlQuery>
-#include <QSqlRecord> 
-#include <QSqlDatabase>
 #include <QVariant>
- 
 
+#include "searchrltwrapper.h"
 #include "irsearchresultdb.h"
 #include "irqisdsdatastructure.h"
 
+const int KTruncateSize = 255;
 
-IRSearchResultDB::IRSearchResultDB()
+IRSearchResultDB::IRSearchResultDB() : iSearchRltWrapper(NULL)
 {
-    createDBConnection();
+    iSearchRltWrapper = new searchRltWrapper();
 }
 
 IRSearchResultDB::~IRSearchResultDB()
 {
-    if (iDB->isOpen())
-    {
-        iDB->close();
-    }        
-    
-    delete iDB;
-    iDB = NULL;
+    delete iSearchRltWrapper;
 }
 
  
@@ -52,42 +43,43 @@
         return EIRQErrorBadParameter;
     }
     
-    if( iDB->isOpen() )
+    if( iSearchRltWrapper )
     {
         clearCache();
-        
+
+        //create column struct of table;
+        columnMap* pColMap = new columnMap();
+        QString num, name, imageURL, shortDescription;
+        int chnlID;
+        bool initFlag = true;
         for(int i=0; i<aChannelList->count(); i++)
         {
             IRQChannelItem* insertItem = aChannelList->at(i);
-            QString name = insertItem->channelName;
-            int channelID = insertItem->channelID;
-            QString imageURL = insertItem->imageURL;
-            QString description = insertItem->shortDescription;
+            name = insertItem->channelName;
+            chnlID = insertItem->channelID;
+            num.setNum(chnlID);
+            imageURL = insertItem->imageURL;
+            shortDescription = insertItem->shortDescription;
             
             //if some data overflows, we just skip it.note that
             //the VARCHAR is word-based, so here we use the real size 
-            if( name.size()>= 256 || imageURL.size() >= 256 || description.size() >= 256 )
-            {
-                continue;
-            }            
-            
-            QSqlQuery query;
-            bool result;
+            name.truncate(KTruncateSize);
+            imageURL.truncate(KTruncateSize);
+            shortDescription.truncate(KTruncateSize);
+
+            pColMap->clear();
+            pColMap->insert(channelId, num);
+            pColMap->insert(channelName, name);
+            pColMap->insert(imgUrl, imageURL);
+            pColMap->insert(shortDesc, shortDescription);
+
+            iSearchRltWrapper->addSearchRlt(pColMap, initFlag);
+            initFlag = false;
             
-            result = query.prepare("INSERT INTO searchresult (name, channelID, imageURL, description) "
-                "VALUES (:name, :channelID, :imageURL, :description)");
-            query.bindValue(":name", name);
-            query.bindValue(":channelID",channelID);
-            query.bindValue(":imageURL", imageURL);
-            query.bindValue(":description", description);
-            
-            result = query.exec();
-            if( !result )
-            {
-                ret = EIRQErrorServiceUnavailable;
-                break;
-            }
         }
+        
+        iSearchRltWrapper->addSearchRltFinished();
+        delete pColMap;
     }
     else
     {
@@ -99,44 +91,52 @@
 
 QList<IRQChannelItem*> *IRSearchResultDB::getCahcedChannelList()
 {
-    if( !iDB->isOpen() )
+    if( !iSearchRltWrapper )
     {
         return NULL;
     }
-    
+
+    QList<QVariant*>* searchRlt = NULL;
     QList<IRQChannelItem*> *channelList = new QList<IRQChannelItem*>();
-    QSqlQuery query("SELECT * FROM searchresult");
-    QSqlRecord rec = query.record();
-    int nameCol = rec.indexOf("name");
-    int channelIDCol = rec.indexOf("channelID");
-    int imageURLCol = rec.indexOf("imageURL");
-    int descriptionCol = rec.indexOf("description");     
-    
-    while(query.next())
+    searchRlt = iSearchRltWrapper->getSearchRlt(NULL, NULL);
+
+    if (NULL == searchRlt)
+    {
+        return channelList;
+    }
+
+    for(int i = 0; i < searchRlt->size(); i++)
     {
         IRQChannelItem *oneItem = new IRQChannelItem();
-        oneItem->channelName = query.value(nameCol).toString();
-        oneItem->channelID = query.value(channelIDCol).toInt();
-        oneItem->imageURL = query.value(imageURLCol).toString();
-        oneItem->shortDescription = query.value(descriptionCol).toString();
+        oneItem->channelName = (*( searchRlt->at(i) + channelName) ).toString();
+        oneItem->channelID = (*( searchRlt->at(i) + channelId)).toUInt();
+        oneItem->imageURL = (*( searchRlt->at(i) + imgUrl) ).toString();
+        oneItem->shortDescription = (*( searchRlt->at(i) + shortDesc) ).toString();
         channelList->append(oneItem);
     }
-    
+
+    while(false == searchRlt->isEmpty())
+    {
+        delete []searchRlt->takeFirst();
+    }
+    searchRlt->clear();
+    delete searchRlt;
+    searchRlt = NULL;
+
     return channelList;    
 }
   
 IRQError IRSearchResultDB::clearCache()
 {
     IRQError ret = EIRQErrorNone;
-    if( !iDB->open())
+    if( !iSearchRltWrapper)
     {
         ret = EIRQErrorServiceUnavailable;
     }
     else
     { 
-        QSqlQuery query("DELETE FROM searchresult");         
-        bool ret = query.exec();
-        if( !ret )
+        bool retval = iSearchRltWrapper->deleteSearchRlt(NULL, NULL);
+        if (!retval)
         {
             ret = EIRQErrorServiceUnavailable;
         }
@@ -144,37 +144,3 @@
     
     return ret;
 }
-
-void IRSearchResultDB::createDBConnection()
-{ 
-    bool created = QFile::exists("searchresult.dat");    
-    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");     
-    iDB = new QSqlDatabase(db);
-
-    iDB->setDatabaseName("searchresult.dat");
-
-    if (!iDB->open())
-    {         
-        return;
-    }
-     
-
-    if (!created)
-    {
-        bool dbResult = false;
-        QSqlQuery query;         
-        //note: the VARCHAR is word-based but not byte-based. and 255 
-        //means 255 unicode words.
-        dbResult = query.exec("CREATE TABLE searchresult ("
-            "id INTEGER PRIMARY KEY AUTOINCREMENT, "
-            "name VARCHAR(255) NOT NULL, "
-            "channelID INTEGER, "
-            "imageURL VARCHAR(255), "
-            "description VARCHAR(255) NOT NULL)");
-
-        if (!dbResult)
-        {             
-            return;
-        }
-    } 
-} 
--- a/qtinternetradio/ui/src/irsettingsview.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irsettingsview.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -29,9 +29,8 @@
 IRSettingsView::IRSettingsView(IRApplication *aApplication, TIRViewId aViewId) :
     IRBaseView(aApplication, aViewId), iForm(NULL),iModel(NULL)
 {
-    
     setFlag(EViewFlag_UnStackable);
-    
+    setTitle(hbTrId("txt_irad_title_internet_radio"));
     initView();
 }
 
@@ -42,6 +41,7 @@
 void IRSettingsView::initView()
 {
     QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, this);
+    layout->setContentsMargins(0, 0, 0, 0);
     setLayout(layout);
 
     HbGroupBox * titleText = new HbGroupBox();
--- a/qtinternetradio/ui/src/irsonghistorymodel.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irsonghistorymodel.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -14,15 +14,16 @@
 * Description:
 *
 */
-#include <hbglobal.h>
-
+#include <hbglobal.h> 
 #include "irqsonghistoryinfo.h"
-#include "irqsonghistoryengine.h"
 #include "irsonghistorymodel.h"
+#include "songhistorywrapper.h"
+#include "irdbviewstruct.h"
 
-IRSongHistoryModel::IRSongHistoryModel(QObject *aParent) : QAbstractListModel(aParent)
-{     
-    mHistoryEngine = IRQSongHistoryEngine::openInstance();
+IRSongHistoryModel::IRSongHistoryModel(QObject *aParent) : QAbstractListModel(aParent),
+                                                           mHistoryWrapper(NULL)
+{   
+    mHistoryWrapper = new songHistoryWrapper();
     getAllList();
 }
 
@@ -31,13 +32,9 @@
     while (!mSongHistoryList.isEmpty())
     {
         delete mSongHistoryList.takeFirst();
-    }
+    }   
     
-    if (mHistoryEngine)
-    {
-        mHistoryEngine->closeInstance();
-        mHistoryEngine = NULL;
-    }
+    delete mHistoryWrapper;
 }
 
 int IRSongHistoryModel::rowCount(const QModelIndex &aParent) const
@@ -118,15 +115,14 @@
     {
         IRQSongInfo *firstItem = mSongHistoryList.takeFirst();
         delete firstItem;
-    }
-
-    mHistoryEngine->clearAllSongHistory();
+    }    
+    mHistoryWrapper->deleteSongHistory();
 
     emit modelChanged();
 }
 
 bool IRSongHistoryModel::checkSongHistoryUpdate()
-{     
+{   
     getAllList();    
     return true;
 }
@@ -134,8 +130,42 @@
 
 void IRSongHistoryModel::getAllList()
 {
-    mHistoryEngine->getAllSongHistory(mSongHistoryList);
+    
+    QList<QVariant*> *dataSet = mHistoryWrapper->getSongHistory();
+    int dataCount = 0;
+    
+    if( NULL != dataSet )
+    {
+        dataCount = dataSet->count();
+    }
+
+    while (!mSongHistoryList.isEmpty())
+    {
+        IRQSongInfo *firstItem = mSongHistoryList.takeFirst();
+        delete firstItem;
+    }
+     
+    QString stationsName, songsName, artistsName, status, channelsID;
 
+    if (0 < dataCount)
+    {
+        for (int i = 0; i < dataCount; ++i)
+        {
+            IRQSongInfo *songInfo = new IRQSongInfo();
+            QVariant *row = dataSet->at(i);
+            stationsName = row[channelNickName].toString();
+            songsName = row[songName].toString();
+            artistsName = row[artistName].toString();
+            status = row[musicStoreStatus].toString();
+            channelsID = row[channelId].toString();
+            songInfo->setAllInfo(stationsName, songsName, artistsName, status, channelsID);
+
+            delete[] row;
+            mSongHistoryList.append(songInfo);
+        }
+    }
+
+    delete dataSet;
     emit modelChanged();
 }
 
@@ -146,14 +176,28 @@
 
 bool IRSongHistoryModel::deleteOneItem(int aIndex)
 {
-    bool ret = mHistoryEngine->deleteOneSongHistoryItem(aIndex);
+    if( aIndex < 0 || aIndex >= mSongHistoryList.count() )
+    {
+        return false;
+    }
+    
+    IRQSongInfo *currentItem = mSongHistoryList.at(aIndex);   
+     
+    columnMap map;
+    map.insert(songName, currentItem->getSongName());
+    map.insert(artistName, currentItem->getArtistName());
+    map.insert(channelId, currentItem->getChannelID());
 
+    bool ret = mHistoryWrapper->deleteSongHistory(&map);
+    
     if( !ret )
     {
         return false;                
     }
     
     beginRemoveRows(QModelIndex(), aIndex, aIndex);
+    //delete the current item to avoid memory leaking
+    delete currentItem;
     mSongHistoryList.removeAt(aIndex);
     endRemoveRows(); 
     
--- a/qtinternetradio/ui/src/irsonghistoryview.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irsonghistoryview.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -19,6 +19,7 @@
 #include <hbaction.h>
 #include <hbicon.h>
 #include <QTimer> 
+#include <QVariant>
 
 #include "irviewmanager.h"
 #include "irapplication.h" 
@@ -31,12 +32,16 @@
 #include "irqsettings.h"
 #include "irqutility.h"
 #include "iruidefines.h"
+#include "irdbwrapper.h"
+#include "irqisdsdatastructure.h"
 
 const QString KActionSearchInMusicStoreName("SearchInMusicStore");
 const QString KActionDeleteName("Delete");
 
-#ifdef STATISTIC_REPORT_TEST_ENABLED    
-static const int KDummyMusicStoreUid = 0xE609761B;
+#ifdef STATISTIC_REPORT_TEST_ENABLED
+static const int KIRMusicStoreUid           = 0xE609761B;
+#else
+static const int KIRMusicStoreUid           = 0;
 #endif
 
 //                                         public functions
@@ -133,61 +138,85 @@
  */
 void IRSongHistoryView::handleItemSelected()
 {     
-    // TODO : NEED preset id related to the song
-    int index = iListView->currentIndex().row();
-    IRQSongInfo *hisInfo = iModel->getSongHistoryInfo(index); 
-
-    if( hisInfo && ( 0 != hisInfo->getMusicshopStatus().compare("yes",Qt::CaseInsensitive) ) )
+    if (!IRQUtility::findAppByUid(KIRMusicStoreUid))  // if no music store, coming soon is shown.
     {
-#ifdef STATISTIC_REPORT_TEST_ENABLED
-        if(IRQUtility::launchAppByUid(KDummyMusicStoreUid))
-        {
-            iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsLaunch,0);
-        }    
-#else // STATISTIC_REPORT_TEST_ENABLED        
 #ifdef SUBTITLE_STR_BY_LOCID
-        popupNote(hbTrId("txt_irad_info_not_allowed_by_this_station"), HbMessageBox::MessageTypeInformation);
-#else  // SUBTITLE_STR_BY_LOCID
-        popupNote(hbTrId("Not allowed by station"), HbMessageBox::MessageTypeInformation);        
-#endif // SUBTITLE_STR_BY_LOCID
-#endif // STATISTIC_REPORT_TEST_ENABLED 
+        popupNote(hbTrId("txt_irad_info_music_store_not_available"), HbMessageBox::MessageTypeInformation);
+#else
+        popupNote(hbTrId("Service Coming Soon"), HbMessageBox::MessageTypeInformation);    
+#endif        
         return;
     }
     
-    if( (NULL == hisInfo) ||    
-        ( hisInfo->getSongName().isEmpty() &&  
-          hisInfo->getArtistName().isEmpty()
-        )
-      )
+    IRQSongInfo *hisInfo = iModel->getSongHistoryInfo(iListView->currentIndex().row()); 
+    int presetType = 0; // user defined
+    
+    IRDBWrapper irDb;
+    columnMap selectCriteriaSet;
+    selectCriteriaSet.insert(channelId,hisInfo->getChannelID());
+    
+    QList<QVariant*>* dataSet = NULL;
+    dataSet = irDb.getIRDB(&selectCriteriaSet);
+    
+    if (dataSet && (dataSet->size()>0))
+    {
+        presetType = (*(dataSet->at(0) + channelType)).toInt(); 
+    }    
+    
+    if (dataSet)
+    {
+        while(false == dataSet->isEmpty())
+        {
+            delete []dataSet->takeFirst();
+        }
+        dataSet->clear();
+        
+        delete dataSet;
+        dataSet = NULL;        
+    }
+    
+    bool launchResult = false;
+    if( hisInfo && ( 0 != hisInfo->getMusicshopStatus().compare("yes",Qt::CaseInsensitive) ) )
     {
-#ifdef STATISTIC_REPORT_TEST_ENABLED
-        // TODO : have to save preset id related to the song
-        if(IRQUtility::launchAppByUid(KDummyMusicStoreUid))
+        // TODO : launch music store with search result page
+        launchResult = IRQUtility::launchAppByUid(KIRMusicStoreUid);
+        if (launchResult)        
         {
-            iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsLaunch,0);
-        }    
-#else // STATISTIC_REPORT_TEST_ENABLED         
+            if (presetType)
+            {
+                iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsFind,iPlayController->getNowPlayingPreset()->presetId);
+            }
+            else
+            {            
+                iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsFind,0);
+            }
+        }
+    }
+    else
+    {
+        // TODO : lunch music store with homepage  
+        launchResult = IRQUtility::launchAppByUid(KIRMusicStoreUid);
+        if (launchResult)        
+        {
+            if (presetType)
+            {
+                iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsLaunch,iPlayController->getNowPlayingPreset()->presetId);
+            }
+            else
+            {            
+                iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsLaunch,0);
+            }
+        }          
+    }
+    
+    if (!launchResult)
+    {        
 #ifdef SUBTITLE_STR_BY_LOCID
-        popupNote(hbTrId("txt_irad_info_no_song_info"), HbMessageBox::MessageTypeInformation);
-#else  // SUBTITLE_STR_BY_LOCID
-        popupNote(hbTrId("No song info"), HbMessageBox::MessageTypeInformation);        
-#endif // SUBTITLE_STR_BY_LOCID
-#endif // STATISTIC_REPORT_TEST_ENABLED 
-        return;
-    }
-
-#ifdef STATISTIC_REPORT_TEST_ENABLED    
-    if(IRQUtility::launchAppByUid(KDummyMusicStoreUid))
-    {
-        iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRNmsFind,0);
-    }
-#else // STATISTIC_REPORT_TEST_ENABLED 
-#ifdef SUBTITLE_STR_BY_LOCID
-    popupNote(hbTrId("txt_irad_info_music_store_not_available"), HbMessageBox::MessageTypeInformation);
-#else  // SUBTITLE_STR_BY_LOCID
-    popupNote(hbTrId("Music store not ready"), HbMessageBox::MessageTypeInformation);    
-#endif // SUBTITLE_STR_BY_LOCID
-#endif // STATISTIC_REPORT_TEST_ENABLED
+        popupNote(hbTrId("txt_irad_info_music_store_not_available"), HbMessageBox::MessageTypeInformation);
+#else
+        popupNote(hbTrId("Music store not ready"), HbMessageBox::MessageTypeInformation);    
+#endif
+    }    
 }
    
 
--- a/qtinternetradio/ui/src/irstationdetailsview.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irstationdetailsview.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -52,9 +52,9 @@
 /*
  * Description : update the station information.
  */
-void IRStationDetailsView::setDetails(IRQPreset * aPreset)
+void IRStationDetailsView::setDetails(const IRQPreset * aPreset)
 {
-    iStationName->setPlainText(aPreset->name);
+    iStationName->setPlainText(aPreset->nickName);
     iGenres->setPlainText(aPreset->genreName);
     iLanguage->setPlainText(aPreset->languageName);
     iCountry->setPlainText(aPreset->countryName);
@@ -80,7 +80,7 @@
 void IRStationDetailsView::setDetails()
 {
     IRQPreset *nowPlayingPreset = iPlayController->getNowPlayingPreset();
-    iStationName->setPlainText(nowPlayingPreset->name);
+    iStationName->setPlainText(nowPlayingPreset->nickName);
     iGenres->setPlainText(nowPlayingPreset->genreName);
     iLanguage->setPlainText(nowPlayingPreset->languageName);
     iCountry->setPlainText(nowPlayingPreset->countryName);
--- a/qtinternetradio/ui/src/irstationsview.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irstationsview.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -137,7 +137,7 @@
     aNeedNetwork =  true;
     
     int index = iListView->currentIndex().row();
-    iPlayController->setConnectingStationName(iDataProvider->getChannelItemByIndex(index)->channelName);
+    iPlayController->setConnectingStationName(iDataProvider->getChannelItemByIndex(index)->channelName,true);
 }
 #endif
 
--- a/qtinternetradio/ui/src/irviewmanager.cpp	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/src/irviewmanager.cpp	Mon Oct 04 00:07:46 2010 +0300
@@ -321,7 +321,7 @@
             (EIRView_StationDetailsView == viewToHide->id())
           )
         {
-            setCurrentView(aView,true,Hb::ViewSwitchUseAltEvent); 
+            setCurrentView(aView,true,Hb::ViewSwitchUseAltEvent | Hb::ViewSwitchCachedFullScreen); 
         }
         else
         {
--- a/qtinternetradio/ui/ui.pro	Fri Sep 17 08:27:59 2010 +0300
+++ b/qtinternetradio/ui/ui.pro	Mon Oct 04 00:07:46 2010 +0300
@@ -59,10 +59,10 @@
                ../irqcommon/inc \
                ../irqstatisticsreporter/inc \
                ../irqfavoritesdb/inc \
-               ../irqnetworkcontroller/inc \
-               ../irqsonghistory/inc \
+               ../irqnetworkcontroller/inc \                
                ../irqsettings/inc    \                
-               ../irqlogger/inc \                      
+               ../irqlogger/inc \       
+               ../irdb/inc \               
                ../irqsystemeventhandler/inc
 
 CONFIG += hb service
@@ -74,8 +74,7 @@
         -lirqisdsclient \
         -lirqmediaplayer \
         -lirqutility \
-        -lirqfavorites \
-        -lirqsonghistory \
+        -lirqfavorites \      
         -lirqsettings \	    
         -lremconcoreapi \
         -lremconinterfacebase \
@@ -86,6 +85,7 @@
         -lxqsettingsmanager \
         -lxqservice \
         -lxqserviceutil \
+        -lirdb \
         -lhgcacheproxymodel
         	
 symbian{
@@ -137,7 +137,10 @@
            inc/irsearchresultdb.h \
            inc/irfileviewservice.h \
            inc/irplayingbanner.h \
-           inc/irhbapplication.h
+           inc/irhbapplication.h \
+           inc/irlogoprovider.h \
+	   inc/irqsonghistoryinfo.h
+          
            
 #source files list
 SOURCES += main.cpp  \
@@ -178,7 +181,10 @@
            irsearchresultdb.cpp \
            irfileviewservice.cpp \
            irplayingbanner.cpp \
-           irhbapplication.cpp
+           irhbapplication.cpp \
+           irlogoprovider.cpp \
+           irqsonghistoryinfo.cpp
+            
 
 #docml      
 DOCML += resources/layout/abstractlistviewbase.docml \