Re-merge docml files.
authorPat Downey <patd@symbian.org>
Wed, 23 Jun 2010 16:21:12 +0100
changeset 10 9b7c1f7fc4a6
parent 8 3b03c28289e6 (diff)
parent 6 5d722176514a (current diff)
Re-merge docml files.
qtinternetradio/ui/resources/layout/searchchannelsview.docml
--- a/internetradio2.0/bmarm/irdatastructuresu.def	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/bmarm/irdatastructuresu.def	Wed Jun 23 16:21:12 2010 +0100
@@ -1,135 +1,128 @@
 EXPORTS
-	_ZN12CIROTAUpdate10ConstructLEv @ 1  NONAME
-	_ZN12CIROTAUpdate10SetVersionERK7TDesC16 @ 2  NONAME
-	_ZN12CIROTAUpdate12InternalizeLER11RReadStream @ 3  NONAME
-	_ZN12CIROTAUpdate15SetUpdateMethodERK7TDesC16 @ 4  NONAME
-	_ZN12CIROTAUpdate17SetUpdateIntervalERK7TDesC16 @ 5  NONAME
-	_ZN12CIROTAUpdate4NewLEv @ 6  NONAME
-	_ZN12CIROTAUpdate5NewLCEv @ 7  NONAME
-	_ZN12CIROTAUpdate9SetOTAUrlERK7TDesC16 @ 8  NONAME
-	_ZN13CIRIsdsPreset10SetGenreIdERK7TDesC16 @ 9  NONAME
-	_ZN13CIRIsdsPreset11SetLangCodeERK7TDesC16 @ 10  NONAME
-	_ZN13CIRIsdsPreset11SetLangInfoERK7TDesC16S2_ @ 11  NONAME
-	_ZN13CIRIsdsPreset11SetLogoDataERK6TDesC8 @ 12  NONAME
-	_ZN13CIRIsdsPreset11SetUrlCountEi @ 13  NONAME
-	_ZN13CIRIsdsPreset11SetUrlCountEv @ 14  NONAME
-	_ZN13CIRIsdsPreset12ExternalizeLER12RWriteStream @ 15  NONAME
-	_ZN13CIRIsdsPreset12InternalizeLER11RReadStream @ 16  NONAME
-	_ZN13CIRIsdsPreset12SetGenreInfoERK7TDesC16S2_ @ 17  NONAME
-	_ZN13CIRIsdsPreset12SetGenreNameERK7TDesC16 @ 18  NONAME
-	_ZN13CIRIsdsPreset12SetShortDescERK7TDesC16 @ 19  NONAME
-	_ZN13CIRIsdsPreset14SetChannelTypeEi @ 20  NONAME
-	_ZN13CIRIsdsPreset14SetCountryCodeERK7TDesC16 @ 21  NONAME
-	_ZN13CIRIsdsPreset14SetCountryInfoERK7TDesC16S2_ @ 22  NONAME
-	_ZN13CIRIsdsPreset14SetCountryNameERK7TDesC16 @ 23  NONAME
-	_ZN13CIRIsdsPreset14SetDescriptionERK7TDesC16 @ 24  NONAME
-	_ZN13CIRIsdsPreset17GetUrlForBitrateLEi @ 25  NONAME
-	_ZN13CIRIsdsPreset18GetChannelBitrateLEi @ 26  NONAME
-	_ZN13CIRIsdsPreset19SetAdvertisementUrlERK7TDesC16 @ 27  NONAME
-	_ZN13CIRIsdsPreset19SetLastModifiedTimeERK7TDesC16 @ 28  NONAME
-	_ZN13CIRIsdsPreset19SetMusicStoreStatusERK7TDesC16 @ 29  NONAME
-	_ZN13CIRIsdsPreset21SetAdvertisementInUseERK7TDesC16 @ 30  NONAME
-	_ZN13CIRIsdsPreset22GetExactUrlForBitrateLEi @ 31  NONAME
-	_ZN13CIRIsdsPreset4NewLEv @ 32  NONAME
-	_ZN13CIRIsdsPreset5NewLCEv @ 33  NONAME
-	_ZN13CIRIsdsPreset5SetIdERK7TDesC16 @ 34  NONAME
-	_ZN13CIRIsdsPreset5SetIdEi @ 35  NONAME
-	_ZN13CIRIsdsPreset6GetUrlEi @ 36  NONAME
-	_ZN13CIRIsdsPreset7SetLangERK7TDesC16 @ 37  NONAME
-	_ZN13CIRIsdsPreset7SetNameERK7TDesC16 @ 38  NONAME
-	_ZN13CIRIsdsPreset7SetUrlLERK7TDesC16 @ 39  NONAME
-	_ZN13CIRIsdsPreset7SetUrlLERK7TDesC16S2_S2_ @ 40  NONAME
-	_ZN13CIRIsdsPreset7SetUrlLERK7TDesC16S2_i @ 41  NONAME
-	_ZN13CIRIsdsPreset8SetIndexEi @ 42  NONAME
-	_ZN13CIRIsdsPreset9SetImgUrlERK7TDesC16 @ 43  NONAME
-	_ZN13CIRIsdsPreset9SetUniqIdEm @ 44  NONAME
-	_ZN13CIRIsdsPresetC1Ev @ 45  NONAME
-	_ZN13CIRIsdsPresetC2Ev @ 46  NONAME
-	_ZN13CIRIsdsPresetaSERKS_ @ 47  NONAME
-	_ZN16CIRAdvertisement11SetAdvInUseERK7TDesC16 @ 48  NONAME
-	_ZN16CIRAdvertisement14SetVisibleTimeERK7TDesC16 @ 49  NONAME
-	_ZN16CIRAdvertisement4NewLEv @ 50  NONAME
-	_ZN16CIRAdvertisement5NewLCEv @ 51  NONAME
-	_ZN16CIRAdvertisement6SetURLERK7TDesC16 @ 52  NONAME
-	_ZN16CIRAdvertisement8SetUsageERK7TDesC16 @ 53  NONAME
-	_ZN18CIRLastPlayedSongs11GetSongNameEv @ 54  NONAME
-	_ZN18CIRLastPlayedSongs11SetSongNameERK7TDesC16 @ 55  NONAME
-	_ZN18CIRLastPlayedSongs12ExternalizeLER12RWriteStream @ 56  NONAME
-	_ZN18CIRLastPlayedSongs12InternalizeLER11RReadStream @ 57  NONAME
-	_ZN18CIRLastPlayedSongs13GetArtistNameEv @ 58  NONAME
-	_ZN18CIRLastPlayedSongs13SetArtistNameERK7TDesC16 @ 59  NONAME
-	_ZN18CIRLastPlayedSongs4NewLEv @ 60  NONAME
-	_ZN18CIRLastPlayedSongs5NewLCEv @ 61  NONAME
-	_ZN18CIRLastPlayedSongsaSERKS_ @ 62  NONAME
-	_ZN19CIRChannelServerUrl10SetBitRateEi @ 63  NONAME
-	_ZN19CIRChannelServerUrl12ExternalizeLER12RWriteStream @ 64  NONAME
-	_ZN19CIRChannelServerUrl12InternalizeLER11RReadStream @ 65  NONAME
-	_ZN19CIRChannelServerUrl12SetServerUrlERK7TDesC16 @ 66  NONAME
-	_ZN19CIRChannelServerUrl13SetServerNameERK7TDesC16 @ 67  NONAME
-	_ZN19CIRChannelServerUrl4NewLEv @ 68  NONAME
-	_ZN19CIRChannelServerUrl5NewLCEv @ 69  NONAME
-	_ZN19CIRChannelServerUrlaSERKS_ @ 70  NONAME
-	_ZN21CIRBrowseChannelItems10SetBitrateERK7TDesC16 @ 71  NONAME
-	_ZN21CIRBrowseChannelItems10SetBitrateERK7TDesC16S2_ @ 72  NONAME
-	_ZN21CIRBrowseChannelItems10SetBitrateERK7TDesC16S2_S2_ @ 73  NONAME
-	_ZN21CIRBrowseChannelItems11SetImageUrlERK7TDesC16 @ 74  NONAME
-	_ZN21CIRBrowseChannelItems12InternalizeLER11RReadStream @ 75  NONAME
-	_ZN21CIRBrowseChannelItems12SetBannerUrlERK7TDesC16 @ 76  NONAME
-	_ZN21CIRBrowseChannelItems16SetGetOperationLERK7TDesC16 @ 77  NONAME
-	_ZN21CIRBrowseChannelItems18SetClickThroughUrlERK7TDesC16 @ 78  NONAME
-	_ZN21CIRBrowseChannelItems4NewLEv @ 79  NONAME
-	_ZN21CIRBrowseChannelItems5NewLCEv @ 80  NONAME
-	_ZN21CIRBrowseChannelItems7SetSizeERK7TDesC16 @ 81  NONAME
-	_ZN21CIRBrowseChannelItems8SetTextLERK7TDesC16S2_S2_ @ 82  NONAME
-	_ZN22CIRBrowseCatagoryItems12InternalizeLER11RReadStream @ 83  NONAME
-	_ZN22CIRBrowseCatagoryItems12SetBannerUrlERK7TDesC16 @ 84  NONAME
-	_ZN22CIRBrowseCatagoryItems15SetGetOperationERK7TDesC16 @ 85  NONAME
-	_ZN22CIRBrowseCatagoryItems18SetClickThroughUrlERK7TDesC16 @ 86  NONAME
-	_ZN22CIRBrowseCatagoryItems4NewLEv @ 87  NONAME
-	_ZN22CIRBrowseCatagoryItems5NewLCEv @ 88  NONAME
-	_ZN22CIRBrowseCatagoryItems7SetSizeERK7TDesC16 @ 89  NONAME
-	_ZN22CIRBrowseCatagoryItems8SetTextLERK7TDesC16S2_ @ 90  NONAME
-	_ZNK12CIROTAUpdate12ExternalizeLER12RWriteStream @ 91  NONAME
-	_ZNK13CIRIsdsPreset10GetGenreIdEv @ 92  NONAME
-	_ZNK13CIRIsdsPreset11GetLangNameEv @ 93  NONAME
-	_ZNK13CIRIsdsPreset11GetLogoDataEv @ 94  NONAME
-	_ZNK13CIRIsdsPreset11GetUrlCountEv @ 95  NONAME
-	_ZNK13CIRIsdsPreset12GetCountryIdEv @ 96  NONAME
-	_ZNK13CIRIsdsPreset12GetGenreNameEv @ 97  NONAME
-	_ZNK13CIRIsdsPreset14GetChannelTypeEv @ 98  NONAME
-	_ZNK13CIRIsdsPreset14GetCountryNameEv @ 99  NONAME
-	_ZNK13CIRIsdsPreset14GetDescriptionEv @ 100  NONAME
-	_ZNK13CIRIsdsPreset16GetChannelUrlAtLEi @ 101  NONAME
-	_ZNK13CIRIsdsPreset19GetAdvertisementUrlEv @ 102  NONAME
-	_ZNK13CIRIsdsPreset19GetLastModifiedTimeEv @ 103  NONAME
-	_ZNK13CIRIsdsPreset19GetMusicStoreStatusEv @ 104  NONAME
-	_ZNK13CIRIsdsPreset19GetShortDescriptionEv @ 105  NONAME
-	_ZNK13CIRIsdsPreset20GetAvailableBitratesER6RArrayIiE @ 106  NONAME
-	_ZNK13CIRIsdsPreset21GetAdvertisementInUseEv @ 107  NONAME
-	_ZNK13CIRIsdsPreset5GetIdEv @ 108  NONAME
-	_ZNK13CIRIsdsPreset6UniqIdEv @ 109  NONAME
-	_ZNK13CIRIsdsPreset7GetNameEv @ 110  NONAME
-	_ZNK13CIRIsdsPreset8GetIndexEv @ 111  NONAME
-	_ZNK13CIRIsdsPreset9GetImgUrlEv @ 112  NONAME
-	_ZNK13CIRIsdsPreset9GetLangIdEv @ 113  NONAME
-	_ZNK16CIRAdvertisement10ConstructLEv @ 114  NONAME
-	_ZNK19CIRChannelServerUrl10GetBitRateEv @ 115  NONAME
-	_ZNK19CIRChannelServerUrl12GetServerUrlEv @ 116  NONAME
-	_ZNK19CIRChannelServerUrl13GetServerNameEv @ 117  NONAME
-	_ZNK21CIRBrowseChannelItems12ExternalizeLER12RWriteStream @ 118  NONAME
-	_ZNK22CIRBrowseCatagoryItems12ExternalizeLER12RWriteStream @ 119  NONAME
-	_ZTI12CIROTAUpdate @ 120  NONAME ; #<TI>#
-	_ZTI13CIRIsdsPreset @ 121  NONAME ; #<TI>#
-	_ZTI16CIRAdvertisement @ 122  NONAME ; #<TI>#
-	_ZTI18CIRLastPlayedSongs @ 123  NONAME ; #<TI>#
-	_ZTI19CIRChannelServerUrl @ 124  NONAME ; #<TI>#
-	_ZTI21CIRBrowseChannelItems @ 125  NONAME ; #<TI>#
-	_ZTI22CIRBrowseCatagoryItems @ 126  NONAME ; #<TI>#
-	_ZTV12CIROTAUpdate @ 127  NONAME ; #<VT>#
-	_ZTV13CIRIsdsPreset @ 128  NONAME ; #<VT>#
-	_ZTV16CIRAdvertisement @ 129  NONAME ; #<VT>#
-	_ZTV18CIRLastPlayedSongs @ 130  NONAME ; #<VT>#
-	_ZTV19CIRChannelServerUrl @ 131  NONAME ; #<VT>#
-	_ZTV21CIRBrowseChannelItems @ 132  NONAME ; #<VT>#
-	_ZTV22CIRBrowseCatagoryItems @ 133  NONAME ; #<VT>#
+	_ZN12CIROTAUpdate10ConstructLEv @ 1 NONAME
+	_ZN12CIROTAUpdate10SetVersionERK7TDesC16 @ 2 NONAME
+	_ZN12CIROTAUpdate12InternalizeLER11RReadStream @ 3 NONAME
+	_ZN12CIROTAUpdate15SetUpdateMethodERK7TDesC16 @ 4 NONAME
+	_ZN12CIROTAUpdate17SetUpdateIntervalERK7TDesC16 @ 5 NONAME
+	_ZN12CIROTAUpdate4NewLEv @ 6 NONAME
+	_ZN12CIROTAUpdate5NewLCEv @ 7 NONAME
+	_ZN12CIROTAUpdate9SetOTAUrlERK7TDesC16 @ 8 NONAME
+	_ZN13CIRIsdsPreset10SetGenreIdERK7TDesC16 @ 9 NONAME
+	_ZN13CIRIsdsPreset11SetLangCodeERK7TDesC16 @ 10 NONAME
+	_ZN13CIRIsdsPreset11SetLangInfoERK7TDesC16S2_ @ 11 NONAME
+	_ZN13CIRIsdsPreset11SetLogoDataERK6TDesC8 @ 12 NONAME
+	_ZN13CIRIsdsPreset11SetUrlCountEi @ 13 NONAME
+	_ZN13CIRIsdsPreset11SetUrlCountEv @ 14 NONAME
+	_ZN13CIRIsdsPreset12ExternalizeLER12RWriteStream @ 15 NONAME
+	_ZN13CIRIsdsPreset12InternalizeLER11RReadStream @ 16 NONAME
+	_ZN13CIRIsdsPreset12SetGenreInfoERK7TDesC16S2_ @ 17 NONAME
+	_ZN13CIRIsdsPreset12SetGenreNameERK7TDesC16 @ 18 NONAME
+	_ZN13CIRIsdsPreset12SetShortDescERK7TDesC16 @ 19 NONAME
+	_ZN13CIRIsdsPreset14SetChannelTypeEi @ 20 NONAME
+	_ZN13CIRIsdsPreset14SetCountryCodeERK7TDesC16 @ 21 NONAME
+	_ZN13CIRIsdsPreset14SetCountryInfoERK7TDesC16S2_ @ 22 NONAME
+	_ZN13CIRIsdsPreset14SetCountryNameERK7TDesC16 @ 23 NONAME
+	_ZN13CIRIsdsPreset14SetDescriptionERK7TDesC16 @ 24 NONAME
+	_ZN13CIRIsdsPreset17GetUrlForBitrateLEi @ 25 NONAME
+	_ZN13CIRIsdsPreset18GetChannelBitrateLEi @ 26 NONAME
+	_ZN13CIRIsdsPreset19SetAdvertisementUrlERK7TDesC16 @ 27 NONAME
+	_ZN13CIRIsdsPreset19SetLastModifiedTimeERK7TDesC16 @ 28 NONAME
+	_ZN13CIRIsdsPreset19SetMusicStoreStatusERK7TDesC16 @ 29 NONAME
+	_ZN13CIRIsdsPreset21SetAdvertisementInUseERK7TDesC16 @ 30 NONAME
+	_ZN13CIRIsdsPreset22GetExactUrlForBitrateLEi @ 31 NONAME
+	_ZN13CIRIsdsPreset4NewLEv @ 32 NONAME
+	_ZN13CIRIsdsPreset5NewLCEv @ 33 NONAME
+	_ZN13CIRIsdsPreset5SetIdERK7TDesC16 @ 34 NONAME
+	_ZN13CIRIsdsPreset5SetIdEi @ 35 NONAME
+	_ZN13CIRIsdsPreset6GetUrlEi @ 36 NONAME
+	_ZN13CIRIsdsPreset7SetLangERK7TDesC16 @ 37 NONAME
+	_ZN13CIRIsdsPreset7SetNameERK7TDesC16 @ 38 NONAME
+	_ZN13CIRIsdsPreset7SetUrlLERK7TDesC16S2_S2_ @ 39 NONAME
+	_ZN13CIRIsdsPreset7SetUrlLERK7TDesC16S2_i @ 40 NONAME
+	_ZN13CIRIsdsPreset9SetImgUrlERK7TDesC16 @ 41 NONAME
+	_ZN13CIRIsdsPresetaSERKS_ @ 42 NONAME
+	_ZN16CIRAdvertisement11SetAdvInUseERK7TDesC16 @ 43 NONAME
+	_ZN16CIRAdvertisement14SetVisibleTimeERK7TDesC16 @ 44 NONAME
+	_ZN16CIRAdvertisement4NewLEv @ 45 NONAME
+	_ZN16CIRAdvertisement5NewLCEv @ 46 NONAME
+	_ZN16CIRAdvertisement6SetURLERK7TDesC16 @ 47 NONAME
+	_ZN16CIRAdvertisement8SetUsageERK7TDesC16 @ 48 NONAME
+	_ZN18CIRLastPlayedSongs11GetSongNameEv @ 49 NONAME
+	_ZN18CIRLastPlayedSongs11SetSongNameERK7TDesC16 @ 50 NONAME
+	_ZN18CIRLastPlayedSongs12ExternalizeLER12RWriteStream @ 51 NONAME
+	_ZN18CIRLastPlayedSongs12InternalizeLER11RReadStream @ 52 NONAME
+	_ZN18CIRLastPlayedSongs13GetArtistNameEv @ 53 NONAME
+	_ZN18CIRLastPlayedSongs13SetArtistNameERK7TDesC16 @ 54 NONAME
+	_ZN18CIRLastPlayedSongs4NewLEv @ 55 NONAME
+	_ZN18CIRLastPlayedSongs5NewLCEv @ 56 NONAME
+	_ZN18CIRLastPlayedSongsaSERKS_ @ 57 NONAME
+	_ZN19CIRChannelServerUrl10SetBitRateEi @ 58 NONAME
+	_ZN19CIRChannelServerUrl12ExternalizeLER12RWriteStream @ 59 NONAME
+	_ZN19CIRChannelServerUrl12InternalizeLER11RReadStream @ 60 NONAME
+	_ZN19CIRChannelServerUrl12SetServerUrlERK7TDesC16 @ 61 NONAME
+	_ZN19CIRChannelServerUrl13SetServerNameERK7TDesC16 @ 62 NONAME
+	_ZN19CIRChannelServerUrl4NewLEv @ 63 NONAME
+	_ZN19CIRChannelServerUrl5NewLCEv @ 64 NONAME
+	_ZN19CIRChannelServerUrlaSERKS_ @ 65 NONAME
+	_ZN21CIRBrowseChannelItems10SetBitrateERK7TDesC16 @ 66 NONAME
+	_ZN21CIRBrowseChannelItems10SetBitrateERK7TDesC16S2_ @ 67 NONAME
+	_ZN21CIRBrowseChannelItems10SetBitrateERK7TDesC16S2_S2_ @ 68 NONAME
+	_ZN21CIRBrowseChannelItems11SetImageUrlERK7TDesC16 @ 69 NONAME
+	_ZN21CIRBrowseChannelItems12InternalizeLER11RReadStream @ 70 NONAME
+	_ZN21CIRBrowseChannelItems12SetBannerUrlERK7TDesC16 @ 71 NONAME
+	_ZN21CIRBrowseChannelItems16SetGetOperationLERK7TDesC16 @ 72 NONAME
+	_ZN21CIRBrowseChannelItems18SetClickThroughUrlERK7TDesC16 @ 73 NONAME
+	_ZN21CIRBrowseChannelItems4NewLEv @ 74 NONAME
+	_ZN21CIRBrowseChannelItems5NewLCEv @ 75 NONAME
+	_ZN21CIRBrowseChannelItems7SetSizeERK7TDesC16 @ 76 NONAME
+	_ZN21CIRBrowseChannelItems8SetTextLERK7TDesC16S2_S2_ @ 77 NONAME
+	_ZN22CIRBrowseCatagoryItems12InternalizeLER11RReadStream @ 78 NONAME
+	_ZN22CIRBrowseCatagoryItems12SetBannerUrlERK7TDesC16 @ 79 NONAME
+	_ZN22CIRBrowseCatagoryItems15SetGetOperationERK7TDesC16 @ 80 NONAME
+	_ZN22CIRBrowseCatagoryItems18SetClickThroughUrlERK7TDesC16 @ 81 NONAME
+	_ZN22CIRBrowseCatagoryItems4NewLEv @ 82 NONAME
+	_ZN22CIRBrowseCatagoryItems5NewLCEv @ 83 NONAME
+	_ZN22CIRBrowseCatagoryItems7SetSizeERK7TDesC16 @ 84 NONAME
+	_ZN22CIRBrowseCatagoryItems8SetTextLERK7TDesC16S2_ @ 85 NONAME
+	_ZNK12CIROTAUpdate12ExternalizeLER12RWriteStream @ 86 NONAME
+	_ZNK13CIRIsdsPreset10GetGenreIdEv @ 87 NONAME
+	_ZNK13CIRIsdsPreset11GetLangNameEv @ 88 NONAME
+	_ZNK13CIRIsdsPreset11GetLogoDataEv @ 89 NONAME
+	_ZNK13CIRIsdsPreset11GetUrlCountEv @ 90 NONAME
+	_ZNK13CIRIsdsPreset12GetCountryIdEv @ 91 NONAME
+	_ZNK13CIRIsdsPreset12GetGenreNameEv @ 92 NONAME
+	_ZNK13CIRIsdsPreset14GetChannelTypeEv @ 93 NONAME
+	_ZNK13CIRIsdsPreset14GetCountryNameEv @ 94 NONAME
+	_ZNK13CIRIsdsPreset14GetDescriptionEv @ 95 NONAME
+	_ZNK13CIRIsdsPreset16GetChannelUrlAtLEi @ 96 NONAME
+	_ZNK13CIRIsdsPreset19GetAdvertisementUrlEv @ 97 NONAME
+	_ZNK13CIRIsdsPreset19GetLastModifiedTimeEv @ 98 NONAME
+	_ZNK13CIRIsdsPreset19GetMusicStoreStatusEv @ 99 NONAME
+	_ZNK13CIRIsdsPreset19GetShortDescriptionEv @ 100 NONAME
+	_ZNK13CIRIsdsPreset20GetAvailableBitratesER6RArrayIiE @ 101 NONAME
+	_ZNK13CIRIsdsPreset21GetAdvertisementInUseEv @ 102 NONAME
+	_ZNK13CIRIsdsPreset5GetIdEv @ 103 NONAME
+	_ZNK13CIRIsdsPreset7GetNameEv @ 104 NONAME
+	_ZNK13CIRIsdsPreset9GetImgUrlEv @ 105 NONAME
+	_ZNK13CIRIsdsPreset9GetLangIdEv @ 106 NONAME
+	_ZNK16CIRAdvertisement10ConstructLEv @ 107 NONAME
+	_ZNK19CIRChannelServerUrl10GetBitRateEv @ 108 NONAME
+	_ZNK19CIRChannelServerUrl12GetServerUrlEv @ 109 NONAME
+	_ZNK19CIRChannelServerUrl13GetServerNameEv @ 110 NONAME
+	_ZNK21CIRBrowseChannelItems12ExternalizeLER12RWriteStream @ 111 NONAME
+	_ZNK22CIRBrowseCatagoryItems12ExternalizeLER12RWriteStream @ 112 NONAME
+	_ZTI12CIROTAUpdate @ 113 NONAME DATA 12
+	_ZTI13CIRIsdsPreset @ 114 NONAME DATA 12
+	_ZTI16CIRAdvertisement @ 115 NONAME DATA 12
+	_ZTI18CIRLastPlayedSongs @ 116 NONAME DATA 12
+	_ZTI19CIRChannelServerUrl @ 117 NONAME DATA 12
+	_ZTI21CIRBrowseChannelItems @ 118 NONAME DATA 12
+	_ZTI22CIRBrowseCatagoryItems @ 119 NONAME DATA 12
+	_ZTV12CIROTAUpdate @ 120 NONAME DATA 20
+	_ZTV13CIRIsdsPreset @ 121 NONAME DATA 20
+	_ZTV16CIRAdvertisement @ 122 NONAME DATA 20
+	_ZTV18CIRLastPlayedSongs @ 123 NONAME DATA 20
+	_ZTV19CIRChannelServerUrl @ 124 NONAME DATA 20
+	_ZTV21CIRBrowseChannelItems @ 125 NONAME DATA 20
+	_ZTV22CIRBrowseCatagoryItems @ 126 NONAME DATA 20
 
--- a/internetradio2.0/bmarm/irfavoritesdbu.def	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/bmarm/irfavoritesdbu.def	Wed Jun 23 16:21:12 2010 +0100
@@ -24,4 +24,5 @@
 	_ZThn4_N14CIRFavoritesDb20HandlePresetChangedLEi4TUidN17MPSPresetObserver9TPSReasonE @ 23  NONAME ; #<thunk>#
 	_ZN14CIRFavoritesDb19GetAllSortedPresetsEv @ 24  NONAME
 	_ZN14CIRFavoritesDb20IncreasePlayedTimesLERK13CIRIsdsPreset @ 25  NONAME
+        _ZN14CIRFavoritesDb13RenamePresetLERK13CIRIsdsPresetRK7TDesC16 @ 26 NONAME
 
--- a/internetradio2.0/bwinscw/irdatastructuresu.def	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/bwinscw/irdatastructuresu.def	Wed Jun 23 16:21:12 2010 +0100
@@ -1,121 +1,114 @@
 EXPORTS
-	??0CIRIsdsPreset@@QAE@XZ @ 1  NONAME ; CIRIsdsPreset::CIRIsdsPreset(void)
-	??4CIRChannelServerUrl@@QAEAAV0@ABV0@@Z @ 2  NONAME ; class CIRChannelServerUrl & CIRChannelServerUrl::operator=(class CIRChannelServerUrl const &)
-	??4CIRIsdsPreset@@QAEAAV0@ABV0@@Z @ 3  NONAME ; class CIRIsdsPreset & CIRIsdsPreset::operator=(class CIRIsdsPreset const &)
-	??4CIRLastPlayedSongs@@QAEAAV0@ABV0@@Z @ 4  NONAME ; class CIRLastPlayedSongs & CIRLastPlayedSongs::operator=(class CIRLastPlayedSongs const &)
-	?ConstructL@CIRAdvertisement@@QBEXXZ @ 5  NONAME ; void CIRAdvertisement::ConstructL(void) const
-	?ConstructL@CIROTAUpdate@@QAEXXZ @ 6  NONAME ; void CIROTAUpdate::ConstructL(void)
-	?ExternalizeL@CIRBrowseCatagoryItems@@QBEXAAVRWriteStream@@@Z @ 7  NONAME ; void CIRBrowseCatagoryItems::ExternalizeL(class RWriteStream &) const
-	?ExternalizeL@CIRBrowseChannelItems@@QBEXAAVRWriteStream@@@Z @ 8  NONAME ; void CIRBrowseChannelItems::ExternalizeL(class RWriteStream &) const
-	?ExternalizeL@CIRChannelServerUrl@@QAEXAAVRWriteStream@@@Z @ 9  NONAME ; void CIRChannelServerUrl::ExternalizeL(class RWriteStream &)
-	?ExternalizeL@CIRIsdsPreset@@QAEXAAVRWriteStream@@@Z @ 10  NONAME ; void CIRIsdsPreset::ExternalizeL(class RWriteStream &)
-	?ExternalizeL@CIRLastPlayedSongs@@QAEXAAVRWriteStream@@@Z @ 11  NONAME ; void CIRLastPlayedSongs::ExternalizeL(class RWriteStream &)
-	?ExternalizeL@CIROTAUpdate@@QBEXAAVRWriteStream@@@Z @ 12  NONAME ; void CIROTAUpdate::ExternalizeL(class RWriteStream &) const
-	?GetAdvertisementInUse@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 13  NONAME ; class TDesC16 const & CIRIsdsPreset::GetAdvertisementInUse(void) const
-	?GetAdvertisementUrl@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 14  NONAME ; class TDesC16 const & CIRIsdsPreset::GetAdvertisementUrl(void) const
-	?GetArtistName@CIRLastPlayedSongs@@QAEAAVTDesC16@@XZ @ 15  NONAME ; class TDesC16 & CIRLastPlayedSongs::GetArtistName(void)
-	?GetAvailableBitrates@CIRIsdsPreset@@QBEHAAV?$RArray@H@@@Z @ 16  NONAME ; int CIRIsdsPreset::GetAvailableBitrates(class RArray<int> &) const
-	?GetBitRate@CIRChannelServerUrl@@QBEHXZ @ 17  NONAME ; int CIRChannelServerUrl::GetBitRate(void) const
-	?GetChannelBitrateL@CIRIsdsPreset@@QAEHH@Z @ 18  NONAME ; int CIRIsdsPreset::GetChannelBitrateL(int)
-	?GetChannelType@CIRIsdsPreset@@QBEHXZ @ 19  NONAME ; int CIRIsdsPreset::GetChannelType(void) const
-	?GetChannelUrlAtL@CIRIsdsPreset@@QBEABVTDesC16@@H@Z @ 20  NONAME ; class TDesC16 const & CIRIsdsPreset::GetChannelUrlAtL(int) const
-	?GetCountryId@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 21  NONAME ; class TDesC16 const & CIRIsdsPreset::GetCountryId(void) const
-	?GetCountryName@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 22  NONAME ; class TDesC16 const & CIRIsdsPreset::GetCountryName(void) const
-	?GetDescription@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 23  NONAME ; class TDesC16 const & CIRIsdsPreset::GetDescription(void) const
-	?GetExactUrlForBitrateL@CIRIsdsPreset@@QAEPAVCDesC16ArrayFlat@@H@Z @ 24  NONAME ; class CDesC16ArrayFlat * CIRIsdsPreset::GetExactUrlForBitrateL(int)
-	?GetGenreId@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 25  NONAME ; class TDesC16 const & CIRIsdsPreset::GetGenreId(void) const
-	?GetGenreName@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 26  NONAME ; class TDesC16 const & CIRIsdsPreset::GetGenreName(void) const
-	?GetId@CIRIsdsPreset@@QBEHXZ @ 27  NONAME ; int CIRIsdsPreset::GetId(void) const
-	?GetImgUrl@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 28  NONAME ; class TDesC16 const & CIRIsdsPreset::GetImgUrl(void) const
-	?GetIndex@CIRIsdsPreset@@QBEHXZ @ 29  NONAME ; int CIRIsdsPreset::GetIndex(void) const
-	?GetLangId@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 30  NONAME ; class TDesC16 const & CIRIsdsPreset::GetLangId(void) const
-	?GetLangName@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 31  NONAME ; class TDesC16 const & CIRIsdsPreset::GetLangName(void) const
-	?GetLastModifiedTime@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 32  NONAME ; class TDesC16 const & CIRIsdsPreset::GetLastModifiedTime(void) const
-	?GetLogoData@CIRIsdsPreset@@QBEABVTDesC8@@XZ @ 33  NONAME ; class TDesC8 const & CIRIsdsPreset::GetLogoData(void) const
-	?GetMusicStoreStatus@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 34  NONAME ; class TDesC16 const & CIRIsdsPreset::GetMusicStoreStatus(void) const
-	?GetName@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 35  NONAME ; class TDesC16 const & CIRIsdsPreset::GetName(void) const
-	?GetServerName@CIRChannelServerUrl@@QBEABVTDesC16@@XZ @ 36  NONAME ; class TDesC16 const & CIRChannelServerUrl::GetServerName(void) const
-	?GetServerUrl@CIRChannelServerUrl@@QBEABVTDesC16@@XZ @ 37  NONAME ; class TDesC16 const & CIRChannelServerUrl::GetServerUrl(void) const
-	?GetShortDescription@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 38  NONAME ; class TDesC16 const & CIRIsdsPreset::GetShortDescription(void) const
-	?GetSongName@CIRLastPlayedSongs@@QAEAAVTDesC16@@XZ @ 39  NONAME ; class TDesC16 & CIRLastPlayedSongs::GetSongName(void)
-	?GetUrl@CIRIsdsPreset@@QAEAAVCIRChannelServerUrl@@H@Z @ 40  NONAME ; class CIRChannelServerUrl & CIRIsdsPreset::GetUrl(int)
-	?GetUrlCount@CIRIsdsPreset@@QBEHXZ @ 41  NONAME ; int CIRIsdsPreset::GetUrlCount(void) const
-	?GetUrlForBitrateL@CIRIsdsPreset@@QAEPAVCDesC16ArrayFlat@@H@Z @ 42  NONAME ; class CDesC16ArrayFlat * CIRIsdsPreset::GetUrlForBitrateL(int)
-	?InternalizeL@CIRBrowseCatagoryItems@@QAEXAAVRReadStream@@@Z @ 43  NONAME ; void CIRBrowseCatagoryItems::InternalizeL(class RReadStream &)
-	?InternalizeL@CIRBrowseChannelItems@@QAEXAAVRReadStream@@@Z @ 44  NONAME ; void CIRBrowseChannelItems::InternalizeL(class RReadStream &)
-	?InternalizeL@CIRChannelServerUrl@@QAEXAAVRReadStream@@@Z @ 45  NONAME ; void CIRChannelServerUrl::InternalizeL(class RReadStream &)
-	?InternalizeL@CIRIsdsPreset@@QAEXAAVRReadStream@@@Z @ 46  NONAME ; void CIRIsdsPreset::InternalizeL(class RReadStream &)
-	?InternalizeL@CIRLastPlayedSongs@@QAEXAAVRReadStream@@@Z @ 47  NONAME ; void CIRLastPlayedSongs::InternalizeL(class RReadStream &)
-	?InternalizeL@CIROTAUpdate@@QAEXAAVRReadStream@@@Z @ 48  NONAME ; void CIROTAUpdate::InternalizeL(class RReadStream &)
-	?NewL@CIRAdvertisement@@SAPAV1@XZ @ 49  NONAME ; class CIRAdvertisement * CIRAdvertisement::NewL(void)
-	?NewL@CIRBrowseCatagoryItems@@SAPAV1@XZ @ 50  NONAME ; class CIRBrowseCatagoryItems * CIRBrowseCatagoryItems::NewL(void)
-	?NewL@CIRBrowseChannelItems@@SAPAV1@XZ @ 51  NONAME ; class CIRBrowseChannelItems * CIRBrowseChannelItems::NewL(void)
-	?NewL@CIRChannelServerUrl@@SAPAV1@XZ @ 52  NONAME ; class CIRChannelServerUrl * CIRChannelServerUrl::NewL(void)
-	?NewL@CIRIsdsPreset@@SAPAV1@XZ @ 53  NONAME ; class CIRIsdsPreset * CIRIsdsPreset::NewL(void)
-	?NewL@CIRLastPlayedSongs@@SAPAV1@XZ @ 54  NONAME ; class CIRLastPlayedSongs * CIRLastPlayedSongs::NewL(void)
-	?NewL@CIROTAUpdate@@SAPAV1@XZ @ 55  NONAME ; class CIROTAUpdate * CIROTAUpdate::NewL(void)
-	?NewLC@CIRAdvertisement@@SAPAV1@XZ @ 56  NONAME ; class CIRAdvertisement * CIRAdvertisement::NewLC(void)
-	?NewLC@CIRBrowseCatagoryItems@@SAPAV1@XZ @ 57  NONAME ; class CIRBrowseCatagoryItems * CIRBrowseCatagoryItems::NewLC(void)
-	?NewLC@CIRBrowseChannelItems@@SAPAV1@XZ @ 58  NONAME ; class CIRBrowseChannelItems * CIRBrowseChannelItems::NewLC(void)
-	?NewLC@CIRChannelServerUrl@@SAPAV1@XZ @ 59  NONAME ; class CIRChannelServerUrl * CIRChannelServerUrl::NewLC(void)
-	?NewLC@CIRIsdsPreset@@SAPAV1@XZ @ 60  NONAME ; class CIRIsdsPreset * CIRIsdsPreset::NewLC(void)
-	?NewLC@CIRLastPlayedSongs@@SAPAV1@XZ @ 61  NONAME ; class CIRLastPlayedSongs * CIRLastPlayedSongs::NewLC(void)
-	?NewLC@CIROTAUpdate@@SAPAV1@XZ @ 62  NONAME ; class CIROTAUpdate * CIROTAUpdate::NewLC(void)
-	?SetAdvInUse@CIRAdvertisement@@QAEXABVTDesC16@@@Z @ 63  NONAME ; void CIRAdvertisement::SetAdvInUse(class TDesC16 const &)
-	?SetAdvertisementInUse@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 64  NONAME ; void CIRIsdsPreset::SetAdvertisementInUse(class TDesC16 const &)
-	?SetAdvertisementUrl@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 65  NONAME ; void CIRIsdsPreset::SetAdvertisementUrl(class TDesC16 const &)
-	?SetArtistName@CIRLastPlayedSongs@@QAEXABVTDesC16@@@Z @ 66  NONAME ; void CIRLastPlayedSongs::SetArtistName(class TDesC16 const &)
-	?SetBannerUrl@CIRBrowseCatagoryItems@@QAEXABVTDesC16@@@Z @ 67  NONAME ; void CIRBrowseCatagoryItems::SetBannerUrl(class TDesC16 const &)
-	?SetBannerUrl@CIRBrowseChannelItems@@QAEXABVTDesC16@@@Z @ 68  NONAME ; void CIRBrowseChannelItems::SetBannerUrl(class TDesC16 const &)
-	?SetBitRate@CIRChannelServerUrl@@QAEXH@Z @ 69  NONAME ; void CIRChannelServerUrl::SetBitRate(int)
-	?SetBitrate@CIRBrowseChannelItems@@QAEXABVTDesC16@@00@Z @ 70  NONAME ; void CIRBrowseChannelItems::SetBitrate(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
-	?SetBitrate@CIRBrowseChannelItems@@QAEXABVTDesC16@@0@Z @ 71  NONAME ; void CIRBrowseChannelItems::SetBitrate(class TDesC16 const &, class TDesC16 const &)
-	?SetBitrate@CIRBrowseChannelItems@@QAEXABVTDesC16@@@Z @ 72  NONAME ; void CIRBrowseChannelItems::SetBitrate(class TDesC16 const &)
-	?SetChannelType@CIRIsdsPreset@@QAEXH@Z @ 73  NONAME ; void CIRIsdsPreset::SetChannelType(int)
-	?SetClickThroughUrl@CIRBrowseCatagoryItems@@QAEXABVTDesC16@@@Z @ 74  NONAME ; void CIRBrowseCatagoryItems::SetClickThroughUrl(class TDesC16 const &)
-	?SetClickThroughUrl@CIRBrowseChannelItems@@QAEXABVTDesC16@@@Z @ 75  NONAME ; void CIRBrowseChannelItems::SetClickThroughUrl(class TDesC16 const &)
-	?SetCountryCode@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 76  NONAME ; void CIRIsdsPreset::SetCountryCode(class TDesC16 const &)
-	?SetCountryInfo@CIRIsdsPreset@@QAEXABVTDesC16@@0@Z @ 77  NONAME ; void CIRIsdsPreset::SetCountryInfo(class TDesC16 const &, class TDesC16 const &)
-	?SetCountryName@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 78  NONAME ; void CIRIsdsPreset::SetCountryName(class TDesC16 const &)
-	?SetDescription@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 79  NONAME ; void CIRIsdsPreset::SetDescription(class TDesC16 const &)
-	?SetGenreId@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 80  NONAME ; void CIRIsdsPreset::SetGenreId(class TDesC16 const &)
-	?SetGenreInfo@CIRIsdsPreset@@QAEXABVTDesC16@@0@Z @ 81  NONAME ; void CIRIsdsPreset::SetGenreInfo(class TDesC16 const &, class TDesC16 const &)
-	?SetGenreName@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 82  NONAME ; void CIRIsdsPreset::SetGenreName(class TDesC16 const &)
-	?SetGetOperation@CIRBrowseCatagoryItems@@QAEXABVTDesC16@@@Z @ 83  NONAME ; void CIRBrowseCatagoryItems::SetGetOperation(class TDesC16 const &)
-	?SetGetOperationL@CIRBrowseChannelItems@@QAEXABVTDesC16@@@Z @ 84  NONAME ; void CIRBrowseChannelItems::SetGetOperationL(class TDesC16 const &)
-	?SetId@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 85  NONAME ; void CIRIsdsPreset::SetId(class TDesC16 const &)
-	?SetId@CIRIsdsPreset@@QAEXH@Z @ 86  NONAME ; void CIRIsdsPreset::SetId(int)
-	?SetImageUrl@CIRBrowseChannelItems@@QAEXABVTDesC16@@@Z @ 87  NONAME ; void CIRBrowseChannelItems::SetImageUrl(class TDesC16 const &)
-	?SetImgUrl@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 88  NONAME ; void CIRIsdsPreset::SetImgUrl(class TDesC16 const &)
-	?SetIndex@CIRIsdsPreset@@QAEXH@Z @ 89  NONAME ; void CIRIsdsPreset::SetIndex(int)
-	?SetLang@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 90  NONAME ; void CIRIsdsPreset::SetLang(class TDesC16 const &)
-	?SetLangCode@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 91  NONAME ; void CIRIsdsPreset::SetLangCode(class TDesC16 const &)
-	?SetLangInfo@CIRIsdsPreset@@QAEXABVTDesC16@@0@Z @ 92  NONAME ; void CIRIsdsPreset::SetLangInfo(class TDesC16 const &, class TDesC16 const &)
-	?SetLastModifiedTime@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 93  NONAME ; void CIRIsdsPreset::SetLastModifiedTime(class TDesC16 const &)
-	?SetLogoData@CIRIsdsPreset@@QAEXABVTDesC8@@@Z @ 94  NONAME ; void CIRIsdsPreset::SetLogoData(class TDesC8 const &)
-	?SetMusicStoreStatus@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 95  NONAME ; void CIRIsdsPreset::SetMusicStoreStatus(class TDesC16 const &)
-	?SetName@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 96  NONAME ; void CIRIsdsPreset::SetName(class TDesC16 const &)
-	?SetOTAUrl@CIROTAUpdate@@QAEXABVTDesC16@@@Z @ 97  NONAME ; void CIROTAUpdate::SetOTAUrl(class TDesC16 const &)
-	?SetServerName@CIRChannelServerUrl@@QAEXABVTDesC16@@@Z @ 98  NONAME ; void CIRChannelServerUrl::SetServerName(class TDesC16 const &)
-	?SetServerUrl@CIRChannelServerUrl@@QAEXABVTDesC16@@@Z @ 99  NONAME ; void CIRChannelServerUrl::SetServerUrl(class TDesC16 const &)
-	?SetShortDesc@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 100  NONAME ; void CIRIsdsPreset::SetShortDesc(class TDesC16 const &)
-	?SetSize@CIRBrowseCatagoryItems@@QAEXABVTDesC16@@@Z @ 101  NONAME ; void CIRBrowseCatagoryItems::SetSize(class TDesC16 const &)
-	?SetSize@CIRBrowseChannelItems@@QAEXABVTDesC16@@@Z @ 102  NONAME ; void CIRBrowseChannelItems::SetSize(class TDesC16 const &)
-	?SetSongName@CIRLastPlayedSongs@@QAEXABVTDesC16@@@Z @ 103  NONAME ; void CIRLastPlayedSongs::SetSongName(class TDesC16 const &)
-	?SetTextL@CIRBrowseCatagoryItems@@QAEXABVTDesC16@@0@Z @ 104  NONAME ; void CIRBrowseCatagoryItems::SetTextL(class TDesC16 const &, class TDesC16 const &)
-	?SetTextL@CIRBrowseChannelItems@@QAEXABVTDesC16@@00@Z @ 105  NONAME ; void CIRBrowseChannelItems::SetTextL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
-	?SetURL@CIRAdvertisement@@QAEXABVTDesC16@@@Z @ 106  NONAME ; void CIRAdvertisement::SetURL(class TDesC16 const &)
-	?SetUniqId@CIRIsdsPreset@@QAEXK@Z @ 107  NONAME ; void CIRIsdsPreset::SetUniqId(unsigned long)
-	?SetUpdateInterval@CIROTAUpdate@@QAEXABVTDesC16@@@Z @ 108  NONAME ; void CIROTAUpdate::SetUpdateInterval(class TDesC16 const &)
-	?SetUpdateMethod@CIROTAUpdate@@QAEXABVTDesC16@@@Z @ 109  NONAME ; void CIROTAUpdate::SetUpdateMethod(class TDesC16 const &)
-	?SetUrlCount@CIRIsdsPreset@@QAEXH@Z @ 110  NONAME ; void CIRIsdsPreset::SetUrlCount(int)
-	?SetUrlCount@CIRIsdsPreset@@QAEXXZ @ 111  NONAME ; void CIRIsdsPreset::SetUrlCount(void)
-	?SetUrlL@CIRIsdsPreset@@QAEXABVTDesC16@@00@Z @ 112  NONAME ; void CIRIsdsPreset::SetUrlL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
-	?SetUrlL@CIRIsdsPreset@@QAEXABVTDesC16@@0H@Z @ 113  NONAME ; void CIRIsdsPreset::SetUrlL(class TDesC16 const &, class TDesC16 const &, int)
-	?SetUrlL@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 114  NONAME ; void CIRIsdsPreset::SetUrlL(class TDesC16 const &)
-	?SetUsage@CIRAdvertisement@@QAEXABVTDesC16@@@Z @ 115  NONAME ; void CIRAdvertisement::SetUsage(class TDesC16 const &)
-	?SetVersion@CIROTAUpdate@@QAEXABVTDesC16@@@Z @ 116  NONAME ; void CIROTAUpdate::SetVersion(class TDesC16 const &)
-	?SetVisibleTime@CIRAdvertisement@@QAEXABVTDesC16@@@Z @ 117  NONAME ; void CIRAdvertisement::SetVisibleTime(class TDesC16 const &)
-	?UniqId@CIRIsdsPreset@@QBEKXZ @ 118  NONAME ; unsigned long CIRIsdsPreset::UniqId(void) const
-	_E32Dll=__E32Dll	; Entry point for emulation
+	?NewLC@CIRBrowseChannelItems@@SAPAV1@XZ @ 1  NONAME ; class CIRBrowseChannelItems * CIRBrowseChannelItems::NewLC(void)
+	?SetSize@CIRBrowseChannelItems@@QAEXABVTDesC16@@@Z @ 2  NONAME ; void CIRBrowseChannelItems::SetSize(class TDesC16 const &)
+	?GetUrl@CIRIsdsPreset@@QAEAAVCIRChannelServerUrl@@H@Z @ 3  NONAME ; class CIRChannelServerUrl & CIRIsdsPreset::GetUrl(int)
+	?ExternalizeL@CIRLastPlayedSongs@@QAEXAAVRWriteStream@@@Z @ 4  NONAME ; void CIRLastPlayedSongs::ExternalizeL(class RWriteStream &)
+	?GetShortDescription@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 5  NONAME ; class TDesC16 const & CIRIsdsPreset::GetShortDescription(void) const
+	?GetLastModifiedTime@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 6  NONAME ; class TDesC16 const & CIRIsdsPreset::GetLastModifiedTime(void) const
+	?GetLangId@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 7  NONAME ; class TDesC16 const & CIRIsdsPreset::GetLangId(void) const
+	?SetLastModifiedTime@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 8  NONAME ; void CIRIsdsPreset::SetLastModifiedTime(class TDesC16 const &)
+	?GetGenreName@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 9  NONAME ; class TDesC16 const & CIRIsdsPreset::GetGenreName(void) const
+	?GetGenreId@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 10  NONAME ; class TDesC16 const & CIRIsdsPreset::GetGenreId(void) const
+	?SetLangCode@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 11  NONAME ; void CIRIsdsPreset::SetLangCode(class TDesC16 const &)
+	?SetName@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 12  NONAME ; void CIRIsdsPreset::SetName(class TDesC16 const &)
+	?SetUsage@CIRAdvertisement@@QAEXABVTDesC16@@@Z @ 13  NONAME ; void CIRAdvertisement::SetUsage(class TDesC16 const &)
+	?SetImgUrl@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 14  NONAME ; void CIRIsdsPreset::SetImgUrl(class TDesC16 const &)
+	?NewL@CIROTAUpdate@@SAPAV1@XZ @ 15  NONAME ; class CIROTAUpdate * CIROTAUpdate::NewL(void)
+	?GetUrlForBitrateL@CIRIsdsPreset@@QAEPAVCDesC16ArrayFlat@@H@Z @ 16  NONAME ; class CDesC16ArrayFlat * CIRIsdsPreset::GetUrlForBitrateL(int)
+	??4CIRIsdsPreset@@QAEAAV0@ABV0@@Z @ 17  NONAME ; class CIRIsdsPreset & CIRIsdsPreset::operator=(class CIRIsdsPreset const &)
+	?SetImageUrl@CIRBrowseChannelItems@@QAEXABVTDesC16@@@Z @ 18  NONAME ; void CIRBrowseChannelItems::SetImageUrl(class TDesC16 const &)
+	?SetVisibleTime@CIRAdvertisement@@QAEXABVTDesC16@@@Z @ 19  NONAME ; void CIRAdvertisement::SetVisibleTime(class TDesC16 const &)
+	?GetSongName@CIRLastPlayedSongs@@QAEAAVTDesC16@@XZ @ 20  NONAME ; class TDesC16 & CIRLastPlayedSongs::GetSongName(void)
+	?GetCountryName@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 21  NONAME ; class TDesC16 const & CIRIsdsPreset::GetCountryName(void) const
+	?SetDescription@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 22  NONAME ; void CIRIsdsPreset::SetDescription(class TDesC16 const &)
+	?SetChannelType@CIRIsdsPreset@@QAEXH@Z @ 23  NONAME ; void CIRIsdsPreset::SetChannelType(int)
+	?ConstructL@CIRAdvertisement@@QBEXXZ @ 24  NONAME ; void CIRAdvertisement::ConstructL(void) const
+	?InternalizeL@CIRChannelServerUrl@@QAEXAAVRReadStream@@@Z @ 25  NONAME ; void CIRChannelServerUrl::InternalizeL(class RReadStream &)
+	?GetChannelType@CIRIsdsPreset@@QBEHXZ @ 26  NONAME ; int CIRIsdsPreset::GetChannelType(void) const
+	?SetLangInfo@CIRIsdsPreset@@QAEXABVTDesC16@@0@Z @ 27  NONAME ; void CIRIsdsPreset::SetLangInfo(class TDesC16 const &, class TDesC16 const &)
+	?SetShortDesc@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 28  NONAME ; void CIRIsdsPreset::SetShortDesc(class TDesC16 const &)
+	?SetBitrate@CIRBrowseChannelItems@@QAEXABVTDesC16@@00@Z @ 29  NONAME ; void CIRBrowseChannelItems::SetBitrate(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
+	?GetMusicStoreStatus@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 30  NONAME ; class TDesC16 const & CIRIsdsPreset::GetMusicStoreStatus(void) const
+	?SetClickThroughUrl@CIRBrowseCatagoryItems@@QAEXABVTDesC16@@@Z @ 31  NONAME ; void CIRBrowseCatagoryItems::SetClickThroughUrl(class TDesC16 const &)
+	?NewLC@CIRLastPlayedSongs@@SAPAV1@XZ @ 32  NONAME ; class CIRLastPlayedSongs * CIRLastPlayedSongs::NewLC(void)
+	?NewLC@CIRChannelServerUrl@@SAPAV1@XZ @ 33  NONAME ; class CIRChannelServerUrl * CIRChannelServerUrl::NewLC(void)
+	?InternalizeL@CIRIsdsPreset@@QAEXAAVRReadStream@@@Z @ 34  NONAME ; void CIRIsdsPreset::InternalizeL(class RReadStream &)
+	?SetUrlCount@CIRIsdsPreset@@QAEXXZ @ 35  NONAME ; void CIRIsdsPreset::SetUrlCount(void)
+	?SetLogoData@CIRIsdsPreset@@QAEXABVTDesC8@@@Z @ 36  NONAME ; void CIRIsdsPreset::SetLogoData(class TDesC8 const &)
+	?SetGenreInfo@CIRIsdsPreset@@QAEXABVTDesC16@@0@Z @ 37  NONAME ; void CIRIsdsPreset::SetGenreInfo(class TDesC16 const &, class TDesC16 const &)
+	?SetBitrate@CIRBrowseChannelItems@@QAEXABVTDesC16@@@Z @ 38  NONAME ; void CIRBrowseChannelItems::SetBitrate(class TDesC16 const &)
+	?NewL@CIRAdvertisement@@SAPAV1@XZ @ 39  NONAME ; class CIRAdvertisement * CIRAdvertisement::NewL(void)
+	?SetAdvertisementInUse@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 40  NONAME ; void CIRIsdsPreset::SetAdvertisementInUse(class TDesC16 const &)
+	?NewL@CIRChannelServerUrl@@SAPAV1@XZ @ 41  NONAME ; class CIRChannelServerUrl * CIRChannelServerUrl::NewL(void)
+	?GetUrlCount@CIRIsdsPreset@@QBEHXZ @ 42  NONAME ; int CIRIsdsPreset::GetUrlCount(void) const
+	?NewL@CIRLastPlayedSongs@@SAPAV1@XZ @ 43  NONAME ; class CIRLastPlayedSongs * CIRLastPlayedSongs::NewL(void)
+	?NewL@CIRIsdsPreset@@SAPAV1@XZ @ 44  NONAME ; class CIRIsdsPreset * CIRIsdsPreset::NewL(void)
+	?SetCountryCode@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 45  NONAME ; void CIRIsdsPreset::SetCountryCode(class TDesC16 const &)
+	?SetClickThroughUrl@CIRBrowseChannelItems@@QAEXABVTDesC16@@@Z @ 46  NONAME ; void CIRBrowseChannelItems::SetClickThroughUrl(class TDesC16 const &)
+	?GetDescription@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 47  NONAME ; class TDesC16 const & CIRIsdsPreset::GetDescription(void) const
+	?SetSize@CIRBrowseCatagoryItems@@QAEXABVTDesC16@@@Z @ 48  NONAME ; void CIRBrowseCatagoryItems::SetSize(class TDesC16 const &)
+	?ExternalizeL@CIRChannelServerUrl@@QAEXAAVRWriteStream@@@Z @ 49  NONAME ; void CIRChannelServerUrl::ExternalizeL(class RWriteStream &)
+	?SetServerUrl@CIRChannelServerUrl@@QAEXABVTDesC16@@@Z @ 50  NONAME ; void CIRChannelServerUrl::SetServerUrl(class TDesC16 const &)
+	?SetGetOperationL@CIRBrowseChannelItems@@QAEXABVTDesC16@@@Z @ 51  NONAME ; void CIRBrowseChannelItems::SetGetOperationL(class TDesC16 const &)
+	?NewLC@CIRIsdsPreset@@SAPAV1@XZ @ 52  NONAME ; class CIRIsdsPreset * CIRIsdsPreset::NewLC(void)
+	?InternalizeL@CIROTAUpdate@@QAEXAAVRReadStream@@@Z @ 53  NONAME ; void CIROTAUpdate::InternalizeL(class RReadStream &)
+	?GetCountryId@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 54  NONAME ; class TDesC16 const & CIRIsdsPreset::GetCountryId(void) const
+	?GetImgUrl@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 55  NONAME ; class TDesC16 const & CIRIsdsPreset::GetImgUrl(void) const
+	?SetUrlL@CIRIsdsPreset@@QAEXABVTDesC16@@0H@Z @ 56  NONAME ; void CIRIsdsPreset::SetUrlL(class TDesC16 const &, class TDesC16 const &, int)
+	?SetAdvertisementUrl@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 57  NONAME ; void CIRIsdsPreset::SetAdvertisementUrl(class TDesC16 const &)
+	?GetServerUrl@CIRChannelServerUrl@@QBEABVTDesC16@@XZ @ 58  NONAME ; class TDesC16 const & CIRChannelServerUrl::GetServerUrl(void) const
+	?SetCountryInfo@CIRIsdsPreset@@QAEXABVTDesC16@@0@Z @ 59  NONAME ; void CIRIsdsPreset::SetCountryInfo(class TDesC16 const &, class TDesC16 const &)
+	?NewLC@CIRAdvertisement@@SAPAV1@XZ @ 60  NONAME ; class CIRAdvertisement * CIRAdvertisement::NewLC(void)
+	?NewLC@CIRBrowseCatagoryItems@@SAPAV1@XZ @ 61  NONAME ; class CIRBrowseCatagoryItems * CIRBrowseCatagoryItems::NewLC(void)
+	?SetGetOperation@CIRBrowseCatagoryItems@@QAEXABVTDesC16@@@Z @ 62  NONAME ; void CIRBrowseCatagoryItems::SetGetOperation(class TDesC16 const &)
+	?ExternalizeL@CIROTAUpdate@@QBEXAAVRWriteStream@@@Z @ 63  NONAME ; void CIROTAUpdate::ExternalizeL(class RWriteStream &) const
+	?GetName@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 64  NONAME ; class TDesC16 const & CIRIsdsPreset::GetName(void) const
+	?GetServerName@CIRChannelServerUrl@@QBEABVTDesC16@@XZ @ 65  NONAME ; class TDesC16 const & CIRChannelServerUrl::GetServerName(void) const
+	?SetTextL@CIRBrowseChannelItems@@QAEXABVTDesC16@@00@Z @ 66  NONAME ; void CIRBrowseChannelItems::SetTextL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
+	?SetGenreName@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 67  NONAME ; void CIRIsdsPreset::SetGenreName(class TDesC16 const &)
+	?GetChannelBitrateL@CIRIsdsPreset@@QAEHH@Z @ 68  NONAME ; int CIRIsdsPreset::GetChannelBitrateL(int)
+	?GetId@CIRIsdsPreset@@QBEHXZ @ 69  NONAME ; int CIRIsdsPreset::GetId(void) const
+	?GetLangName@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 70  NONAME ; class TDesC16 const & CIRIsdsPreset::GetLangName(void) const
+	?SetOTAUrl@CIROTAUpdate@@QAEXABVTDesC16@@@Z @ 71  NONAME ; void CIROTAUpdate::SetOTAUrl(class TDesC16 const &)
+	?GetArtistName@CIRLastPlayedSongs@@QAEAAVTDesC16@@XZ @ 72  NONAME ; class TDesC16 & CIRLastPlayedSongs::GetArtistName(void)
+	?SetId@CIRIsdsPreset@@QAEXH@Z @ 73  NONAME ; void CIRIsdsPreset::SetId(int)
+	?SetUrlCount@CIRIsdsPreset@@QAEXH@Z @ 74  NONAME ; void CIRIsdsPreset::SetUrlCount(int)
+	?ConstructL@CIROTAUpdate@@QAEXXZ @ 75  NONAME ; void CIROTAUpdate::ConstructL(void)
+	?InternalizeL@CIRBrowseCatagoryItems@@QAEXAAVRReadStream@@@Z @ 76  NONAME ; void CIRBrowseCatagoryItems::InternalizeL(class RReadStream &)
+	?SetURL@CIRAdvertisement@@QAEXABVTDesC16@@@Z @ 77  NONAME ; void CIRAdvertisement::SetURL(class TDesC16 const &)
+	?ExternalizeL@CIRBrowseChannelItems@@QBEXAAVRWriteStream@@@Z @ 78  NONAME ; void CIRBrowseChannelItems::ExternalizeL(class RWriteStream &) const
+	?GetBitRate@CIRChannelServerUrl@@QBEHXZ @ 79  NONAME ; int CIRChannelServerUrl::GetBitRate(void) const
+	?NewLC@CIROTAUpdate@@SAPAV1@XZ @ 80  NONAME ; class CIROTAUpdate * CIROTAUpdate::NewLC(void)
+	?SetUpdateInterval@CIROTAUpdate@@QAEXABVTDesC16@@@Z @ 81  NONAME ; void CIROTAUpdate::SetUpdateInterval(class TDesC16 const &)
+	?ExternalizeL@CIRBrowseCatagoryItems@@QBEXAAVRWriteStream@@@Z @ 82  NONAME ; void CIRBrowseCatagoryItems::ExternalizeL(class RWriteStream &) const
+	?GetAvailableBitrates@CIRIsdsPreset@@QBEHAAV?$RArray@H@@@Z @ 83  NONAME ; int CIRIsdsPreset::GetAvailableBitrates(class RArray<int> &) const
+	?SetGenreId@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 84  NONAME ; void CIRIsdsPreset::SetGenreId(class TDesC16 const &)
+	?ExternalizeL@CIRIsdsPreset@@QAEXAAVRWriteStream@@@Z @ 85  NONAME ; void CIRIsdsPreset::ExternalizeL(class RWriteStream &)
+	?GetChannelUrlAtL@CIRIsdsPreset@@QBEABVTDesC16@@H@Z @ 86  NONAME ; class TDesC16 const & CIRIsdsPreset::GetChannelUrlAtL(int) const
+	?GetExactUrlForBitrateL@CIRIsdsPreset@@QAEPAVCDesC16ArrayFlat@@H@Z @ 87  NONAME ; class CDesC16ArrayFlat * CIRIsdsPreset::GetExactUrlForBitrateL(int)
+	?SetBitrate@CIRBrowseChannelItems@@QAEXABVTDesC16@@0@Z @ 88  NONAME ; void CIRBrowseChannelItems::SetBitrate(class TDesC16 const &, class TDesC16 const &)
+	?SetSongName@CIRLastPlayedSongs@@QAEXABVTDesC16@@@Z @ 89  NONAME ; void CIRLastPlayedSongs::SetSongName(class TDesC16 const &)
+	?NewL@CIRBrowseChannelItems@@SAPAV1@XZ @ 90  NONAME ; class CIRBrowseChannelItems * CIRBrowseChannelItems::NewL(void)
+	?SetTextL@CIRBrowseCatagoryItems@@QAEXABVTDesC16@@0@Z @ 91  NONAME ; void CIRBrowseCatagoryItems::SetTextL(class TDesC16 const &, class TDesC16 const &)
+	?SetId@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 92  NONAME ; void CIRIsdsPreset::SetId(class TDesC16 const &)
+	?SetArtistName@CIRLastPlayedSongs@@QAEXABVTDesC16@@@Z @ 93  NONAME ; void CIRLastPlayedSongs::SetArtistName(class TDesC16 const &)
+	?InternalizeL@CIRBrowseChannelItems@@QAEXAAVRReadStream@@@Z @ 94  NONAME ; void CIRBrowseChannelItems::InternalizeL(class RReadStream &)
+	?SetUpdateMethod@CIROTAUpdate@@QAEXABVTDesC16@@@Z @ 95  NONAME ; void CIROTAUpdate::SetUpdateMethod(class TDesC16 const &)
+	?SetLang@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 96  NONAME ; void CIRIsdsPreset::SetLang(class TDesC16 const &)
+	?GetAdvertisementUrl@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 97  NONAME ; class TDesC16 const & CIRIsdsPreset::GetAdvertisementUrl(void) const
+	??4CIRChannelServerUrl@@QAEAAV0@ABV0@@Z @ 98  NONAME ; class CIRChannelServerUrl & CIRChannelServerUrl::operator=(class CIRChannelServerUrl const &)
+	??4CIRLastPlayedSongs@@QAEAAV0@ABV0@@Z @ 99  NONAME ; class CIRLastPlayedSongs & CIRLastPlayedSongs::operator=(class CIRLastPlayedSongs const &)
+	?SetUrlL@CIRIsdsPreset@@QAEXABVTDesC16@@00@Z @ 100  NONAME ; void CIRIsdsPreset::SetUrlL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
+	?SetBannerUrl@CIRBrowseChannelItems@@QAEXABVTDesC16@@@Z @ 101  NONAME ; void CIRBrowseChannelItems::SetBannerUrl(class TDesC16 const &)
+	?SetCountryName@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 102  NONAME ; void CIRIsdsPreset::SetCountryName(class TDesC16 const &)
+	?SetBannerUrl@CIRBrowseCatagoryItems@@QAEXABVTDesC16@@@Z @ 103  NONAME ; void CIRBrowseCatagoryItems::SetBannerUrl(class TDesC16 const &)
+	?SetServerName@CIRChannelServerUrl@@QAEXABVTDesC16@@@Z @ 104  NONAME ; void CIRChannelServerUrl::SetServerName(class TDesC16 const &)
+	?SetBitRate@CIRChannelServerUrl@@QAEXH@Z @ 105  NONAME ; void CIRChannelServerUrl::SetBitRate(int)
+	?SetMusicStoreStatus@CIRIsdsPreset@@QAEXABVTDesC16@@@Z @ 106  NONAME ; void CIRIsdsPreset::SetMusicStoreStatus(class TDesC16 const &)
+	?GetAdvertisementInUse@CIRIsdsPreset@@QBEABVTDesC16@@XZ @ 107  NONAME ; class TDesC16 const & CIRIsdsPreset::GetAdvertisementInUse(void) const
+	?SetAdvInUse@CIRAdvertisement@@QAEXABVTDesC16@@@Z @ 108  NONAME ; void CIRAdvertisement::SetAdvInUse(class TDesC16 const &)
+	?InternalizeL@CIRLastPlayedSongs@@QAEXAAVRReadStream@@@Z @ 109  NONAME ; void CIRLastPlayedSongs::InternalizeL(class RReadStream &)
+	?SetVersion@CIROTAUpdate@@QAEXABVTDesC16@@@Z @ 110  NONAME ; void CIROTAUpdate::SetVersion(class TDesC16 const &)
+	?NewL@CIRBrowseCatagoryItems@@SAPAV1@XZ @ 111  NONAME ; class CIRBrowseCatagoryItems * CIRBrowseCatagoryItems::NewL(void)
+	?GetLogoData@CIRIsdsPreset@@QBEABVTDesC8@@XZ @ 112  NONAME ; class TDesC8 const & CIRIsdsPreset::GetLogoData(void) const
 
--- a/internetradio2.0/bwinscw/irfavoritesdbu.def	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/bwinscw/irfavoritesdbu.def	Wed Jun 23 16:21:12 2010 +0100
@@ -23,5 +23,4 @@
 	?SwapPresetsInDbL@CIRFavoritesDb@@QAEXHHHH@Z @ 22  NONAME ; void CIRFavoritesDb::SwapPresetsInDbL(int, int, int, int)
 	?GetAllSortedPresets@CIRFavoritesDb@@QAEABV?$RPointerArray@VCIRPreset@@@@XZ @ 23  NONAME ; class RPointerArray<class CIRPreset> const & CIRFavoritesDb::GetAllSortedPresets(void)
 	?IncreasePlayedTimesL@CIRFavoritesDb@@QAEHABVCIRIsdsPreset@@@Z @ 24  NONAME ; int CIRFavoritesDb::IncreasePlayedTimesL(class CIRIsdsPreset const &)
-	_E32Dll=__E32Dll	; Entry point for emulation
-
+        ?RenamePresetL@CIRFavoritesDb@@QAEHABVCIRIsdsPreset@@ABVTDesC16@@@Z @ 25  NONAME ; int CIRFavoritesDb::RenamePresetL(class CIRIsdsPreset const &, class TDesC16 const &)
--- a/internetradio2.0/datastructuresinc/irisdspreset.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/datastructuresinc/irisdspreset.h	Wed Jun 23 16:21:12 2010 +0100
@@ -73,16 +73,13 @@
 	*/
 	~CIRIsdsPreset();
 
-
-	/**
-	*CIRIsdsPreset::CIRIsdsPreset()
-	*standard C++ constructor
-	*/
-	IMPORT_C	CIRIsdsPreset();
-
-
 	protected:
-
+    /**
+    *CIRIsdsPreset::CIRIsdsPreset()
+    *standard C++ constructor
+    */
+	CIRIsdsPreset();
+	
 	/**
 	*CIRIsdsPreset::ConstructL()
 	*standard second phase constructor(Leaveable)
@@ -243,13 +240,6 @@
 	IMPORT_C	void SetUrlCount(TInt aCnt);
 
 	/**
-	*CIRIsdsPreset::SetIndex()
-	*sets the index for the preset.used only for presets in the fav list
-	*@param aInt
-	*/
-	IMPORT_C	void SetIndex(TInt aInt);
-
-	/**
 	*CIRIsdsPreset::SetUrlL()
 	*sets the channel server url
 	*@param aServerName ,server name
@@ -273,13 +263,6 @@
 	*@param aChannelType userdefined,isds,adhoc
 	*/
 	IMPORT_C	void SetChannelType(TInt aChannelType);
-
-	/**
-	*CIRIsdsPreset::SetUrlL()
-	*sets the url for a channel server
-	*@param aUrl
-	*/
-	IMPORT_C    void SetUrlL(const TDesC &aUrl);
 	
 	
 	/**
@@ -380,13 +363,6 @@
 	IMPORT_C	TInt GetChannelType() const;
 
 	/**
-	*CIRIsdsPreset::GetIndex()
-	*gets the channel  index
-	*@return TInt
-	*/
-	IMPORT_C	TInt GetIndex() const;
-
-	/**
 	*CIRIsdsPreset::GetGenreId()
 	*gets the channel  genreid
 	*@return TDesC
@@ -433,20 +409,6 @@
 	*/
     IMPORT_C const TDesC8& GetLogoData() const;
 
-	/*
-	*CIRIsdsPreset::GetLogoSize()
-	*gets the Logo Size
-	*@return TSize&
-	*/
-    IMPORT_C const TSize& GetLogoSize() const;
-
-	/**
-	*CIRIsdsPreset::SGetUrl()
-	*gets the channel  url from zeroth position
-	*@return TInt
-	*/
-	IMPORT_C TInt GetUrl() const;
-
 		/**
 	*CIRIsdsPreset::GetMusicStoreStatus()
 	*gets the musicStoreEnabled 
@@ -494,20 +456,6 @@
 	*/
 	IMPORT_C 	CDesCArrayFlat* GetExactUrlForBitrateL(TInt aBitrate);
 
-	/**
-	*CIRIsdsPreset::UniqId()
-	*gets the unique id
-	*@return TUint32
-	*/
-	IMPORT_C 	TUint32 UniqId() const;
-
-	/**
-	*CIRIsdsPreset::SetUniqId()
-	*sets the unique id for the preset
-	*@param aId
-	*/
-	IMPORT_C 	void SetUniqId( TUint32 aId);
-
     /**
 	*CIRIsdsPreset::GetChannelUrlAtL()
 	*sets the lastmodified time stamp
@@ -547,14 +495,10 @@
     };
 
 private:
-	//unique id generated for the preset saved at favourite
-	TUint32 iUniqId;
 	//no of channel urls
 	TInt iChannelUrlCount;
     //0 for user defined 1 for isds type.
 	TInt iType;
-	//index in the preset table
-	TInt iIndex;
 	//isds generated preset id
 	TInt iPresetId;
 	//preset name
--- a/internetradio2.0/datastructuressrc/irchannelserverurl.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/datastructuressrc/irchannelserverurl.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -212,28 +212,24 @@
 	{
 	IRLOG_DEBUG( "CIRChannelServerUrl::ExternalizeL - Entering" );
 	TInt len;
-	if( !iServerName )
+	if(iServerName && (len=iServerName->Length()) > 0)
 		{
-		len=0;
-		aWriteStream.WriteInt32L(len);
-		}
-	else
-		{
-		len=iServerName->Length();
 		aWriteStream.WriteInt32L(len);
 		aWriteStream << *iServerName;
 		}
-		
-	if(!iURL )
+	else
 		{
-		len=0;
+		aWriteStream.WriteInt32L(0);
+		}
+		
+	if(iURL && (len=iURL->Length()) > 0)
+		{
 		aWriteStream.WriteInt32L(len);
+		aWriteStream << *iURL;
 		}
 	else
 		{
-		len=iURL->Length();
-		aWriteStream.WriteInt32L(len);
-		aWriteStream << *iURL;
+		aWriteStream.WriteInt32L(0);
 		}
 		
 	aWriteStream.WriteInt32L(iBitrate);
--- a/internetradio2.0/datastructuressrc/irisdspreset.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/datastructuressrc/irisdspreset.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -104,7 +104,7 @@
 //standard two phased constructor
 // ---------------------------------------------------------------------------
 //
-EXPORT_C CIRIsdsPreset::CIRIsdsPreset()
+CIRIsdsPreset::CIRIsdsPreset()
 	{
 	IRLOG_DEBUG( "CIRIsdsPreset::CIRIsdsPreset" );
 	}
@@ -451,20 +451,6 @@
 	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlCount - Exiting." );
 	}
 
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetIndex()
-//Function to set iIndex
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetIndex(TInt aInt)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetIndex - Entering" );
-	iIndex=aInt;
-	IRLOG_DEBUG( "CIRIsdsPreset::SetIndex - Exiting." );
-	}
-
-
 // ---------------------------------------------------------------------------
 //CIRIsdsPreset::SetUrl()
 //Function to set Url parameter
@@ -534,21 +520,6 @@
 	IRLOG_DEBUG( "CIRIsdsPreset::SetChannelType - Exiting." );
 	}
 
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::SetUrl()
-//Function to set Url parameter
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CIRIsdsPreset::SetUrlL(const TDesC &aUrl)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlL - Entering" );
-	CIRChannelServerUrl * hold=CIRChannelServerUrl::NewL();
-	hold->SetServerUrl(aUrl);
-	iUrlArray->AppendL(hold);
-	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlL - Exiting" );
-	}
-
 // ---------------------------------------------------------------------------
 //CIRIsdsPreset::SetMusicStoreStatus()
 //Function to set iMusicStoreStatus parameter
@@ -573,9 +544,7 @@
 	{
 	IRLOG_DEBUG( "CIRIsdsPreset::ExternalizeL - Entering" );
 //! externalize TInts s
-	aWriteStream.WriteUint32L(iUniqId);
 	aWriteStream.WriteInt32L(iPresetId);
-	aWriteStream.WriteInt32L(iIndex);
 	aWriteStream.WriteInt32L(iType);
 	aWriteStream.WriteInt32L(iChannelUrlCount);
 
@@ -614,9 +583,7 @@
 	{
 	IRLOG_DEBUG( "CIRIsdsPreset::InternalizeL - Entering" );
 	//! Internalize TInts s
-	iUniqId = aReadStream.ReadUint32L();
 	iPresetId=aReadStream.ReadInt32L();
-	iIndex=aReadStream.ReadInt32L();
 	iType=aReadStream.ReadInt32L();
 	iChannelUrlCount=aReadStream.ReadInt32L();
 
@@ -800,19 +767,6 @@
 	return iType;
 	}
 
-
-// ---------------------------------------------------------------------------
-//CIRIsdsPreset::GetIndex()
-//Function to get iIndex
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRIsdsPreset::GetIndex() const
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::GetIndex" );
-	return iIndex;
-	}
-
-
 // ---------------------------------------------------------------------------
 //CIRIsdsPreset::GetGenreId()
 //Function to get iGenereId
@@ -990,9 +944,7 @@
 		}
 	iChannelUrlCount=aPreset.iChannelUrlCount;
 	iType=aPreset.iType;  //0 for user defined 1 for isds type.
-	iIndex=aPreset.iIndex;
 	iPresetId = aPreset.iPresetId;
-	iUniqId=aPreset.iUniqId;
 	IRLOG_DEBUG( "CIRIsdsPreset::operator= - Exiting." );
  	return *this;
 	}
@@ -1187,23 +1139,3 @@
 	IRLOG_DEBUG( "CIRIsdsPreset::SortInOrderL - Exiting." );
 	return;
 	}
-//----------------------------------------------------------------------------
-// TInt UniqId()
-//
-//----------------------------------------------------------------------------
-EXPORT_C TUint32 CIRIsdsPreset::UniqId() const
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::UniqId" );
-	return iUniqId;
-	}
-//----------------------------------------------------------------------------
-//  SetUniqId(TInt)
-//
-//----------------------------------------------------------------------------
-EXPORT_C void CIRIsdsPreset::SetUniqId( TUint32 aId)
-	{
-	IRLOG_DEBUG( "CIRIsdsPreset::SetUniqId - Entering" );
-	iUniqId = aId;
-	IRLOG_DEBUG( "CIRIsdsPreset::SetUniqId - Exiting" );
-	}
-
--- a/internetradio2.0/favoritesdbinc/irfavoritesdb.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/favoritesdbinc/irfavoritesdb.h	Wed Jun 23 16:21:12 2010 +0100
@@ -199,6 +199,8 @@
      */
 	IMPORT_C TInt IncreasePlayedTimesL(const CIRIsdsPreset &aIsdsPreset);
 	
+	IMPORT_C TInt RenamePresetL(const CIRIsdsPreset &aIsdsPreset, const TDesC &aNewName);
+	
 	private:
 
     /**CIRFavoritesDb::HandlePresetChangedL()
--- a/internetradio2.0/favoritesdbsrc/irfavoritesdb.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/favoritesdbsrc/irfavoritesdb.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -180,8 +180,6 @@
             preset->CIRIsdsPresetToCIRPresetImpl(aPreset);
             //setname of CPSPresetInterface is called
             preset->SetNameL( aPreset.GetName() );
-            //asign the preset id of the fav preset to uniqid value of the preset
-            aPreset.SetUniqId(preset->Id());
             transaction->CommitL();
             CleanupStack::PopAndDestroy( transaction );
             //added to check multiple insertion
@@ -409,30 +407,34 @@
 //
 
 EXPORT_C void CIRFavoritesDb::ReplacePresetL( CIRIsdsPreset& aNewPreset )
-	{
+{
 	IRLOG_DEBUG( "CIRFavoritesDb::ReplacePresetL" );
 	iMoveStatus=EFalse;
 	CIRPreset* preset;
 	TInt index = SearchPreset(aNewPreset.GetId(),KNullId);
 	//actual index
     if (index >= 0)
-        {
+    {
         ASSERT( index >= 0 || index < iFavPresetList.Count() );
     	index = iFavPresetList[index]->Index();
     	preset = PresetByIndex(index);
-    	if(preset)
-    		{
-        	CPSTransaction* transaction = preset->CreateTransactionLC();
+    	if (preset)
+    	{
+    	    CPSTransaction* transaction = preset->CreateTransactionLC();
         	//change the preset data and commit
+    	    //update 'name' only if this station has not been renamed before
+    	    if (preset->GetRenamed())
+            {
+    	        aNewPreset.SetName(preset->Name());
+            }
         	preset->CIRIsdsPresetToCIRPresetImpl(aNewPreset);
         	preset->SetChannelType(EIsdsPreset);
-        		preset->SetNameL( aNewPreset.GetName() );
         	transaction->CommitL();
         	CleanupStack::PopAndDestroy( transaction );
-    		}
-        }
+    	}
+    }
 	IRLOG_DEBUG( "CIRFavoritesDb::ReplacePresetL - Exiting." );
-	}
+}
 
 //---------------------------------------------------------------------------
 //CIRFavoritesDb::ReplaceUserDefinedPresetL()
@@ -582,6 +584,43 @@
     return KErrNone;
 }
 
+EXPORT_C TInt CIRFavoritesDb::RenamePresetL(const CIRIsdsPreset &aIsdsPreset, const TDesC &aNewName)
+{
+    TInt index = 0;
+    if (aIsdsPreset.GetChannelType() == 0)
+    {
+        index = SearchUserDefinedPreset(aNewName, aIsdsPreset.GetChannelUrlAtL(0));
+        if (KErrNotFound != index)
+        {
+            //there is already a user-defined station with same name and url
+            return KErrAlreadyExists;
+        }
+        else
+        {
+            index = SearchUserDefinedPreset(aIsdsPreset.GetName(), aIsdsPreset.GetChannelUrlAtL(0));
+        }
+    }
+    else
+    {
+        index = SearchPreset(aIsdsPreset.GetId(), KNullId);
+    }
+    
+    if (KErrNotFound == index)
+    {
+        return KErrNotFound;
+    }
+    
+    CIRPreset *irPreset = iFavPresetList[index];
+    //open a transaction with the preset server
+    CPSTransaction* transaction = irPreset->CreateTransactionLC();
+    irPreset->SetNameL(aNewName);
+    irPreset->SetRenamed();
+    transaction->CommitL();
+    CleanupStack::PopAndDestroy(transaction);
+    
+    return KErrNone;
+}
+
 //---------------------------------------------------------------------------
 //CIRFavoritesDb::ConstructL()
 //Standard 2nd phase construction
--- a/internetradio2.0/filerecognizerinc/irrecognizer.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/filerecognizerinc/irrecognizer.h	Wed Jun 23 16:21:12 2010 +0100
@@ -80,7 +80,12 @@
 	/*
 	 * try to recognize a m3u file and decide whether it should be launched by InternetRadio application
 	 */
-	void RecognizeM3uFileL(const TDesC8& aBuffer);
+	void RecognizeM3uFileL(const TDesC& aFileName);
+	
+	/*
+	 * check if specified protocol streaming links are in aBuffer
+	 */
+	TBool CheckStreamingLinks(TDes8& aBuffer, const TDesC8& aProtocol);
     };
 
 #endif //IRRECOGNIZER_H
--- a/internetradio2.0/filerecognizersrc/irrecognizer.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/filerecognizersrc/irrecognizer.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -17,6 +17,7 @@
 
 
 #include <implementationproxy.h>
+#include <f32file.h>
 
 #include "irdebug.h"
 #include "irrecognizer.h"
@@ -26,8 +27,7 @@
 //(32 bits to 31 bits)
 // Uid of the recogniser
 //const TUid KUidIRRecognizer={0x2000B499}
-// maximum amount of buffer space we will ever use
-const TInt KMaxBufferLength=4*1024;
+
 // If the file name length > 4, the file extension might be valid                  
 const TInt KPlsFileExtensionsMightBeValid = 4;  
 const TInt KM3uFileExtensionsMightBeValid = 4;
@@ -38,7 +38,6 @@
 _LIT8(KPlsMimeType,"audio/x-scpls");
 
 _LIT(KM3uExtension, ".m3u");
-_LIT8(KM3uMimeType, "audio/x-mpegurl");
 
 
 // ================= MEMBER FUNCTIONS =======================
@@ -52,8 +51,8 @@
 	CApaDataRecognizerType::EHigh)
     {
     IRLOG_DEBUG( "CApaRecognizerEx::CApaRecognizerEx()" );
-    // It supports 2 mime type
-    iCountDataTypes = 2;
+    // It only supports 1 mime type
+    iCountDataTypes = 1;
     IRLOG_DEBUG( "CApaRecognizerEx::CApaRecognizerEx() - Exiting." );
     }
 
@@ -89,7 +88,7 @@
 TUint CApaRecognizerEx::PreferredBufSize()
     {
     IRLOG_DEBUG( "CApaRecognizerEx::PreferredBufSize" );
-    return KMaxBufferLength;
+    return 0;
     }
 
 // ---------------------------------------------------------------------------
@@ -104,11 +103,7 @@
 	{
         return TDataType(KPlsMimeType);
 	}
-    else if (1 == aIndex)
-    {
-        return TDataType(KM3uMimeType);
-    }
-    else
+	else
     {
         ASSERT(0);
         return TDataType(KNullDesC8);
@@ -140,7 +135,7 @@
 		else if (aName.Right(KM3uFileExtensionsMightBeValid).CompareF(
             KM3uExtension)==0)
 		{
-		    RecognizeM3uFileL(aBuffer);
+		    RecognizeM3uFileL(aName);
 		    IRLOG_DEBUG( "CApaRecognizerEx::DoRecognizeL - Exiting (2)." );
 		    return;
 		}
@@ -148,15 +143,87 @@
 		}
     }
 
-void CApaRecognizerEx::RecognizeM3uFileL(const TDesC8& /*aBuffer*/)
+void CApaRecognizerEx::RecognizeM3uFileL(const TDesC& aFileName)
 {
-   // _LIT8(KHttpProtocol, "http");
-   // _LIT8(KMmsProtocol, "mms");
-   // _LIT8(KRtspProtocol, "rtsp");
+    _LIT8(KHttpProtocol, "http");
+    _LIT8(KMmsProtocol, "mms");
+    _LIT8(KRtspProtocol, "rtsp");
+
+    RFs fs;
+    User::LeaveIfError(fs.Connect());
+    RFile file;
+    file.Open(fs, aFileName, EFileRead);
+    RBuf8 content;
+    TInt maxLen = 0;
+    file.Size(maxLen);
+    content.Create(maxLen);
+    file.Read(content);
     
     //try to use descriptor method to parse the buffer
-    iConfidence = ECertain;
-    iDataType = TDataType(KM3uMimeType);
+    if (CheckStreamingLinks(content, KHttpProtocol) ||
+        CheckStreamingLinks(content, KMmsProtocol) ||
+        CheckStreamingLinks(content, KRtspProtocol))
+    {
+        iConfidence = ECertain;
+        iDataType = TDataType(KPlsMimeType);
+    }
+    
+    content.Close();
+    file.Close();
+    fs.Close();
+}
+
+TBool CApaRecognizerEx::CheckStreamingLinks(TDes8& aBuffer, const TDesC8& aProtocol)
+{
+    TBool ret = EFalse;
+    _LIT8(KNewLine, "\n");
+    
+    //initially, remain points to aBuffer
+    TPtrC8 remain(aBuffer);
+    TInt newLinePos = remain.Find(KNewLine);
+    
+    while (KErrNotFound != newLinePos)
+    {
+        //copy a new line to RBuf8
+        RBuf8 left;
+        left.Create(remain.Left(newLinePos));
+        left.TrimLeft();
+        left.LowerCase();
+        
+        //after trim left, does this line start with aProtocol?
+        if (left.Left(aProtocol.Length()) == aProtocol)
+        {
+            ret = ETrue;
+        }
+        left.Close();
+        
+        if (ret)
+        {
+            break;
+        }
+        else
+        {
+            //remain points to the right part
+            remain.Set(remain.Right(remain.Length() - newLinePos - 1));
+            newLinePos = remain.Find(KNewLine);
+        }
+    }
+    
+    if (!ret && remain.Length() > 0)
+    {
+        //last line doesn't end with '\n'
+        RBuf8 last;
+        last.Create(remain);
+        last.TrimLeft();
+        last.LowerCase();
+        if (last.Left(aProtocol.Length()) == aProtocol)
+        {
+            ret = ETrue;
+        }
+        last.Close();
+    }
+    
+    return ret;
 }
 
 // -----------------------------------------------------------------------------
--- a/internetradio2.0/group/irrecognizer.mmp	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/group/irrecognizer.mmp	Wed Jun 23 16:21:12 2010 +0100
@@ -48,6 +48,6 @@
 
 LIBRARY             euser.lib
 LIBRARY             apmime.lib
+LIBRARY             efsrv.lib 
+LIBRARY             flogger.lib
 
-LIBRARY        flogger.lib
-
--- a/internetradio2.0/group/presetplugin.mmp	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/group/presetplugin.mmp	Wed Jun 23 16:21:12 2010 +0100
@@ -27,7 +27,6 @@
 
 
 SOURCE		irpresetimpl.cpp
-SOURCE		irchannelserverurlimpl.cpp
 SOURCE		irpresetpluginproxy.cpp
 
 
--- a/internetradio2.0/presetplugininc/irchannelserverurlimpl.h	Tue Jun 01 17:18:54 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +0,0 @@
-/*
-* Copyright (c) 2006-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:  ?Description
-*
-*/
-
-
-
-#ifndef IRCHANNELSERVERURLIMPL_H
-#define IRCHANNELSERVERURLIMPL_H
-
-#include <e32base.h>
-
-class RReadStream;
-class RWriteStream;
-
-/**
- * This class provides the basic structure to hold the preset's url data
- *information that come from the isds server.
- *It also provides the basic getter and setter functions to 
- *manage the preset's url information.
- *has been provided 
- *   
- */
-class CIRChannelServerUrlImpl:public CBase
-	{
-public:
-	
-	
-	/**CIRChannelServerUrlImpl::NewL()
-	*Static function
-	*standard two phased constructor
-	*@param void
-	*@return *CIRChannelServerUrlImpl
-	**/
-	static  CIRChannelServerUrlImpl* NewL();
-	
-	
-	/**CIRChannelServerUrlImpl::NewLC()
-	*Static function
-	*standard two phased constructor
-	*@param void
-	*@return *CIRChannelServerUrlImpl
-	**/
-	static CIRChannelServerUrlImpl* NewLC();
-	
-	
-	/**CIRChannelServerUrlImpl::SetServerName()
-	*sets server name 
-	*@param TDesC
-	*@return void
-	**/
-	void SetServerName(const TDesC& aServerName);
-	
-	
-	/**CIRChannelServerUrlImpl::SetServerUrl()
-	*sets server url 
-	*@param TDesC
-	*@return void
-	**/
-	void SetServerUrl(const TDesC& aServerUrl);
-	
-	
-	/**CIRChannelServerUrlImpl::SetBitRate()
-	*sets server bitrate 
-	*@param TInt
-	*@return void
-	**/
-	void SetBitRate(TInt aBitrate);
-	
-	
-	/**CIRChannelServerUrlImpl::GetServerName()
-	*gets server name 
-	*@param void
-	*@return TDesC
-	**/
-	TDesC& GetServerName();
-	
-	
-	/**CIRChannelServerUrlImpl::GetServerUrl()
-	*gets server url 
-	*@param void
-	*@return TDesC
-	**/
-	TDesC& GetServerUrl();
-	
-	
-	/**CIRChannelServerUrlImpl::GetBitRate()
-	*gets server bitrate
-	*@param void
-	*@return TInt
-	**/
-	TInt GetBitRate();
-	
-	
-	/**CIRChannelServerUrlImpl::~CIRChannelServerUrl()
-	*standard C++ destructor 
-	*@param NA
-	*@return NA
-	**/	
-	~CIRChannelServerUrlImpl();
-	
-	
-	/**CIRChannelServerUrlImpl::=()
-	*standard C++ copy constructor(deep copy) 
-	*@param CIRChannelServerUrl
-	*@return NA
-	**/	
-	CIRChannelServerUrlImpl& operator=(const CIRChannelServerUrlImpl& churl);
-		
-	
-	/**CIRChannelServerUrlImpl::ExternalizeL()
-	*function to externalize url data
-	*@param CIRChannelServerUrl
-	*@return NA
-	**/
-	void ExternalizeL(RWriteStream& aWriteStream);	
-	
-	/**CIRChannelServerUrlImpl::InternalizeL()
-	*function to internalize url data
-	*@param CIRChannelServerUrlImpl
-	*@return NA
-	**/
-	void InternalizeL(RReadStream& aReadStream);
-	
-protected:
-	
-	
-	/**CIRChannelServerUrlImpl::ConstructL()
-	*standard second phase construction
-	*@param void
-	*@return void
-	**/	
-	void ConstructL();
-	
-public:
-	//channel server name
-	HBufC *iServerName;
-	//channel server url
-	HBufC *iURL;
-	//bitrate supported by channel server
-	TInt iBitrate;
-	};
-	
-#endif//IRCHANNELSERVERURLIMPL_H
\ No newline at end of file
--- a/internetradio2.0/presetplugininc/irpreset.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/presetplugininc/irpreset.h	Wed Jun 23 16:21:12 2010 +0100
@@ -23,6 +23,7 @@
 #include <pspresetinterface.h>
 
 class CIRIsdsPreset;
+class CIRChannelServerUrl;
 
 const TUid KIRPreset = { 0x10009DC1 };
 
@@ -295,6 +296,13 @@
 	*/
 	virtual const TDesC& GetAdvertisementUrl() const=0;
 
+    /**
+    *CIRPreset::GetAdvertisementInUse()
+    *gets the channel  advertisement In Use
+    *@return TDesC
+    */
+    virtual const TDesC& GetAdvertisementInUse() const = 0;
+	
 	/**
 	*CIRPreset::GetImgUrl()
 	*gets the channel  image url
@@ -309,6 +317,8 @@
 	*/
 	virtual TInt GetUrlCount()const=0;
 
+	virtual CIRChannelServerUrl& GetUrl(TInt aIndex) const = 0;
+	
 	/*
 	 * get the channel url at specified position
 	 *
@@ -337,20 +347,6 @@
 	*/
 	virtual void CopyPresetData(CIRIsdsPreset& aIsdsPreset) const =0;
 
-	/**
-	*CIRPreset::UniqId()
-	*gets the unique id
-	*@return TUint32
-	*/
-	virtual TUint32 UniqId()=0;
-
-	/**
-	*CIRPreset::SetUniqId()
-	*sets the unique id for the preset
-	*@param aId
-	*/
-	virtual void SetUniqId( const TUint32 aId)=0;
-
 	 /**
      * Sets the logo data for this preset for a specific size.
      *
@@ -376,6 +372,10 @@
      * Set the played times of the channel
      */
     virtual void SetPlayedTimes(TInt aPlayedTimes) = 0;
+    
+    virtual TBool GetRenamed() const = 0;
+    
+    virtual void SetRenamed() = 0;
 	};
 
 #endif	//end of IRPRESET_H
--- a/internetradio2.0/presetplugininc/irpresetimpl.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/presetplugininc/irpresetimpl.h	Wed Jun 23 16:21:12 2010 +0100
@@ -318,6 +318,8 @@
 	*/
 	const TDesC& GetAdvertisementUrl() const;
 
+	const TDesC& GetAdvertisementInUse() const;
+	
 	/**
 	*CIRPresetImpl::GetImgUrl()
 	*gets the channel  image url
@@ -332,19 +334,14 @@
 	*/
 	TInt GetUrlCount()const;
 
+	CIRChannelServerUrl& GetUrl(TInt aIndex) const;
+	
 	/*
 	*CIRPresetImpl::GetLogoData()
 	*gets the Logo Data
 	*@return TDesC8&
 	*/
     const TDesC8& GetLogoData() const;
-
-	/**
-	*CIRPresetImpl::GetUrl()
-	*gets the channel  url from zeroth position
-	*@return CIRChannelServerUrlImpl&
-	*/
-	CIRChannelServerUrlImpl& GetUrl(TInt aInt)const;
 	
 	/*
 	 * get the channel url at specified position
@@ -390,20 +387,6 @@
 	*/
 	RArray<TInt>& GetAvailableBitrates();
 
-    /**
-	*CIRPresetImpl::UniqId()
-	*gets the unique id
-	*@return TUint32
-	*/
-	TUint32 UniqId() ;
-
-	/**
-	*CIRPresetImpl::SetUniqId()
-	*sets the unique id for the preset
-	*@param aId
-	*/
-	void SetUniqId( TUint32 aUniqId);
-
     /*
      * Returns the played times of the channel
      */
@@ -414,6 +397,10 @@
      */
     void SetPlayedTimes(TInt aPlayedTimes);
     
+    TBool GetRenamed() const;
+    
+    void SetRenamed();
+    
 protected:
 
     /**CIRPresetImpl::CIRIsdsPreset()
@@ -449,11 +436,6 @@
 private:
 
 	/**
-	 * unique id generated for the preset saved at favourite
-	 */
-	TUint32 iUniqId;
-
-	/**
 	 * no of channel urls
 	 */
 	TInt iChannelUrlCount;
@@ -464,11 +446,6 @@
 	TInt iType;
 
 	/**
-	 * index in the preset table
-	 */
-	//TInt iIndex;not required
-
-	/**
 	 * isds generated preset id
 	 */
 	TInt iPresetId;
@@ -544,24 +521,21 @@
 	 */
 	RBuf iMusicStoreStatus;
 
-
 	/**
 	 * url array
 	 */
-	CDesCArrayFlat* iUrlForBitrate;
-
-	/**
-	 * url array
-	 */
-	CArrayPtrFlat<CIRChannelServerUrlImpl>* iUrlArray;
+	CArrayPtrFlat<CIRChannelServerUrl>* iUrlArray;
 
 	/**
 	 * bitrate array
 	 */
 	RArray<TInt> iBitrateArray;
 	
-	//added by Peter on June 23rd, 2009
+	//how many times the station has been played
 	TInt iPlayedTimes;
+	
+	//if the station is renamed after it's added into favorites
+	TBool iRenamed;
 	};
 
 #endif	//end of IRPRESETIMPL_H
--- a/internetradio2.0/presetpluginsrc/irchannelserverurlimpl.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,247 +0,0 @@
-/*
-* Copyright (c) 2006-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:  ?Description
-*
-*/
-
-
-#include <s32strm.h>
-
-#include "irchannelserverurlimpl.h"
-#include "irdebug.h"
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CIRChannelServerUrlImpl::NewL()
-// Static function
-// standard two phased constructor
-// ---------------------------------------------------------------------------
-//
-CIRChannelServerUrlImpl* CIRChannelServerUrlImpl::NewL()
-	{
-	IRLOG_DEBUG( "CIRChannelServerUrlImpl::NewL" );
-	CIRChannelServerUrlImpl* self=CIRChannelServerUrlImpl::NewLC();
-	CleanupStack::Pop(self);
-	IRLOG_DEBUG( "CIRChannelServerUrlImpl::NewL - Exiting." );
-	return self;
-	}
-	
-
-// ---------------------------------------------------------------------------
-// CIRChannelServerUrlImpl::NewLC()
-// Static function
-// standard two phased constructor
-// ---------------------------------------------------------------------------
-//
-CIRChannelServerUrlImpl* CIRChannelServerUrlImpl::NewLC()
-	{
-	IRLOG_DEBUG( "CIRChannelServerUrlImpl::NewLC" );
-	CIRChannelServerUrlImpl* self=new(ELeave)CIRChannelServerUrlImpl;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	IRLOG_DEBUG(  "CIRChannelServerUrlImpl::NewLC - Exiting." );
-	return self;
-	}
-	
-
-// ---------------------------------------------------------------------------
-// CIRChannelServerUrlImpl::SetServerName()
-// sets server name 
-// ---------------------------------------------------------------------------
-//
-void CIRChannelServerUrlImpl::SetServerName(const TDesC& aServerName)
-	{
-	iServerName=aServerName.Alloc();
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRChannelServerUrlImpl::SetServerUrl()
-// sets server url 
-// ---------------------------------------------------------------------------
-//
-void CIRChannelServerUrlImpl::SetServerUrl(const TDesC& aServerUrl)
-	{
-	iURL=aServerUrl.Alloc();
-	}
-
-
-// ---------------------------------------------------------------------------	
-// CIRChannelServerUrlImpl::SetBitRate()
-// sets server bitrate 
-// ---------------------------------------------------------------------------
-//
-void CIRChannelServerUrlImpl::SetBitRate(TInt aBitrate)
-	{
-	iBitrate=aBitrate;
-	}
-
-
-// ---------------------------------------------------------------------------	
-// CIRChannelServerUrlImpl::GetServerName()
-// gets server name 
-// ---------------------------------------------------------------------------
-//
-TDesC& CIRChannelServerUrlImpl::GetServerName()
-	{
-    if( NULL == iServerName )
-    {
-        iServerName = HBufC::New(0);
-    }
-    
-	return *iServerName;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRChannelServerUrlImpl::GetServerUrl()
-// gets server url 
-// ---------------------------------------------------------------------------
-//
-TDesC& CIRChannelServerUrlImpl::GetServerUrl()
-	{
-    if( NULL == iURL )
-    {
-        iURL = HBufC::New(0);
-    }
-	return *iURL;
-	}
-	
-// ---------------------------------------------------------------------------
-// CIRChannelServerUrlImpl::GetBitRate()
-// gets server bitrate
-// ---------------------------------------------------------------------------
-//
-TInt CIRChannelServerUrlImpl::GetBitRate()
-	{
-	return iBitrate;
-	}
-
-// ---------------------------------------------------------------------------
-// CIRChannelServerUrlImpl::~CIRChannelServerUrlImpl()
-// destructor 
-// ---------------------------------------------------------------------------
-//
-CIRChannelServerUrlImpl::~CIRChannelServerUrlImpl()
-	{
-	IRLOG_DEBUG(  "CIRChannelServerUrlImpl::~CIRChannelServerUrlImpl" );
-	delete iServerName;
-	delete iURL;
-	IRLOG_DEBUG(  "CIRChannelServerUrlImpl::~CIRChannelServerUrlImpl - Exiting." );
-	}
-
-	
-// ---------------------------------------------------------------------------	
-// CIRChannelServerUrlImpl::=()
-// standard C++ copy constructor(deep copy) 
-// ---------------------------------------------------------------------------
-//
-CIRChannelServerUrlImpl& CIRChannelServerUrlImpl::operator=(
-	const CIRChannelServerUrlImpl& churl)
-	{
-	IRLOG_DEBUG(  "CIRChannelServerUrlImpl::operator=" );
-	if(&churl == this)
-		{
-		return *this;
-		}
-	iServerName=churl.iServerName;
-	iURL=churl.iURL;
-	iBitrate=churl.iBitrate;
-	IRLOG_DEBUG(  "CIRChannelServerUrlImpl::operator= - Exiting." );
-	return *this;
-	}
-	
-
-// ---------------------------------------------------------------------------	
-// CIRChannelServerUrlImpl::ExternalizeL()
-// function to externalize url data
-// ---------------------------------------------------------------------------
-//
-void CIRChannelServerUrlImpl::ExternalizeL(RWriteStream& aWriteStream)
-	{
-	IRLOG_DEBUG(  "CIRChannelServerUrlImpl::ExternalizeL" );
-	//algo
-	//1.check if data is present for the particular member variable
-	//2.if yes get the length of the data and externalize the length and then the data
-	//3.if no data is present write the length as 0.
-	TInt len;
-	if(iServerName)
-		{
-		len=iServerName->Length();
-		aWriteStream.WriteInt32L(len);
-		aWriteStream << *iServerName;
-		}
-	else
-		{
-		len=0;
-		aWriteStream.WriteInt32L(len);
-		}
-		
-	if(iURL)
-		{
-		len=iURL->Length();
-		aWriteStream.WriteInt32L(len);
-		aWriteStream << *iURL;
-		}
-	else
-		{
-		len=0;
-		aWriteStream.WriteInt32L(len);
-		}
-		
-	aWriteStream.WriteInt32L(iBitrate);
-	IRLOG_DEBUG(  "CIRChannelServerUrlImpl::ExternalizeL - Exiting." );
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRChannelServerUrlImpl::InternalizeL()
-// function to internalize url data
-// ---------------------------------------------------------------------------
-//
-void CIRChannelServerUrlImpl::InternalizeL(RReadStream& aReadStream)
-	{
-	IRLOG_DEBUG(  "CIRChannelServerUrlImpl::InternalizeL" );
-	//algo
-	//1.get the length of the data
-	//2.read that many bytes
-	//3.if read length is zero. skip..
-	TInt len;
-	len= aReadStream.ReadInt32L();
-	if(len)
-		{
-		iServerName=HBufC::NewL(aReadStream,len);	
-		}
-
-	len=aReadStream.ReadInt32L();
-	if(len)
-		{
-		iURL=HBufC::NewL(aReadStream,len);	
-		}
-	iBitrate=aReadStream.ReadInt32L();
-	IRLOG_DEBUG(  "CIRChannelServerUrlImpl::InternalizeL - Exiting." );
-	}
-	
-
-// ---------------------------------------------------------------------------
-// CIRChannelServerUrlImpl::ConstructL()
-// standard second phase construction
-// ---------------------------------------------------------------------------
-//
-void CIRChannelServerUrlImpl::ConstructL()
-	{
-	//no implementation
-	return;
-	}
-	
--- a/internetradio2.0/presetpluginsrc/irpresetimpl.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/presetpluginsrc/irpresetimpl.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -18,13 +18,11 @@
 #include <s32strm.h>
 
 #include "irchannelserverurl.h"
-#include "irchannelserverurlimpl.h"
 #include "irdebug.h"
 #include "irpresetimpl.h"
 #include "irisdspreset.h"
 
 const TInt KUrlArrayMaxLength = 128;
-const TInt KUrlForBitrateMaxLength = 128;
 
 // ======== MEMBER FUNCTIONS ========
 
@@ -69,9 +67,9 @@
 	IRLOG_DEBUG( "CIRPresetImpl::ConstructL" );
 	BaseConstructL(aParams);
 	iUrlArray=
-		new (ELeave) CArrayPtrFlat<CIRChannelServerUrlImpl>(
+		new (ELeave) CArrayPtrFlat<CIRChannelServerUrl>(
 		KUrlArrayMaxLength);
-	iUrlForBitrate=new (ELeave) CDesCArrayFlat(KUrlForBitrateMaxLength);
+
 	IRLOG_DEBUG( "CIRPresetImpl::ConstructL - Exiting." );
 	}
 
@@ -97,7 +95,7 @@
 	iGenereName.Close();
 	iGenereId.Close();
 	iMusicStoreStatus.Close();
-	delete iUrlForBitrate;
+
 	if (iUrlArray)
 		{
 		iUrlArray->ResetAndDestroy();
@@ -337,7 +335,7 @@
 	const TDesC &aBitrate)
 	{
 	IRLOG_DEBUG( "CIRPresetImpl::SetUrlL" );
-	CIRChannelServerUrlImpl* hold=CIRChannelServerUrlImpl::NewL();
+	CIRChannelServerUrl* hold=CIRChannelServerUrl::NewL();
 	hold->SetServerName(aServerName);
 	hold->SetServerUrl(aUrl);
 	TLex conv(aBitrate);
@@ -361,7 +359,7 @@
 	TInt aBitrate)
 	{
 	IRLOG_DEBUG( "CIRPresetImpl::SetUrlL(const TDesC &aServerName,const TDesC &aUrl,TInt aBitrate)" );
-	CIRChannelServerUrlImpl* hold=CIRChannelServerUrlImpl::NewL();
+	CIRChannelServerUrl* hold=CIRChannelServerUrl::NewL();
 	hold->SetServerName(aServerName);
 	hold->SetServerUrl(aUrl);
 	hold->SetBitRate(aBitrate);
@@ -483,6 +481,11 @@
 	return iAdvertisementUrl;
 	}
 
+const TDesC& CIRPresetImpl::GetAdvertisementInUse() const
+{
+    return iAdvertisementInUse;
+}
+
 // ---------------------------------------------------------------------------
 // CIRPresetImpl::GetImgUrl()
 // Function to get iImgUrl
@@ -503,6 +506,12 @@
 	return iChannelUrlCount;
 	}
 
+CIRChannelServerUrl& CIRPresetImpl::GetUrl(TInt aIndex) const
+{
+    ASSERT( aIndex >= 0 && aIndex < iUrlArray->Count() ); 
+    return ((*iUrlArray->At(aIndex)));
+}
+
 /*
  * get the channel url at specified position
  *
@@ -513,17 +522,6 @@
 }
 
 // ---------------------------------------------------------------------------
-// CIRPresetImpl::GetUrl()
-// Function to get iLanguageCode
-// ---------------------------------------------------------------------------
-//
-CIRChannelServerUrlImpl& CIRPresetImpl::GetUrl(TInt aInt)const
-	{
-	ASSERT( aInt >= 0 && aInt < iUrlArray->Count() );
-	return ((*iUrlArray->At(aInt)));
-	}
-
-// ---------------------------------------------------------------------------
 // CIRPresetImpl::GetDescription()
 // Function to get iDescription
 // ---------------------------------------------------------------------------
@@ -580,7 +578,6 @@
 		return *this;
 		}
 	//copy data members
-	iUniqId = aPreset.iUniqId;
  	iPresetId = aPreset.iPresetId;
 
 	TRAP_IGNORE(SetNameL(aPreset.Name()))
@@ -666,7 +663,6 @@
 	{
 	IRLOG_DEBUG( "CIRPresetImpl::ExternalizeL" );
 //! externalize TInts s
-	aWriteStream.WriteUint32L(iUniqId);
 	aWriteStream.WriteInt32L(iPresetId);
 	aWriteStream.WriteInt32L(iType);
 	aWriteStream.WriteInt32L(iChannelUrlCount);
@@ -854,6 +850,8 @@
 	//added by Peter on June 23rd, 2009
 	aWriteStream.WriteInt32L(iPlayedTimes);
 	
+	aWriteStream.WriteInt32L(iRenamed);
+	
 	IRLOG_DEBUG( "CIRPresetImpl::ExternalizeL - Exiting." );
 	}
 
@@ -868,7 +866,6 @@
 	{
 	IRLOG_DEBUG( "CIRPresetImpl::InternalizeL" );
 	//! Internalize TInts s
-	iUniqId = aReadStream.ReadUint32L();
 	iPresetId=aReadStream.ReadInt32L();
 	iType=aReadStream.ReadInt32L();
 	iChannelUrlCount=aReadStream.ReadInt32L();
@@ -978,16 +975,19 @@
 		}
 
 	//internalizing the preset data
-	CIRChannelServerUrlImpl *url = NULL;
+	CIRChannelServerUrl *url = NULL;
 	for(TInt cnt=0;cnt<iChannelUrlCount;cnt++)
 		{
-		url = CIRChannelServerUrlImpl::NewLC();
+		url = CIRChannelServerUrl::NewLC();
 		url->InternalizeL(aReadStream);
 		iUrlArray->AppendL(url);
 	    CleanupStack::Pop(url);
 		}
 	
 	iPlayedTimes = aReadStream.ReadInt32L();
+	
+	iRenamed = aReadStream.ReadInt32L();
+	
 	IRLOG_DEBUG( "CIRPresetImpl::InternalizeL - Exiting." );
 	}
 
@@ -1001,7 +1001,6 @@
 void CIRPresetImpl::CIRIsdsPresetToCIRPresetImpl(const CIRIsdsPreset& aIsdsPreset)
  	{
 	IRLOG_DEBUG( "CIRPresetImpl::CIRIsdsPresetToCIRPresetImpl" );
-	iUniqId = aIsdsPreset.UniqId();
  	iPresetId = aIsdsPreset.GetId();
 	iChannelUrlCount = aIsdsPreset.GetUrlCount();
 	iType = aIsdsPreset.GetChannelType();  //0 for user defined 1 for isds type.
@@ -1075,7 +1074,6 @@
 void CIRPresetImpl::CopyPresetData(CIRIsdsPreset& aIsdsPreset) const
 	{
 	IRLOG_DEBUG( "CIRPresetImpl::CopyPresetData" );
-	aIsdsPreset.SetUniqId( this->Id() );
 	aIsdsPreset.SetId( iPresetId );
 	aIsdsPreset.SetUrlCount( iChannelUrlCount );
 	aIsdsPreset.SetChannelType( iType );  //0 for user defined 1 for isds type.
@@ -1135,21 +1133,6 @@
 	return iBitrateArray;
 	}
 
-//----------------------------------------------------------------------------
-// TInt UniqId()
-//----------------------------------------------------------------------------
-TUint32 CIRPresetImpl::UniqId()
-	{
-	return iUniqId;
-	}
-//----------------------------------------------------------------------------
-//  SetUniqId(TInt)
-//----------------------------------------------------------------------------
-void CIRPresetImpl::SetUniqId( TUint32 aId)
-	{
-	iUniqId = aId;
-	}
-
 /*
  * Returns the played times of the channel
  */
@@ -1165,3 +1148,13 @@
 {
     iPlayedTimes = aPlayedTimes;
 }
+
+TBool CIRPresetImpl::GetRenamed() const
+{
+    return iRenamed;
+}
+
+void CIRPresetImpl::SetRenamed()
+{
+    iRenamed = ETrue;
+}
--- a/internetradio2.0/songhistoryinc/irsonghistorydb.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/songhistoryinc/irsonghistorydb.h	Wed Jun 23 16:21:12 2010 +0100
@@ -110,6 +110,7 @@
 	 */
 	 TBool AddToSongHistoryDb2L( const TDesC& aSongName,
 	                             const TDesC& aArtistName, 	                                
+                                 const TDesC& aChannelName,
 	                             const TDesC& aMusicFlag);
 
 
@@ -183,7 +184,6 @@
 	* Updates the song history DB when there is a channel change in the isds.
 	*/
     TInt UpdateSongHistoryDbL( TInt aChannelId,
-    	                      const TDesC& aChannelName, 
 						      const TDesC& aChannelUrl,
 						      const TDesC& aImageUrl,
                               const TDesC& aGenreName,
@@ -195,7 +195,7 @@
      * search if a record already exists in database. If yes, delete it.
      */
     void SearchAndDeleteRecordL(const TDesC& aChannelName, const TDesC& aChannelUrl,
-                                TInt aChannelType);
+                                TInt aChannelType, TInt aPresetId);
     
     /*
      * delete a recorder by the index, for station history database
@@ -242,9 +242,9 @@
 	* ---------------------------------------------------------------------------
 	* SongHistoryTable
 	*---------------------------
-	*| SongName | ArtistName | MusicStatusFlag
+	*| SongName | ArtistName | ChannelName | MusicStatusFlag
 	*---------------------------
-	*|EDbColText| EDbColText | EDbColText |
+	*|EDbColText| EDbColText | EDbColText  | EDbColText |
 	*----------------------------------------------------------------------------
 	*/
 	void CreateSongHistoryTables2L();
--- a/internetradio2.0/songhistorysrc/irsonghistorydb.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/internetradio2.0/songhistorysrc/irsonghistorydb.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -271,6 +271,7 @@
 
 TBool CIRSongHistoryDb::AddToSongHistoryDb2L( const TDesC& aSongName,
                                     const TDesC& aArtistName,                                   
+                                    const TDesC& aChannelName,
                                     const TDesC& aMusicFlag)
 {
     IRLOG_DEBUG( "CIRSongHistoryDb::AddToSongHistoryDb2L" );
@@ -335,14 +336,15 @@
     
     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 )
+    if(  songLen + artistLen > KMaxSize || aChannelName.Length() > KMaxSize)
     {
-        IRLOG_DEBUG3( "CIRSongHistoryDb::AddSongHistoryStartL - LONG METADATA %d, %d", songLen, artistLen );
+        IRLOG_DEBUG3( "CIRSongHistoryDb::AddToSongHistoryDb2L - too long song info: %d or channel info: %d", songLen+artistLen, aChannelName.Length() );
     }
     
     TRAP(error,//trap start
@@ -350,6 +352,7 @@
         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();
         );
@@ -493,6 +496,7 @@
     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;
@@ -505,7 +509,7 @@
         iSongHistoryTable2.GetL();
          
         RBuf songName;
-        RBuf artistInfo;
+        RBuf artistInfo, channelName;
         RBuf musicStatus;
         
         songName.Create(iSongHistoryTable2.ColDes( songColumn ));
@@ -514,15 +518,20 @@
         artistInfo.Create(iSongHistoryTable2.ColDes( artistColumn ));
         artistInfo.CleanupClosePushL();
         
+        channelName.Create(iSongHistoryTable2.ColDes( channelNameColumn ));
+        channelName.CleanupClosePushL();
+
         musicStatus.Create(iSongHistoryTable2.ColDes(musicStatusColumn));
         musicStatus.CleanupClosePushL();
         
         aSongEntries[song]->SetSongName(songName);
         aSongEntries[song]->SetArtist(artistInfo);
+        aSongEntries[song]->SetChannelName(channelName);
         aSongEntries[song]->SetChannelMusicStatus(musicStatus);
         ++song;         
         
         CleanupStack::PopAndDestroy(&musicStatus);
+        CleanupStack::PopAndDestroy(&channelName);
         CleanupStack::PopAndDestroy(&artistInfo);
         CleanupStack::PopAndDestroy(&songName);        
     }
@@ -783,9 +792,9 @@
 * ---------------------------------------------------------------------------
 * SongHistoryTable
 *---------------------------
-*| SongName | ArtistName | MusicStatusFlag 
+*| SongName | ArtistName | ChannelName | MusicStatusFlag 
 *---------------------------
-*|EDbColText| EDbColText | EDbColText 
+*|EDbColText| EDbColText | EDbColText  | EDbColText 
 *----------------------------------------------------------------------------
 */
 void CIRSongHistoryDb::CreateSongHistoryTables2L()
@@ -795,7 +804,8 @@
 
     TRAPD( error,
     columns->AddL( TDbCol( KSongHistoryDBSongNameColumn, EDbColText, KMaxColumnLength ) );
-    columns->AddL( TDbCol( KSongHistoryDBArtistNameColumn, EDbColText, KMaxColumnLength) );     
+    columns->AddL( TDbCol( KSongHistoryDBArtistNameColumn, EDbColText, KMaxColumnLength) );
+    columns->AddL( TDbCol( KSongHistoryDBChannelNameColumn, EDbColText, KMaxColumnLength) );
     columns->AddL( TDbCol( KSongHistoryDBMusicStatusColumn, EDbColText, KMaxColumnLength ) );
     );
 	User::LeaveIfError( error );
@@ -1126,7 +1136,6 @@
 //
 
 TInt CIRSongHistoryDb::UpdateSongHistoryDbL(	TInt aChannelId,
-											const TDesC& aChannelName, 
 											const TDesC& aChannelUrl,
                                             const TDesC& aImageUrl,
                                             const TDesC& aGenreName,
@@ -1137,7 +1146,6 @@
  	IRLOG_DEBUG( "CIRSongHistoryDb::UpdateSongHistoryDbL" );
 
  	TBool channelChanged = EFalse ;
- 	TInt compFlagName ;
  	TInt compFlagUrl ;
  	TInt compFlagImageUrl, compFlagGenreName, compFlagCountryName, compFlagLanguageName;
  	TInt compFlagMusic ;
@@ -1149,7 +1157,6 @@
     }
 
     CDbColSet* columns = iSongHistoryTable.ColSetL();
-    TInt channelColumn = columns->ColNo( KSongHistoryDBChannelNameColumn );
     TInt channelUrlColumn = columns->ColNo( KSongHistoryDBChannelUrlColumn );
     TInt channelTypeColumn = columns->ColNo( KSongHistoryDBChannelTypeColumn );
     TInt channelIdColumn = columns->ColNo( KSongHistoryDBChannelIdColumn );
@@ -1169,13 +1176,10 @@
 		{
 			iSongHistoryTable.GetL();
 			// Extracting the values from the database.
-				RBuf channelName;
 				RBuf channelUrl;
 				RBuf imageUrl, genreName, countryName, languageName;
 				TInt channelId;
                 RBuf channelMusicStatus;
-				channelName.Create(iSongHistoryTable.ColDes( channelColumn ));
-				channelName.CleanupClosePushL();
 				
 				channelUrl.Create(iSongHistoryTable.ColDes( channelUrlColumn ));
 				channelUrl.CleanupClosePushL();
@@ -1196,20 +1200,12 @@
                 
                 if(aChannelId == channelId)
 	                {
-					compFlagName =  (channelName).Compare(aChannelName);
 	                compFlagUrl =   (channelUrl).Compare(aChannelUrl);
                     compFlagImageUrl = (imageUrl).Compare(aImageUrl);
                     compFlagGenreName = (genreName).Compare(aGenreName);
                     compFlagCountryName = (countryName).Compare(aCountryName);
                     compFlagLanguageName = (languageName).Compare(aLanguageName);
 	                compFlagMusic = (channelMusicStatus).Compare(aMusicFlag);
-	                if(compFlagName)
-		                {
-	                    iSongHistoryTable.UpdateL();
-		                iSongHistoryTable.SetColL(channelColumn, aChannelName);
-		                iSongHistoryTable.PutL();
-		                channelChanged = ETrue ;
-		                }
 		            compUrlChange = (aChannelUrl).Compare(KNo);
 		                
 	                if(compFlagUrl && compUrlChange)
@@ -1262,7 +1258,6 @@
                 CleanupStack::PopAndDestroy(&genreName);
                 CleanupStack::PopAndDestroy(&imageUrl);
 				CleanupStack::PopAndDestroy(&channelUrl);
-				CleanupStack::PopAndDestroy(&channelName);
 
 		}
 	iSongHistoryTable.Reset();
@@ -1271,12 +1266,13 @@
 }
 
 void CIRSongHistoryDb::SearchAndDeleteRecordL(const TDesC& aChannelName, const TDesC& aChannelUrl,
-                                              TInt aChannelType)
+                                              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;
@@ -1287,11 +1283,27 @@
         TPtrC channelName = iSongHistoryTable.ColDes(channelNameColumn);
         TPtrC channelUrl  = iSongHistoryTable.ColDes(channelUrlColumn);
         TInt channelType = iSongHistoryTable.ColInt(channelTypeColumn);
+        TInt channelId = iSongHistoryTable.ColInt(channelIdColumn);
         
-        if (aChannelName == channelName && aChannelUrl == channelUrl && aChannelType == channelType)
+        if (0 == aChannelType)
         {
-            iSongHistoryTable.DeleteL();  
-            return;
+            //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/qtinternetradio/bwins/irqfavoritesu.def	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/bwins/irqfavoritesu.def	Wed Jun 23 16:21:12 2010 +0100
@@ -28,4 +28,5 @@
 	?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 &)
 
--- a/qtinternetradio/bwins/irqsonghistoryu.def	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/bwins/irqsonghistoryu.def	Wed Jun 23 16:21:12 2010 +0100
@@ -1,28 +1,28 @@
 EXPORTS
-	?handleSongMetaDataReceivedL@IRQSongHistoryEngine@@AAEXABVIRQMetaData@@AAVQString@@@Z @ 1  NONAME ; void IRQSongHistoryEngine::handleSongMetaDataReceivedL(class IRQMetaData const &, class QString &)
+	?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
-	?getChannelType@IRQSongHistoryInfo@@QBEHXZ @ 5  NONAME ; int IRQSongHistoryInfo::getChannelType(void) const
-	?GetChannelId@CIRSongHistoryInfo@@QBEHXZ @ 6  NONAME ; int CIRSongHistoryInfo::GetChannelId(void) const
-	??1IRQSongHistoryInfo@@QAE@XZ @ 7  NONAME ; IRQSongHistoryInfo::~IRQSongHistoryInfo(void)
-	?handleMetaDataReceived@IRQSongHistoryEngine@@QAEXABVIRQMetaData@@ABVIRQPreset@@@Z @ 8  NONAME ; void IRQSongHistoryEngine::handleMetaDataReceived(class IRQMetaData const &, class IRQPreset const &)
-	?getCountryName@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 9  NONAME ; class QString const & IRQSongHistoryInfo::getCountryName(void) const
-	?getAllSongHistory@IRQSongHistoryEngine@@QAEXAAV?$QList@PAVIRQSongInfo@@@@@Z @ 10  NONAME ; void IRQSongHistoryEngine::getAllSongHistory(class QList<class IRQSongInfo *> &)
-	??0IRQSongHistoryInfo@@QAE@XZ @ 11  NONAME ; IRQSongHistoryInfo::IRQSongHistoryInfo(void)
-	?GetChannelDesc@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 12  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetChannelDesc(void) const
-	?getChannelId@IRQSongHistoryInfo@@QBEHXZ @ 13  NONAME ; int IRQSongHistoryInfo::getChannelId(void) const
-	?GetStreamUrl@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 14  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetStreamUrl(void) const
-	?closeInstance@IRQSongHistoryEngine@@QAEXXZ @ 15  NONAME ; void IRQSongHistoryEngine::closeInstance(void)
-	?setMusicshopStatus@IRQSongInfo@@QAEXABVQString@@@Z @ 16  NONAME ; void IRQSongInfo::setMusicshopStatus(class QString const &)
-	?GetSongInfo@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 17  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetSongInfo(void) const
-	?setAllInfo@IRQSongInfo@@QAEXABVQString@@00@Z @ 18  NONAME ; void IRQSongInfo::setAllInfo(class QString const &, class QString const &, class QString 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 *> &)
-	?NewLC@CIRSongHistoryInfo@@SAPAV1@XZ @ 23  NONAME ; class CIRSongHistoryInfo * CIRSongHistoryInfo::NewLC(void)
-	?handleSongMetaDataReceived@IRQSongHistoryEngine@@QAEXABVIRQMetaData@@AAVQString@@@Z @ 24  NONAME ; void IRQSongHistoryEngine::handleSongMetaDataReceived(class IRQMetaData const &, class QString &)
+	?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
@@ -38,17 +38,19 @@
 	?getLanguageName@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 37  NONAME ; class QString const & IRQSongHistoryInfo::getLanguageName(void) const
 	?setSongName@IRQSongInfo@@QAEXABVQString@@@Z @ 38  NONAME ; void IRQSongInfo::setSongName(class QString const &)
 	?getArtistName@IRQSongInfo@@QBEABVQString@@XZ @ 39  NONAME ; class QString const & IRQSongInfo::getArtistName(void) 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
-	?getChannelName@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 47  NONAME ; class QString const & IRQSongHistoryInfo::getChannelName(void) const
-	??1CIRSongHistoryInfo@@UAE@XZ @ 48  NONAME ; CIRSongHistoryInfo::~CIRSongHistoryInfo(void)
-	?GetImageUrl@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 49  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetImageUrl(void) const
-	?getStreamUrl@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 50  NONAME ; class QString const & IRQSongHistoryInfo::getStreamUrl(void) const
-	?GetArtistInfo@CIRSongHistoryInfo@@QBEABVRBuf16@@XZ @ 51  NONAME ; class RBuf16 const & CIRSongHistoryInfo::GetArtistInfo(void) const
-	?GetChannelType@CIRSongHistoryInfo@@QBEHXZ @ 52  NONAME ; int CIRSongHistoryInfo::GetChannelType(void) const
+	?setAllInfo@IRQSongInfo@@QAEXABVQString@@000@Z @ 40  NONAME ; void IRQSongInfo::setAllInfo(class QString const &, class QString const &, class QString const &, class QString const &)
+	?deleteOneSongHistoryItem@IRQSongHistoryEngine@@QAE_NH@Z @ 41  NONAME ; bool IRQSongHistoryEngine::deleteOneSongHistoryItem(int)
+	?setArtistName@IRQSongInfo@@QAEXABVQString@@@Z @ 42  NONAME ; void IRQSongInfo::setArtistName(class QString const &)
+	?openInstance@IRQSongHistoryEngine@@SAPAV1@XZ @ 43  NONAME ; class IRQSongHistoryEngine * IRQSongHistoryEngine::openInstance(void)
+	?clearAllHistory@IRQSongHistoryEngine@@QAEHXZ @ 44  NONAME ; int IRQSongHistoryEngine::clearAllHistory(void)
+	?deleteOneItem@IRQSongHistoryEngine@@QAE_NH@Z @ 45  NONAME ; bool IRQSongHistoryEngine::deleteOneItem(int)
+	?clearAllSongHistory@IRQSongHistoryEngine@@QAEHXZ @ 46  NONAME ; int IRQSongHistoryEngine::clearAllSongHistory(void)
+	?getSongName@IRQSongHistoryInfo@@QBEABVQString@@XZ @ 47  NONAME ; class QString const & IRQSongHistoryInfo::getSongName(void) const
+	?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	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/common.pri	Wed Jun 23 16:21:12 2010 +0100
@@ -15,6 +15,7 @@
 DEFINES += SONGRECOGNITION_ENABLED
 DEFINES += USER_DEFINED_DISKSPACE
 DEFINES += USER_DEFINED_ISDSURL
+#DEFINES += NOWPLAYING_VIEW_OPTION_B
 #DEFINES += ADV_ENABLED
 
 # ##########################################################
--- a/qtinternetradio/eabi/irqfavoritesu.def	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/eabi/irqfavoritesu.def	Wed Jun 23 16:21:12 2010 +0100
@@ -28,4 +28,5 @@
 	_ZNK14IRQFavoritesDB9getUniqIdEi @ 27 NONAME
 	_ZTI14IRQFavoritesDB @ 28 NONAME DATA 12
 	_ZTV14IRQFavoritesDB @ 29 NONAME DATA 56
+        _ZN14IRQFavoritesDB12renamePresetERK9IRQPresetRK7QString @ 30 NONAME
 
--- a/qtinternetradio/eabi/irqsonghistoryu.def	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/eabi/irqsonghistoryu.def	Wed Jun 23 16:21:12 2010 +0100
@@ -1,55 +1,57 @@
 EXPORTS
-	_ZN11IRQSongInfo10setAllInfoERK7QStringS2_S2_ @ 1 NONAME
+	_ZN11IRQSongInfo10setAllInfoERK7QStringS2_S2_S2_ @ 1 NONAME
 	_ZN11IRQSongInfo11setSongNameERK7QString @ 2 NONAME
 	_ZN11IRQSongInfo13setArtistNameERK7QString @ 3 NONAME
-	_ZN11IRQSongInfo18setMusicshopStatusERK7QString @ 4 NONAME
-	_ZN18CIRSongHistoryInfo14SetHistoryInfoER6RBuf16S1_S1_S1_iiiS1_S1_S1_S1_S1_S1_ @ 5 NONAME
-	_ZN18CIRSongHistoryInfo4NewLEv @ 6 NONAME
-	_ZN18CIRSongHistoryInfo5NewLCEv @ 7 NONAME
-	_ZN18CIRSongHistoryInfoD0Ev @ 8 NONAME
-	_ZN18CIRSongHistoryInfoD1Ev @ 9 NONAME
-	_ZN18CIRSongHistoryInfoD2Ev @ 10 NONAME
-	_ZN18IRQSongHistoryInfoC1Ev @ 11 NONAME
-	_ZN18IRQSongHistoryInfoC2Ev @ 12 NONAME
-	_ZN18IRQSongHistoryInfoD1Ev @ 13 NONAME
-	_ZN18IRQSongHistoryInfoD2Ev @ 14 NONAME
-	_ZN20IRQSongHistoryEngine11syncHistoryEi @ 15 NONAME
-	_ZN20IRQSongHistoryEngine12openInstanceEv @ 16 NONAME
-	_ZN20IRQSongHistoryEngine13closeInstanceEv @ 17 NONAME
-	_ZN20IRQSongHistoryEngine13deleteOneItemEi @ 18 NONAME
-	_ZN20IRQSongHistoryEngine13getAllHistoryER5QListIP18IRQSongHistoryInfoE @ 19 NONAME
-	_ZN20IRQSongHistoryEngine15clearAllHistoryEv @ 20 NONAME
-	_ZN20IRQSongHistoryEngine17getAllSongHistoryER5QListIP11IRQSongInfoE @ 21 NONAME
-	_ZN20IRQSongHistoryEngine19clearAllSongHistoryEv @ 22 NONAME
-	_ZN20IRQSongHistoryEngine19updateSongHistoryDbEiRK7QStringS2_S2_S2_S2_S2_S2_ @ 23 NONAME
-	_ZN20IRQSongHistoryEngine22handleMetaDataReceivedERK11IRQMetaDataRK9IRQPreset @ 24 NONAME
-	_ZN20IRQSongHistoryEngine24deleteOneSongHistoryItemEi @ 25 NONAME
-	_ZN20IRQSongHistoryEngine26handleSongMetaDataReceivedERK11IRQMetaDataR7QString @ 26 NONAME
-	_ZN20IRQSongHistoryEngine27handleSongMetaDataReceivedLERK11IRQMetaDataR7QString @ 27 NONAME
-	_ZNK11IRQSongInfo11getSongNameEv @ 28 NONAME
-	_ZNK11IRQSongInfo13getArtistNameEv @ 29 NONAME
-	_ZNK11IRQSongInfo18getMusicshopStatusEv @ 30 NONAME
-	_ZNK18CIRSongHistoryInfo10GetBitrateEv @ 31 NONAME
-	_ZNK18CIRSongHistoryInfo11GetImageUrlEv @ 32 NONAME
-	_ZNK18CIRSongHistoryInfo11GetSongInfoEv @ 33 NONAME
-	_ZNK18CIRSongHistoryInfo12GetChannelIdEv @ 34 NONAME
-	_ZNK18CIRSongHistoryInfo12GetStreamUrlEv @ 35 NONAME
-	_ZNK18CIRSongHistoryInfo13GetArtistInfoEv @ 36 NONAME
-	_ZNK18CIRSongHistoryInfo14GetChannelDescEv @ 37 NONAME
-	_ZNK18CIRSongHistoryInfo14GetChannelNameEv @ 38 NONAME
-	_ZNK18CIRSongHistoryInfo14GetChannelTypeEv @ 39 NONAME
-	_ZNK18CIRSongHistoryInfo21GetChannelMusicStatusEv @ 40 NONAME
-	_ZNK18IRQSongHistoryInfo10getBitrateEv @ 41 NONAME
-	_ZNK18IRQSongHistoryInfo11getImageUrlEv @ 42 NONAME
-	_ZNK18IRQSongHistoryInfo11getSongNameEv @ 43 NONAME
-	_ZNK18IRQSongHistoryInfo12getChannelIdEv @ 44 NONAME
-	_ZNK18IRQSongHistoryInfo12getGenreNameEv @ 45 NONAME
-	_ZNK18IRQSongHistoryInfo12getStreamUrlEv @ 46 NONAME
-	_ZNK18IRQSongHistoryInfo13getArtistNameEv @ 47 NONAME
-	_ZNK18IRQSongHistoryInfo14getChannelDescEv @ 48 NONAME
-	_ZNK18IRQSongHistoryInfo14getChannelNameEv @ 49 NONAME
-	_ZNK18IRQSongHistoryInfo14getChannelTypeEv @ 50 NONAME
-	_ZNK18IRQSongHistoryInfo14getCountryNameEv @ 51 NONAME
-	_ZNK18IRQSongHistoryInfo15getLanguageNameEv @ 52 NONAME
-	_ZNK18IRQSongHistoryInfo19getMusicStoreStatusEv @ 53 NONAME
+	_ZN11IRQSongInfo14setStationNameERK7QString @ 4 NONAME
+	_ZN11IRQSongInfo18setMusicshopStatusERK7QString @ 5 NONAME
+	_ZN18CIRSongHistoryInfo14SetHistoryInfoER6RBuf16S1_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
+	_ZNK18CIRSongHistoryInfo12GetStreamUrlEv @ 37 NONAME
+	_ZNK18CIRSongHistoryInfo13GetArtistInfoEv @ 38 NONAME
+	_ZNK18CIRSongHistoryInfo14GetChannelDescEv @ 39 NONAME
+	_ZNK18CIRSongHistoryInfo14GetChannelNameEv @ 40 NONAME
+	_ZNK18CIRSongHistoryInfo14GetChannelTypeEv @ 41 NONAME
+	_ZNK18CIRSongHistoryInfo21GetChannelMusicStatusEv @ 42 NONAME
+	_ZNK18IRQSongHistoryInfo10getBitrateEv @ 43 NONAME
+	_ZNK18IRQSongHistoryInfo11getImageUrlEv @ 44 NONAME
+	_ZNK18IRQSongHistoryInfo11getSongNameEv @ 45 NONAME
+	_ZNK18IRQSongHistoryInfo12getChannelIdEv @ 46 NONAME
+	_ZNK18IRQSongHistoryInfo12getGenreNameEv @ 47 NONAME
+	_ZNK18IRQSongHistoryInfo12getStreamUrlEv @ 48 NONAME
+	_ZNK18IRQSongHistoryInfo13getArtistNameEv @ 49 NONAME
+	_ZNK18IRQSongHistoryInfo14getChannelDescEv @ 50 NONAME
+	_ZNK18IRQSongHistoryInfo14getChannelNameEv @ 51 NONAME
+	_ZNK18IRQSongHistoryInfo14getChannelTypeEv @ 52 NONAME
+	_ZNK18IRQSongHistoryInfo14getCountryNameEv @ 53 NONAME
+	_ZNK18IRQSongHistoryInfo15getLanguageNameEv @ 54 NONAME
+	_ZNK18IRQSongHistoryInfo19getMusicStoreStatusEv @ 55 NONAME
 
--- a/qtinternetradio/irqcommon/inc/irqisdsdatastructure.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/irqcommon/inc/irqisdsdatastructure.h	Wed Jun 23 16:21:12 2010 +0100
@@ -39,6 +39,8 @@
    QString channelName;
    QString shortDescription;
    QString imageURL;
+   //added for cache search
+   int     channelID;
 };
 
 class IRQChannelServerURL
--- a/qtinternetradio/irqcommon/irqcommon.pro	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/irqcommon/irqcommon.pro	Wed Jun 23 16:21:12 2010 +0100
@@ -30,7 +30,8 @@
         -lws32 \
         -lapgrfx \
         -lxqsettingsmanager \
-        -lapmime
+        -lapmime \
+        -lpsclient100
         
 symbian{
   TARGET.UID3 = 0xef3c4675
--- a/qtinternetradio/irqcommon/src/irqisdsdatastructure.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/irqcommon/src/irqisdsdatastructure.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -29,10 +29,12 @@
     aStream<<serverName<<url<<bitrate;
 }
 
-EXPORT_C IRQPreset::IRQPreset()
+//we need to initialize all the member for sometimes, it will 
+//crash by overflow if we don't do this. 
+EXPORT_C IRQPreset::IRQPreset():uniqID(0),type(0),index(0),presetId(0),
+                                bitrate(0),iIsSorted(false),iChannelUrlCount(0)
 {
-    iIsSorted = false;
-    iChannelUrlCount = 0;
+ 
 }
 
 EXPORT_C IRQPreset::~IRQPreset()
--- a/qtinternetradio/irqcommon/src/irqutility.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/irqcommon/src/irqutility.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -51,9 +51,7 @@
 //
 EXPORT_C void IRQUtility::convertCIRIsdsPreset2IRQPrest(const CIRIsdsPreset& aCIRIsdsPreset, IRQPreset& aQIRPreset)
 {
-  aQIRPreset.uniqID = aCIRIsdsPreset.UniqId(); 
   aQIRPreset.type = aCIRIsdsPreset.GetChannelType();
-  aQIRPreset.index  = aCIRIsdsPreset.GetIndex();
   
   aQIRPreset.presetId = aCIRIsdsPreset.GetId();
   aQIRPreset.iChannelUrlCount  = aCIRIsdsPreset.GetUrlCount();
@@ -101,8 +99,6 @@
 //
 EXPORT_C void IRQUtility::convertIRQPreset2CIRIsdsPreset(const IRQPreset& aQIRPreset, CIRIsdsPreset& aCIRIsdsPreset)
 {
-  aCIRIsdsPreset.SetId(aQIRPreset.uniqID);
-  aCIRIsdsPreset.SetIndex(aQIRPreset.index);
   aCIRIsdsPreset.SetId(aQIRPreset.presetId);
   aCIRIsdsPreset.SetUrlCount(aQIRPreset.iChannelUrlCount);
   aCIRIsdsPreset.SetChannelType(aQIRPreset.type);  
@@ -157,14 +153,47 @@
 //
 EXPORT_C void IRQUtility::convertCIRPreset2IRQPreset(const CIRPreset& aCIRPreset, IRQPreset& aIRQPreset)
 {
-  CIRIsdsPreset * cirIsdsPreset = NULL;  
-  TRAPD(err, cirIsdsPreset = CIRIsdsPreset::NewL());
-  if( KErrNone != err)
-    return;
-   
-  aCIRPreset.CopyPresetData(*cirIsdsPreset);  
-  convertCIRIsdsPreset2IRQPrest(*cirIsdsPreset, aIRQPreset);
-  delete cirIsdsPreset;  
+    aIRQPreset.uniqID = aCIRPreset.Id(); 
+    aIRQPreset.type = aCIRPreset.GetChannelType();
+    aIRQPreset.index  = aCIRPreset.Index();
+    
+    aIRQPreset.presetId = aCIRPreset.GetId();
+    aIRQPreset.iChannelUrlCount  = aCIRPreset.GetUrlCount();
+    aIRQPreset.name = QString::fromUtf16((aCIRPreset.Name()).Ptr(), (aCIRPreset.Name()).Length());
+    
+    aIRQPreset.languageCode  = QString::fromUtf16(aCIRPreset.GetLangId().Ptr(), aCIRPreset.GetLangId().Length());
+    aIRQPreset.languageName  = QString::fromUtf16(aCIRPreset.GetLangName().Ptr(), aCIRPreset.GetLangName().Length());
+    
+    aIRQPreset.countryCode  = QString::fromUtf16(aCIRPreset.GetCountryId().Ptr(),aCIRPreset.GetCountryId().Length());
+    aIRQPreset.countryName  = QString::fromUtf16(aCIRPreset.GetCountryName().Ptr(),aCIRPreset.GetCountryName().Length());
+    
+    aIRQPreset.lastModified  = QString::fromUtf16(aCIRPreset.GetLastModifiedTime().Ptr(), aCIRPreset.GetLastModifiedTime().Length());
+    aIRQPreset.description  = QString::fromUtf16(aCIRPreset.GetDescription().Ptr(), aCIRPreset.GetDescription().Length());
+    aIRQPreset.shortDesc  = QString::fromUtf16(aCIRPreset.GetShortDescription().Ptr(), aCIRPreset.GetShortDescription().Length());
+    
+    aIRQPreset.genreId  = QString::fromUtf16(aCIRPreset.GetGenreId().Ptr(), aCIRPreset.GetGenreId().Length());
+    aIRQPreset.genreName  = QString::fromUtf16(aCIRPreset.GetGenreName().Ptr(), aCIRPreset.GetGenreName().Length());
+    
+    aIRQPreset.advertisementUrl  = QString::fromUtf16(aCIRPreset.GetAdvertisementUrl().Ptr(), aCIRPreset.GetAdvertisementUrl().Length());
+    aIRQPreset.advertisementInUse  = QString::fromUtf16(aCIRPreset.GetAdvertisementInUse().Ptr(),aCIRPreset.GetAdvertisementInUse().Length());
+    
+    aIRQPreset.imgUrl  = QString::fromUtf16(aCIRPreset.GetImgUrl().Ptr(), aCIRPreset.GetImgUrl().Length());   
+    
+    aIRQPreset.musicStoreStatus  = QString::fromUtf16(aCIRPreset.GetMusicStoreStatus().Ptr(), aCIRPreset.GetMusicStoreStatus().Length());
+    aIRQPreset.clearChannelServerList();
+    
+    IRQChannelServerURL url;
+    
+    for(int i=0; i<aCIRPreset.GetUrlCount(); i++)
+    {
+        CIRChannelServerUrl& tempServerUrl = aCIRPreset.GetUrl(i);
+        url.bitrate = tempServerUrl.GetBitRate();
+        url.serverName = QString::fromUtf16(tempServerUrl.GetServerName().Ptr(), tempServerUrl.GetServerName().Length());
+        url.url = QString::fromUtf16(tempServerUrl.GetServerUrl().Ptr(), tempServerUrl.GetServerUrl().Length());
+        aIRQPreset.insertChannelServer(url);
+    }
+    
+    aIRQPreset.sortURLArray();   
 }
 
 //switch from the symbian error code to the IRQ error code 
--- a/qtinternetradio/irqfavoritesdb/inc/irqfavoritesdb.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/irqfavoritesdb/inc/irqfavoritesdb.h	Wed Jun 23 16:21:12 2010 +0100
@@ -123,6 +123,8 @@
      */
     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
--- a/qtinternetradio/irqfavoritesdb/inc/irqfavoritesdb_p.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/irqfavoritesdb/inc/irqfavoritesdb_p.h	Wed Jun 23 16:21:12 2010 +0100
@@ -66,6 +66,8 @@
     
     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);
@@ -78,6 +80,8 @@
         
     void increasePlayedTimesL(const IRQPreset &aPreset);
     
+    int renamePresetL(const IRQPreset &aPreset, const QString &aNewName);
+    
 private:
     IRQFavoritesDB * const q_ptr;
     CIRFavoritesDb *mIRFavoritesDb;
--- a/qtinternetradio/irqfavoritesdb/src/irqfavoritesdb.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/irqfavoritesdb/src/irqfavoritesdb.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -159,29 +159,7 @@
     d_ptr->increasePlayedTimes(aPreset);
 }
 
-
-
-
- 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+int IRQFavoritesDB::renamePreset(const IRQPreset &aPreset, const QString &aNewName)
+{
+    return d_ptr->renamePreset(aPreset, aNewName);
+}
--- a/qtinternetradio/irqfavoritesdb/src/irqfavoritesdb_p.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/irqfavoritesdb/src/irqfavoritesdb_p.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -197,6 +197,23 @@
     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)
 {
@@ -254,3 +271,14 @@
     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/irqisdsclient/inc/irqisdsclient.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/irqisdsclient/inc/irqisdsclient.h	Wed Jun 23 16:21:12 2010 +0100
@@ -111,7 +111,11 @@
     /**
      *IRQIsdsClient::IsdsListenRequestL()
      *issue a listen request to the isds client. 
-     *@param int,bool, the current index of channel, the history tag  
+     *@param int,bool, 
+     *if we set the aHistoryBool to false, the aCurrentIndex means the current song's index
+     *in the current list.
+     *if we set the aHistoryBool to true,  the aCurrentIndex means the channel ID you expect 
+     *to listen, for sometimes, the channel ID is saved in the DB so we could get it directly
      **/
     IMPORT_C void isdsListenRequest(int aCurrentIndex, bool aHistoryBool =
             false);
--- a/qtinternetradio/irqisdsclient/src/irqisdsclientimpl.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/irqisdsclient/src/irqisdsclientimpl.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -429,6 +429,8 @@
             oneChannelItem->shortDescription = QString::fromUtf16(
                     aParsedStructure[i]->iShortDescription->Des().Ptr(),
                     aParsedStructure[i]->iShortDescription->Des().Length());
+            //added for search result's cache
+            oneChannelItem->channelID = aParsedStructure[i]->iChannelID;
 
             if (0 != aParsedStructure[i]->iImgUrl.Length())
             {
--- a/qtinternetradio/irqsonghistory/inc/irqsonghistoryengine.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/irqsonghistory/inc/irqsonghistoryengine.h	Wed Jun 23 16:21:12 2010 +0100
@@ -81,7 +81,7 @@
     * @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, QString& aMusicshopStatus);
+    IMPORT_C void handleSongMetaDataReceived(const IRQMetaData& aMetaData, const IRQPreset& preset);
     
     /*
      * delete one item from the station history db
@@ -128,7 +128,7 @@
     
     void handleMetaDataReceivedL(const IRQMetaData& aMetaData, const IRQPreset& aPreset);
 	void getAllHistoryL(QList<IRQSongHistoryInfo *>& aSongHistoryArr);
-	void handleSongMetaDataReceivedL(const IRQMetaData& aMetaData, QString& aMusicshopStatus);
+	void handleSongMetaDataReceivedL(const IRQMetaData& aMetaData, const IRQPreset& aPreset);
     void getAllSongHistoryL(QList<IRQSongInfo *>& aSongHistoryArr);
 
 private:
--- a/qtinternetradio/irqsonghistory/inc/irqsonghistoryinfo.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/irqsonghistory/inc/irqsonghistoryinfo.h	Wed Jun 23 16:21:12 2010 +0100
@@ -299,16 +299,20 @@
     
     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& aStatus);
+    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;
 
 };
--- a/qtinternetradio/irqsonghistory/src/irqsonghistoryengine.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/irqsonghistory/src/irqsonghistoryengine.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -129,22 +129,25 @@
 }
 
 EXPORT_C void IRQSongHistoryEngine::handleSongMetaDataReceived(const IRQMetaData& aMetaData,
-        QString& aMusicshopStatus)
+        const IRQPreset& aPreset)
 {
-    TRAPD(error, handleSongMetaDataReceivedL(aMetaData,aMusicshopStatus));
+    TRAPD(error, handleSongMetaDataReceivedL(aMetaData,aPreset));
     if (KErrNone != error)
     {        
     }
 }
 
 EXPORT_C void IRQSongHistoryEngine::handleSongMetaDataReceivedL(const IRQMetaData& aMetaData,
-        QString& aMusicshopStatus)
+        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 musicFlag(reinterpret_cast<const TUint16*>(aMusicshopStatus.utf16()), aMusicshopStatus.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);                            
 }
 
@@ -176,7 +179,7 @@
         if(ret)
         {
             TInt modified = iSongHistoryDb->UpdateSongHistoryDbL( channelId ,
-                       channelName ,channelUrl ,imageUrl ,genreName, countryName, languageName, musicFlag);   
+                       channelUrl ,imageUrl ,genreName, countryName, languageName, musicFlag);   
             // TODO notify uplayer to change layout?
         }
     }
@@ -186,7 +189,7 @@
         channelType = 0;
     }
     
-    iSongHistoryDb->SearchAndDeleteRecordL(channelName, channelUrl, channelType);
+    iSongHistoryDb->SearchAndDeleteRecordL(channelName, channelUrl, channelType, channelId);
     
 	RBuf delSongName;
 	delSongName.CleanupClosePushL();
@@ -399,6 +402,7 @@
     // create IRQSongHistoryInfo array and set
     QString songName;
     QString artist;     
+    QString stationName;     
     QString musicStoreStatus;
     
     for (int arrCount = 0; arrCount < songCount; arrCount++)
@@ -409,12 +413,15 @@
         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, musicStoreStatus);
+        irqsong->setAllInfo(songName, artist, stationName, musicStoreStatus);
         aSongHistoryArr.append(irqsong);
     }
     
@@ -483,7 +490,6 @@
         TPtrC languageName(reinterpret_cast<const TUint16*>(aLanguageName.utf16()));
         TPtrC musicFlag(reinterpret_cast<const TUint16*>(aMusicFlag.utf16()));
         TRAP_IGNORE(iSongHistoryDb->UpdateSongHistoryDbL( channelId ,
-                channelName,
                 channelUrl,
                 imageUrl,
                 genreName,
--- a/qtinternetradio/irqsonghistory/src/irqsonghistoryinfo.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/irqsonghistory/src/irqsonghistoryinfo.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -344,11 +344,20 @@
     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;
@@ -359,11 +368,12 @@
     return iMusicshopStatus;
 }
 
-EXPORT_C void IRQSongInfo::setAllInfo(const QString& aName, const QString& aArtist, const QString& aStatus)
+EXPORT_C void IRQSongInfo::setAllInfo(const QString& aName, const QString& aArtist, const QString& aStationName, const QString& aStatus)
 {
     iSongName =   aName;
     iSongArtist = aArtist;
-    iMusicshopStatus = aStatus;    
+    iStationName = aStationName;
+    iMusicshopStatus = aStatus;
 }
 
 
--- a/qtinternetradio/ui/inc/irapplication.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/inc/irapplication.h	Wed Jun 23 16:21:12 2010 +0100
@@ -20,6 +20,7 @@
 #include <QEvent>
 #include <hbglobal.h>
 #include <xqserviceprovider.h>
+#include <qpoint.h>
 
 #include "irqevent.h"
 #include "irviewdefinitions.h"
@@ -41,6 +42,7 @@
 class IRQSystemEventHandler;
 class XQSharableFile;
 class IRPlayList;
+class HbIconItem;
 
 #ifdef LOCALIZATION
 class QTranslator;
@@ -57,9 +59,9 @@
     
     bool verifyNetworkConnectivity(const QString &aConnectingText = hbTrId("txt_common_info_loading"));
     
-    void createLoadingDialog(const QObject *aReceiver, const char *aFunc);
-    
-    void closeLoadingDialog();
+    void startLoadingAnimation(const QObject *aReceiver, const char *aFunc);  
+    void startLoadingAnimation(const QPointF& aPos);
+    void stopLoadingAnimation();
     
     IRViewManager* getViewManager() const;
     IRQNetworkController* getNetworkController();
@@ -116,6 +118,7 @@
     void startSystemEventMonitor();
     void initApp();
     void setExitingView();
+    void getLoadingAnimation();
     
     TIRHandleResult handleConnectionEstablished();
     
@@ -168,6 +171,7 @@
     IRQSystemEventHandler *iSystemEventHandler;
     
     IRPlayList *iPlayList;
+    HbIconItem          *iLoadingAnimation;    
 };
 
 #endif
--- a/qtinternetradio/ui/inc/irchannelmodel.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/inc/irchannelmodel.h	Wed Jun 23 16:21:12 2010 +0100
@@ -22,6 +22,7 @@
 
 class HbIcon;
 class IRQChannelItem;
+class IRSearchResultDB;
 
 class IrChannelModel : public QAbstractListModel
 {
@@ -35,7 +36,11 @@
     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 clearAndDestroyLogos();
     
 public slots:
@@ -51,6 +56,7 @@
     QList<IRQChannelItem*> *iChannelList;
     QMap<int, HbIcon*>     iLogos;
     HbIcon *iStationLogo;
+    IRSearchResultDB *iDB;
 };
 
 #endif
--- a/qtinternetradio/ui/inc/irfavoritesmodel.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/inc/irfavoritesmodel.h	Wed Jun 23 16:21:12 2010 +0100
@@ -47,6 +47,8 @@
     bool deleteOneFavorite(int aIndex);  
     bool deleteMultiFavorites(const QModelIndexList &aIndexList);
     
+    void updateFavoriteName(int aIndex, const QString &aNewName);
+    
 signals:
     void modelChanged();
     
--- a/qtinternetradio/ui/inc/irfavoritesview.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/inc/irfavoritesview.h	Wed Jun 23 16:21:12 2010 +0100
@@ -22,6 +22,7 @@
 
 class HbSelectionDialog;
 class IRFavoritesModel;
+class IRStationShare;
 class IRQPreset;
 
 class IRFavoritesView : public IrAbstractListViewBase 
@@ -45,6 +46,7 @@
     void presetLogoDownloadError();	
     void modelChanged();
     void actionClicked(HbAction *aAction);
+    void renameConfirmed(HbAction *aAction);
     void deleteDialogClosed(HbAction *aAction);
     
 private:
@@ -70,6 +72,7 @@
     
 private:
     
+    IRStationShare    *iStationShare;
     IRFavoritesModel  *iModel;
     HbSelectionDialog *iMultiDeleteDialog;
     HbAction          *iMultiDeleteAction;
--- a/qtinternetradio/ui/inc/irhistoryview.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/inc/irhistoryview.h	Wed Jun 23 16:21:12 2010 +0100
@@ -39,16 +39,12 @@
    
 private slots:
     void clearAllList();
-    void presetResponse(IRQPreset *aPreset);
-    void operationException(IRQError aError);
     void networkRequestNotified(IRQNetworkEvent aEvent);
-    void cancelRequest();
     //to start the convertion asynchronously
     void convertAnother();
     void presetLogoDownload(IRQPreset* aPreset);
     void presetLogoDownloadError();
     void modelChanged();
-    void gotoSongHistory();
     
     void actionClicked(HbAction *aAction);
     
--- a/qtinternetradio/ui/inc/irnowplayingview.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/inc/irnowplayingview.h	Wed Jun 23 16:21:12 2010 +0100
@@ -25,6 +25,7 @@
 class IRQStatisticsReporter;
 class IRQNetworkController;
 class IRQMetaData;
+class IRStationShare;
 class HbLabel;
 
 /**
@@ -107,6 +108,7 @@
 private:
     IRQStatisticsReporter *iStatisticsReporter;
     IRQNetworkController  *iNetworkController;
+    IRStationShare *iStationShare;
 
     // tool bar actions
     HbAction *iPlayStopAction;
--- a/qtinternetradio/ui/inc/irplaycontroller.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/inc/irplaycontroller.h	Wed Jun 23 16:21:12 2010 +0100
@@ -37,6 +37,11 @@
 {
     Q_OBJECT
 
+    
+public slots:    
+    // slots connected with own functions
+    void cancelBuffering();
+    
 public:
     explicit IRPlayController(IRApplication* aApplication);
     ~IRPlayController();
@@ -95,8 +100,7 @@
     void fetchVolume(int &aVolume);
     void handleMetaDataReceived(IRQMetaData& aIRmetaData);
 
-    // slots connected with own functions
-    void cancelBuffering();
+    // slots connected with own functions  
     void handleError();
 
 private:
@@ -120,6 +124,8 @@
     bool iGetServerResult;
     
     IRQPreset *iNowPlayingPreset;
+    //reserve the info in nowplay view
+    IRQPreset *iNowPlayingPresetBackup;
     // reference of IRQMediaPlayer meta data
     IRQMetaData *iMetaData;
     IRQSongHistoryEngine *iSongHistoryEngine;
@@ -157,6 +163,8 @@
     // the bitrate from real station feedback.
     int iRealBitrate;
     QString iLastPlayedUrl;
+    //reserve the info in nowplay view
+    QString iLastPlayedUrlBackup; 
     // To handle error async
     IRQError iLastError;
     
--- a/qtinternetradio/ui/inc/irsearchchannelsview.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/inc/irsearchchannelsview.h	Wed Jun 23 16:21:12 2010 +0100
@@ -50,15 +50,10 @@
     void connectIsdsClient();
     void disconnectIsdsClient();
     
-    void switch2SearchingState();
-    void switch2InitState();    
-    void switch2SearchedState(); 
-    void startSearchingAnimation();
-    void stopSearchingAnimation();    
-    void loadLayout();   
-    void handleItemSelected();
-    void createSearchingDialog();
-    void closeSearchingDialog();
+    void switch2LoadingState();
+    void switch2InitState();  
+    void loadLayout();
+    void handleItemSelected();    
     void normalInit();
     void initMenu();
     void lazyInit();
@@ -79,16 +74,15 @@
     void convertAnother();
     void presetLogoDownload(IRQPreset* aPreset);
     void presetLogoDownloadError();
-
-    
+    //this slot is used to back to previouse view or minimize the search widget
+    void minimizeSearchPanel();   
     
 private: // members       
     
     enum IRQSearchState
     {
         ESearch_init = 0,
-        ESearch_Searching,
-        ESearch_Searched
+        ESearch_Loading //loading means searching or buffering.
     };    
     
     HbListView          *iListView;
@@ -98,7 +92,6 @@
     HbSearchPanel       *iSearchPanelWidget;
     IRQSearchState       iSearchState;
     IrChannelModel      *iChannelModel;
-    HbProgressDialog    *iSearchingDialog;    
     //the object is created by IsdsClient, but application is responsible for free
     IRQPreset           *iPreset;
     IRQPreset           *iLogoPreset;     
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/ui/inc/irsearchresultdb.h	Wed Jun 23 16:21:12 2010 +0100
@@ -0,0 +1,45 @@
+/*
+* 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 IRSEARCHRESULTDB_H
+#define IRSEARCHRESULTDB_H
+ 
+#include "irqenums.h"
+ 
+class QSqlDatabase; 
+class IRQChannelItem;
+
+class IRSearchResultDB 
+{	
+public:
+		
+    IRSearchResultDB();     
+	~IRSearchResultDB();
+     
+	//not take ownership
+	IRQError cacheChannelList(QList<IRQChannelItem*> *aChannelList);
+	//caller needs to release the memory
+	QList<IRQChannelItem*> * getCahcedChannelList();	
+    
+private:		
+    void createDBConnection();
+    IRQError clearCache();
+		
+private:
+	  QSqlDatabase         *iDB;
+};
+#endif//IRSEARCHRESULTDB_H
--- a/qtinternetradio/ui/inc/irstationshare.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/inc/irstationshare.h	Wed Jun 23 16:21:12 2010 +0100
@@ -21,6 +21,7 @@
 #include <QString>
 #include <QList>
 
+class ShareUi;
 class IRQPreset;
 
 class IRStationShare
@@ -41,7 +42,8 @@
     bool constructPlsFile(const IRQPreset &aPreset);
         
 private:
-    QString  iPlsFilePath;     
+    QString  iPlsFilePath;    
+    ShareUi *iShareDialog;
 };
 
 #endif // IRSTATIONSHARE_H_
--- a/qtinternetradio/ui/inc/iruidefines.h	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/inc/iruidefines.h	Wed Jun 23 16:21:12 2010 +0100
@@ -33,6 +33,7 @@
 static const char* SETTINGS_ACTION      = "setting_act"; 
 static const char* GO_TO_STATION_ACTION = "go2station_act";
 static const char* OBJECT_TOOLBAR       = "toolbar";
+static const char* VIEW_CONTAINER       = "container";
 
 // Common Sections
 static const char* PORTRAIT_SEC  = "prt_section";
@@ -66,9 +67,7 @@
 static const char* OPEN_WEB_ADDRESS_VIEW_OBJECT_PLAY_BUTTON                = "playButton";
 
 // SearchView -- Object Name
-static const char* SEARCH_CHANNELS_VIEW_OBJECT_VIEW                   = "ext-IRSearchChannelsView";
-static const char* SEARCH_CHANNELS_VIEW_NO_LISTVIEW_SECTION           = "section_without_listview";
-static const char* SEARCH_CHANNELS_VIEW_LISTVIEW_SECTION              = "section_with_listview";
+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";
 
@@ -112,4 +111,6 @@
 static const char* TERMS_CONS_VIEW_DECLINE_BTN  = "decline_btn";
 static const char* TERMS_CONS_VIEW_TEXT_EDIT  = "text_edit";
 
+#define LOADING_ANIMATION_ICON_SIZE 50
+
 #endif /* IRUIDEFINES_H_ */
--- a/qtinternetradio/ui/resources/layout/searchchannelsview.docml	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/resources/layout/searchchannelsview.docml	Wed Jun 23 16:21:12 2010 +0100
@@ -9,7 +9,7 @@
                 <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)"/>
-                <bool name="visible" value="FALSE"/>
+                <bool name="visible" value="TRUE"/>
             </widget>
             
             <widget name="search_listview" type="HbListView">                 
@@ -22,52 +22,15 @@
             <real name="z" value="0"/>
             <layout orientation="Vertical" type="linear">
                 <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-                <stretchitem stretchfactor="1"/>
+                <linearitem itemname="headingText" spacing="0un"/>
+                <linearitem itemname="search_listview" spacing="0un"/>                
                 <linearitem itemname="search_panel" spacing="0un"/>
             </layout>
         </widget> 
         <string locid="txt_irad_title_internet_radio" name="title"/>
     </widget>
     
-    <section name="section_without_listview">
-        <widget name="headingText" type="HbGroupBox">
-            <bool name="visible" value="FALSE"/>
-        </widget>
-        
-        <widget name="search_listview" type="HbListView">
-            <bool name="visible" value="FALSE"/>
-        </widget>
-        
-        <widget name="content" role="HbView:widget" type="HbWidget">             
-            <layout orientation="Vertical" type="linear">               
-                <stretchitem stretchfactor="1"/>
-                <linearitem itemname="search_panel" spacing="0un"/>
-            </layout>
-        </widget> 
-    </section>
-    
-    <section name="section_with_listview">
-        <widget name="headingText" type="HbGroupBox">
-             <bool name="visible" value="TRUE"/>
-        </widget>
-        
-        <widget name="search_listview" type="HbListView">
-            <bool name="visible" value="TRUE"/>
-        </widget>
-                    
-        <widget name="content" role="HbView:widget" type="HbWidget">             
-            <layout orientation="Vertical" type="linear">
-                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-                <linearitem itemname="headingText" spacing="0un"/>
-                <linearitem itemname="search_listview" spacing="0un"/>
-                <stretchitem stretchfactor="1"/>                 
-                <linearitem itemname="search_panel" spacing="0un"/>
-            </layout>
-        </widget>        
-    </section>
-    
     <metadata activeUIState="ui_state_listview" display="NHD portrait" unit="un">
         <uistate name="Common ui state" sections="#common"/>       
-        <uistate name="ui_state_listview" sections="#common section_without_listview section_with_listview"/>        
     </metadata>
 </hbdocument>
--- a/qtinternetradio/ui/src/irapplication.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/src/irapplication.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -26,6 +26,9 @@
 #include <QDir>
 #include <xqsharablefile.h> 
 #include <xqserviceutil.h>
+#include <hbiconitem.h>
+#include <hbiconanimator.h>
+#include <hbiconanimationmanager.h>
 
 #ifdef LOCALIZATION 
 #include <QTranslator>
@@ -79,7 +82,8 @@
                                      iTranslator(NULL),
                                      #endif
                                      iSystemEventHandler(aSystemEventHandler),
-                                     iPlayList(NULL)
+                                     iPlayList(NULL),
+                                     iLoadingAnimation(NULL)
                                      
 {
     LOG_METHOD;
@@ -191,7 +195,22 @@
     return ret;
 }
 
-void IRApplication::createLoadingDialog(const QObject *aReceiver, const char *aFunc)
+void IRApplication::startLoadingAnimation(const QPointF& aPos)
+{
+    if( NULL == iLoadingAnimation )
+    {
+        getLoadingAnimation();
+    }
+    
+    if (iLoadingAnimation)
+    {
+        iLoadingAnimation->setPos(aPos);
+        iLoadingAnimation->show();
+        iLoadingAnimation->animator().startAnimation();
+    }    
+}
+
+void IRApplication::startLoadingAnimation(const QObject *aReceiver, const char *aFunc)
 {
     LOG_METHOD_ENTER;
     
@@ -206,6 +225,13 @@
         }
     }
     
+    //if in search, we could not show the dialog
+    TIRViewId curViewID = static_cast<IRBaseView*>(iViewManager->currentView())->id();
+    if ( EIRView_SearchView == curViewID )
+    {
+        return;        
+    }
+    
     if (NULL == iLoadingNote)
     {
         iLoadingNote = new HbProgressDialog(HbProgressDialog::WaitDialog);
@@ -237,13 +263,19 @@
     iLoadingNote->show();
 }
 
-void IRApplication::closeLoadingDialog()
+void IRApplication::stopLoadingAnimation()
 {
     LOG_METHOD_ENTER;
     if (iLoadingNote)
     {
         iLoadingNote->close();
     }
+    
+    if( iLoadingAnimation )
+    {
+        iLoadingAnimation->animator().stopAnimation();
+        iLoadingAnimation->hide();         
+    }
 }
 
 /*
@@ -452,7 +484,7 @@
         return;
     }
     
-    closeLoadingDialog();
+    stopLoadingAnimation();
     iConnectingCanceled = true;
     if (iNetworkController->getNetworkStatus())
     {
@@ -474,7 +506,7 @@
     switch (aEvent)
     {
         case EIRQNetworkConnectionConnecting :
-            createLoadingDialog(this, SLOT(cancelConnect()));
+            startLoadingAnimation(this, SLOT(cancelConnect()));
             iConnectingCanceled = false;
             break;
             
@@ -507,7 +539,7 @@
             
         case EIRQDisplayNetworkMessageNoConnectivity:
             {
-                closeLoadingDialog();
+                stopLoadingAnimation();
                 HbMessageBox::warning(hbTrId("txt_irad_info_no_network_connectiion"), (QObject*)NULL, NULL);
                 if (!iDisconnected)
                 {
@@ -556,9 +588,29 @@
     iViewManager->raise();
 }
 
+void IRApplication::getLoadingAnimation()
+{
+    HbIconAnimationManager::global()->addDefinitionFile("qtg_anim_loading.axml");
+    iLoadingAnimation = new HbIconItem("qtg_anim_loading");
+    iLoadingAnimation->hide();
+    QGraphicsScene *targetScene = getViewManager()->scene();
+    QGraphicsScene *oldScene = iLoadingAnimation->scene();
+
+    if (targetScene != oldScene)
+    {
+        if (oldScene)
+        {
+            oldScene->removeItem(iLoadingAnimation);
+        }
+        targetScene->addItem(iLoadingAnimation); // takes ownership
+    }
+
+}
+
 void IRApplication::initApp()
 {
-    getNetworkController();
+    getNetworkController();    
+    
     connect(iNetworkController, SIGNAL(networkEventNotified(IRQNetworkEvent)),
             this, SLOT(networkEventNotified(IRQNetworkEvent)));
     
@@ -679,6 +731,11 @@
 
     if (object->objectName() == ABSTRACT_LIST_VIEW_BASE_OBJECT_PLAYINGBANNER)
     {
+        if (NULL == iViewManager->currentView())
+        {
+            return false;
+        }
+        
         if( (EIRView_PlayingView == static_cast<IRBaseView*>(iViewManager->currentView())->id()) \
         	||(EIRView_SearchView == static_cast<IRBaseView*>(iViewManager->currentView())->id()) )
         {
@@ -731,7 +788,7 @@
     if( iPlayController->isPlaying() /*|| iPlayController->isBuffering()*/)
     {
         iPlayController->stop(EIRQCallIsActivated);
-        closeLoadingDialog();
+        stopLoadingAnimation();
     }
 	
 	//for we don't cancel the loading when call is activated, 
--- a/qtinternetradio/ui/src/ircategoryview.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/src/ircategoryview.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -204,7 +204,7 @@
     
     if (!cache)
     {
-        iApplication->createLoadingDialog(this, SLOT(cancelRequest()));
+        iApplication->startLoadingAnimation(this, SLOT(cancelRequest()));
     }
 }
 
@@ -264,7 +264,7 @@
             connectToIsdsClient();
             bool cache = false;
             iIsdsClient->isdsCategoryRequest(request, cache);
-            iApplication->createLoadingDialog(this, SLOT(cancelRequest()));
+            iApplication->startLoadingAnimation(this, SLOT(cancelRequest()));
         }
         //for there may be some cache, and when we click, we need to handle here        
         else if ( EIR_UseNetwork_SelectItem == getUseNetworkReason())
@@ -352,7 +352,7 @@
 void IRCategoryView::dataChanged()
 {
     disconnectIsdsClient();
-    iApplication->closeLoadingDialog();
+    iApplication->stopLoadingAnimation();
 
     iListView->reset();
     iListView->setCurrentIndex(iModel->index(iLastSelectItem));
@@ -368,7 +368,7 @@
 {
     iIsdsClient->isdsCancelRequest();
     disconnectIsdsClient();
-    iApplication->closeLoadingDialog();
+    iApplication->stopLoadingAnimation();
     
     //if this function is called and this view is current view, it indicates that this view is starting view and 
     //data has not been loaded yet, so we need to back to collections view
@@ -385,7 +385,7 @@
 void IRCategoryView::operationException(IRQError aError)
 {
     Q_UNUSED(aError);
-    iApplication->closeLoadingDialog();
+    iApplication->stopLoadingAnimation();
 
     disconnectIsdsClient();
     
--- a/qtinternetradio/ui/src/irchannelmodel.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/src/irchannelmodel.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -19,9 +19,10 @@
 
 #include "irchannelmodel.h"
 #include "irqisdsdatastructure.h"
+#include "irsearchresultdb.h"
 
 IrChannelModel::IrChannelModel(QObject *aParent): QAbstractListModel(aParent)
-                                                , iChannelList(NULL)
+                                                , iChannelList(NULL),iDB(NULL)
 {
     iStationLogo = new HbIcon("qtg_large_internet_radio");   
 }
@@ -34,6 +35,12 @@
     iStationLogo = NULL;
     
     clearAndDestroyLogos();
+
+    if( iDB )
+    {
+        delete iDB;
+        iDB = NULL;
+    }
 }
 
 int IrChannelModel::rowCount(const QModelIndex &aParent) const
@@ -125,6 +132,47 @@
     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;    
+}
+
+void IrChannelModel::save2Cache()
+{
+    if( NULL == iChannelList )
+    {
+        return;
+    }
+    
+    //ignore the return value   
+    iDB->cacheChannelList(iChannelList);
+}
+
+IRQChannelItem * IrChannelModel::getChannelItemByIndex(int aIndex)
+{
+    if( aIndex < 0 || aIndex >= iChannelList->count() )
+    {
+        return NULL;
+    }
+    
+    return iChannelList->at(aIndex);
+}
+
 void IrChannelModel::clearAndDestroyLogos()
 {
     for (QMap<int, HbIcon*>::iterator it = iLogos.begin(); it != iLogos.end(); ++it)
--- a/qtinternetradio/ui/src/irfavoritesmodel.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/src/irfavoritesmodel.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -305,3 +305,11 @@
     return retVal;    
 }
 
+void IRFavoritesModel::updateFavoriteName(int aIndex, const QString &aNewName)
+{
+    if (aIndex >= 0 && aIndex < iPresetsList->count())
+    {
+        iPresetsList->at(aIndex)->name = aNewName;
+        emit dataChanged(index(aIndex), index(aIndex));
+    }
+}
--- a/qtinternetradio/ui/src/irfavoritesview.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/src/irfavoritesview.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -22,6 +22,7 @@
 #include <hbselectiondialog.h>
 #include <QPixmap>
 #include <QTimer>
+#include <HbInputDialog>
 
 #include "irviewmanager.h"
 #include "irfavoritesview.h"
@@ -51,6 +52,7 @@
  */
 IRFavoritesView::IRFavoritesView(IRApplication *aApplication, TIRViewId aViewId) 
                                  : IrAbstractListViewBase(aApplication, aViewId),
+                                   iStationShare(NULL),
                                    iMultiDeleteDialog(NULL),
                                    iMultiDeleteAction(NULL),
                                    iLogoPreset(NULL)
@@ -73,7 +75,10 @@
     iLogoPreset = NULL;
     
     delete iMultiDeleteDialog;
-    iMultiDeleteDialog = NULL;    
+    iMultiDeleteDialog = NULL; 
+    
+    delete iStationShare;
+    iStationShare = NULL;
 }
 
 TIRHandleResult IRFavoritesView::handleCommand(TIRViewCommand aCommand, TIRViewCommandReason aReason)
@@ -430,8 +435,11 @@
 {
     int current = iListView->currentIndex().row();
 
-    IRStationShare stationShare;
-    stationShare.shareStations(*iModel->getPreset(current));    
+    if (NULL == iStationShare)
+    {
+        iStationShare = new IRStationShare();
+    }
+    iStationShare->shareStations(*iModel->getPreset(current));    
 }
 
 void IRFavoritesView::updateIconIndexArray()
@@ -450,7 +458,9 @@
 
 void IRFavoritesView::renameContextAction()
 {
-    
+    int current = iListView->currentIndex().row();
+    IRQPreset *preset = iModel->getPreset(current);
+    HbInputDialog::getText(hbTrId("txt_common_menu_rename_item"), this, SLOT(renameConfirmed(HbAction*)), preset->name);
 }
 
 void IRFavoritesView::detailsContextAction()
@@ -490,6 +500,49 @@
     }    
 }
 
+void IRFavoritesView::renameConfirmed(HbAction *aAction)
+{
+    HbInputDialog *dialog = static_cast<HbInputDialog*>(sender());
+    if (dialog)
+    {
+        if (aAction == dialog->actions().at(0))
+        {
+            int current = iListView->currentIndex().row();
+            IRQPreset *preset = iModel->getPreset(current);
+            
+            QString newName = dialog->value().toString().trimmed();
+            if (newName.isEmpty())
+            {
+                newName = hbTrId("txt_irad_info_unnamed_station");
+            }
+            
+            if (newName == preset->name)
+            {
+                return;
+            }
+            
+            int ret = iFavorites->renamePreset(*preset, newName);
+            switch (ret)
+            {
+            case EIRQErrorNotFound:
+                //popup note : not found
+                break;
+                
+            case EIRQErrorAlreadyExist:
+                //popup note : already exists
+                break;
+                
+            case EIRQErrorNone:
+                iModel->updateFavoriteName(current, newName);
+                break;
+                
+            default:
+                break;
+            }  
+        }
+    }
+}
+
 void IRFavoritesView::initToolBar()
 {
     //add HbActions to the toolbar, the HbActions have been created in IrAbstractListViewBase
--- a/qtinternetradio/ui/src/irhistoryview.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/src/irhistoryview.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -72,11 +72,6 @@
     connect(iConvertTimer, SIGNAL(timeout()), this, SLOT(convertAnother()));
 }
 
-void IRHistoryView::gotoSongHistory()
-{
-    getViewManager()->activateView(EIRView_SongHistoryView);
-}
-
 /* 
  * Description : destructor
  */
@@ -108,10 +103,6 @@
         break;
                 
     case EIR_ViewCommand_ACTIVATED:
-        connect(iIsdsClient, SIGNAL(presetResponse(IRQPreset *)),
-                this, SLOT(presetResponse(IRQPreset *)));
-        connect(iIsdsClient, SIGNAL(operationException(IRQError)),
-                this, SLOT(operationException(IRQError)));
         connect(iIsdsClient, SIGNAL(presetLogoDownloaded(IRQPreset* )),
                 this, SLOT(presetLogoDownload(IRQPreset* )));
         connect(iIsdsClient, SIGNAL(presetLogoDownloadError()),
@@ -134,11 +125,7 @@
         //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(presetResponse(IRQPreset *)),
-                   this, SLOT(presetResponse(IRQPreset *)));
-        disconnect(iIsdsClient, SIGNAL(operationException(IRQError)),
-                   this, SLOT(operationException(IRQError)));
+
         disconnect(iIsdsClient, SIGNAL(presetLogoDownloaded(IRQPreset*)),
                    this, SLOT(presetLogoDownload(IRQPreset* )));
         disconnect(iIsdsClient, SIGNAL(presetLogoDownloadError()),
@@ -169,52 +156,21 @@
         return;
     }
 
+    IRQPreset preset;
+    convertStationHistory2Preset(*hisInfo, preset);
+    
     if (hisInfo->getChannelType())
     {
-        // channel from isds server, get this preset
-        iApplication->createLoadingDialog(this, SLOT(cancelRequest()));
-        iIsdsClient->isdsListenRequest(hisInfo->getChannelId(), true);
+        // channel from isds server
+        iPlayController->connectToChannel(&preset, EIRQHistoryIsds);
     }
     else
     {
         // user defined channel
-        IRQChannelServerURL server;
-        server.bitrate = hisInfo->getBitrate();
-        server.url = hisInfo->getStreamUrl();
-        server.serverName = hisInfo->getChannelName();
-        IRQPreset preset;
-        preset.insertChannelServer(server);
-        preset.name = hisInfo->getChannelName();
-        preset.description = hisInfo->getChannelDesc();
-        preset.shortDesc = hisInfo->getChannelDesc();
-        preset.genreName = hisInfo->getGenreName();
-        preset.countryName = hisInfo->getCountryName();
-        preset.languageName = hisInfo->getLanguageName();
-        preset.type = 0;
-        preset.uniqID = 0;
-        preset.presetId = 0;
-
         iPlayController->connectToChannel(&preset,EIRQHistoryAdhoc);
     }
 }
 
-// ---------------------------------------------------------------------------
-// IRHistoryView::presetResponse()
-// gets the preset from isds client and play
-//---------------------------------------------------------------------------
-void IRHistoryView::presetResponse(IRQPreset *aPreset)
-{
-    iPlayController->connectToChannel(aPreset,EIRQHistoryIsds);
-}
-
-void IRHistoryView::operationException(IRQError aError)
-{
-    Q_UNUSED(aError);
-    iApplication->closeLoadingDialog();
-
-    popupNote(hbTrId("txt_irad_info_failed_to_connect"), HbMessageBox::MessageTypeWarning);
-}
-
 void IRHistoryView::networkRequestNotified(IRQNetworkEvent aEvent)
 {
     if (getViewManager()->currentView() != this)
@@ -239,11 +195,6 @@
     setUseNetworkReason(EIR_UseNetwork_NoReason);
 }
 
-void IRHistoryView::cancelRequest()
-{
-    iIsdsClient->isdsCancelRequest();
-}
-
 // ---------------------------------------------------------------------------
 // IRHistoryView::showHistory()
 // gets the List which was stored earlier
@@ -479,6 +430,7 @@
 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();
--- a/qtinternetradio/ui/src/irnowplayingview.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/src/irnowplayingview.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -20,6 +20,12 @@
 #include <hblabel.h>
 #include <hbnotificationdialog.h>
 
+#ifdef NOWPLAYING_VIEW_OPTION_B
+#include <hbframedrawer.h>
+#include <hbframeitem.h>
+#endif
+
+
 #include "irviewmanager.h"
 #include "irapplication.h"
 #include "irplaycontroller.h"
@@ -51,6 +57,10 @@
 static const QString KPlayButtonIcon("qtg_mono_play");
 static const QString KStopButtonIcon("qtg_mono_stop");
 
+#ifdef NOWPLAYING_VIEW_OPTION_B
+static const QString KLcdGraphics("qtg_fr_lcd");
+#endif
+
 /*
  * Description : constructor
  */
@@ -58,6 +68,7 @@
     IRBaseView(aApplication, aViewId),
     iStatisticsReporter(NULL),
     iNetworkController(NULL),
+    iStationShare(NULL),
     iPlayStopAction(NULL),
     iLaunchActionNeeded(false),
     iLogoDownloadState(EIdle),    
@@ -99,6 +110,8 @@
     {
         iStatisticsReporter->closeInstance();
     }
+    
+    delete iStationShare;        
 }
 
 
@@ -186,6 +199,17 @@
     iStationName->setPlainText("");
     iSongName->setPlainText("");
     iArtistName->setPlainText("");    
+    
+#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));
@@ -735,8 +759,11 @@
 
 void IRNowPlayingView::handleShareStationAction()
 {
-    IRStationShare stationShare;
-    stationShare.shareStations(*iPlayController->getNowPlayingPreset());
+    if (NULL == iStationShare)
+    {
+        iStationShare = new IRStationShare();
+    }
+    iStationShare->shareStations(*iPlayController->getNowPlayingPreset());
 }
 
 void IRNowPlayingView::handleSettingAction()
--- a/qtinternetradio/ui/src/iropenwebaddressview.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/src/iropenwebaddressview.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -34,6 +34,7 @@
 #include "irqenums.h"
 #include "iruidefines.h"
 #include "irqsettings.h"
+static const int MAX_URL_CHARACTOR_NUMBER = 255;
 
 IROpenWebAddressView::IROpenWebAddressView(IRApplication* aApplication, TIRViewId aViewId) :
     IRBaseView(aApplication, aViewId),
@@ -199,6 +200,7 @@
 {
     iUrl = new HbDataFormModelItem(
             HbDataFormModelItem::TextItem, hbTrId("txt_irad_formlabel_station_url"));
+    iUrl->setContentWidgetData("maxLength",MAX_URL_CHARACTOR_NUMBER);
     iModel->appendDataFormItem(iUrl);
 
     iName = new HbDataFormModelItem(
--- a/qtinternetradio/ui/src/irplaycontroller.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/src/irplaycontroller.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -89,6 +89,7 @@
     iConnectedFrom(EIRQIsds),
     iGetServerResult(false),
     iNowPlayingPreset(new IRQPreset()),
+    iNowPlayingPresetBackup(new IRQPreset()),
     iMetaData(NULL),
     iSongHistoryEngine(IRQSongHistoryEngine::openInstance()),
     iPlayState(EIdle),
@@ -114,6 +115,8 @@
 
     delete iNowPlayingPreset;
     iNowPlayingPreset = NULL;
+    delete iNowPlayingPresetBackup;
+    iNowPlayingPresetBackup = NULL;
 
     delete iUrlArray;
     iUrlArray = NULL;
@@ -170,7 +173,11 @@
 
         // get URL to play
         iTryingBitrate = selectedBitRate;
+        
+        //reserve the info in nowplay view
+        *iNowPlayingPresetBackup = *iNowPlayingPreset;
         *iNowPlayingPreset = *aPreset;
+        
         delete iUrlArray;
         iUrlArray = NULL;
         iUrlArray = iNowPlayingPreset->getURLsForBitrate(selectedBitRate);
@@ -191,6 +198,8 @@
                 emit initializeLogo();
             }
 #endif
+            //reserve the info in nowplay view
+            iLastPlayedUrlBackup = iLastPlayedUrl;
             iLastPlayedUrl = url;
             iResuming = false;
             doPlay(url);
@@ -419,6 +428,11 @@
         // if there's NO other URL to try, show warning.
         if (iNowPlayingPreset->getChannelURLCount() == 1)
         {
+            //here recover info in nowplay view, only for cases:
+            //1/a channel has one url. 2/ invoked by "go to station" view.
+            //if a channel has more than one url, here can't be reached.
+            iLastPlayedUrl = iLastPlayedUrlBackup;
+            *iNowPlayingPreset = *iNowPlayingPresetBackup;
 		    stop(EIRQNoConnectionToServer);
             break;
         }
@@ -449,7 +463,7 @@
         
     case EIRQPlayerErrorAudioDeviceLost:
         //this is a temporary way to handle the plug-out event
-        iApplication->closeLoadingDialog();
+        iApplication->stopLoadingAnimation();
 		stop(EIRQCallIsActivated);
         return;
         
@@ -459,8 +473,7 @@
         break;
     }
 
-    iApplication->closeLoadingDialog();
-
+    iApplication->stopLoadingAnimation();
     createNote();
     qDebug("IRPlayController::handleError(), Exiting");
 }
@@ -475,7 +488,7 @@
 {
     if (100 == aProgress)
     {
-        iApplication->closeLoadingDialog();
+        iApplication->stopLoadingAnimation();
 
         //updateProgress(100) sometimes can be called more than one time, to improve performance,
         //we only need to do the following work once.
@@ -532,7 +545,7 @@
         //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->musicStoreStatus);  
+                *iNowPlayingPreset);  
     }   
 
     if (EPlaying == iPlayState)
@@ -549,7 +562,7 @@
 void IRPlayController::cancelBuffering()
 {
     stop(EIRQUserTerminated);
-    iApplication->closeLoadingDialog();
+    iApplication->stopLoadingAnimation();
 }
 
 //                                       private functions
@@ -658,7 +671,7 @@
     iMediaPlayer->playStation(aUrl, apId);
     iPlayState = EBuffering;
     startSession();
-    iApplication->createLoadingDialog(this, SLOT(cancelBuffering()));
+    iApplication->startLoadingAnimation(this, SLOT(cancelBuffering()));
 }
 
 /*
--- a/qtinternetradio/ui/src/irsearchchannelsview.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/src/irsearchchannelsview.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -20,7 +20,11 @@
 #include <hbsearchpanel.h>
 #include <hbaction.h>
 #include <hbprogressdialog.h>
-#include <hbscrollbar.h>
+#include <hbscrollbar.h> 
+#include <hbiconitem.h>
+#include <hbiconanimator.h>
+#include <hblabel.h> 
+#include <hbiconanimationmanager.h>
 
 #include "irsearchchannelsview.h"
 #include "iruidefines.h"
@@ -32,13 +36,13 @@
 #include "irqisdsdatastructure.h"
 #include "irplaycontroller.h"
  
-const uint KBitmapSize = 59; 
+const uint KBitmapSize = 59;
 
 IRSearchChannelsView::IRSearchChannelsView(IRApplication* aApplication,
         TIRViewId aViewId): IRBaseView(aApplication, aViewId),
-        iListView(NULL),iSearchPanelWidget(NULL),
-        iSearchState(ESearch_init),iChannelModel(NULL),iSearchingDialog(NULL),
-        iPreset(NULL),iLogoPreset(NULL),iConvertTimer(NULL)
+        iListView(NULL),iSearchPanelWidget(NULL),iSearchState(ESearch_init),
+        iChannelModel(NULL),iPreset(NULL),iLogoPreset(NULL),
+        iConvertTimer(NULL) 
 {
     //if this view is not starting view, finish all initialization in constructor
     if (getViewManager()->views().count() > 0)
@@ -85,15 +89,10 @@
     connect(iConvertTimer, SIGNAL(timeout()), this, SLOT(convertAnother()));
 }
 
+ 
+
 IRSearchChannelsView::~IRSearchChannelsView()
-{
-    if( iSearchingDialog != NULL )
-    {
-        iSearchingDialog->close();
-        delete iSearchingDialog;
-        iSearchingDialog = NULL;
-    }
-    
+{   
     if( iPreset != NULL )
     {
         delete iPreset;
@@ -105,6 +104,12 @@
         delete iLogoPreset;
         iLogoPreset = NULL;
     }
+    
+    if( NULL != iChannelModel )
+    {
+        iChannelModel->save2Cache();
+    }
+ 
 }
 
 void IRSearchChannelsView::loadLayout()
@@ -128,7 +133,8 @@
     iListView->setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAsNeeded);
     
     iChannelModel = new IrChannelModel(this);
-    iListView->setModel(iChannelModel);
+    iChannelModel->initWithCache();
+    iListView->setModel(iChannelModel);    
 }
 
 void IRSearchChannelsView::connectWidget()
@@ -137,6 +143,7 @@
     connect(iChannelModel, SIGNAL(dataAvailable()), this, SLOT(dataChanged()));
     connect(iNetworkController, SIGNAL(networkRequestNotified(IRQNetworkEvent)), this, SLOT(networkRequestNotified(IRQNetworkEvent)));     
     connect(iSearchPanelWidget,SIGNAL(criteriaChanged(const QString&)),this,SLOT(searchTextAlready(const QString&)));
+    connect(iSearchPanelWidget, SIGNAL(exitClicked()), this, SLOT(minimizeSearchPanel()));
 }
 
 void IRSearchChannelsView::connectIsdsClient()
@@ -170,96 +177,43 @@
 }
 
 void IRSearchChannelsView::switch2InitState()
-{
-    iLoader.load(SEARCH_CHANNELS_VIEW_LAYOUT_FILENAME,SEARCH_CHANNELS_VIEW_NO_LISTVIEW_SECTION);    
+{    
     iSearchState = ESearch_init;     
-}
+    iApplication->stopLoadingAnimation();
+} 
 
-void IRSearchChannelsView::switch2SearchedState()
-{
-    iSearchState = ESearch_Searched;     
-}
-
-void IRSearchChannelsView::switch2SearchingState()
-{    
-    iLoader.load(SEARCH_CHANNELS_VIEW_LAYOUT_FILENAME,SEARCH_CHANNELS_VIEW_LISTVIEW_SECTION);
+void IRSearchChannelsView::switch2LoadingState()
+{   
     iSearchPanelWidget->clearFocus();
     iListView->setFocus();
-    iSearchState = ESearch_Searching;     
-    startSearchingAnimation();
-}
- 
-void IRSearchChannelsView::createSearchingDialog()
-{
-    if ( NULL == iSearchingDialog)
-    {
-        //needs to add this , otherwise memory leak
-        iSearchingDialog = new HbProgressDialog(HbProgressDialog::WaitDialog);
-        iSearchingDialog->setModal(true);
-        iSearchingDialog->setTimeout(HbPopup::NoTimeout);
-        QAction *cancelAction = iSearchingDialog->actions().at(0);
-        cancelAction->setText(hbTrId("txt_common_button_cancel"));
-        connect(cancelAction, SIGNAL(triggered()), this, SLOT(cancelRequest()));
-    }
+    iSearchState = ESearch_Loading;
     
-    iSearchingDialog->setText(hbTrId("txt_common_info_searching"));
-    iSearchingDialog->show();
+    QSizeF searchPanelSize = iSearchPanelWidget->size();
+    QSizeF windowSize = getViewManager()->size();
+    QPointF pos(windowSize.width()/2,(windowSize.height() - searchPanelSize.height())/2);
+    QPointF iconPos(LOADING_ANIMATION_ICON_SIZE/2, LOADING_ANIMATION_ICON_SIZE/2);
+    pos -= iconPos;
+    iApplication->startLoadingAnimation(pos);
 }
 
-void IRSearchChannelsView::closeSearchingDialog()
-{
-    if( iSearchingDialog )
-    {
-        iSearchingDialog->close();
-        iSearchingDialog->deleteLater();
-        iSearchingDialog = NULL;
-    }
-}
-
-void IRSearchChannelsView::startSearchingAnimation()
-{
-    
-}
-
-void IRSearchChannelsView::stopSearchingAnimation()
-{
-    
-}
-
-
 void IRSearchChannelsView::handleItemSelected()
 {
     if (iListView)
     {
         int index = iListView->currentIndex().row();
-        if (index != -1)  
+        IRQChannelItem* aItem = iChannelModel->getChannelItemByIndex(index);
+        if( NULL != aItem )
         {
-            if (iIsdsClient)
-            {              
-                //once an item is selected, we show a dialog to prevent user from clicking the
-                //item again
-                iApplication->createLoadingDialog(this, SLOT(cancelRequest()));
-                
-                if (iIsdsClient->isdsIsChannelBanner())
-                {
-                    iIsdsClient->isdsListenRequest(index + 1);
-                }
-                else
-                {
-                    iIsdsClient->isdsListenRequest(index);
-                }
-            }
-        }
+            iIsdsClient->isdsListenRequest(aItem->channelID,true);
+        }        
     }
+ 
 }
 
 void IRSearchChannelsView::cancelRequest()
-{
-    iSearchState = ESearch_init;
+{     
     iIsdsClient->isdsCancelRequest();    
-    stopSearchingAnimation();    
-    //the following will remove into the stopSearchingAnimation() function
-    closeSearchingDialog();
+    switch2InitState(); 
 } 
 
 void IRSearchChannelsView::networkRequestNotified(IRQNetworkEvent aEvent)
@@ -276,8 +230,7 @@
         if(EIR_UseNetwork_StartSearch == getUseNetworkReason())
         {
             Q_ASSERT( !iKeyText.isEmpty() );
-            iIsdsClient->isdsSearchRequest(iKeyText);
-            iApplication->createLoadingDialog(this, SLOT(cancelRequest()));
+            iIsdsClient->isdsSearchRequest(iKeyText);             
         }
         else if( EIR_UseNetwork_SelectItem == getUseNetworkReason() )
         {            
@@ -287,11 +240,8 @@
         break;        
      
     default:             
-        stopSearchingAnimation();
-        //the following will remove into the stopSearchingAnimation() function
-        closeSearchingDialog();
-        setUseNetworkReason(EIR_UseNetwork_NoReason);
-        iSearchState = ESearch_init;
+        switch2InitState();         
+        setUseNetworkReason(EIR_UseNetwork_NoReason);        
         break;
     }   
 } 
@@ -306,28 +256,32 @@
         return;
     }  
     
-    setUseNetworkReason(EIR_UseNetwork_StartSearch);
-    if (false == iApplication->verifyNetworkConnectivity(hbTrId("txt_common_info_searching")))
+    setUseNetworkReason(EIR_UseNetwork_StartSearch);     
+    if (false == iApplication->verifyNetworkConnectivity())
     {        
-        switch2SearchingState();
+        switch2LoadingState();
         return;
     }
     
+    //if previouse request is in progress, cancel it
+    if( ESearch_Loading == iSearchState )
+    {
+        iIsdsClient->isdsCancelRequest();            
+        iConvertTimer->stop();
+        iIsdsClient->isdsLogoDownCancelTransaction();
+    }
+ 
+    
     setUseNetworkReason(EIR_UseNetwork_NoReason);    
-    switch2SearchingState();
-    iIsdsClient->isdsSearchRequest(iKeyText);     
-    createSearchingDialog();
+    switch2LoadingState();
+    iIsdsClient->isdsSearchRequest(iKeyText);    
 }
 
 void IRSearchChannelsView::operationException(IRQError aError)
-{    
-    iApplication->closeLoadingDialog(); 
-    closeSearchingDialog();
-    stopSearchingAnimation();     
-    iSearchState = ESearch_init;
+{        
+    switch2InitState();
     
-    QString errStr;
-    
+    QString errStr;    
     switch(aError)
     {
     case EIRQErrorNotFound:
@@ -337,6 +291,7 @@
         errStr = hbTrId("txt_irad_info_failed_to_connect");
         break;   
     }
+    
     popupNote(errStr, HbMessageBox::MessageTypeWarning);     
 }
 
@@ -345,9 +300,12 @@
     setUseNetworkReason(EIR_UseNetwork_SelectItem);
     if (false == iApplication->verifyNetworkConnectivity())
     {
+        switch2LoadingState();
         return;
     }
     setUseNetworkReason(EIR_UseNetwork_NoReason);
+    
+    switch2LoadingState();
     handleItemSelected();
 }
 
@@ -376,12 +334,7 @@
 
 void IRSearchChannelsView::dataChanged()
 {
-    iApplication->closeLoadingDialog();     
-    stopSearchingAnimation();
-    
-    //the following will remove into the stopSearchingAnimation() function
-    closeSearchingDialog();    
-    switch2SearchedState(); 
+    switch2InitState(); 
     iListView->reset();
     iListView->setCurrentIndex(iChannelModel->index(0));
     iListView->scrollTo(iChannelModel->index(0)); 
@@ -404,6 +357,8 @@
     {
         iConvertTimer->start();        
     } 
+    
+    iSearchPanelWidget->setPlaceholderText(iKeyText); 
 }
 
 void IRSearchChannelsView::startConvert(int aIndex)
@@ -480,23 +435,58 @@
     }     
 }
 
-TIRHandleResult IRSearchChannelsView::handleCommand(TIRViewCommand aCommand, TIRViewCommandReason aReason)
+void IRSearchChannelsView::minimizeSearchPanel()
+{
+    if( ESearch_Loading == iSearchState )
+    {
+        if( ! ( iPlayController->isStopped() || iPlayController->isIdle() ) )
+        {
+            //cancel buffering
+            iPlayController->cancelBuffering();
+        }
+         
+        disconnectIsdsClient();
+        iIsdsClient->isdsCancelRequest();
+        iConvertTimer->stop();
+        iIsdsClient->isdsLogoDownCancelTransaction();
+        switch2InitState();      
+    }
+    
+    int count = iChannelModel->rowCount();
+    if (0 == count)
+    {         
+        iSearchPanelWidget->clearFocus();
+        iListView->setFocus();        
+        getViewManager()->backToPreviousView();
+    }
+    else
+    {
+        iSearchPanelWidget->clearFocus();
+        iListView->setFocus();        
+    }
+}
+ 
+
+TIRHandleResult IRSearchChannelsView::handleCommand(TIRViewCommand aCommand,
+        TIRViewCommandReason aReason)
 {
     TIRHandleResult ret = IRBaseView::handleCommand(aCommand, aReason);
     
     switch (aCommand)
     {   
-    case EIR_ViewCommand_ACTIVATED:
-        //wether to start logo downloading when activated needs more discussing and testing, future.
-        iIconIndexArray.clear();
-        connectIsdsClient(); 
+    case EIR_ViewCommand_ACTIVATED:         
+        iIconIndexArray.clear();        
+        iListView->clearFocus();
+        iSearchPanelWidget->setFocus();        
+        connectIsdsClient();
         break;
         
     case EIR_ViewCommand_DEACTIVATE:     
         disconnectIsdsClient();
         iIsdsClient->isdsCancelRequest();            
         iConvertTimer->stop();
-        iIsdsClient->isdsLogoDownCancelTransaction(); 
+        iIsdsClient->isdsLogoDownCancelTransaction();
+        switch2InitState();
         break;
 
     default:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/ui/src/irsearchresultdb.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -0,0 +1,171 @@
+/*
+* 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 <QFile>
+#include <QSqlQuery>
+#include <QSqlRecord> 
+#include <QSqlDatabase>
+#include <QVariant>
+ 
+
+#include "irsearchresultdb.h"
+#include "irqisdsdatastructure.h"
+
+
+IRSearchResultDB::IRSearchResultDB()
+{
+    createDBConnection();
+}
+
+IRSearchResultDB::~IRSearchResultDB()
+{
+    if (iDB->isOpen())
+    {
+        iDB->close();
+    }        
+    
+    delete iDB;
+    iDB = NULL;
+}
+
+ 
+IRQError IRSearchResultDB::cacheChannelList(QList<IRQChannelItem*> *aChannelList)
+{
+    IRQError ret = EIRQErrorNone;
+    
+    if( NULL == aChannelList )
+    {
+        return EIRQErrorBadParameter;
+    }
+    
+    if( iDB->isOpen() )
+    {
+        clearCache();
+        
+        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;            
+            
+            QSqlQuery query;
+            bool result;
+            
+            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;
+            }
+        }
+    }
+    else
+    {
+        ret = EIRQErrorGeneral;
+    }
+    
+    return ret;
+}
+
+QList<IRQChannelItem*> *IRSearchResultDB::getCahcedChannelList()
+{
+    if( !iDB->isOpen() )
+    {
+        return 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())
+    {
+        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();
+        channelList->append(oneItem);
+    }
+    
+    return channelList;    
+}
+  
+IRQError IRSearchResultDB::clearCache()
+{
+    IRQError ret = EIRQErrorNone;
+    if( !iDB->open())
+    {
+        ret = EIRQErrorServiceUnavailable;
+    }
+    else
+    { 
+        QSqlQuery query("DELETE FROM searchresult");         
+        bool ret = query.exec();
+        if( !ret )
+        {
+            ret = EIRQErrorServiceUnavailable;
+        }
+    }
+    
+    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;         
+        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/irsonghistorymodel.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/src/irsonghistorymodel.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -77,15 +77,16 @@
             songName = hbTrId("txt_irad_list_unknown_song");
         }
         
+        QString stationName = mSongHistoryList.at(row)->getStationName().trimmed();       
         if (Qt::Vertical == mOrientation)
         {
-            list.append("<" + artistName + ">");
-            list.append("<" + songName + ">");
+            list.append(artistName);
+            list.append(songName);
         }
         else
         {
-            list.append("<" + artistName +"> - <" + songName + ">");
-            list.append("<Not ready>");
+            list.append(artistName + " - " + songName);
+            list.append(stationName);
         }
         return list;
     }
--- a/qtinternetradio/ui/src/irstationshare.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/src/irstationshare.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -42,7 +42,8 @@
 // ---------------------------------------------------------------------------
 //
 IRStationShare::IRStationShare()
-            : iPlsFilePath(KPlsFilePath)
+            : iPlsFilePath(KPlsFilePath),
+              iShareDialog(NULL)
 {
 }             
 // ---------------------------------------------------------------------------
@@ -51,6 +52,7 @@
 //
 IRStationShare::~IRStationShare()
 {
+    delete iShareDialog;
 }
 
 // ---------------------------------------------------------------------------
@@ -65,10 +67,14 @@
         return false;
     }
     
-    ShareUi shareDialog;
+
     QStringList fileList;
     fileList.append(iPlsFilePath);
-    return shareDialog.send(fileList,true);
+    if (NULL == iShareDialog)
+    {
+        iShareDialog = new ShareUi();
+    }    
+    return iShareDialog->send(fileList,true);
 }
 
 bool IRStationShare::shareStations(const IRQPreset &aPreset)
@@ -78,10 +84,13 @@
         return false;
     }
     
-    ShareUi shareDialog;
     QStringList fileList;
     fileList.append(iPlsFilePath);
-    return shareDialog.send(fileList,true);
+    if (NULL == iShareDialog)
+    {
+        iShareDialog = new ShareUi();
+    }      
+    return iShareDialog->send(fileList,true);
 }
 
 // ---------------------------------------------------------------------------
--- a/qtinternetradio/ui/src/irstationsview.cpp	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/src/irstationsview.cpp	Wed Jun 23 16:21:12 2010 +0100
@@ -87,7 +87,7 @@
     
     if (!cache)
     {
-        iApplication->createLoadingDialog(this, SLOT(cancelRequest()));
+        iApplication->startLoadingAnimation(this, SLOT(cancelRequest()));
     }
 }
 
@@ -178,7 +178,7 @@
                 
                 //once an item is selected, we show a dialog to prevent user from clicking the
                 //item again
-                iApplication->createLoadingDialog(this, SLOT(cancelRequest()));
+                iApplication->startLoadingAnimation(this, SLOT(cancelRequest()));
                 
                 if (iIsdsClient->isdsIsChannelBanner())
                 {
@@ -218,7 +218,7 @@
     }
 
     getViewManager()->activateView(this);
-    iApplication->closeLoadingDialog();
+    iApplication->stopLoadingAnimation();
 }
 
 /*
@@ -248,7 +248,7 @@
  */
 void IRStationsView::operationException(IRQError aError)
 {
-    iApplication->closeLoadingDialog();
+    iApplication->stopLoadingAnimation();
 
     disconnectIsdsClient();
     QString errorString = hbTrId("txt_irad_info_failed_to_connect");
@@ -277,7 +277,7 @@
     }    
     iIsdsClient->isdsCancelRequest();
     disconnectIsdsClient();
-    iApplication->closeLoadingDialog();
+    iApplication->stopLoadingAnimation();
 }
 
 void IRStationsView::startConvert(int aIndex)
--- a/qtinternetradio/ui/ui.pro	Tue Jun 01 17:18:54 2010 +0100
+++ b/qtinternetradio/ui/ui.pro	Wed Jun 23 16:21:12 2010 +0100
@@ -71,9 +71,7 @@
   TARGET.EPOCHEAPSIZE = 0x020000 0x2000000
   TARGET.VID = VID_DEFAULT
   ICON = resources/qtg_large_internet_radio.svg
-  datatype_list = "datatype_list={DATATYPE{priority=EDataTypePriorityHigh;type=\"audio/x-scpls\";}," \
-                                 "DATATYPE{priority=EDataTypePriorityHigh;type=\"audio/x-mpegurl\";}" \
-                  "};"
+  datatype_list = "datatype_list={DATATYPE{priority=EDataTypePriorityHigh;type=\"audio/x-scpls\";}};"
   RSS_RULES += datatype_list 
 }
 
@@ -109,7 +107,8 @@
            inc\irstationshare.h \
            inc\irstationdetailsview.h \
            inc\irtermsconsview.h \
-           inc\irplaylist.h
+           inc\irplaylist.h \
+           inc\irsearchresultdb.h
            
 #source files list
 SOURCES += main.cpp  \
@@ -143,7 +142,8 @@
            irstationshare.cpp \
            irstationdetailsview.cpp \
            irtermsconsview.cpp \
-           irplaylist.cpp
+           irplaylist.cpp \
+           irsearchresultdb.cpp
           	   
 #resource
 RESOURCES += resources/irui.qrc